Due on the date indicated in the syllabus (ignore any other dates you may have seen listed)
1. Create a class diagram for the system description below. Your diagram should have classes, associations, attributes and any necessary generalizations. You may hand it in as a pdf or png file from a drawing tool, or a UML tool such as Umple. If you use Umple, include the Umple textual code as well.
2. Separately from the diagram, list 4 responsibilities that would not be automatically generated by Umple, and indicate which classes in your model these should be allocated to.
Feel free to ask the professor questions if you don't understand the following system description. The professor will reply to the entire class (the professor will not respond to duplicate questions, or questions that are clearly answered in the following).
Do not leave this assignment to the last day; you would undoubtedly do badly if you do.
System for managing courses and programs at a university
A university has a set of programs, identified by a program code. Each program is offered by one or more departments, and also has a title, a discipline and a description.
A discipline (e.g. Software Engineering) has a code and a description.
A program consists of:
An elective group is described to students in the following manner: 'Chose n out of the following list of courses' (where n is some integer). Each course in the list can bean individual course, or 'any year-x course in discipline d', where x is a number between 1 and 4.
Options are just little programs so they have the same information as a program. Different programs can share the same options.
A course has a title, a year, a code, a description, prerequisites and mutually-exclusive courses.
The prerequisites are described in a similar manner as the elective group, so they can be individual courses, or 'n year-x courses in discipline d'. Prerequisites can also be linked with 'and' or 'or' (which can be nested). So for example: (SEG100 or SEG101) and (CSI105 or (CSI102 and CSI103))
Mutually exclusive courses are just simple list of courses.
A program has a series of versions. Within each version any of the above can change, except the program code. A version has a start date (when it becomes the requirements for new students).