Project Resources |
---|
|
This design project will have two releases. The teams will remain unchanged for both releases. The emphasis for the project is creating a software system design that considers general design principles such as coupling, cohesion, encapsulation, separation of concerns, maintainability, extensibility, and the Law of Demeter. Within the design, you should pay particular attention to the appropriate application of design patterns.
There are no "right" and "wrong" designs. There are "better" and "worse" designs which must be evaluated in the context of not only general design principles, but also the current application's context and requirements. An important aspect of your design discussion is the rationale and justification for your design choices and use of design patterns.
To get a good grade, the team must create a working program. Since the emphasis of the course is design, spiffy implementations sitting on top of a weak design will not be viewed favorably. This is also not a pattern frenzy: There will almost certainly be areas where it is not appropriate to apply a design pattern. However, a primary objective of this course are to gain experience designing patterns into a software system and implementing that design. As long as the intention of a design pattern justifies its use, err on the side of using the pattern even if that seems to make the design more complex than needed. For these relatively simple applications, it often will be "simpler" not to use a pattern, but given the objective above, do not use simplicity in and of itself as an excuse not to apply a pattern.
Each release will have a set of requirements defined. The R2 requirements may necessitate refactoring of your R1 code base. As you are introduced to new design patterns in class, read about them in depth in the Design Patterns book, and carefully consider whether or not to incorporate them into your design.
The two releases of the design project require an implementation of the design that you create. The source code should include class and method/function headers. The definition of the method/function signatures will be complete, i.e. include method name, data type and description of parameters, data type and description of return values. In Java, this will be done using Javadoc tags; for other languages, the conventions used for that language (e.g., RDoc in Ruby) will be adhered to.
For submission of your R1 material, the
team will place a zip file in the Design Project - R1 dropbox for
in myCourses. Your file must be named XXrel1project.zip where
Your XXrel1project.zip file should be clean of any version control system or other artifacts. This means no .git subdirectories; no extraneous files used by your IDE; just the files that are asked for below.
The XXrel1project.zip file must contain the following:
Be sure to submit the XXrel1project.zip file before the deadline shown on the Design Project R1 drop box in myCourses. Late submissions will not be accepted; teams are advised to submit something early to ensure they receive at least some credit. Waiting until the last minute to submit something is a recipe for disaster. Each team member is individually responsible for ensuring the project is submitted on time, even if one team member is tasked with doing the submission.
Your design documentation must include at a minimum the information below. This ordering below is not a linear ordering of information in your design document, but rather an itemization of the information that it must contain. You can use this template for the design document as a guide for your design documentation and the ordering of information. Each team may adjust that template if the team believes it would provide a better description of your project's design as long as the design document continues to contain all of the information listed here.
Include the UML domain model, UML class diagrams, CRC descriptions, UML sequence charts, etc., described below as part of the narrative; that is, these remaining elements should not be free standing. They support the reader as he or she works through your narrative. Also, consider organizing the narrative by breaking it down along major subsystem boundaries.
Rarely can you document your system, in a way that the reader can physically see and intelligently understand, using a single diagram. You will need several class diagrams at different levels of abstraction and for different subsystems to completely document your design. A top-level diagram may be just subsystems, or may be a mix of classes and subsystems. Next level diagrams would detail the subsystems.
This may be part of your narrative, or you may decide to present it separately possibly in table format. Here is an example of a description of a design pattern usage, and a template for the table used.
Instructors expect a professional document that includes page numbers, section numbers and headings, and numbers for figures and tables.
Some or all the teams will present their design to the class on the day the project is marked for completion. The presentation should include:
This is a formal presentation in that you should prepare it ahead of time and have visual material to support your presentation. All team members are expected to participate in the presentation. The team can decide on the approach to use. All team members must be present and be prepared to answer questions on the design. Your instructor will inform you in a prior class how long to plan your presentation.
Every student must be present for the presentations. Students on other teams listening to the presentations will need to pay close attention since individual students will be asked to provide feedback to the presenting team on positive and negative aspects of the design.
Some points to consider when preparing your presentation:
Unless it is a very small class, demonstrations will typically be done on the next day of class. If time runs out, the instructor may need to set up a time outside of class to see the remaining demonstrations. Your instructor will let you know if all teams should be present for the entire demo class, or if teams should arrive at specific times.
Component |
Percent
|
Presentation |
15
|
Design Quality and Documentation |
60
|
Implementation |
25
|
Note: You are not being graded on minute details of the functional behavior in your implementation. Make sure that you cover the broad functionality and do not spend lots of time getting every small detail correct. You are graded primarily on quality of design and your implementation of it, how well you have achieved fitness for the purpose and your discussion of the rationale behind your design choices.
The instructor will use the following evaluation rubrics to grade each component of your project work:
Here is some additional information describing areas typically needing improvement in designs.