project-proposal-2024

CodeMaster - a examination web app

Abstract

CodeMaster is a web app designed to provide services for online exams. It supports single-choice questions, multiple-choice questions, and programming questions. Each candidate’s data is independent, and the app supports saving the exam paper midway through and resuming it later. The software framework of CodeMaster implements front-end and back-end separation. The front-end server is responsible for presenting the exam pages and storing user information, while the back-end server handles storing questions and grading answers. CodeMaster enables users to test their computer knowledge and programming skills.

Author

Name: Zhuo Hu

Student number: 46486394

Functionality

CodeMaster offers convenient and efficient exam solutions:

  1. Randomized Exam Questions: Under a defined exam type and framework, the content and options of each exam question vary for every candidate. This ensures that even with multiple attempts allowed, candidates need to carefully read the questions to provide correct answers.
  2. Exam Support for Resuming: CodeMaster allows candidates to save their current exam progress and leave. They can resume answering questions from where they left off at any time. This feature is ideal for users who want to conduct small knowledge tests at their convenience.
  3. Diverse Question Types: In addition to common single-choice and multiple-choice questions, CodeMaster also supports users in attempting programming questions. Candidates can answer these questions directly in input boxes without needing to install any specific environment on their exam device. They receive real-time feedback on the correctness of their answers.
  4. System administrators, who also act as examiners, will have the authority to view the scores of all candidates for each completed exam.

Scope

Minimum Viable Product (MVP) of CodeMaster includes:

Quality Attributes

Availability: Users can access CodeMaster’s services through a web browser on any device, at any time, and from anywhere without the need to install any special software. The software’s convenience is greatly enhanced by the minimal device requirements since users do not need to install and run software environments locally to execute source code.

Scalability: The software can be deployed using Docker on the same computer, and it also allows separating the frontend and backend deployment in high-pressure environments to alleviate stress. The software can support one frontend server with multiple backend servers to address extreme situations. (However, the design of multiple backends will not be implemented in the MVP.)

Extensibility: Due to its design of frontend-backend separation, both the frontend and backend can be replaced or updated at any time without needing to shut down the other component.

Security: The design of frontend-backend separation ensures that even if the frontend server is compromised, the backend server remains secure and unaffected. Additionally, because the entire service runs within Docker containers, it becomes challenging for attackers to extend malicious impacts beyond the Docker containers and compromise the overall system security.

Evaluation

Security: The security assessment will involve regular virus scans and attempts to expose the project to attacks. With the frontend-backend separation, even if the frontend server is compromised, the backend server remains secure and unaffected. Additionally, since the entire service runs within Docker containers, it becomes challenging for attackers to extend malicious impacts beyond the Docker containers and compromise the overall system security.

For the evaluation of project availability, various devices such as tablets, PCs, Macbooks, and smartphones will be used to access and utilize the service. Testing the project’s scalability can be conducted locally by simulating heavy traffic to assess its robustness under high load conditions. However, the actual performance of the project depends on the deployed platform and network bandwidth.