module ProjectModule; from InstructorModule import InstructorDB; from InstructorModule import Instructor; from CourseModule import CourseDB; from CourseModule import Course; from RoomModule import RoomDB; from RoomModule import Room; from ScheduleModule import Schedule; from ScheduleModule import Section; from StudentDB import StudentDB; export ProjectDB; object ProjectDB is component: GeneralInfo and InstructorDB and CourseDB and RoomDB and Schedule and StudentDB; operations: ImportPreviousSchedule; description: (* ProjectDB contains all attachements of a schedule. GeneralInfo component is the general information of a project. InstructorDB is the local instructor data base. All instructors in this local data base are available to teach when creating the schedule. All instructors in the local data base are in the permanent instructor database as well. CourseDB is the local course data base to this project. It contains the courses that are offered when creating the schedule. These courses are in the permanent course data base as well. RoomDB is the local room data base of this project. These rooms are available to use in the creation of the schedule. These rooms are also in the permanent room data base. The object Schedule contains sections of classes. Object SrudentDB is a data base that stores the information of students and their surveys. The operation ImportPreviousSchedule is an operation that imports local data bases from a finished project.

UML diagram. *); end ProjectDB; object GeneralInfo is component: ProjectName and Year and Quarter* and SaveAt and Phase and ProjectDescription; description: (* General tab contains the general information of a project. The ProjectName component is the name of the project. The Year component is the year of the schedule to be created. Quarter specifics the quarter of the schedule. The SaveAt component is the location where the project is stored. The Phase is divided into three levels. The end user has total control on the phases of a project and definition of each phase is definted by the end user. The ProjectDescription component contains comments or descriptions on this project. *); end GeneralInfo; object ProjectName is string; object Year is integer description:(*Year should be greater than 2001 and smaller than 3000 *); end Year; object Quarter is components: winter and spring and summer and fall; description: (* Quarter indicates the quarter of the schedule. *); end Quarter; object winter; object spring; object summer; object fall; object SaveAt is string description: (* SaveAt is a string that contains the saving location of the project. *); end SaveAt; object Phase is components: I and II and III; description: (* Phase is devided into three levels. Definition of each phase is defined by the end user. ClassScheduler has no control of which phase the project belongs. *); end Phase; object I is boolean; object II is boolean; object III is boolean; object ProjectDescription is string description: (* ProjectDescription is string that simply describes the project. *); end ProjectDescription; operation ImportPreviousSchedule is inputs: idb:InstructorDB, rdb:RoomDB, cdb:CourseDB, sch:Schedule; outputs: insDB:InstructorDB, rmDB:RoomDB, csDB:CourseDB, sch':Schedule; precondition:(* The number of instructors in the data base to be imported must contain at least one instructor before it can be imported. *) (#idb >= 1) and (* The number of rooms in the data base to be imported must contain at least one room before it can be imported. *) (#rdb >= 1) and (* The number of courses in the data base to be imported must contain at least one course before it can be imported. *) (#cdb >= 1) and (* The number of sections in the schedule to be imported must contain at least one section before it can be imported. *) (#sch >= 1); postcondition: (* All instructors in current local data base are also in the imported instructor data base. *) (forall(Instructor in insDB) (Instructor in idb)) and (* All courses in current local data base are also in the imported course data base. *) (forall(Course in csDB) (Course in cdb)) and (* All rooms in current local data base are also in the imported room data base. *) (forall(Room in rmDB) (Room in rdb)) and (* All sections in current schedule are also in the imported schedule. *) (forall(Section in sch') (Section in sch)); description: (* This operation is operated when importing local data bases and schedule from a completely finished project to the current project. These local data bases imported are instructor data base, course data base, and room data base. Input data bases are to be importes. Output data bases are data bases local the project.*); end ImportPreviousSchedule; end ProjectModule;