A perennial problem for our department is scheduling classes in available rooms, because there are lots of constraints to satisfy:
You have some flexibility in deciding exactly what functionality to provide; that's part of the design problem. In a real-world situation, you would have a ``customer'' whose needs you are trying to meet, and part of the design problem might be to turn a vague initial problem description into something more specific. For this class, I will play the role of customer, so part of the analysis phase of the project might be asking me questions to help you clarify requirements. Class time will be available for this purpose, or you may ask me in office hours or via e-mail (being sure to coordinate with other members of your group.)
Customers typically also impose constraints (how much a solution can cost, what hardware/software platforms it must run on, etc.). For this project, the following constraints apply.
A project such as this one can be broken down into three phases:
The following table lists ``deliverables'' on which you will be graded. Items with a ``Y'' in the column labeled ``Group?'' are to be turned in by group leaders (and should represent the combined efforts of the members of the group); other items are to be turned in by individual students (and should represent individual efforts). Notice that the points add up to the 75 points specified in the syllabus for the project.
What | Group? | Points |
---|---|---|
Preliminary requirements analysis | Y | 5 |
Midterm report | Y | 10 |
Midterm group evaluation | N | 5 |
Presentation | Y | 15 |
Final report | Y | 20 |
Prototype code | Y | 15 |
Final group evaluation | N | 5 |
Your first deliverable is a short report presenting the results of your requirements analysis -- a list of use cases, a UML use-case diagram, and a short text description of each use case.
Your next deliverable is another short report, incorporating the previous report (possibly with improvements or corrections) and describing your implementation. Start with an overview describing your target platform (e.g. ``a Web-based application in PHP'', or ``a stand-alone Java application''). Mention how you will store information from one execution of the program to another (e.g., ``in XML form'' or ``as serialized Java objects''). Describe the overall design of your system. UML activity and/or class diagrams may be helpful.
Each student will also evaluate the performance/contribution of members of his/her group. I will use this information in determining grades. Forms will be provided.
Each group will present its analysis of the problem, its proposed solution, and a prototype implementation. The presentation should include UML diagrams of your requirements analysis and your design and a brief demonstration of your prototype implementation. Each group will have about 15 minutes, plus 5 minutes for questions.
Your final report should be an expanded version of your midterm report, incorporating any changes you have made (particularly to the implementation design) and also describing your prototype implementation.
You are not required to come up with a complete implementation of your design; this course is meant to be about design more than implementation. However, before starting a complete implementation it can be extremely helpful to develop a prototype that shows your ``customer'' what you have in mind, to be sure that what you plan to implement really meets his/her needs. Thus, you will develop a prototype implementation you can demonstrate. Prototype implementations generally focus more on the parts of the system that ``show'' -- that is, the user interface. For this project, you should be able to implement everything except the optional ``create a schedule'' feature.
See ``Midterm group evaluation.''