CS 48, Spring 2018
Draft Project Instructions
The object of this assignment is to complete at least one full development iteration,
including a working software system and associated analysis and design documentation.
Domain Analysis
Perform a domain analysis for the current development iteration, and
prepare the following artifacts:
- Begin a static class diagram - similar to this
Figure 12.9 from the Larman text.
Include domain classes only at this stage.
Use proper UML notation. Class attributes should be included now, but
attribute types are optional. You will complete this diagram during the design phase.
- System sequence diagrams - like this Figure 9.1
from Larman (but omit the annotations).
A separate diagram should be prepared for each use case in this development cycle.
It is up to you whether you want to include use case text with the diagram like this
Figure 9.5 example from the Larman text.
System Design
Design a system to satisfy the current iteration requirements, and
prepare/improve the following design artifacts:
- Expanded and upgraded static class diagram(s) - with design features as appropriate.
First be sure to allocate your classes to meaningful sub-systems (a.k.a. packages).
- Add operations, showing parameters and types, and return types if not void.
- Show attribute types (e.g., score : double) now too.
- Remember to add any new classes introduced during system design.
- Exclude
details of packages not to be created this quarter by your group - use the UML notation for
a package to show each such item as a single box in your diagrams. For example, if you use
any wxWidgets components, then just show a package named wxWidgets in your diagram.
- At least two interaction diagrams. See several example diagrams and explanations
about interaction diagram notation in Larman's Chapter 15.
- Ideally you would create one interaction diagram for each system event. For this
assignment we want you to choose at least two interesting events - i.e., ones that
involve multiple steps and objects.
- If a diagram cannot fit neatly on a page, consider splitting it into two diagrams.
- One or more state diagram(s) like this Figure 29.3
from the Larman text.
Focus on external system events in the context of use cases.
Implementation, Testing and User Instructions
- Implement the system for the current development iteration -
i.e., write the necessary source code, and get the system working
well enough to demonstrate all of its current functionality.
- Each C++ class (except nested ones) must be defined in a separate .h file,
and implemented in a separate .cpp file, unless the class is so simple
that all functions are defined inline.
- All .h files must include proper comments for every non-private
member. Describe parameters and return values, pre- and post-conditions
and any exceptions thrown by member functions.
- If you are using a different OOP language than C++, then
follow that language's conventions, but still keep separate classes in separate files.
- Fully test the system. Do both unit and integration testing, and test
overall functionality. (Note - any "test drivers" and "stubs" used
for unit testing must not be included with the system that you turn in.)
- Prepare a README file (
README.txt
or README.md
) as follows.
- List precise instructions to build and execute your system. Be sure
to tell us about necessary libraries, and about any operating system or other
restrictions.
- Include any necessary details about where to store data files too.
- Also include any other special information we need to know in order to test
your system properly (a list of known bugs, for example).
- Finally include brief guidance about how to use the system (e.g., how
to play the game).
Deliverables
System
The system includes source code, data, and the read-me file.
All of this must be in your github repo. Specify the link and branch name (if not master)
and source root directory in the document you turn into the TAs. The source root directory/folder
must include the following:
- Source code in github repo
in subdirectories that correspond to your system's packages. We must be able to
build the project using a makefile or script. Include the steps to do so in the
README file.
- All necessary data files must be turned in too -
any data, graphics, sound, or other files (like libraries) necessary to compile
and/or execute the system.
- Include the README file in the root of this file structure. This file must
include the exact steps (cut/past-able) to build and run your project.
(AND TEST THEM ON A CLEAN CLONE TO MAKE SURE THEY WORK.)
Documentation
Text must be typewritten. Hand-drawn diagrams are okay, but we suggest you learn and use a
UML drawing tool instead. Assemble artifacts into a single PDF document in the
following order:
- Cover page with group ID, project title, and project team (member names).
- Analysis and design artifacts in this order: system sequence diagrams,
static class diagram, interaction diagrams, and state diagram(s).
- Glossary (begun in the Requirements Analysis) - be sure to add names and descriptions of all
classes, class attributes, associations, system events/operations, packages, methods, and any other
important terms. Also remember to revise or delete any existing faulty glossary
entries if necessary.
Due Friday, May 18, before 6:30 pm
Turn in the PDF document to Gauchospace. Your github repo must be ready at that time too.
Updated April 10, 2018 by C. Michael Costanzo, with thanks to Prof. Chandra Krintz
(W'2018 instructor) for helpful additions/modifications.
CS 48 homepage