Вы находитесь на странице: 1из 145

SCHOOL OF COMPUTER SCIENCE AND INFORMATION TECHNOLOGY B.Sc. (Hons).

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.

FORMAL METHODS | INTRODUCTION

USE4-09/09-00082, 0949597

SYSTEM REQUIREMENTS SPECIFICATION


Functional requirements are the requirements which the system must have in order to function to its optimum capacity and to satisfy the basis for which it was developed. They are also referred to as behavioral requirements as they address the functions which the system has to provide. Nonfunctional requirements are the requirements whose presence in the system enhances the functionality of the system and make an improved system.
Table 1, System Requirements Table

Requirements Add new student

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

FORMAL METHODS | SYSTEM REQUIREMENTS SPECIFICATION

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

FORMAL METHODS | SYSTEM REQUIREMENTS SPECIFICATION

USE4-09/09-00082, 0949597

USE CASE DIAGRAM

Add Student <<include>>

<<extend>>

Modify Subject

Allocate Subject

Delete Subject <<include>>

Enter Coursework Mark

Change Coursework Mark

<<include>>

Lecturer

Enter Exam Mark

Change Exam Mark

Delete Student

Delete Coursework Mark

List Failed Students List Subject Result

List Students That didnt Submit

FORMAL METHODS | USE CASE DIAGRAM

USE4-09/09-00082, 0949597
Figure 1, Use Case Diagram for Result System.

SYSTEM DATA SET


The result system will hold information for four values. These values are regarded as sets in formal methods. These sets include Student, Subject, Assignment mark, and Exam mark. Figure 2 below illustrates the system dataset all the relationships between them.

76 75 63 45 82 63 49

68
Y 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 1, System Dataset Diagram

FORMAL METHODS | SYSTEM DATA SET

USE4-09/09-00082, 0949597

Data Set Description

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)}

DATASET NOTATION DESCRIPTION


FUNCTION STUDENT_SUBJECT

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.

Therefore, the relation/function is a total surjective function: Student_Subject: Student

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 }

Ran Student_Subject == { sbj : Subject | std : Student std


FUNCTION SCORED_IN_EXAM

sbj Student_Subject }

Source set = Subject Target Set = Exam_Mark Function = Scored_in_Exam

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}

The generic notation is: Scored_in_Exam == {sbj: Subject | em : Exam_Mark sbj

em

Scored_in_Exam}

Dom Scored_in_Exam == {sbj: Subject | em: Exam_Mark sbj

em Exam_Mark}

Ran Scored_in_Exam == {em: Exam_Mark | sbj: Subject sbj


FUNCTION SCORED_IN_ASSIGNMENT

em Exam_Mark}

Source set = Subject Target Set = Assignment_Mark Function = Scored_in_Assignment

FORMAL METHODS | SYSTEM DATA SET

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 =

Scored_in_Assignment = { Subject cost_ price | sbj : Subject; am : cost_ price. Sbj

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

FORMAL METHODS | SYSTEM DATA SET

13

USE4-09/09-00082, 0949597

Ran Scored_in_Assignment == {am: Assignment_Mark | sbj: Subject sbj Assignment_Markght}

am

SYSTEM ABSTRACT SCHEMA

Result System Abstract Schema Definition


Result System st: P Student sb: P Subject Student_Subject = stsb em: P Exam_Mark Scored_in_Exam = sbem am: P Assignment_Mark Scored_in_Assignment = sbam dom Student_Subject = Student ran Student_Subject = Subject dom Scored_in_Exam = Subject ran Scored_in_Exam = Exam_Mark dom Scored_in_Assignment = Subject ran Scored_in_Assignment = Assignment_Mark

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

14

USE4-09/09-00082, 0949597

ADD STUDENT AND ALLOCATE SUBJECT ABSTACT SCHEMA


BEFORE OPERATION

76 75 63 45 68 Y 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 2, System Dataset Diagram Before Add Student

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

15

USE4-09/09-00082, 0949597 DATA SETS BEFORE OPERATION

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}

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

16

USE4-09/09-00082, 0949597 STATUS AFTER CHANGE

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 3, System Dataset Diagram After Add Student

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

17

USE4-09/09-00082, 0949597 DATA SETS AFTER OPERATION

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.

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

18

USE4-09/09-00082, 0949597 ABSTRACT SCHEMA FOR ADD STUDENT

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

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

SOCO3 SOC04 SD3001 SD3002 SD3003 SD3004 SD3005


Student Subject Student

SOC05
Scored_in_Assignment

SD3001

Subject Figure 4, System Dataset Diagram Before Modify Subject

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

20

USE4-09/09-00082, 0949597 DATASET BEFORE OPERATION

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}

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

21

USE4-09/09-00082, 0949597 STATUS AFTER CHANGE

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

Subject Figure 5, System Dataset Diagram After Modify subject

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

22

USE4-09/09-00082, 0949597 DATASET AFTER OPERATION

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.

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

23

USE4-09/09-00082, 0949597 ABSTRACT SCHEMA FOR MODIFY SUBJECT

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.

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

24

USE4-09/09-00082, 0949597

ADD SUBJECT TO STUDENT


BEFORE OPERATION

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

Subject Figure 6, System Dataset Diagram Before Add Subject to Student

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

25

USE4-09/09-00082, 0949597 DATASET BEFORE OPERATION

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}

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

26

USE4-09/09-00082, 0949597

STATUS AFTER ADD

75 63 45

76 82 63

68
Y Y Y SOC01 SOC02
Exams_Mark Scored_in_Exam

49
X X

Assignment Mark

SOCO3 SOC04

SD3001 SD3002 SD3003 SD3004 SD3005 SD3007

SOC05
Scored_in_Assignment Student

Student Subject

Subject Figure 7, System Dataset Diagram After Add Subject to Student

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

27

USE4-09/09-00082, 0949597 DATA SET AFTER ADD SUBJECT

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),

(SD3005Y), (SD3005Y)} Scored_in_Assignment = {(SD300175), (SD300263), (SD300345), (SD300468), (SD3005X), (SD3005X)}


DESCRIPTIONS OF STEPS Get input of student id Check if student id is a member Add subject id Add exam mark Add assignment mark Add all relationships

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

28

USE4-09/09-00082, 0949597 ABSTRACT SCHEMA FOR ADD SUBJECT TO STUDENT

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

29

USE4-09/09-00082, 0949597

DELETE A SUBJECT FROM A STUDENT


BEFORE OPERATION

76 75 63 45 68 Y 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 8, System Dataset Diagram Before Delete a Subject from Student

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

30

USE4-09/09-00082, 0949597 DATASET BEFORE OPERATION

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?}}

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

31

USE4-09/09-00082, 0949597 STATUS AFTER CHANGE

76

75
63 45 68

82 63 49

SOC01 SOC02
Exams_Mark Scored_in_Exam

Assignment Mark

SOCO3 SOC04 SD3001 SD3002 SD3003 SD3004


Student Subject Student Scored_in_Assignment

SD3001

Subject Figure 9, System Dataset Diagram After deleting subject from Student

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

32

USE4-09/09-00082, 0949597 DATASET AFTER OPERATION

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.

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

33

USE4-09/09-00082, 0949597 ABSTRACT SCHEMA FOR DELETE SUBJECT

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

34

USE4-09/09-00082, 0949597

ENTER COURSEWORK MARK FOR STUDENT


BEFORE CHANGE

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 10, System Dataset Diagram Before Entering

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

35

USE4-09/09-00082, 0949597 DATASET BEFORE CHANGE

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

36

USE4-09/09-00082, 0949597 STATUS AFTER OPERATION

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

37

USE4-09/09-00082, 0949597 DATASET AFTER OPERATION

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.

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

38

USE4-09/09-00082, 0949597 ABSTRACT SCHEMA FOR ENTER COUSE MARK

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

39

USE4-09/09-00082, 0949597

ENTER EXAM MARK FOR STUDENT


BEFORE CHANGE

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

40

USE4-09/09-00082, 0949597 DATASET BEFORE CHANGE

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

41

USE4-09/09-00082, 0949597 STATUS AFTER OPERATION

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

42

USE4-09/09-00082, 0949597 DATASET AFTER OPERATION

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.

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

43

USE4-09/09-00082, 0949597 ABSTRACT SCHEMA FOR ENTER EXAM MARK

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

44

USE4-09/09-00082, 0949597

CHANGE COURSEWORK MARK FOR STUDENT


BEFORE CHANGE

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

45

USE4-09/09-00082, 0949597 DATASET BEFORE CHANGE

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

46

USE4-09/09-00082, 0949597 STATUS AFTER OPERATION

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

47

USE4-09/09-00082, 0949597 DATASET AFTER OPERATION

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.

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

48

USE4-09/09-00082, 0949597 ABSTRACT SCHEMA FOR CHANGE COUSE MARK

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

49

USE4-09/09-00082, 0949597

CHANGE EXAM MARK FOR STUDENT


BEFORE CHANGE

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

50

USE4-09/09-00082, 0949597 DATASET BEFORE CHANGE

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

51

USE4-09/09-00082, 0949597 STATUS AFTER OPERATION

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

52

USE4-09/09-00082, 0949597 DATASET AFTER OPERATION

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.

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

53

USE4-09/09-00082, 0949597 ABSTRACT SCHEMA FOR CHANGE EXAM MARK

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

54

USE4-09/09-00082, 0949597

DELETE STUDENT FROM SEMESTER


BEFORE CHANGE

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 18, System Dataset Diagram before Delete Student

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

55

USE4-09/09-00082, 0949597 DATASET BEFORE CHANGE

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}

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

56

USE4-09/09-00082, 0949597 STATUS AFTER OPERATION

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 19, System Dataset Diagram After Add Student

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

57

USE4-09/09-00082, 0949597 DATASET AFTER OPERATION

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.

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

58

USE4-09/09-00082, 0949597 ABSTRACT SCHEMA FOR DELETE STUDENT

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

59

USE4-09/09-00082, 0949597

DELETE COURSEWORK MARK FOR STUDENT


BEFORE CHANGE

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

60

USE4-09/09-00082, 0949597 DATASET BEFORE CHANGE

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

61

USE4-09/09-00082, 0949597 STATUS AFTER OPERATION

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

62

USE4-09/09-00082, 0949597 DATASET AFTER OPERATION

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.

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

63

USE4-09/09-00082, 0949597 ABSTRACT SCHEMA FOR DELETE COUSE MARK

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

64

USE4-09/09-00082, 0949597

LIST STUDENT MARKS WITH GRADE AND RESULT


BEFORE CHANGE

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

65

USE4-09/09-00082, 0949597 DATASET BEFORE CHANGE

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

66

USE4-09/09-00082, 0949597 STATUS AFTER OPERATION

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

67

USE4-09/09-00082, 0949597 DATASET AFTER CHANGE

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

68

USE4-09/09-00082, 0949597

LIST STUDENT WHO FAILED IN A SUBJECT


BEFORE CHANGE

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

69

USE4-09/09-00082, 0949597 DATASET BEFORE CHANGE

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! = std: student std {(assignment_mark < 40) (exam_mark <40)}

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

70

USE4-09/09-00082, 0949597 STATUS AFTER OPERATION

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

71

USE4-09/09-00082, 0949597 DATASET AFTER CHANGE

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)}

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

72

USE4-09/09-00082, 0949597

LIST STUDENT WHO HAD NOT SUBMITTED ASSIGNMENT


BEFORE CHANGE

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

73

USE4-09/09-00082, 0949597 DATASET BEFORE CHANGE

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! = std: student std {assignment_mark = X}

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

74

USE4-09/09-00082, 0949597 STATUS AFTER OPERATION

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

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

75

USE4-09/09-00082, 0949597 DATASET AFTER CHANGE

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}

FORMAL METHODS | SYSTEM ABSTRACT SCHEMA

76

CONCRETE SCHEMA FOR RESULT SYSTEM

USE4-09/09-00082, 0949597

Table 2, Student_Subject Array

Index 1 2 3 4

Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004

Table 3, Srored_in_Assignment Array

Index 1 2 3 4

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49


Table 4, Scored_in_Exam Array

Index 1 2 3 4

Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68

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

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

77

USE4-09/09-00082, 0949597

ADD STUDENT CONCRETE SCHEMA


Index 1 2 3 4 Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004 BEFORE OPERATION Index 1 2 3 4 Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49

Index 1 2 3 4

Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68

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:

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

78

USE4-09/09-00082, 0949597 OPERATION

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

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49 SD005 X

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.

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

80

USE4-09/09-00082, 0949597 CONCRETE SCHEMA FOR ADD STUDENT

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

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

81

USE4-09/09-00082, 0949597

MODIFY SUBJECT CONCRETE SCHEMA


BEFORE OPERATION

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

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49 SD005 X

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

Student_Subject array == Student_Subject array {std? sbj?}

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

82

USE4-09/09-00082, 0949597 AFTER 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

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49 SD006 X

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

Update other arrays.

CONCRETE SCHEMA FOR MODIFY SUBJECT

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.

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

84

USE4-09/09-00082, 0949597

DELETE SUBJECT FROM STUDENT CONCRETE SCHEMA


BEFORE 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

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49 SD006 X

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:

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

85

USE4-09/09-00082, 0949597 OPERATION

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)

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

86

USE4-09/09-00082, 0949597 AFTER OPERATION

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

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49

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

Update other arrays

USE4-09/09-00082, 0949597

CONCRETE SCHEMA FOR DELETE SUBJECT

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)

msg! = Students subject has been deleted

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

88

USE4-09/09-00082, 0949597

ENTER COURSE WORK MARK CONCRETE SCHEMA


BEFORE OPERATION

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

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49 SD005 X

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

Scored_in_Assignment array == Scored_in_Assignment array {SD3005? 89}


FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM 89

USE4-09/09-00082, 0949597 AFTER 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

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49 SD006 89

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

Update Scored_in_Assignment array with new score. Update other arrays.

CONCRETE SCHEMA FOR ENTER COURSEWORK MARK

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.

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

91

USE4-09/09-00082, 0949597

ENTER EXAM MARK CONCRETE SCHEMA


BEFORE OPERATION

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

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49 SD005 89

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

Scored_in_Exam array == Scored_in_ Exam array {SD3005? 73}

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

92

USE4-09/09-00082, 0949597

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

93

USE4-09/09-00082, 0949597 AFTER 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 73

Index 1 2 3 4 5

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49 SD006 89

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.

CONCRETE SCHEMA FOR ENTER COURSEWORK MARK

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.

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

95

USE4-09/09-00082, 0949597

CHANGE COURSE WORK MARK CONCRETE SCHEMA


BEFORE OPERATION

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

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49 SD005 89

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

Scored_in_Assignment array == Scored_in_Assignment array {SD3005? 83}

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

96

USE4-09/09-00082, 0949597

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

97

USE4-09/09-00082, 0949597 AFTER 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 73

Index 1 2 3 4 5

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49 SD006 83

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.

CONCRETE SCHEMA FOR CHANGE COURSEWORK MARK

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.

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

99

USE4-09/09-00082, 0949597

CHANGE EXAM MARK CONCRETE SCHEMA


BEFORE OPERATION

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

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49 SD005 83

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

Scored_in_Exam array == Scored_in_ Exam array {SD3005? 79}


FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM 100

USE4-09/09-00082, 0949597 AFTER 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

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49 SD006 89

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.

CONCRETE SCHEMA FOR ENTER COURSEWORK MARK

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.

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

102

USE4-09/09-00082, 0949597

DELETE STUDENT FROM SEMESTER CONCRETE SCHEMA


BEFORE OPERATION

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

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49 SD005 83

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

1 2 Index Dom Ran 3 Subject Exam_Mark 4 1 SD001 75 2 SD002 63 3 SD003 45 4 SD004 68

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49

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

Get student id input. Check if id is available in dom Student_Subject array.


FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM 104

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.

CONCRETE SCHEMA FOR ENTER COURSEWORK MARK

Delete Student Result System std? : student msg! : message


Std? dom (Student_Subject array) msg! = sudent doesnt exists Std? dom (Student_Subject array) Student_Subject array== Student_Subject array \ <std? , ran(ran Student_Subject)> 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)>

Msg! = student removed

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

105

USE4-09/09-00082, 0949597

DELETE COURSE WORK MARK CONCRETE SCHEMA


BEFORE OPERATION

Index 1 2 3 4

Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004

Index 1 2 3 4 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 49

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

Scored_in_Assignment array == Scored_in_Assignment array {SD3005? X}

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

106

USE4-09/09-00082, 0949597

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

107

USE4-09/09-00082, 0949597 AFTER OPERATION

Index 1 2 3 4

Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004

Index 1 2 3 4 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 X

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

Update other arrays.

CONCRETE SCHEMA FOR DELETE COURSEWORK MARK

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.

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

109

USE4-09/09-00082, 0949597

LIST THE MARKS OF A SUBJECT CONCRETE SCHEMA


BEFORE OPERATION

Index 1 2 3 4

Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004

Index 1 2 3 4 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 X

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

USE4-09/09-00082, 0949597 AFTER OPERATION

Index 1 2 3 4

Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004

Index 1 2 3 4

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 X

Index 1 2 3 4

Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68

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

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

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

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

112

USE4-09/09-00082, 0949597

LIST THE STUDENTS THAT FAILED CONCRETE SCHEMA


BEFORE OPERATION

Index 1 2 3 4

Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004

Index 1 2 3 4 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 X

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)}>

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

113

USE4-09/09-00082, 0949597 AFTER OPERATION

Index 1 2 3 4

Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004

Index 1 2 3 4

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 X

Index 1 2 3 4

Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68

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

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

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)}>

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

115

USE4-09/09-00082, 0949597

LIST THE STUDENTS THAT DIDNT SUBMIT ASSIGNMENT CONCRETE SCHEMA


BEFORE OPERATION

Index 1 2 3 4

Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004

Index 1 2 3 4 Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 X

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) std { scored_in_assignment = X}

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

116

USE4-09/09-00082, 0949597 AFTER OPERATION

Index 1 2 3 4

Dom Ran Student Subject SOC01 SD001 SOC01 SD002 SOC03 SD003 SOC04 SD004

Index 1 2 3 4

Dom Ran Subject Assignment_Mark SD001 76 SD002 82 SD003 63 SD004 X

Index 1 2 3 4

Dom Ran Subject Exam_Mark SD001 75 SD002 63 SD003 45 SD004 68

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

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

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}

FORMAL METHODS | CONCRETE SCHEMA FOR RESULT SYSTEM

118

SYSTEM RELATION SCHEMA


PRECONDITION SCHEMA

USE4-09/09-00082, 0949597

ADD NEW STUEDNT PRE-CONDITION SCHEMA

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

FORMAL METHODS | SYSTEM RELATION SCHEMA

119

USE4-09/09-00082, 0949597 MODIFY SUBJECT PRE-CONDITION SCHEMA

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 FROM STUDENT PRE-CONDITION SCHEMA

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?}

FORMAL METHODS | SYSTEM RELATION SCHEMA

120

USE4-09/09-00082, 0949597 ENTER COURSEWORK MARK PRE-CONDITION SCHEMA

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 MARK PRE-CONDITION SCHEMA

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

FORMAL METHODS | SYSTEM RELATION SCHEMA

121

USE4-09/09-00082, 0949597 CHANGE COURSEWORK MARK PRE-CONDITION SCHEMA

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 PRE-CONDITION SCHEMA

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

FORMAL METHODS | SYSTEM RELATION SCHEMA

122

USE4-09/09-00082, 0949597 DELETE STUDENT FROM SEMESTER PRE-CONDITION SCHEMA

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 FROM STUDENT PRE-CONDITION SCHEMA

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}

FORMAL METHODS | SYSTEM RELATION SCHEMA

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}

FORMAL METHODS | SYSTEM RELATION SCHEMA

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 =

precondition add student with subject Sbj? dom (ran

dom Student_Subject array

Std? dom (ran Student_Subject)

Std? dom ( ran Assignment_Mark array)

# Scored_in_Assignment = # Assignment_Mark array Goal 4 # Scored_in_Exam = # Exam_Mark array

MODIFY STUDENT
Pre-condition modify subject abstract retr pre condition modify subject concrete. Std? item Student_Subject Student_Subject)
Goal 1

dom Student_Subject array

Sbj? dom (ran

Std? Student
Goal 2

Std? dom (ran Student_Subject)

#Subject = #Student_Subject array

DELETE STUDENT SUBJECT


Precondition remove Subject from Student abstract retr Student concrete precondition remove Subject from

FORMAL METHODS | ACCEPTABILITY THEOREM

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

dom Student_Subject array

Sbj? dom (ran

Sbj? dom (ran Student_Subject array)

Sbj? dom (ran Scored_in_Assignment array)

Sbj? dom (ran Scored_in_Exam array)

#Subject = #dom ran Student_Subject array #Assignment_Mark = #dom ran Scored_in_Assignment array #Exam_Mark = #dom ran Scored_in_Exam array

ENTER COURSEWORK MARK


Pre-condition modify subject abstract retr pre condition modify subject concrete. Sbj? Subject Student_Subject = dom Student_Subject array Scored_in_Assignment array)
Goal 1

assignmen_mark? dom (ran

Sbj? Subject
Goal 2

Assignment_Mark? dom (ran Scored_in_Assignment array)

#Assignment_Mark = #Scored_in_Assignment array

ENTER EXAM MARK


Pre-condition modify subject abstract retr pre condition modify subject concrete.
FORMAL METHODS | ACCEPTABILITY THEOREM 126

Sbj? Subject Student_Subject = dom Student_Subject array Scored_in_Exam array)


Goal 1

USE4-09/09-00082, 0949597

exam_mark? dom (ran

Sbj? Subject
Goal 2

Exam_Mark? dom (ran Scored_in_Exam array)

#Exam_Mark = #Scored_in_Exam array

CHANGE COURSEWORK MARK


Pre-condition modify subject abstract retr pre condition modify subject concrete. Sbj? Subject Student_Subject = dom Student_Subject array Scored_in_Assignment array)
Goal 1

assignmen_mark? dom (ran

Sbj? Subject
Goal 2

Assignment_Mark? dom (ran Scored_in_Assignment array)

#Assignment_Mark = #Scored_in_Assignment array

CHANGE EXAM MARK


Pre-condition modify subject abstract retr pre condition modify subject concrete. Sbj? Subject Student_Subject = dom Student_Subject array Scored_in_Exam array)
Goal 1

exam_mark? dom (ran

Sbj? Subject
Goal 2

Exam_Mark? dom (ran Scored_in_Exam array)

#Exam_Mark = #Scored_in_Exam array

FORMAL METHODS | ACCEPTABILITY THEOREM

127

USE4-09/09-00082, 0949597

DELETE STUDENT FROM SEMESTER


Precondition remove Subject from Student abstract retr Student concrete Std? item Student_Subject Student_Subject)
Goal 1

precondition remove Subject from

dom Student_Subject array

Sbj? dom (ran

Std? dom Student_Subject


Goal 2

Std? dom (ran Student_Subject array)

#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

DELETE COURSEWORK MARK FROM STUDENT


Precondition remove Subject from Student abstract retr Student concrete Std? Student Student_Subject Student_Subject)
Goal 1

precondition remove Subject from

dom Student_Subject array

Sbj? dom (ran

Assignment_Mark? dom Scored_in_Assigment Scored_in_Assignment array)


Goal 2

Assignment_Mark? dom (ran

#Assignment_Mark = #dom ran Scored_in_Assignment array #Subject = #dom ran Student_Subject array

FORMAL METHODS | ACCEPTABILITY THEOREM

128

USE4-09/09-00082, 0949597

LIST MARKS WITH GRADES


Precondition display result generating all results abstract retr generating all grades concrete Std? Student Student_Subject Student_Subject)
Goal 1

precondition display result

dom Student_Subject array

Sbj? dom (ran

Sbj? Subject
Goal 2

Sbj? dom (ran Student_Subject)

#Subject = #Student_Subject array #Assignment_Mark = #Scored_in_Assignment #Exam_Mark = #Scored_in_Exam

LIST STUDENTS THAT FAILED


Precondition display result generating all students that failed abstract retr display result generating all failed students concrete Std? Student Student_Subject Student_Subject)
Goal 1

precondition

dom Student_Subject array

Sbj? dom (ran

Sbj? Subject
Goal 2

Sbj? dom (ran Student_Subject)

#Subject = #Student_Subject array #Assignment_Mark = #Scored_in_Assignment #Exam_Mark = #Scored_in_Exam

FORMAL METHODS | ACCEPTABILITY THEOREM

129

USE4-09/09-00082, 0949597

LIST STUDENTS WHO HAVE NO ASSIGNMENT


Precondition display result generating all results with no assignmentabstract retr precondition display result generating all results with no assignments concrete Std? Student ^ Student_Subject Student_Subject)
Goal 1

dom Student_Subject array

Sbj? dom (ran

Sbj? Subject
Goal 2

Sbj? dom (ran Student_Subject)

#Subject = #Student_Subject array #Assignment_Mark = #Scored_in_Assignment

FORMAL METHODS | ACCEPTABILITY THEOREM

130

SEQUENCE DIAGRAMS FOR RESULT SYSTEM


ADD STUDENT

USE4-09/09-00082, 0949597

: Lecturer 1. Click add Student.

: 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.

FORMAL METHODS | SEQUENCE DIAGRAMS FOR RESULT SYSTEM

131

USE4-09/09-00082, 0949597

ENTER COURSEWORK MARK

: Lecturer 1. Click manage course.

: 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.

FORMAL METHODS | SEQUENCE DIAGRAMS FOR RESULT SYSTEM

132

USE4-09/09-00082, 0949597

ENTER EXAM MARK

: Lecturer 1. Click manage course.

: 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.

FORMAL METHODS | SEQUENCE DIAGRAMS FOR RESULT SYSTEM

133

USE4-09/09-00082, 0949597

MODIFY STUDENT SUBJECT

: Lecturer 1. Clicks manage student.

: 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.

FORMAL METHODS | SEQUENCE DIAGRAMS FOR RESULT SYSTEM

134

USE4-09/09-00082, 0949597

CHANGE COURSEWORK MARK

: Lecturer

: LecturerHome

: ManageCoursePage

: StudentControl

: StudentCourseTableDB

1. Cicks manage student. 2. Displays.

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.

FORMAL METHODS | SEQUENCE DIAGRAMS FOR RESULT SYSTEM

135

USE4-09/09-00082, 0949597

DELETE STUDENT SUBJECT

: Lecturer 1. Click manage student.

: 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.

FORMAL METHODS | SEQUENCE DIAGRAMS FOR RESULT SYSTEM

136

USE4-09/09-00082, 0949597

CHANGE COURSEWORK MARK

: CourseLecturer

: LecturerHome

: ManageCoursePage

: StudentControl

: StudentCourseTableDB

1. Cicks on "manage student" link. 2. Displays.

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.

FORMAL METHODS | SEQUENCE DIAGRAMS FOR RESULT SYSTEM

137

USE4-09/09-00082, 0949597

CHANGE FINAL EXAM MARK

: CourseLecturer

: LecturerHome

: ManageExamPage

: StudentControl

: StudentExamTableDB

1. Cicks on "manage student" link. 2. Displays.

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.

FORMAL METHODS | SEQUENCE DIAGRAMS FOR RESULT SYSTEM

138

USE4-09/09-00082, 0949597

DELETE STUDENT FORM SEMESTER

: CourseLecturer 1. Click on "manage student" link.

: 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.

FORMAL METHODS | SEQUENCE DIAGRAMS FOR RESULT SYSTEM

139

USE4-09/09-00082, 0949597

DELETE COURSEWORK MARK

: CourseLecturer 1. Click on "manage student" link.

: 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.

FORMAL METHODS | SEQUENCE DIAGRAMS FOR RESULT SYSTEM

140

USE4-09/09-00082, 0949597

LIST MARKS AND GRADES FOR STUDENTS

: Lecturer 1. Enter course code. 2. Click view result.

: LecturerHome

: CourseControl

: StudentCourseTableDB

3. Send request. 4. Verify data. 5. Confirm data. 6. Requst information. 7. Return Information 8. Display information.

LIST STUDENTS THAT FAILED

: Lecturer 1. Enter course code.

: 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.

FORMAL METHODS | SEQUENCE DIAGRAMS FOR RESULT SYSTEM

141

USE4-09/09-00082, 0949597

LIST STUDENTS THAT DIDNT SUBMIT ASSIGNMENT

: Lecturer 1. Enter course code.

: 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.

FORMAL METHODS | SEQUENCE DIAGRAMS FOR RESULT SYSTEM

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.

FORMAL METHODS | CONCLUSION

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

FORMAL METHODS | REFERENCES

144

Вам также может понравиться