In the accompanying lab session, students were also directed to describe any assumptions they found it necessary to make and to provide a list of questions for the client, to cover areas where the description seemed unclear or incomplete.
Timetabling and Registration System: This system supports both the process of student registration in courses and the process of scheduling courses and assigning them to rooms. The description here covers the relationships between courses, students, sections, instructors, rooms, and course prerequisites. The description is not meant to describe the design or decomposition of a database, just some logical requirements of the system. The system includes (but does not have to be limited to)
|
Assumptions
Similarly, we are guessing at the actual sequencing/processes in use, based on the data and queries involved and using the (guessed) entities above. The preliminary process-based description of the system is given below.
Questions that specifically require answers are highlighted in red in the document.
Context diagram and system overview
The system is intended to model the registration and timetabling system for the university.
We make the following presumptions about who uses the system and how, with the context diagram below illustrating these uses.
Note: in the context diagram above, the symbols used system are NOT consistent with those used in the data flow diagram in the sections below. This needs to be corrected for subsequent versions of this document.
Level 1 DFDs and description
Here we provide a preliminary division of the system activities into the entities (people) that use it, the key processes involved, the data stores used, and the flow of information between all those components.
First we provide a general overview, followed by the diagram to visualize the system, followed by the detailed description of all the diagram components.
Overview
The six key types of people (entities) identified are described in the context diagram above.
The six key processes identified are as follows:
Three seperate data stores are identified. The rationale is to seperate sensitive student data from the more public course offering information, and with respect to the student data it is also recommended we seperate personal information from enrolment information.
The specific flows of data between the entities, processes, and data stores are discussed in the full DFD Description following the data flow diagram below.
Level 1 dataflow diagram
To reduce diagram clutter, the data flows between components are represented as unlabeled directionl edges going from the entity that initiates communication between the two components. In fact, each such flow would also result in a response flow in the opposite direction. Both the shown flows and the response flows are discussed with the source component in the descriptions below. Fully-labelled flows in each direction are provided in the level-2 data flow diagrams where the core processes are modeled independently.
Full descriptions of the DFD components are given following the diagram itself.
DFD Description
The DFD component descriptions are seperated into the entities, processes, and data stores.
Entities:
Student interaction with the system is divided into four types, handled through interaction with four seperate processes: (1) personal data access - to review/update personal information and general registration status/information (2) enrolment access - to review/update enrolment in specific course sections (3) course info lookup - to look up course descriptions and pre-requisites (4) timetable access - to look up the days/times/locations for specific course sections and build a semester timetable
Instructor interaction with the system is divided into three types, handled through interaction with three seperate processes: (1) enrolment access - to produce class lists for sections the instructor teaches (2) course info lookup - to review course descriptions and pre-requisites (3) timetable access - to look up the days/times/locations for specific course sections and build a semester timetable
Timetabler interaction with the system is handled through the (1) timetabling process - allowing the timetabler to review current room and booking data, current section scheduling information, update this data as needed, and identify potential scheduling conflicts with rooms, courses, or instrutors.
Registration interaction with the system is divided into two types, handled through interaction with two seperate processes: (1) personal data access - to review/update personal information and general registration status/information (2) enrolment access - to review/update enrolment in specific course sections
Chair interaction with the system is divided into two types, handled through interaction with two seperate processes: (1) curriculum update - allowing the chair personnel to review current course information and pre-requisite information. (2) course allocation - allowing the chair to review and update the course sections offered and the assignment of instructors to teach those sections
Curriculum interaction with the system is handled through the (1) curriculum update process - allowing the curriculum personnel to review and update current course information and pre-requisite information.
Processes:
The issue of access control (login/validation) is never discussed, but seems like a necessity given the information in question. The preliminary model assumes the existence of a single central access control/credential validation process, implicitly used by all the other processes.
This process allows students and registration personnel to access and update student information such as name, contact information, and any other registration system other than enrolment. Should any other registration system be included? The information used is found in the Personal Data data store. ***The actual process mechanisms, sequences, data validation, and exception handling have NOT yet been provided.
This process allows students and registration personnel to access and update student enrolment in course sections. Together with the course timetabling information it also allows students to build semester timetables and check for scheduling conflicts. It also allows course instructors to generate class lists and timetables for the course sections they instruct. The information used is found in the Enrolment Data and the Course data stores. ***The actual process mechanisms, sequences, data validation, and exception handling have NOT yet been provided.
This process allows students and instructors to access course and pre-requisite descriptions. The information used is found in the Course data store. ***The actual process mechanisms, sequences, data validation, and exception handling have NOT yet been provided.
This process allows students and instructors to look up course and section offerings and timetables for a semester, permitting them to build their timetables and check for scheduling conflicts. The information used is found in the Course data store. ***The actual process mechanisms, sequences, data validation, and exception handling have NOT yet been provided.
This process allows the timetabler to look up planned course and section offerings, update their scheduing information (times, dates, locations) and check for scheduling conflicts (for rooms, courses, and instructors). The information used is found in the Course data store. ***The actual process mechanisms, sequences, data validation, and exception handling have NOT yet been provided.
This process allows the department chairs to look up or alter planned course and section offerings for their department's courses, to assign instructors to teach those sections (or portions thereof) and to check instructor workloads. The information used is found in the Course data store. ***The actual process mechanisms, sequences, data validation, and exception handling have NOT yet been provided.
This process allows department chairs and curriculum personnel to review and update information related to course content and/or pre-requisites. The information used is found in the Course data store. ***The actual process mechanisms, sequences, data validation, and exception handling have NOT yet been provided.
Data stores:
It is likely all three data stores would be handled through a traditional RDBMS with conventional secure-access mechanisms and restrictions, logging, backup, and monitoring processes.
This data store handles the personal student information (corresponding to the Student entity in the ERD below). This information is accessed and updated by the personal data access process used by students and registration. ***The actual data fields, formats, access restrictions, validation rules, and exception handling have NOT yet been provided.
This data store handles the records of which students are enrolled in which sections of the university courses (corresponding to the Enrolment entity in the ERD below). This information is accessed and updated by the enrolment access process used by students, instructors, and registration. ***The actual data fields, formats, access restrictions, validation rules, and exception handling have NOT yet been provided.
This data store handles the general access portions of the system data (corresponding to the following entities in the ERD below: Instructor, Instructor Assignment, Course, Section, Pre/co-requisites, Room, Room Facilities, Room Booking). booking information This information is accessed and updated by the following processes: - the timetabling process, used by the timetabler, - the curriculum update process, used by curriculum personnel and the department chairs, and - the course allocation process, used by department chairs. ***The actual data fields, formats, access restrictions, validation rules, and exception handling have NOT yet been provided.
It also splits off some of the information into four new entities to efficiently support the common query types mentioned in the user documentation. The four new entities are
Each of the entities is discussed in some detail below, providing preliminary descriptions, attributes, and relationships with other entities. Unfortunately, for each of the entities we are currently lacking information on who supplies the entity data originally, who validates it, who updates it, and who issues the queries in which it is used.
There are nine relationships identified between the ten entities:
Relationship details are discussed with the relevant entities following the diagram.
Description of each of the components follows the diagram itself.
Here we provide preliminary detail for each of the components of the ERD. All points need to be reviewed in detail at this point, as there are many questions. In particular, we still need to identify the source and destination of each data element, the format of each data attribute, and the validation that needs to take place for each.
Description: This represents registered students at the university, and their relevant personal information. ***The actual data fields, formats, access restrictions, validation rules, and exception handling have NOT yet been provided. Relationships: Is taking: relates the student to their active enrolments in course sections. Attributes: Student id: the student's unique identifier at the university. (format?) Name: surname and given names. Phone number: is this mandatory? what format? are multiple numbers recorded? Email address: is this mandatory? are multiple addresses recorded?
Description: This is a valid university course (how far back in university history does this go? are old course variants supported?) ***The actual data fields, formats, access restrictions, validation rules, and exception handling have NOT yet been provided. Relationships: Requires: identifies the pre/co-requisites for the course. Attributes: Department abbreviation: the university code for the course, usually a departmental abbreviation? What is the list of codes? Course number: the specific course identifier within the department abbreviation category. What formats are possible? Contact hours: lecture/lab/tutorial? What format?
Description: Represents another course a student must have taken prior to, or concurrent with, another desired course (e.g. CSCI 160 is a pre-requisite for CSCI 161). ***The actual data fields, formats, access restrictions, validation rules, and exception handling have NOT yet been provided. Relationships: Requires: a course requires another course as a pre-requisite. Attributes: Course id: the course that requires the pre-requisite. Prereq-course id: the course that is required before/with the course id listed above (also applies to co-requisites). Required grade: specifies the minimum grade that must be obtained for the pre-requisite course to be usable. Pre/co-requisite type: specifies whether it is a pre-requisite or a co-requisite.
Description: This describes an offering of a particular course, both to allow students to enrol in the course and to timetable the course. ***The actual data fields, formats, access restrictions, validation rules, and exception handling have NOT yet been provided. Relationships: Class list: the class list for the section is actually determined by the enrolment in that section. Taught by: ties the assignment of instructors to the specific course sections. Attributes: Section id: uniquely identifies the section. What is the format for this? Start/end dates: the first day of instruction and last day of instruction for this section Size limit: the upper limit on the number of students who can register in the section.
Description: this records the enrolment of a single student to a single section of the relevant course. ***The actual data fields, formats, access restrictions, validation rules, and exception handling have NOT yet been provided. Relationships: Is taking: relates the student to their active enrolments in course sections. Class list: the class list for the section is actually determined by the enrolment in that section. Attributes: Student id: the student's unique identifier within the university (font color="FF0000">(format needs to be specified). Section id: the unique identifier for the course section (font color="FF0000">(format needs to be specified). Grade: the grade the student received for the course, INP if in progress. It is not clear if this information belongs in this system.
Description: Each university instructor has their core contact information recorded. ***The actual data fields, formats, access restrictions, validation rules, and exception handling have NOT yet been provided. Relationships: Taught by: ties the assignment of instructors to the specific course sections. Teaches: each instructor teaches (part of?) the course section(s) they are assigned to. Attributes: Section id: the unique identifier for the course section (format needs to be specified). Instructor: identified by employee number (format needs to be specified).
Description: Each semester, an instructor can teach one or more sections of different courses. (could this be zero? can there be instructors in the database who do not actually teach?) ***The actual data fields, formats, access restrictions, validation rules, and exception handling have NOT yet been provided. Relationships: Teaches: each instructor teaches (part of?) the course section(s) they are assigned to. Taught by: ties the assignment of instructors to the specific course sections. Attributes: Employee number - presumed unique, format unspecified? Name - surname plus one or more given names Email address - do all instructors have one? - can there be multiple? Office - do all instructors have one? - can there be multiple?
Description: records information about usable rooms on campus. are all rooms on all campuses in the database? are some rooms off campus? ***The actual data fields, formats, access restrictions, validation rules, and exception handling have NOT yet been provided. Relationships: Contains: each room contains zero or more special facilities (computer labs, special equipment, etc) what categories of feature are there? Used during: each room is booked for use at specific dates/times. are offices included in this (e.g. if all rooms are in the system, then some must be booked 24/7 if they are a dedicated office?) Attributes: Campus: the campus is the room located in Building: the building is the room located in Room number: the unique room identifier within the building Room type: the classification/use type the room has (classroom, lab, office, ??? what should be supported?)
Description: the facilities (equipment) associated with the room. ***The actual data fields, formats, access restrictions, validation rules, and exception handling have NOT yet been provided. Relationships: Contains: each room can have zero or more facilities associated with it. Attributes: Room id: specifies the room is the facility is located in. Facility category: specifies the general category of facility/equipment. (desk, table, phone, computer, audio-visual aid, ??? what should be supported?) Facilty capacity: specifies how many of the items are present (seats, computers, etc). Facility info: specialization information (phone number, linux vs windows lab, etc) What kinds of information should be supported? Are additional attributes necessary to handle the possibilities?
Description: this is the allocation of a specific room to a specific course or activity, at a specific date and time. what kinds of recurring bookings need to be handled? ***The actual data fields, formats, access restrictions, validation rules, and exception handling have NOT yet been provided. Relationships: Located in: this relationship indicates which sections are associated with which room bookings Used during: this relationship indicates which rooms are associated with which room bookings Attributes: Room id: specifies which room is being assigned Section id: specifies which section is the room assigned to Start/end date: specifies the first/last dates the booking applies to (should there be an "ongoing" option?) Start/end time: what time does the booking start/end on each date (is it safe to assume that if the times are different on different dates then we can use seperate bookings) Recurrence data: specifies if/how the booking repeats over time can this occur once? weekly? daily? monthly? what types of recurring scheduling should be supported?