CSE 111 - Object Oriented Software Design

Click here for clarifications on the project.

Project: Phase 1

The projects should be done in teams of 3-5 people. Your team will develop and implement a simple system with a GUI front end, a middle business logic layer, and a simple database (e.g. file system with a front end). The project will be done in 2 phases. The first will have limited functionality, and the second full functionality. The language of choice is Java. The modeling language is UML. UML diagrams can be drawn using MS Visio, which is available in the lab.

The lectures will use a (very) simple dating system as an example. You can use this as a guideline for the kind of functionality we are looking for in your system. Your team should come up with a project of similar difficulty and functionality. The point is to try out the basic methods and ideas that will be introduced, and not get bogged down in programming in the short amount of time available to us.

The following is a brief overview of the dating system example.

"There are two classes of users: member and administrator. A user starts the system and logs on, giving a name. The system determines the class of user by looking in a member database. If the user is there, then either a get a date or an update data option can be chosen. If the member is not there, a message is given, and the system returns to its initial state. If the user logs in with a special name, then the system goes into administrator mode, and the following options are given: add a member or delete a member. If a member is added, the member data in the DB will be empty until the user puts in the data."
"A member has properties on the basis of which a date can be selected. In this case they are: gender, religion, and occupation. These are the properties that are stored for a member, and the properties that a member uses to ask for a date. The system tries to find an exact match. When match is found, the email address for the datee is given, which is also stored in the data base."
"After some function, such as finding a date, the system returns to its initial state, from the which the user can start another session (which requires another logon) or terminate the session."

Note: Project deliverables for each phase are all due at the same time, as part of the documentation for that phase.

Note Well: You will get the most benefit from the project if you do the non-code documents as they are assigned, and then modify them later as your understanding develops.


Project: Phase 2

1. You will develop and implement the second part of the project. This will involve taking the first part and adding additional functionality. The full functionality will have been specified in the use cases for the first part of the project, and at that time a decision about what to implement first. The documents from the domain model on were for the first part functionality only.

In the second part, we will produce similar kinds of deliverables as for the first part, but for the full functionality. In addition, we will be introducing additional kinds of models and patterns.

If you failed to make the distinction between the first and second increments, and your first program implemented all the use cases, then create some additional augmented functionality for the second phase.

2. In some cases, we will artificially introduce new features into our phase 2 in order to experiment with new design patterns. These are specified in the project exercise steps for each lecture.


Project Clarifications:

1. Deliverable: For each phase you will submit the following:

  • write up: The write up will contain all diagrams and discussions of relevant issues as specified in the lectures page. You will turn in both electronic and paper copy of the write up.
  • code:: all your code with necessary resources (for example sample data file, ANT script if you used it) in electronic format.
You should submit a CD with all electronic resources. If you don't have acccess to a CD writer, email the TA with a zip/tar file and ask for a confirmation.

2. Sequence/Colaboration diagrams: Your sequence diagram should show how the layers interact. Both sequence and collaboration diagrams are tied to use cases. You will have atleast 1 seqeunce diagram for each use case. In this project you will use collaboration diargams to show the interactions within a layer. Since you have 3 layers, you will need atleast 3 collaboration diagrams for each use case.

3. Use cases: For phase 1 you will implement 3 or more use cases. If you implement more than 3, make sure you provide design artifacts (use case description, sequence & collaboration diagrams) for all of them.

4. Sample Format: Here is sample organization of your write up. It omits many details that you need to fill up (like your system architecture, patterns, ...)

Concept description: Provide a one or two paragraph description of your proposed project.

Use cases: Describe all use cases that you will implement, including the ones for phase 2.

Scope of phase 1: Decribe which use cases you are implementing for phase 1.

Interaction diagrams (i.e., sequence and collaboration diagrams): you should organize your sequence and collaboration diagrams by corresponding use cases
...


 

Deliverables for Phase 2

1. Same as phase 1, but for new functionality
e.g.
- hard copy of the write up and code on CD for whole system
- models for new phase 2 functionality: domain models, interaction sequence diagrams, collaboration diagrams, class diagrams (with visibility)
- also include programming by contract specs for subsystems and use is-a and has-a notation in the class diagrams

2. New UML models
- state diagram model for GUI: graphical or tabular format
3. Patterns
- for each pattern that you incorporated into your design, briefly describe how it was used. As per the lectures, the patterns to be used are: callback, singleton, wrapper, state (optional, but discuss why you did not use it if you did not incorporate this pattern), and framework/factory methods for data base.
- if you had additional patterns from the second part of the course, include a brief description of how you used them, but it is not necessary to use these patterns
- you do not need to include anything on anti-patterns or refactoring