Академический Документы
Профессиональный Документы
Культура Документы
SOFTWARE ENGINEERING
UEL ID: MATRIC NO: COURSE TITLE: COURSE CODE: ASSIGNMENT TITLE: MODULE LECTURER:
0949597 USE4-09/09-00082 FORMAL METHODS IN SOFTWARE ENGINEERING SD 3049 OBJECT-ORIENTED SYSTEM DEVELOPMENT V. MURUGANANTHAN
USE4-09/09-00082, 0949597 INTRODUCTION ............................................................................................................................................. 4 Formal method is the mathematical approach for reasoning and describing a software design. It can be 4 SYSTEM REQUIREMENTS SPECIFICATION ..................................................................................................... 5 USE CASE DIAGRAM ...................................................................................................................................... 8 SYSTEM DATA SET ......................................................................................................................................... 9 Data Set Description ............................................................................................................................... 10 DATASET NOTATION DESCRIPTION......................................................................................................... 10 SYSTEM ABSTRACT SCHEMA ....................................................................................................................... 14 ADD STUDENT AND ALLOCATE SUBJECT ABSTACT SCHEMA .................................................................. 15 MODIFY SUBJECT .................................................................................................................................... 20 ADD SUBJECT TO STUDENT ..................................................................................................................... 25 DELETE A SUBJECT FROM A STUDENT .................................................................................................... 30 ENTER COURSEWORK MARK FOR STUDENT ........................................................................................... 35 ENTER EXAM MARK FOR STUDENT ......................................................................................................... 40 CHANGE COURSEWORK MARK FOR STUDENT ....................................................................................... 45 CHANGE EXAM MARK FOR STUDENT ..................................................................................................... 50 DELETE STUDENT FROM SEMESTER........................................................................................................ 55 DELETE COURSEWORK MARK FOR STUDENT ......................................................................................... 60 LIST STUDENT MARKS WITH GRADE AND RESULT .................................................................................. 65 LIST STUDENT WHO FAILED IN A SUBJECT .............................................................................................. 69 LIST STUDENT WHO HAD NOT SUBMITTED ASSIGNMENT ..................................................................... 73 CONCRETE SCHEMA FOR RESULT SYSTEM .................................................................................................. 77 ADD STUDENT CONCRETE SCHEMA ........................................................................................................ 78 MODIFY SUBJECT CONCRETE SCHEMA ................................................................................................... 82 DELETE SUBJECT FROM STUDENT CONCRETE SCHEMA ......................................................................... 85 ENTER COURSE WORK MARK CONCRETE SCHEMA ................................................................................ 89 ENTER EXAM MARK CONCRETE SCHEMA ............................................................................................... 92 CHANGE COURSE WORK MARK CONCRETE SCHEMA ............................................................................. 96 CHANGE EXAM MARK CONCRETE SCHEMA.......................................................................................... 100 DELETE STUDENT FROM SEMESTER CONCRETE SCHEMA .................................................................... 103 FORMAL METHODS | 1
USE4-09/09-00082, 0949597 DELETE COURSE WORK MARK CONCRETE SCHEMA ............................................................................. 106 LIST THE MARKS OF A SUBJECT CONCRETE SCHEMA ........................................................................... 110 LIST THE STUDENTS THAT FAILED CONCRETE SCHEMA ........................................................................ 113 LIST THE STUDENTS THAT DIDNT SUBMIT ASSIGNMENT CONCRETE SCHEMA ................................... 116 SYSTEM RELATION SCHEMA ..................................................................................................................... 119 ACCEPTABILITY THEOREM ........................................................................................................................ 125 ADD STUDENT ....................................................................................................................................... 125 MODIFY STUDENT ................................................................................................................................. 125 DELETE STUDENT SUBJECT .................................................................................................................... 125 ENTER COURSEWORK MARK ................................................................................................................ 126 ENTER EXAM MARK .............................................................................................................................. 126 CHANGE COURSEWORK MARK ............................................................................................................. 127 CHANGE EXAM MARK ........................................................................................................................... 127 DELETE STUDENT FROM SEMESTER...................................................................................................... 128 DELETE COURSEWORK MARK FROM STUDENT .................................................................................... 128 LIST MARKS WITH GRADES ................................................................................................................... 129 LIST STUDENTS THAT FAILED ................................................................................................................ 129 LIST STUDENTS WHO HAVE NO ASSIGNMENT...................................................................................... 130 SEQUENCE DIAGRAMS FOR RESULT SYSTEM............................................................................................ 131 ADD STUDENT ....................................................................................................................................... 131 ENTER COURSEWORK MARK ................................................................................................................ 132 ENTER EXAM MARK .............................................................................................................................. 133 MODIFY STUDENT SUBJECT .................................................................................................................. 134 CHANGE COURSEWORK MARK ............................................................................................................. 135 DELETE STUDENT SUBJECT.................................................................................................................... 136 CHANGE COURSEWORK MARK ............................................................................................................. 137 CHANGE FINAL EXAM MARK ................................................................................................................. 138 DELETE STUDENT FORM SEMESTER...................................................................................................... 139 DELETE COURSEWORK MARK ............................................................................................................... 140 LIST MARKS AND GRADES FOR STUDENTS ........................................................................................... 141 FORMAL METHODS | 2
USE4-09/09-00082, 0949597 LIST STUDENTS THAT FAILED ................................................................................................................ 141 LIST STUDENTS THAT DIDNT SUBMIT ASSIGNMENT ........................................................................... 142 CONCLUSION............................................................................................................................................. 143 REFERENCES .............................................................................................................................................. 144
FORMAL METHODS |
INTRODUCTION
USE4-09/09-00082, 0949597
Formal method is the mathematical approach for reasoning and describing a software design. It can be also be the mathematical argument which verifies that the system satisfies a mathematically described security policy. The documentation is on a result system to be documented using the formal Z specification. During the course of system analysis, the task executed included requirement gathering, data set construction, the definition of the abstract schemas, operational abstract schemas with proper validations, concrete schema, sequence specification and modeling, and applicability theorem. The result system is a key focus system as its perfection and security is of great importance in order to ensure the information harbored within can be reliable. Formal specification serves as a tool to ensure the system integrity is assured and the performance is of the best.
USE4-09/09-00082, 0949597
Functional Requirement Nonfunctional requirement The system should enable the Student number must be in addition of new students. existence. System should check if student is already in the system before adding new student. The system should allow for System should check if the Modify student subjects students subjects to be student takes the course editable. already. System should ensure a course is selected to replace the previous course. The system should allow for The system should display Delete students subject the students subject to be deletion confirmation for the deleted. delete operation. System should display warning message when student subject is less than 3. The system should allow for System should request Enter course work mark for the coursework mark of a confirmation before saving the student. subject to be entered. mark. System should display confirmation after saving the mark. should request Enter exam mark for The system should allow for System the exam mark of a subject to confirmation before saving the student. be entered. mark. System should display confirmation after saving the exam score. Change the mark of System should allow for the System should request admin coursework mark of a student password before allowing coursework for student.
FORMAL METHODS | SYSTEM REQUIREMENTS SPECIFICATION 5
USE4-09/09-00082, 0949597
to be changed.
Change the mark of exam System should allow for the exam mark of a student to be for student. changed.
Delete a student from a The system should allow for a student to be deleted from a semester semester.
Delete a course mark from a System should allow the course mark of a student to be student deleted.
List the marks of a subject System should be able to list all marks for a subject with the with results and grades student marks and grades.
List the students who failed The system should be able to list all the students who failed in a subject.
changes. System should display error message if mark field is empty. System should display notification after the change is completed. System should request admin password before allowing changes. System should display error message if mark field is empty. System should display notification after the change is completed. System should request admin password before deleting student System should display confirmation request before deletion. System should display notification after the deletion operation. System should request admin password before deleting student System should display confirmation request before deletion. System should display notification after the deletion operation. System should be able to calculate the grade according to the mark range. System should be able to calculate the average of the coursework and exam score if either is above 40%. System should search for marks below 40%
6
USE4-09/09-00082, 0949597
a subject. List the students who had The system should be able to The system should be able to not submitted their search for the students who search the records for X in the have not submitted their coursework. coursework coursework
USE4-09/09-00082, 0949597
<<extend>>
Modify Subject
Allocate Subject
<<include>>
Lecturer
Delete Student
USE4-09/09-00082, 0949597
Figure 1, Use Case Diagram for Result System.
76 75 63 45 82 63 49
68
Y SOC01 SOC02
Exams_Mark Scored_in_Exam
Assignment Mark
SOC05
Scored_in_Assignment
SD3001
USE4-09/09-00082, 0949597
Student = {SOC01, SOC02, SOC03, SOC04} Subject = {SD3001, CNOO2, CNOO3, SD3004} Exam Mark = {75, 63, 45, 68} Assignment Mark = {76, 82, 63, 49}
Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004)} Scored_in_Exam = {(SD300175), (SD300263), (SD300345), (SD300468)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468)}
Source set = Student Target Set = Subject Function = Student_Subject An item from the student set relates to another item in the subject set therefore a function exists. The function name is Student_Subject. One element from the student set relates to one element in the subject set, therefore a one-one relationship exists. The property can then be captured as (xy) R (x z) R y=z
FORMAL METHODS | SYSTEM DATA SET 10
USE4-09/09-00082, 0949597
All the elements from the item set participate in the function; therefore it is a total function. o All the elements in the target set participate in the function; this means it is a subjective function.
Subject r dom
Student_Subject = { Student Subject | std : Student; sbj : Subject. std Student_Subject Student ran Student_Subject = Subject }
The generic notation is: Student_Subject == {std : Student | sbj : Subject std sbj Student_Subject } Dom Student_Subject == {std : Student | sbj: Subject std
sbj
Student_Subject }
sbj Student_Subject }
An element from the Subject set relates to another element in the Exam_Mark set, therefore a function exist The name of the function is Scored_in_Exam
FORMAL METHODS | SYSTEM DATA SET 11
USE4-09/09-00082, 0949597
One element from the item set relates to one element in the cost price set, therefore, a one-one relationship exist. Then the property can be captured as ( X Y ) R (X Z ) R Y = Z
Since a one to one relationship exists, it can be treated as an injective function All the elements from the source set participate in the function, therefore it is a total function. All the elements in the target set participate in the function, therefore it can be treated as a surjective function Since the function is total injective and total surjective, then the relation/function is a bijective function: Scored_in_Exam: Subject Exam_Mark
Scored_in_Exam = { Subject cost_ price | sbj : Subject; em : cost_ price. Sbj em dom Scored_in_Exam = Subject ran Scored_in_Exam = Exam_Mark}
em
Scored_in_Exam}
em Exam_Mark}
em Exam_Mark}
12
USE4-09/09-00082, 0949597
An element from the Subject set relates to another element in the Assignment_Mark set, therefore a function exist The name of the function is Scored_in_Assignment. One element from the item set relates to one element in the cost price set, therefore, a one-one relationship exist. Then the property can be captured as (XY) R (X Z) R Y=Z
Since a one to one relationship exists, it can be treated as an injective function All the elements from the source set participate in the function, therefore it is a total function. All the elements in the target set participate in the function, therefore it can be treated as a surjective function Since the function is total injective and total surjective, then the relation/function is a bijective function: Scored_in_Assignment: Subject
Exam_Mark
Subject ran Scored_in_Assignment =
am dom Scored_in_Assignment =
Exam_Mark}
The generic notation is: Scored_in_Assignment == {sbj: Subject | am: Assignment_Mark sbj Scored_in_Assignment} Dom Scored_in_Assignment == {sbj: Subject | am: Assignment_Mark sbj Assignment_Mark}
am
am
13
USE4-09/09-00082, 0949597
am
14
USE4-09/09-00082, 0949597
76 75 63 45 68 Y SOC01 SOC02
Exams_Mark Scored_in_Exam Assignment Mark
82 63 49 X
SOC05
Scored_in_Assignment
SD3001
15
Student = {SOC01, SOC02, SOC03, SOC04} Subject = {SD3001, CNOO2, CNOO3, SD3004} Exam Mark = {75, 63, 45, 68} Assignment Mark = {76, 82, 63, 49} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004)} Scored_in_Exam = {(SD300175), (SD300263), (SD300345), (SD300468)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468)} Let SOC05 be the new student, SD3005 be the new course, X the new Assignment_Mark and Y the new Exam_Mark. After the operation has been executed, the system will appear as follows:
OPERATION:
Student = Student {std?} Subject = Subject { sbj?} Exam_Mark = Exam_Mark {Y?} Assignment_Mark = Assignment_Mark {X?} Student_Subject = Student_Subject {std? sbj?} Scored_in_Exam = Scored_in_Exam {sbj? Y} Scored_in_Assignment = Scored_in_Assignment {sbj? X}
16
76
75
63 45 68 Y SOC01 SOC02
Exams_Mark Scored_in_Exam
82 63 49 X
Assignment Mark
SOC05
Scored_in_Assignment
SD3001
17
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, Y} Assignment Mark = {76, 82, 63, 49, X} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD3005Y)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD3005X)}
DESCRIPTION OF STEPS
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Get input student id. Check if id is available. Add student id to student set. Get input subject id. Check if subject has subject or not. Add subject to subject set. Add assignment mark. Add exam mark. Add relationship between student and subject in the student_subject function. Update other functions.
18
Add-Student, Allocate-Subject Result System std? : student sbj? : subject msg! :message std? student msg! = sudent exists std? student student = student {std?} subject = subject {sbj?} exam_mark = exam_mark {Y?} assignment_mark = assignment_mark {X} student_course = student_course {std? sbj?} score_in_exam = score_in_exam {std?Y?} score_in_assignment = score_in_assignment {std?X?} msg! = New student added with subject
19
USE4-09/09-00082, 0949597
MODIFY SUBJECT
BEFORE OPERATION
76 75 63 45 68 Y SOC01 SOC02
Exams_Mark Scored_in_Exam Assignment Mark
82 63 49 X
SOC05
Scored_in_Assignment
SD3001
20
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, Y} Assignment Mark = {76, 82, 63, 49, X} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD3005Y)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD3005X)} Let SD3006 be the new course, X the new Assignment_Mark and Y the new Exam_Mark. After the operation has been executed, the system will appear as follows:
OPERATION:
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Subject = Subject {sbj?} Subject = Subject Exam_Mark = Exam_Mark {Y?} Assignment_Mark = Assignment_Mark {X?} Student_Subject = Student_Subject {std? sbj?} Scored_in_Exam = Scored_in_Exam {sbj? Y} Scored_in_Assignment = Scored_in_Assignment {sbj? X}
21
76
75
63 45 68 Y SOC01 SOC02
Exams_Mark Scored_in_Exam
82 63 49 X
Assignment Mark
SOC05
Scored_in_Assignment
SD3001
22
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3006} Exam Mark = {75, 63, 45, 68, Y} Assignment Mark = {76, 82, 63, 49, X} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD3005Y)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD3005X)}
DESCRIPTION OF STEPS
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Get student id input. Check if id is available. Update students course with new subject Update the relationship between student and course. Update other sets.
23
Modify Subject Result System SOC05? : student Sbj? : subject Msg! possible messages SOC05? student msg! = student doesnt exist SOC05? student Subject = Subject {sbj?} exam_mark = exam_mark {Y?} assignment_mark = assignment_mark {X} student_course = student_course {std? sbj?} score_in_exam = score_in_exam {std?Y?} score_in_assignment = score_in_assignment {std?X?} msg! = Students subject has been modified.
24
USE4-09/09-00082, 0949597
76
75
63 45 68 Y SOC01 SOC02
Exams_Mark Scored_in_Exam
82 63 49 X
Assignment Mark
SOCO3
SOC04 SD3001 SD3002 SD3003 SD3004 SD3006
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
25
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3006} Exam Mark = {75, 63, 45, 68, Y} Assignment Mark = {76, 82, 63, 49, X} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD3005Y)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD3005X)} Let SD3007 be the new course, X the new Assignment_Mark and Y the new Exam_Mark. After the operation has been executed, the system will appear as follows:
OPERATION:
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Subject = Subject { sbj?} Exam_Mark = Exam_Mark {Y?} Assignment_Mark = Assignment_Mark {X?} Student_Subject = Student_Subject {std? sbj?} Scored_in_Exam = Scored_in_Exam {sbj? Y} Scored_in_Assignment = Scored_in_Assignment {sbj? X}
26
USE4-09/09-00082, 0949597
75 63 45
76 82 63
68
Y Y Y SOC01 SOC02
Exams_Mark Scored_in_Exam
49
X X
Assignment Mark
SOCO3 SOC04
SOC05
Scored_in_Assignment Student
Student Subject
27
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3006, SD3007} Exam Mark = {75, 63, 45, 68, Y, Y} Assignment Mark = {76, 82, 63, 49, X} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam = {(SD300175), (SD300263), (SD300345), (SD300468),
28
Add subject Result System std? : student Sbj? : subject std? student msg! = sudent doesnt exists std? student subject = subject {sbj?} exam_mark = exam_mark {Y?} assignment_mark = assignment_mark {X} student_course = student_course {std? sbj?} score_in_exam = score_in_exam {std?Y?} score_in_assignment = score_in_assignment {std?X?} msg! = New student added with subject
29
USE4-09/09-00082, 0949597
76 75 63 45 68 Y SOC01 SOC02
Exams_Mark Scored_in_Exam Assignment Mark
82 63 49 X
SOC05
Scored_in_Assignment
SD3001
Subject Figure 8, System Dataset Diagram Before Delete a Subject from Student
30
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, Y} Assignment Mark = {76, 82, 63, 49, X} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD3005Y)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD3005X)} Let SD3005 be the course to be removed. After the operation has been executed, the system will appear as follows:
OPERATION:
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Subject = Subject \ {sbj?} Exam_Mark = Exam_Mark \ {scored_in_exam sbj?} Assignment_Mark = Assignment_Mark \ {scored_in_assignment X?} Student_Subject = Student_Subject \ {std? sbj?} Scored_in_Exam = Scored_in_Exam {sbj? scored_in_exam sbj?} Scored_in_Assignment = Scored_in_Assignment {sbj? scored_in_assignment X?}}
31
76
75
63 45 68
82 63 49
SOC01 SOC02
Exams_Mark Scored_in_Exam
Assignment Mark
SD3001
Subject Figure 9, System Dataset Diagram After deleting subject from Student
32
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004} Exam Mark = {75, 63, 45, 68} Assignment Mark = {76, 82, 63, 49} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004)} Scored_in_Exam = {(SD300175), (SD300263), (SD300345), (SD300468)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468)}
DESCRIPTION OF STEPS
Get student id input. Check if id is available. Delete subject from stuent_subject Delete the relationship between student and course. Update other sets.
33
Delete Subject Result System std? : student Sbj? : subject Msg! possible messages std? student msg! = student doesnt exist sbj? student Subject = Subject {sbj?} exam_mark = exam_mark {scored_in_exam sbj?} assignment_mark = assignment_mark {scored_in_ exam sbj} student_course = student_course {scored_in_assignment sbj} score_in_exam = score_in_exam {std?Y?} score_in_assignment = score_in_assignment {X scored_in_assignment X?} msg! = Students subject has been deleted
34
USE4-09/09-00082, 0949597
76
75
63 45 68 Y SOC01 SOC02
Exams_Mark Scored_in_Exam
82 63 49 X
Assignment Mark
SOCO3
SOC04 SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
35
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, Y} Assignment Mark = {76, 82, 63, 49, X} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD3005Y)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD3005X)} Let 89 the new Assignment_Mark, SD3005 be the subject and SOC05.be the student After the operation has been executed, the system will appear as follows:
OPERATION:
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Assignment_Mark = Assignment_Mark {89} Scored_in_Assignment = Scored_in_Assignment {sbj? 89} Subject = Subject Student = Student Exam_Mark = Exam_Mark Student_Subject = Student_Subject Scored_in_Exam = Scored_in_Exam
36
76 75 63 45 68 Y SOC01 SOC02
Exams_Mark Scored_in_Exam Assignment Mark
82 63 49 89
SOCO3
SOC04
SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
Subject Figure 11, System Dataset Diagram after Deleting Subject from Student
37
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, Y} Assignment Mark = {76, 82, 63, 49, 89} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD3005Y)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD300589)}
DESCRIPTION OF STEPS
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Get input student id. Check if id is available or not. Get input subject id. Check if subject has subject or not. Update assignment mark. Update relationship between subject and assignment _mark in the scored_in_assignment function. Update other functions.
38
Enter Coursework Score Result System std? : student sbj? : subject msg! :message std? student msg! = sudent doesnt exists std? student sbj? subject msg! = subject doesnt exist sbj? subject exam_mark = exam_mark assignment_mark = assignment_mark {89} student_course = student_course score_in_exam = score_in_exam score_in_assignment = score_in_assignment {std?89} msg! = New coursework added
39
USE4-09/09-00082, 0949597
76
75
63 45 68 Y SOC01 SOC02
Exams_Mark Scored_in_Exam
82 63 49 X
Assignment Mark
SOCO3
SOC04 SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
Subject Figure 13, System Dataset Diagram before Entering Exam Mark
40
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, Y} Assignment Mark = {76, 82, 63, 49, X} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD3005Y)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD3005X)} Let 73 be the new Exam_Mark, SD3005 be the subject and SOC05.be the student After the operation has been executed, the system will appear as follows:
OPERATION:
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Exam_Mark = Exam_Mark {73} Scored_in_ Exam = Scored_in_ Exam {sbj? 73} Subject = Subject Student = Student Assignment_Mark = Assignment_Mark Student_Subject = Student_Subject Scored_in_ Assignment = Scored_in_ Assignment
41
76 75 63 45 68 73 SOC01 SOC02
Exams_Mark Scored_in_Exam Assignment Mark
82 63 49 X
SOCO3
SOC04
SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
Subject Figure 13, System Dataset Diagram after Entering Exam Mark
42
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, 73} Assignment Mark = {76, 82, 63, 49, X} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD300573)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD3005X)}
DESCRIPTION OF STEPS
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Get input student id. Check if id is available or not. Get input subject id. Check if subject has subject or not. Update exam mark. Update relationship between subject and exam _mark in the scored_in_examfunction. Update other functions.
43
Enter Exam Score Result System std? : student sbj? : subject msg! :message std? student msg! = sudent doesnt exists std? student sbj? subject msg! = subject doesnt exist sbj? subject exam_mark = exam_mark {73} assignment_mark = assignment_mark student_course = student_course score_in_exam = score_in_exam {std?73} score_in_assignment = score_in_assignment msg! = New exam score added
44
USE4-09/09-00082, 0949597
76
75
63 45 68 Y SOC01 SOC02
Exams_Mark Scored_in_Exam
82 63 49 89
Assignment Mark
SOCO3
SOC04 SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
Subject Figure 14, System Dataset Diagram before entering coursework Mark
45
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, Y} Assignment Mark = {76, 82, 63, 49, 89} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD3005Y)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD3005X)} Let 83 the new Assignment_Mark, SD3005 be the subject and SOC05.be the student After the operation has been executed, the system will appear as follows:
OPERATION:
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Assignment_Mark = Assignment_Mark {83} Scored_in_Assignment = Scored_in_Assignment {sbj? 83} Subject = Subject Student = Student Exam_Mark = Exam_Mark Student_Subject = Student_Subject Scored_in_Exam = Scored_in_Exam
46
76 75 63 45 68 Y SOC01 SOC02
Exams_Mark Scored_in_Exam Assignment Mark
82 63 49
83
SOCO3
SOC04
SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
Subject Figure 15, System Dataset Diagram after Entering Coursework Mark
47
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, Y} Assignment Mark = {76, 82, 63, 49, 83} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD3005Y)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD300583)}
DESCRIPTION OF STEPS
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Get input student id. Check if id is available or not. Get input subject id. Check if subject has subject or not. Update assignment mark. Update relationship between subject and assignment _mark in the scored_in_assignment function. Update other functions.
48
Change Coursework Score Result System std? : student sbj? : subject msg! :message std? student msg! = sudent doesnt exists std? student sbj? subject msg! = subject doesnt exist sbj? subject exam_mark = exam_mark assignment_mark = assignment_mark {83} student_course = student_course score_in_exam = score_in_exam score_in_assignment = score_in_assignment {std?83} msg! = coursework score changed
49
USE4-09/09-00082, 0949597
76
75
63 45 68 73 SOC01 SOC02
Exams_Mark Scored_in_Exam
82 63 49 83
Assignment Mark
SOCO3
SOC04 SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
Subject Figure 16, System Dataset Diagram before Change Exam Mark Operation
50
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, 73} Assignment Mark = {76, 82, 63, 49, 89} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD300573)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD300589)} Let 79 be the new Exam_Mark, SD3005 be the subject and SOC05.be the student After the operation has been executed, the system will appear as follows:
OPERATION:
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Exam_Mark = Exam_Mark {79} Scored_in_ Exam = Scored_in_ Exam {sbj? 79} Subject = Subject Student = Student Assignment_Mark = Assignment_Mark Student_Subject = Student_Subject Scored_in_ Assignment = Scored_in_ Assignment
51
76 75 63 45 68 82 63 49 X
79
SOC01 SOC02
Exams_Mark Scored_in_Exam Assignment Mark
SOCO3
SOC04
SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
Subject Figure 17, System Dataset Diagram after Change Exam Mark Operation
52
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, 79 } Assignment Mark = {76, 82, 63, 49, X} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD300579)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD3005X)}
DESCRIPTION OF STEPS
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Get input student id. Check if id is available or not. Get input subject id. Check if subject has subject or not. Update exam mark. Update relationship between subject and exam _mark in the scored_in_examfunction. Update other functions.
53
Change Exam Mark Result System std? : student sbj? : subject msg! :message std? student msg! = sudent doesnt exists std? student sbj? subject msg! = subject doesnt exist sbj? subject exam_mark = exam_mark {79} assignment_mark = assignment_mark student_course = student_course score_in_exam = score_in_exam {std?79} score_in_assignment = score_in_assignment msg! = Exam score changed
54
USE4-09/09-00082, 0949597
76
75
63 45 68 73 SOC01 SOC02
Exams_Mark Scored_in_Exam
82 63 49 83
Assignment Mark
SOCO3
SOC04 SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
55
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, 73} Assignment Mark = {76, 82, 63, 49, 89} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD300573)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD300589)} Let SOC05 be the student to be deleted. After the operation has been executed, the system will appear as follows:
OPERATION:
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Student = Student \ {std?} Subject = Subject \ {student_subject std} Exam_Mark = Exam_Mark \ { Scored_in_ Exam \ std?} Assignment_Mark = scored_in_Assignment \ {std? scored_in_Assignment } Scored_in_ Exam = Scored_in_ Exam \ {std? Scored_in_ Exam std} Scored_in_ Assignment = Scored_in_ Assignment \ {std? Scored_in_ Assignment std} Student_Subject = Student_Subject \ {std? Student_Subject std}
56
76 75 63 45 68 82 63 49 X
79
SOC01 SOC02
Exams_Mark Scored_in_Exam Assignment Mark
SOCO3
SOC04
SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
57
Student = {SOC01, SOC02, SOC03, SOC04} Subject = {SD3001, CNOO2, CNOO3, SD3004} Exam Mark = {75, 63, 45, 68} Assignment Mark = {76, 82, 63, 49} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004)} Scored_in_Exam = {(SD300175), (SD300263), (SD300345), (SD300468)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468)}
DESCRIPTION OF STEPS
Get input student id. Check if id is available or not. Delete student id from students set. Delete subject from subject set. Delete assignment mark from assignment mark set. Delete exam mark from exam mark set. Delete all relationships to subject. Delete all relationships to student.
58
Delete Student Result System std? : student msg! : message std? student msg! = sudent doesnt exists std? student Student = Student \ {std?} Subject = Subject \ {student_subject std} Exam_Mark = Exam_Mark \ { Scored_in_ Exam \ std?} Assignment_Mark = scored_in_Assignment \ {std? scored_in_Assignment } Scored_in_ Exam = Scored_in_ Exam \ {std? Scored_in_ Exam std} Scored_in_ Assignment = Scored_in_ Assignment \ {std? Scored_in_ Assignment std} Student_Subject = Student_Subject \ {std? Student_Subject std} Msg! = student remived
59
USE4-09/09-00082, 0949597
76
75
63 45 68 73 SOC01 SOC02
Exams_Mark Scored_in_Exam
82 63 49 89
Assignment Mark
SOCO3
SOC04 SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
Subject Figure 40, System Dataset Diagram before Delete Course Mark Operation
60
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, 73} Assignment Mark = {76, 82, 63, 49, 89} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD300573)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD300589)} Let X be the new Assignment_Mark, SD3005 be the subject and SOC05.be the student After the operation has been executed, the system will appear as follows:
OPERATION:
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Assignment_Mark = Assignment_Mark {X} Scored_in_Assignment = Scored_in_Assignment {sbj? X} Subject = Subject Student = Student Exam_Mark = Exam_Mark Student_Subject = Student_Subject Scored_in_Exam = Scored_in_Exam
61
76 75 63 45 68 73 SOC01 SOC02
Exams_Mark Scored_in_Exam Assignment Mark
82 63 49 X
SOCO3
SOC04
SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
Subject Figure 51, System Dataset Diagram after Delete Course Mark Operation
62
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, 73} Assignment Mark = {76, 82, 63, 49, X} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD300573)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD300589)}
DESCRIPTION OF STEPS
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Get input student id. Check if id is available or not. Get input subject id. Check if subject has subject or not. Remove assignment mark. Update relationship between subject and assignment _mark in the scored_in_assignment function. Update other functions.
63
Delete Coursework Mark Result System std? : student sbj? : subject msg! :message std? student msg! = sudent doesnt exists std? student sbj? subject msg! = subject doesnt exist sbj? subject exam_mark = exam_mark assignment_mark = assignment_mark {X} student_course = student_course score_in_exam = score_in_exam score_in_assignment = score_in_assignment {std?X} msg! = Coursework has been deleted
64
USE4-09/09-00082, 0949597
76
75
63 45 68 73 SOC01 SOC02
Exams_Mark Scored_in_Exam
82 63 49 89
Assignment Mark
SOCO3
SOC04 SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
Subject Figure 62, System Dataset Diagram before List Marks for Subject
65
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, 73} Assignment Mark = {76, 82, 63, 49, 89} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD300573)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD300589)}
OPERATION:
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Out! = sbj: subject sbj, assignment_mark, exam_mark grd sbj dom student_subject Out! = Out! = sbj: subject sbj, assignment_mark, exam_mark grd, student_subject
66
76 75 63 45 68 73 SOC01 SOC02
Exams_Mark Scored_in_Exam Assignment Mark
82 63 49 89
SOCO3
SOC04
SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
Subject Figure 73, System Dataset Diagram after List Subject Scores with Grades
67
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, 73} Assignment Mark = {76, 82, 63, 49, 89} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD300573)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD300589)}
DESCRIPTION OF STEPS
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Get input subject id. Check if subject has subject or not. Display a message that lists all elements associated with the subject id
ABSTRACT SCHEMA FOR LIST SUBJECT MARKS WITH GRADES List Subject Marks With Grades Result System Sbj? : Subject Out! : Message Out! = sbj: subject sbj, assignment_mark, exam_mark grd sbj dom student_subject Out! = Out! = sbj: subject sbj, assignment_mark, exam_mark grd, student_subject
68
USE4-09/09-00082, 0949597
76
75
63 45 68 73 SOC01 SOC02
Exams_Mark Scored_in_Exam
82 63 49 89
Assignment Mark
SOCO3
SOC04 SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
Subject Figure 84, System Dataset Diagram before List Students Who Failed
69
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, 73} Assignment Mark = {76, 82, 63, 49, 89} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD300573)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD300589)}
OPERATION:
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
70
76 75 63 45 68 73 SOC01 SOC02
Exams_Mark Scored_in_Exam Assignment Mark
82 63 49 89
SOCO3
SOC04
SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
Subject Figure 95, System Dataset Diagram after List Students Who Failed
71
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, 73} Assignment Mark = {76, 82, 63, 49, 89} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD300573)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD300589)}
DESCRIPTION OF STEPS
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Get input subject id. Check if subject has subject or not. Display a message that lists all students with assignment marks or exam marks less than 40.
ABSTRACT SCHEMA FOR STUDENTS WHO FAILED List Students Who Failed Result System Sbj? : Subject Out! : Message Out! = std: student std {(assignment_mark < 40) (exam_mark <40)}
72
USE4-09/09-00082, 0949597
76
75
63 45 68 73 SOC01 SOC02
Exams_Mark Scored_in_Exam
82 63 49 89
Assignment Mark
SOCO3
SOC04 SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
Subject Figure 106, System Dataset Diagram before List Students Who Failed
73
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, 73} Assignment Mark = {76, 82, 63, 49, 89} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD300573)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD300589)}
OPERATION:
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
74
76 75 63 45 68 73 SOC01 SOC02
Exams_Mark Scored_in_Exam Assignment Mark
82 63 49 89
SOCO3
SOC04
SD3001 SD3002 SD3003 SD3004 SD3005
Student Subject Student
SOC05
Scored_in_Assignment
SD3001
Subject Figure 117, System Dataset Diagram after List Students Who Failed
75
Student = {SOC01, SOC02, SOC03, SOC04, SOC05} Subject = {SD3001, CNOO2, CNOO3, SD3004, SD3005} Exam Mark = {75, 63, 45, 68, 73} Assignment Mark = {76, 82, 63, 49, 89} Student_Subject = {(SOC01SD3001), (SOC02SD3002), (SOC03SD3003), (SOC04SD3004), (SOC05, SD3005)} Scored_in_Exam (SD300573)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD300589)}
DESCRIPTION OF STEPS
{(SD300175),
(SD300263),
(SD300345),
(SD300468),
Get input subject id. Check if subject has subject or not. Display a message that lists all students with assignment mark with the value of X
ABSTRACT SCHEMA FOR STUDENTS WHO DIDNT SUBMIT ASSIGNMENTS Students Who didnt Submit Assignment Result System Sbj? : Subject Out! : Message Out! = std: student std {assignment_mark = X}
76
USE4-09/09-00082, 0949597
Index 1 2 3 4
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004
Index 1 2 3 4
Index 1 2 3 4
Result System Concrete Schema Definition Result System Student_Subject Array : student subject Scored_in_Assignment Array : student (subject assignment_mark) Scored_in_Exam Array : student (subject exam_mark) Ran Student_Subject Array student subject Ran Scored_in_Assignment Array subject assignment_mark Ran Scored_in_Exam Array subject exam_mark
77
USE4-09/09-00082, 0949597
Index 1 2 3 4
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>} Let SOC05 be the new student, SD3005 be the new course, X the new Assignment_Mark and Y the new Exam_Mark. After the operation has been executed, the system will appear as follows:
78
Student_Subject array = Student_Subject array <std? sbj?> Scored_in_Exam = Scored_in_Exam <sbj? Y> Scored_in_Assignment array = Scored_in_Assignment array <sbj? X>
AFTER Index 1 2 3 4 5 Index 1 2 3 4 5 Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004 SOC 05 SD005 OPERATION
Index Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68 SD005 Y 1 2 3 4 5
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>, <SOC05 SD005>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 Y)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 X)>}
STEPS DESCRIPTION
Check if student is available in dom student_subject array. Add student id to dom student_subject array.
FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM 79
USE4-09/09-00082, 0949597
Add subject to dom student_subject array Add assignment mark to ran Scored_in_Assignment array. Add exam mark to ran Scored_in_Exam array.
80
Add-Student, Allocate-Subject Result System std? : student sbj? : subject msg! :message std? Student_Subject msg! = sudent exists std? Sttudent_Subject Student_Subject array = Student_Subject array <std? sbj?> Scored_in_Exam = Scored_in_Exam <sbj? Y> Scored_in_Assignment array = Scored_in_Assignment array <sbj? X> msg! = New student added with subject
81
USE4-09/09-00082, 0949597
Index 1 2 3 4 5
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004 SOC 05 SD005 Index 1 2 3 4 5 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68 SD005 Y
Index 1 2 3 4 5
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>, <SOC05 SD005>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 Y)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 X)>} Let SD3006 be the new course, X the new Assignment_Mark and Y the new Exam_Mark. After the operation has been executed, the system will appear as follows:
OPERATION
82
Index 1 2 3 4 5
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004 SOC 05 SD006 Index 1 2 3 4 5 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68 SD006 Y
Index 1 2 3 4 5
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>, <SOC05 SD005>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 Y)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 X)>}
STEPS DESCRIPTION
Get student id input. Check if id is available in dom Student_Subject array. Update Student_Subject array with new subject
FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM 83
USE4-09/09-00082, 0949597
Modify Subject Result System SOC05? : student Sbj? : subject Msg! possible messages SOC05? student_subject array msg! = student doesnt exist SOC05? student_subject array
Student_Subject array == Student_Subject array {std? sbj?} Msg! subject changed.
84
USE4-09/09-00082, 0949597
Index 1 2 3 4 5
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004 SOC 05 SD006 Index 1 2 3 4 5 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68 SD006 Y
Index 1 2 3 4 5
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>, <SOC05 SD005>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 Y)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 X)>} Let SD3005 be the course to be removed. After the operation has been executed, the system will appear as follows:
85
Sbj? dom (Student_Subject array) Student_Subject array = Student_Subject array \ <std? sbj?> Scored_in_Exam array = Scored_in_Exam array \ sbj? , ran (ran scored_in_exam array) Scored_in_Assignment array = Scored_in_Assignment array \ sbj? , ran (ran scored_in_assignment array)
86
Index 1 2 3 4 5
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004 SOC 05 Index 1 2 3 4 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68
Index 1 2 3 4
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>, <SOC05>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>}
STEPS DESCRIPTION
Get student id input. Check if id is available in dom Student_Subject array. Delete subject from student_subject
Delete the assignment_mark from Scored_in_Assignment array. Delete the exam_mark from Scored_in_Exam array.
FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM 87
USE4-09/09-00082, 0949597
Delete Subject Result System std? : student Sbj? : subject Msg! possible messages std? student msg! = student doesnt exist Sbj? dom (Student_Subject array)
Student_Subject array = Student_Subject array \ <std? sbj?> Scored_in_Exam array = Scored_in_Exam array \ sbj? , ran (ran scored_in_exam array) Scored_in_Assignment array = Scored_in_Assignment array \ sbj? , ran (ran scored_in_assignment array)
88
USE4-09/09-00082, 0949597
Index 1 2 3 4 5
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004 SOC 05 SD005 Index 1 2 3 4 5 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68 SD005 Y
Index 1 2 3 4 5
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>, <SOC05 SD005>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 Y)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 X)>} Let 89 the new Assignment_Mark, SD3005 be the subject and SOC05.be the student After the operation has been executed, the system will appear as follows:
OPERATION
Index 1 2 3 4 5
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004 SOC 05 SD006 Index 1 2 3 4 5 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68 SD006 Y
Index 1 2 3 4 5
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>, <SOC05 SD005>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 Y)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 89)>}
STEPS DESCRIPTION
Get student id input. Check if id is available in dom Student_Subject array. Get subject input. Check if subject is available in Student_Subject array.
FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM 90
USE4-09/09-00082, 0949597
Enter Coursework Mark Result System SOC05? : student Sbj? : subject Msg! possible messages SOC05? student_subject array msg! = student doesnt exist SOC05? student_subject array Scored_in_Assignment array == Scored_in_Assignment array {SD3005? 89}
Msg! Mark changed.
91
USE4-09/09-00082, 0949597
Index 1 2 3 4 5
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004 SOC 05 SD005 Index 1 2 3 4 5 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68 SD005 Y
Index 1 2 3 4 5
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>, <SOC05 SD005>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 Y)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 89)>} Let 73 be the new Exam_Mark, SD3005 be the subject and SOC05.be the student After the operation has been executed, the system will appear as follows:
OPERATION
92
USE4-09/09-00082, 0949597
93
Index 1 2 3 4 5
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004 SOC 05 SD006 Index 1 2 3 4 5 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68 SD006 73
Index 1 2 3 4 5
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>, <SOC05 SD005>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 73)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 89)>}
STEPS DESCRIPTION
Get student id input. Check if id is available in dom Student_Subject array. Get subject input.
FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM 94
USE4-09/09-00082, 0949597
Check if subject is available in Student_Subject array. Update Scored_in_Exam array with new score. Update other arrays.
Enter Coursework Mark Result System SOC05? : student SD3005? : subject Msg! possible messages SOC05? student_subject array msg! = student doesnt exist SOC05? student_subject array Scored_in_Exam array == Scored_in_Exam array {SD3005? 73}
Msg! Mark changed.
95
USE4-09/09-00082, 0949597
Index 1 2 3 4 5
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004 SOC 05 SD005 Index 1 2 3 4 5 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68 SD005 73
Index 1 2 3 4 5
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>, <SOC05 SD005>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 73)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 89)>} Let 83 the new Assignment_Mark, SD3005 be the subject and SOC05.be the student After the operation has been executed, the system will appear as follows:
OPERATION
96
USE4-09/09-00082, 0949597
97
Index 1 2 3 4 5
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004 SOC 05 SD006 Index 1 2 3 4 5 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68 SD006 73
Index 1 2 3 4 5
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>, <SOC05 SD005>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 73)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 83)>}
STEPS DESCRIPTION
Get student id input. Check if id is available in dom Student_Subject array. Get subject input.
FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM 98
USE4-09/09-00082, 0949597
Check if subject is available in Student_Subject array. Update Scored_in_Assignment array with new score. Update other arrays.
Change Coursework Mark Result System SOC05? : student Sbj? : subject Msg! possible messages SOC05? student_subject array msg! = student doesnt exist SOC05? student_subject array Scored_in_Assignment array == Scored_in_Assignment array {SD3005? 83}
Msg! Mark changed.
99
USE4-09/09-00082, 0949597
Index 1 2 3 4 5
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004 SOC 05 SD005 Index 1 2 3 4 5 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68 SD005 73
Index 1 2 3 4 5
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>, <SOC05 SD005>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 73)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 83)>} Let 79 be the new Exam_Mark, SD3005 be the subject and SOC05.be the student After the operation has been executed, the system will appear as follows:
OPERATION
Index 1 2 3 4 5
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004 SOC 05 SD006 Index 1 2 3 4 5 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68 SD006 79
Index 1 2 3 4 5
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>, <SOC05 SD005>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 79)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 89)>}
STEPS DESCRIPTION
Get student id input. Check if id is available in dom Student_Subject array. Get subject input.
FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM 101
USE4-09/09-00082, 0949597
Check if subject is available in Student_Subject array. Update Scored_in_Exam array with new score. Update other arrays.
Enter Coursework Mark Result System SOC05? : student SD3005? : subject Msg! possible messages SOC05? student_subject array msg! = student doesnt exist SOC05? student_subject array Scored_in_Exam array == Scored_in_Exam array {SD3005? 79}
Msg! Mark changed.
102
USE4-09/09-00082, 0949597
Index 1 2 3 4 5
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004 SOC 05 SD005 Index 1 2 3 4 5 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68 SD005 79
Index 1 2 3 4 5
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>, <SOC05 SD005>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 79)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>, <SOC05 (SD005 83)>} Let SOC05 be the student to be deleted. After the operation has been executed, the system will appear as follows:
OPERATION
Std? dom (Student_Subject array) Student_Subject array== Student_Subject array \ <std? , ran(ran Student_Subject)>
FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM 103
Scored_in_ Assignment array = Scored_in_ Assignment array \ <std? ran(ran Scored_in_ Assignment)> Scored_in_ Exam array = Scored_in_ Exam array \ <std? ran(ran Scored_in_ Exam)>
Index 1 2 3 4 Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004 AFTER OPERATION
USE4-09/09-00082, 0949597
Index
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>}
STEPS DESCRIPTION
USE4-09/09-00082, 0949597
Delete student for dom Student_Subject array. Delete subject from dom Student_Subject array. Delete assignment mark from dom Scored_in_Assignment array. Delete exam mark from dom Scored_in_Exam array.
105
USE4-09/09-00082, 0949597
Index 1 2 3 4
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004
Index 1 2 3 4
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>} Let X the new Assignment_Mark, SD3004 be the subject and SOC04.be the student After the operation has been executed, the system will appear as follows:
OPERATION
106
USE4-09/09-00082, 0949597
107
Index 1 2 3 4
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004
Index 1 2 3 4
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD3004X)> }
STEPS DESCRIPTION
Get student id input. Check if id is available in dom Student_Subject array. Get subject input. Check if subject is available in Student_Subject array. Update Scored_in_Assignment array with new score.
FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM 108
USE4-09/09-00082, 0949597
Delete Coursework Mark Result System SOC05? : student Sbj? : subject Msg! possible messages SOC05? student_subject array msg! = student doesnt exist SOC05? student_subject array Scored_in_Assignment array == Scored_in_Assignment array {SD3005? X}
Msg! Mark changed.
109
USE4-09/09-00082, 0949597
Index 1 2 3 4
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004
Index 1 2 3 4
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD3004X)>} Let X the new Assignment_Mark, SD3004 be the subject and SOC04.be the student After the operation has been executed, the system will appear as follows:
OPERATION
Out! = sbj: dom(Student_Subject array) <sbj (scored_in_assignment, scored in exam)> sbj dom student_subject array
FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM 110
Index 1 2 3 4
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004
Index 1 2 3 4
Index 1 2 3 4
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD3004X)>}
STEPS DESCRIPTION
Get input subject id. Check if subject has subject or not. Display a message that lists all elements associated with the subject id
111
USE4-09/09-00082, 0949597 CONCRETE SCHEMA FOR LIST MARKS AND GRADES OF SUBJECT List Subject Marks With Grades Result System Sbj? : Subject Out! : Message Out! = sbj: dom(Student_Subject array) <sbj (scored_in_assignment, scored in exam)> sbj dom student_subject array
112
USE4-09/09-00082, 0949597
Index 1 2 3 4
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004
Index 1 2 3 4
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD3004X)>}
OPERATION
Out! = std: dom(Student_Subject array) <sbj {(scored_in_assignment < 40 scored_in_exam < 40)}>
113
Index 1 2 3 4
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004
Index 1 2 3 4
Index 1 2 3 4
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD3004X)>}
STEPS DESCRIPTION
Get input subject id. Check if subject has subject or not. Display a message that lists all elements associated with the subject id
114
USE4-09/09-00082, 0949597 CONCRETE SCHEMA FOR LIST STUDENTS THAT FAILED List Subject Marks With Grades Result System Sbj? : Subject Out! : Message Out! = std: dom(Student_Subject array) <sbj {(scored_in_assignment < 40 scored_in_exam < 40)}>
115
USE4-09/09-00082, 0949597
Index 1 2 3 4
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004
Index 1 2 3 4
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD3004X)>}
OPERATION
116
Index 1 2 3 4
Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004
Index 1 2 3 4
Index 1 2 3 4
Student_Subject == {<SOC01SD3001>, <SOC02SD3002>, <SOC03SD3003>, <SOC04SD3004>} Scored_in_Exam == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD300468)>} Scored_in_Assignment == {<SOC01 (SD300175)>, <SOC02 (SD300263)>, <SOC03 (SD300345)>, <SOC04 (SD3004X)>}
STEPS DESCRIPTION
Get input subject id. Check if subject has subject or not. Display a message that lists all elements associated with the subject id
117
USE4-09/09-00082, 0949597 CONCRETE SCHEMA FOR LIST STUDENTS THAT DIDNT SUBMIT ASSIGNMENT List Subject Marks With Grades Result System Sbj? : Subject Out! : Message Out! = std: dom(Student_Subject array) std { scored_in_assignment = X}
118
USE4-09/09-00082, 0949597
Add-Student, Allocate-Subject Result System std? : student sbj? : subject Result System | std? std? student student = student {std?} subject = subject {sbj?} exam_mark = exam_mark {Y?} assignment_mark = assignment_mark {X} student_course = student_course {std? sbj?} score_in_exam = score_in_exam {std?Y?} score_in_assignment = score_in_assignment {std?X?} msg! = New student added with subject
119
Modify Subject Result System SOC05? : student Sbj? : subject Result System: SOC05? | student SOC05? student Subject = Subject {sbj?} exam_mark = exam_mark {Y?} assignment_mark = assignment_mark {X} student_course = student_course { SOC05? sbj?} score_in_exam = score_in_exam {std?Y?} score_in_assignment = score_in_assignment {std?X?}
Delete Subject Result System std? : student Sbj? : subject Result System: std? | {student std? student (subject sbj? subject)} Subject = Subject {sbj?} exam_mark = exam_mark {scored_in_exam sbj?} assignment_mark = assignment_mark {scored_in_ exam sbj} student_course = student_course {scored_in_assignment sbj} score_in_exam = score_in_exam {std?Y?} score_in_assignment = score_in_assignment {X scored_in_assignment X?}
120
Enter Coursework Score Result System std? : student sbj? : subject Result System: std? | {student std? student (subject sbj? subject)} exam_mark = exam_mark assignment_mark = assignment_mark {89} student_course = student_course score_in_exam = score_in_exam score_in_assignment = score_in_assignment {std?89}
Enter Exam Score Result System std? : student sbj? : subject msg! :message Result System: std? | {student std? student (subject sbj? subject)} exam_mark = exam_mark {73} assignment_mark = assignment_mark student_course = student_course score_in_exam = score_in_exam {std?73} score_in_assignment = score_in_assignment msg! = New exam score added
121
Change Coursework Score Result System std? : student sbj? : subject Result System : sbj?: student sbj? student exam_mark = exam_mark assignment_mark = assignment_mark {83} student_course = student_course score_in_exam = score_in_exam score_in_assignment = score_in_assignment {std?83} msg! = coursework score changed
Change Exam Mark Result System std? : student sbj? : subject Result System : sbj?: student sbj? student exam_mark = exam_mark {79} assignment_mark = assignment_mark student_course = student_course score_in_exam = score_in_exam {std?79} score_in_assignment = score_in_assignment msg! = Exam score changed
122
Delete Student Result System std? : student Result System :std? : student std? student Student = Student \ {std?} Subject = Subject \ {student_subject std} Exam_Mark = Exam_Mark \ { Scored_in_ Exam \ std?} Assignment_Mark = scored_in_Assignment \ {std? scored_in_Assignment } Scored_in_ Exam = Scored_in_ Exam \ {std? Scored_in_ Exam std} Scored_in_ Assignment = Scored_in_ Assignment \ {std? Scored_in_ Assignment std} Student_Subject = Student_Subject \ {std? Student_Subject std}
Delete Coursework Mark Result System std? : student sbj? : subject Result System: std? | {student std? student (subject sbj? subject)} exam_mark = exam_mark assignment_mark = assignment_mark {X} student_course = student_course score_in_exam = score_in_exam score_in_assignment = score_in_assignment {std?X}
123
USE4-09/09-00082, 0949597 LIST STUDENTS MARKS WITH GRADES PRE-CONDITION SCHEMA List Subject Marks With Grades Result System Sbj? : Subject Out! : Message Out! = sbj: subject sbj, assignment_mark, exam_mark grd sbj dom student_subject Out! = Out! = sbj: subject sbj, assignment_mark, exam_mark grd, student_subject
LIST STUDENTS WHO FAILED IN A SUBJECT PRE-CONDITION SCHEMA List Students Who Failed Result System Sbj? : Subject Out! : Message Out! = std: student std {(assignment_mark < 40) (exam_mark <40)}
LIST STUDENTS WHO HAD NOT SUBMITTED THEIR ASSIGNMENTS PRE-CONDITION SCHEMA Students Who didnt Submit Assignment Result System Sbj? : Subject Out! : Message Out! = std: student std {assignment_mark = X}
124
ACCEPTABILITY THEOREM
ADD STUDENT
USE4-09/09-00082, 0949597
Precondition add student with subject retr Std? item Student_Subject Student_Subject) Goal 1 Std? Student Goal 2 Std? dom Scored_in_Assignment Goal 3 =
MODIFY STUDENT
Pre-condition modify subject abstract retr pre condition modify subject concrete. Std? item Student_Subject Student_Subject)
Goal 1
Std? Student
Goal 2
125
Std? item Student_Subject Student_Subject) Goal 1 Sbj? dom Student_Subject Goal 2 Sbj? dom Assignment_Mark Goal 3 Sbj? dom Exam_Mark Goal 4
USE4-09/09-00082, 0949597
#Subject = #dom ran Student_Subject array #Assignment_Mark = #dom ran Scored_in_Assignment array #Exam_Mark = #dom ran Scored_in_Exam array
Sbj? Subject
Goal 2
USE4-09/09-00082, 0949597
Sbj? Subject
Goal 2
Sbj? Subject
Goal 2
Sbj? Subject
Goal 2
127
USE4-09/09-00082, 0949597
#Student = #dom ran Student_Subject array #Subject = #dom ran Student_Subject array #Assignment_Mark = #dom ran Scored_in_Assignment array #Exam_Mark = #dom ran Scored_in_Exam array
#Assignment_Mark = #dom ran Scored_in_Assignment array #Subject = #dom ran Student_Subject array
128
USE4-09/09-00082, 0949597
Sbj? Subject
Goal 2
precondition
Sbj? Subject
Goal 2
129
USE4-09/09-00082, 0949597
Sbj? Subject
Goal 2
130
USE4-09/09-00082, 0949597
: LecturerHome
: AddStudent
: StudentControl
: StudentsTableDB
2. Enter Student number. 3. Assign sublects to student. 4. Click add student. 5. Sends request. 6. Checks if student exists. 7. Returns. 8. Adds student. 9. Returns confirmation. 10. Displays notification.
131
USE4-09/09-00082, 0949597
: LecturerHome
: ManageCoursePage
: CourseControl
: StudentCourseTableDB
2. Displays.
3. Select course. 4. Click enter course work mark. 5. Sends request. 6. Request students taking the course. 7. Returns information. 8. Displays student. 9. Enter course work mark. 10. Click save. 11. Sends request. 12. Request confirmation. 13. Confirm input. 14. Save information. 15. Return confirmation. 16. Displays notification.
132
USE4-09/09-00082, 0949597
: LecturerHome
: ManageExamPage
: ExamControl
: StudentCourseTableDB
2. Displays.
3. Select course. 4. Click enter exam mark. 5. Sends request. 6. Request students taking the course. 7. Returns information. 8. Displays student. 9. Enter exam mark. 10. Click save. 11. Sends request. 12. Request confirmation. 13. Confirm input. 14. Save information. 15. Return confirmation. 16. Displays notification.
133
USE4-09/09-00082, 0949597
: LecturerHome
: ManageStudentPage
: StudentControl
: StudentsTableDB
2. Displays.
3. Enter student number. 4. Click search. 5. Sends request. 6. Search for student course details. 7. Returns information. 8. Displays information. 9. Modify student subject. 10. Click save. 11. Sends request. 12. Verifies data. 13. Confirms. 14. Update student details. 15. Returns Confirmation. 16. Displays confirmation.
134
USE4-09/09-00082, 0949597
: Lecturer
: LecturerHome
: ManageCoursePage
: StudentControl
: StudentCourseTableDB
3. Enter student number. 4. Click search. 5. Sends request. 6. Verify data. 7. Confirm Data. 8. Request information. 9. Return information. 10. Displays student's record. 11. Click edit grade. 12. Sends request. 13. Enables editing. 14. Enters new grades. 15. Click save. 16. Sends request. 17. Verify data. 18. Confirm data. 19. Updates grades. 20. Returns confirmation. 21. Displays confirmation.
135
USE4-09/09-00082, 0949597
: LecturerHome
: ManageStudentPage
: StudentControl
: StudentsTableDB
2. Displays.
3. Enters student number. 4. Click search. 5. Sends request. 6. Verify data. 7. Confirm data. 8. Search for student information. 9. Return information. 10. Displays information. 11. Select subject to delete. 12. Click delete. 13. Sends request. 14. Request confirmation. 15. Confirm deletion. 16. Delete subject from student. 17. Return confirmation. 18. Displays confirmation.
136
USE4-09/09-00082, 0949597
: CourseLecturer
: LecturerHome
: ManageCoursePage
: StudentControl
: StudentCourseTableDB
3. Enter student number. 4. Clicks on "search" link. 5. Sends request. 6. Verifies data. 7. Confirms Data. 8. Requests information. 9. Returns 10. Displays student's record. 11. Clicks on "edit grade" link. 12. Sends request. 13. Enables editing. 14. Enters new grades. 15. Click save. 16. Sends request. 17. Verify data. 18. Confirm data. 19. Updates grades. 20. Returns confirmation. 21. Displays confirmation message.
137
USE4-09/09-00082, 0949597
: CourseLecturer
: LecturerHome
: ManageExamPage
: StudentControl
: StudentExamTableDB
3. Enter student number. 4. Clicks on "search" link. 5. Sends request. 6. Verifies data. 7. Confirms Data. 8. Requests information. 9. Returns 10. Displays student's record. 11. Clicks on "edit grade" link. 12. Sends request. 13. Enables editing. 14. Enters new grades. 15. Click save. 16. Sends request. 17. Verify data. 18. Confirm data. 19. Updates grades. 20. Returns confirmation. 21. Displays confirmation message.
138
USE4-09/09-00082, 0949597
: LecturerHome
: ManageStudentPage
: StudentControl
: StudentsTableDB
2. Displays. 3. Enters student number. 4. Click on "search" link. 5. Sends request. 6. Verifies data. 7. Confirms data. 8. Search for student information. 9. Returns. 10. Displays information. 11. Selects student to be deleted. 12. Click delete. 13. Sends request. 14. Request confirmation. 15. Confirms 16. Delete student from semester. 17. Return confirmation. 18. Displays confirmation message.
139
USE4-09/09-00082, 0949597
: LecturerHome
: ManageStudentPage
: StudentControl
: StudentsTableDB
2. Displays. 3. Enters student number. 4. Click on "search" link. 5. Sends request. 6. Verifies data. 7. Confirms data. 8. Search for student information. 9. Returns. 10. Displays information. 11. Selects coursework mark to be deleted. 12. Click delete. 13. Sends request. 14. Request confirmation. 15. Confirms 16. Delete coursework from student. 17. Return confirmation. 18. Displays confirmation message.
140
USE4-09/09-00082, 0949597
: LecturerHome
: CourseControl
: StudentCourseTableDB
3. Send request. 4. Verify data. 5. Confirm data. 6. Requst information. 7. Return Information 8. Display information.
: LecturerHome
: CourseControl
: StudentCourseTableDB
2. Select failed results only. 3. Click view result. 4. Send request. 5. Verify data. 6. Confirm data. 7. Requst information. 8. Return Information 9. Display information.
141
USE4-09/09-00082, 0949597
: LecturerHome
: CourseControl
: StudentCourseTableDB
2. Select no assignments. 3. Click view result. 4. Send request. 5. Verify data. 6. Confirm data. 7. Requst information. 8. Return Information 9. Display information.
142
CONCLUSION
USE4-09/09-00082, 0949597
During the course of this project, the concepts of schemas have been greatly researched. The Z language was also researched as it was utilized in the visualization of the system. The above result system was represented in the several schema forms which include the abstract, concrete and relation schemas. The acceptability theorem was utilized in the validation of the system and to verify the data. In conclusion, the project implementation has broadened the authors view of the concept of formal methods and its applications in the field of software development.
143
REFERENCES
USE4-09/09-00082, 0949597
Heaven, W. J. D. (2001) 'Mapping Object-Z specifications to Java program specifications', Master's thesis, Imperial College, London. Sun, J. Dong, J. S. Liu, J. & Wang, H. (2001) Object-Z Web Environment and Projections to UML in '10th International World WideWeb Conference (WWW-10)', ACM Press, pp. 725-734. B. Beckert, U. Keller and P. Schmitt, Translating the Object Constraint Language into Firstorder Predicate Logic, to appear in Proceedings, VERIFY, Workshop at Federated Logic Conferences (FloC), Copenhagen, Denmark, 2002.
J. Warmer and A. Kleppe, The Object Constraint Language: Precise Modelling with UML, Addison-Wesley, 1999.
Selecting A Development Approach Original Issuance: February 17, 2005 Revalidated: March 27, 2008
A Survey Of System Development, Process Models, Center For Technology In Government, University At Albany, 1998
144