Software Design
Specification
for
Online Examination System
Version 1.0 approved
Prepared By
Md. Abdullah Al Mahmud - 2013708642
Samira Ali - 2011423042
North South University
02-07-2022
Table of Contents
Table of Contents
ii
1. Introduction
1
1.1 Purpose
1
1.2 Document Conventions
1
1.3 Intended Audience
1
2. Architectural Design
1
2.1 Description of Design Components
1
2.2 High-Level Component Design
2
3. Class Diagrams
3
3.1 Detailed Class Diagram
3
3.2 Detailed Class Description
4
4. Database Design
8
4.1 ER Diagram
8
4.2 ER Description
9
5. Implementation Plan
14
1. Introduction
1.1 Purpose
The main purpose of SDS is to break down the project into components to describe in detail what the purpose of each component is and how it will be implemented. The SDS will also serve as a tool for verification and validation of the final product. This will help to ensure that the final product meets the requirements of the end customer, i.e. functions as expected, is reliable, is easy to use, does not demand inordinate efforts to train staff in its use, etc. This document will deliver a detailed description of the software components and subsystems to be provided as part of the product.
1.2 Document Conventions
Heading: Font Style: Bold, Font Size: 18
Sub Heading: Font Style: Bold, Font Size: 14
Explanations: Font Style: Normal, Font Size: 12
Sub Heading: Font Style: Bold, Font Size: 14
Explanations: Font Style: Normal, Font Size: 12
1.3 Intended Audience
This document is a prototype for an Online Examination System. This document is intended for the project manager, project team, and development team and any person reasonably skilled in software design, analysis or programming to maintain and further develop the Software.
2. Architectural Design
2.1 Description of Design Components
This section will provide an outline of the various components and subsystems of the Online Examination System.
Page 2
Server Side
-
Web Server
Web servers are used to execute server-side scripting. They are basically used to create dynamic pages. It can also access the file system residing at the webserver. A server-side environment that runs on a scripting language is a web server.
Client Side
-
Web Browser
Web browsers execute client-side scripting. It is used when browsers have all the code. Source code is used to transfer from the web server to the user's computer over the internet and run directly on browsers. It is also used for validations and functionality for user events. -
Django Web Framework
Django is an extremely popular and fully featured server-side web framework, written in Python. It encourages rapid development and clean, pragmatic design. The backend of the software is built using this framework. -
Android Framework
The android framework is the set of API's that allow developers to quickly and easily write apps for android phones. The mobile app version of the software will be built using this.
Database
-
MySQL
MySQL is an open-source relational database management system (RDBMS). works with an operating system to implement a relational database in a computer's storage system, manages users, allows for network access and facilitates testing database integrity and creation of backups. The data of this system will be stored in this DBMS.
2.2 High-Level Component Design
Component level design is the definition and design of components and modules after the architectural design phase. Component-level design defines the data structures, algorithms, interface characteristics, and communication mechanisms allocated to each component for the system development. Component level design includes the following actions:
-
Identify Design Classes in Problem Domain
Most classes from the problem domain are analysis classes created as part of the analysis model. -
Identify Infrastructure Design Classes
The infrastructure design classes are introduced as components during architectural design. -
Elaborate Design Classes
- Specify message details when classes or components collaborate
- Identify appropriate interfaces for each component
- Elaborate attributes
3. Class Diagram
3.1 Detailed Class Diagram(s)

3.2 Detailed Class Description(s)
Class name: Users
Purpose: This class stores all the details as
attributes of each user.
Attributes:
- userId: It is an integer type data. It stores a unique ID given to each user account by which we can identify it.
- name: It is a varchar type data. It stores the full name of the user.
- email: It is a varchar type data. It stores the email address with which the user registered.
Class name: Evaluator
Purpose: This class stores all the details as attributes of each evaluator.
Attributes:
- evaluatorId: It is an integer type data. It stores a unique ID given to each evaluator by which we can identify the evaluator of an exam cohort.
- userId: It is an integer type data. It stores the userId of the evaluator.
- cohortId:It is an integer type data. It stores the cohortId which the evaluator created.
Class name: Candidate
Purpose: This class stores all the details as attributes of each candidate.
Attributes:
- candidateId: It is an integer type data. It stores a unique ID given to each candidate by which we can identify the candidate of an exam cohort.
- userId: It is an integer type data. It stores the userId of the candidate.
- cohortId: It is an integer type data. It stores the cohortId where the candidate joined.
Class name: ExamCohort
Purpose: This class stores all the details as attributes of each Exam Cohort.
Attributes:
- cohortId: It is an integer type data. It stores a unique ID for each Exam Cohort.
- cohortName: It is a varchar type data. It stores the name of the Exam Cohort.
Class name: Assessment
Purpose: This class stores all the details as attributes of each assessment in an Exam Cohort.
Attributes:
- assessmentId: It is an integer type data. It stores a unique ID for each assessment.
- assessmentName: It is a varchar type data. It stores the name of the assessment in an Exam Cohort.
- cohortId:It is an integer type data. It stores the cohortId in which the assessment is created.
- availableDateTime: It is a datetime type data. It stores the date and time when the assessment will be available to the candidates.
- dueDateTime: It is a datetime type data. It stores the date and time when the assessment will be automatically submitted to the evaluator.
Class name: MCQ
Purpose: This class stores all the details as attributes of each Multiple Choice Question in an assessment.
Attributes:
- MCQId: It is an integer type data. It stores a unique ID for each mcq that is created by an evaluator.
- assessmentId: It is an integer type data. It stores the assessmentId which holds the mcq question.
- MCQQuestion: It is a varchar type data. It stores the mcq question of the assessment.
- evaluatorsAnwer: It is a varchar type data. It stores the correct answer of each mcq question provided by the evaluator.
- totalMarks: It is an integer type data. It stores the mark that a mcq question carries in an assessment.
- totalTime: It is an integer type data. It stores the time allocated for answering a mcq question in an assessment.
Class name: MicroViva
Purpose: This class stores all the details as attributes of each Micro-Viva Question in an assessment.
Attributes:
- mvId: It is an integer type data. It stores a unique ID for each micro-viva that is created by an evaluator.
- assessmentId: It is a varchar type data. It stores the micro-viva question of the assessment.
- mvQuestionAudio: It is a varchar type data. It stores the recording of a micro viva question provided by the evaluator.
- mvQuestionText: It is a varchar type data. It stores the text version of the recorded micro-viva question.
- evaluatorsAnswerAudio: It is a varchar type data. It stores the recording of the correct answer to the micro viva question provided by the evaluator.
- evaluatorsAnswerText: It is a varchar type data. It stores the text version of the recorded correct answer to the micro viva question provided by the evaluator.
- totalMarks: It is an integer type data. It stores the mark that a micro-viva question carries in an assessment.
- totalTime: It is an integer type data. It stores the time allocated for answering a micro-viva question in an assessment.
Class name: MCQSubmission
Purpose: This class stores all the details as attributes of each submission of a Multiple Choice Question in an assessment.
Attributes:
- MCQSubmissionId: It is an integer type data. It stores a unique ID for each submission of a mcq question.
- MCQId: It is an integer type data. It stores the MCQId of the mcq question answer submitted by the candidate.
- candidateId: It is an integer type data. It stores the unique Id of the candidate who did the submission.
- choiceId: It is an integer type data. It stores the unique Id of the choice of an mcq.
- obtainedMarks: It is an integer type data. It stores the mark that a candidate obtained in a mcq question.
Class name: MicroVivaSubmission
Purpose: This class stores all the details as attributes of each submission of a Micro-Viva Question in an assessment.
Attributes:
- MicroVivaSubmissionId: It is an integer type data. It stores a unique ID for each submission of a micro-viva question.
- mvId: It is an integer type data. It stores the mvId of the micro-viva question answer submitted by the candidate.
- candidateId:It is an integer type data. It stores the unique Id of the candidate who did the submission.
- submittedAnswerAudio:It is a varchar type data. It stores the recording of the submitted answer of the candidate.
- submittedAnswerText:It is a varchar type data. It stores the text version of the recorded answer of the candidate.
- obtainedMarks:It is an integer type data. It stores the mark that a candidate obtained in a micro-viva question.
Class name: MCQChoice
Purpose: This class stores all the details as attributes of each choice of a Multiple Choice Question in an assessment.
Attributes:
- choiseId: It is an integer type data. It stores a unique ID for each choice of a mcq question.
- MCQId: It is an integer type data. It stores the MCQId of the mcq question which holds the choice.
- choice: It is a varchar type data. It stores a choice of an mcq question.
4. Database Design
4.1 ER Diagram

4.2 ER Description
Table name: Users
Purpose: This table stores all the details as
attributes of each user.
Attributes:
- userId: It is an integer type data. It stores a unique ID given to each user account by which we can identify it. This is also the primary key for this table.
- name: It is a varchar type data. It stores the full name of the user.
- email: It is a varchar type data. It stores the email address with which the user registered.
Table name: Evaluator
Purpose: This table stores all the details as attributes of each evaluator.
Attributes:
- evaluatorId: It is an integer type data. It stores a unique ID given to each evaluator by which we can identify the evaluator of an exam cohort. This is also the primary key for this table.
- userId: It is an integer type data. It stores the userId of the evaluator. It is a foreign key to this table from the User table.
- cohortId:It is an integer type data. It stores the cohortId which the evaluator created. It is a foreign key to this table from the ExamCohort table.
Table name: Candidate
Purpose: This table stores all the details as attributes of each candidate.
Attributes:
- candidateId: It is an integer type data. It stores a unique ID given to each candidate by which we can identify the candidate of an exam cohort. This is also the primary key for this table.
- userId: It is an integer type data. It stores the userId of the candidate. It is a foreign key to this table from the User table.
- cohortId: It is an integer type data. It stores the cohortId where the candidate joined. It is a foreign key to this table from the ExamCohort table.
Table name: ExamCohort
Purpose: This table stores all the details as attributes of each Exam Cohort.
Attributes:
- cohortId: It is an integer type data. It stores a unique ID for each Exam Cohort.
- cohortName: It is a varchar type data. It stores the name of the Exam Cohort.
Table name: Assessment
Purpose: This table stores all the details as attributes of each assessment in an Exam Cohort.
Attributes:
- assessmentId: It is an integer type data. It stores a unique ID for each assessment. This is also the primary key of this table.
- assessmentName: It is a varchar type data. It stores the name of the assessment in an Exam Cohort.
- cohortId:It is an integer type data. It stores the cohortId in which the assessment is created. It is a foreign key to this table from the ExamCohort table.
- availableDateTime: It is a datetime type data. It stores the date and time when the assessment will be available to the candidates.
- dueDateTime: It is a datetime type data. It stores the date and time when the assessment will be automatically submitted to the evaluator.
Table name: MCQ
Purpose: This table stores all the details as attributes of each Multiple Choice Question in an assessment.
Attributes:
- MCQId: It is an integer type data. It stores a unique ID for each mcq that is created by an evaluator. This is also the primary key of this table.
- assessmentId: It is an integer type data. It stores the assessmentId which holds the mcq question. It is a foreign key to this table from the Assessment table.
- MCQQuestion: It is a varchar type data. It stores the mcq question of the assessment.
- evaluatorsAnwer: It is a varchar type data. It stores the correct answer of each mcq question provided by the evaluator.
- totalMarks: It is an integer type data. It stores the mark that a mcq question carries in an assessment.
- totalTime: It is an integer type data. It stores the time allocated for answering a mcq question in an assessment.
Table name: MicroViva
Purpose: This table stores all the details as attributes of each Micro-Viva Question in an assessment.
Attributes:
- mvId: It is an integer type data. It stores a unique ID for each micro-viva that is created by an evaluator. This is also the primary key of this table.
- assessmentId: It is a varchar type data. It stores the micro-viva question of the assessment. It is a foreign key to this table from the Assessment table.
- mvQuestionAudio: It is a varchar type data. It stores the recording of a micro viva question provided by the evaluator.
- mvQuestionText: It is a varchar type data. It stores the text version of the recorded micro-viva question.
- evaluatorsAnswerAudio: It is a varchar type data. It stores the recording of the correct answer to the micro viva question provided by the evaluator.
- evaluatorsAnswerText: It is a varchar type data. It stores the text version of the recorded correct answer to the micro viva question provided by the evaluator.
- totalMarks: It is an integer type data. It stores the mark that a micro-viva question carries in an assessment.
- totalTime: It is an integer type data. It stores the time allocated for answering a micro-viva question in an assessment.
Table name: MCQSubmission
Purpose: This table stores all the details as attributes of each submission of a Multiple Choice Question in an assessment.
Attributes:
- MCQSubmissionId: It is an integer type data. It stores a unique ID for each submission of a mcq question. This is also the primary key of this table.
- MCQId: It is an integer type data. It stores the MCQId of the mcq question answer submitted by the candidate. It is a foreign key to this table from the MCQ table.
- candidateId: It is an integer type data. It stores the unique Id of the candidate who did the submission. It is a foreign key to this table from the Candidate table.
- choiceId: It is an integer type data. It stores the unique Id of the choice of an mcq. It is a foreign key to this table from the MCQChoice table.
- obtainedMarks: It is an integer type data. It stores the mark that a candidate obtained in a mcq question.
Table name: MicroVivaSubmission
Purpose: This table stores all the details as attributes of each submission of a Micro-Viva Question in an assessment.
Attributes:
- MicroVivaSubmissionId: It is an integer type data. It stores a unique ID for each submission of a micro-viva question. This is also the primary key of this table.
- mvId: It is an integer type data. It stores the mvId of the micro-viva question answer submitted by the candidate. It is a foreign key to this table from the MicroViva table.
- candidateId:It is an integer type data. It stores the unique Id of the candidate who did the submission. It is a foreign key to this table from the Candidate table.
- submittedAnswerAudio:It is a varchar type data. It stores the recording of the submitted answer of the candidate.
- submittedAnswerText:It is a varchar type data. It stores the text version of the recorded answer of the candidate.
- obtainedMarks:It is an integer type data. It stores the mark that a candidate obtained in a micro-viva question.
Table name: MCQChoice
Purpose: This table stores all the details as attributes of each choice of a Multiple Choice Question in an assessment.
Attributes:
- choiseId: It is an integer type data. It stores a unique ID for each choice of a mcq question. This is also the primary key of this table.
- MCQId: It is an integer type data. It stores the MCQId of the mcq question which holds the choice. It is a foreign key to this table from the MCQ table.
- choice: It is a varchar type data. It stores a choice of an mcq question.
5. Implementation Plan
- Define goals
- Conduct research
- Map out risks
- Schedule milestones
- Assign tasks between group members
- Unit testing