Contents:
You'll do your project in phases, with the following milestones:
| Phase | Deliverables | Due date |
|---|---|---|
| Preliminary Design | Preliminary design document | 11/14/07 5PM |
| Preliminary Release | Source code, specifications, unit tests | 11/27/07 5PM |
| Final Release | Final design document, source code, specifications, unit tests, user manual, webstart packaging | 12/10/07 5PM |
In addition, there will be weekly meetings with your TA between Nov 1 and Dec 7, with a progress document due at each.
You will work in teams of three or four. Each team member should be responsible for a significant part of the design, documentation, code and testing. Each team will receive a single grade for the final project, determined approximately as follows:
| Category | Deliverable | Due date | % project grade | Graded on |
|---|---|---|---|---|
| Design | Preliminary design document | 11/14/07 | Are key issues identified? | |
| Final design document | 12/10/07 | Is design clean, robust and flexible? | ||
| Team work | Weekly meetings | weekly | Did team work well together? Did all members participate constructively? | |
| Packaging | User Manual | 12/10/07 | Is the tool easy to use? Is the user manual clear and helpful? | |
| Webstart delivery of executable | 12/10/07 | Is the client packaged correctly? | ||
| Implementation | Specifications, preliminary | 11/27/07 | Are important interfaces identified and crucial parts well documented in Javadoc? | |
| Specifications, final | 12/10/07 | Are important interfaces well documented in Javadoc? | ||
| Unit tests, preliminary | 11/27/07 | Are there good unit tests for non-trivial classes? | ||
| Unit tests, final | 12/10/07 | Are there good unit tests for non-trivial classes? | ||
| Source code, preliminary | 11/27/07 | Is the code clean and well structured? Basic functionality working? | ||
| Source code, final | 12/10/07 | Is the code clean, well-structured and low in defects? How is the user experience? Is it easy-to-use? (For antichess:) How sophisticated is the computer player? |
Each stage of this assignment should be committed to CVS by 5:00 PM on its due date.
Here is what each of the deliverables should contain:
You should express your preliminary design in under 15 pages. Your document will be a subset of that described in the Documenting a Software System handout. You should include all parts, including your testing strategy and a reflection of your experience so far.
The preliminary design should also include a project plan, which lists milestones for the team and allocation of tasks to each team member. A milestone is what you expect to be done by some date, such as a tested module or a working feature -- an achievement that is objective, easy to evaluate, and significant. There must be at least two milestones in the project between the preliminary design and the final deadline. The division of labor should be equitable. (It is most useful to combine the milestones and the task allocation into a single table with task, who, and when columns, rather than making the milestones and task allocation into to separate documents which cannot be easily related.)
It should be possible for you to describe your implementation and critique your design in under 20 pages (except for the Specifications, which may take another 5-10 pages and should be placed in an appendix). Conciseness is important. You should not include a printout of your code in your design document. Use the Documenting a Software System handout as a guide.
The final report includes a section on Design Changes. Detail what changes you have made to the design that described in your preliminary design document. Be precise. It is vitally important that your TA have versions of the descriptive parts of the Revised Specification, Implementation Overview, and Validation Strategy that accurately describe your submitted code and what you actually did for testing or validation.
Each team will meet with its TA once a week for a half-hour. You should contact your TA to schedule these meetings; one convenient time might be during the 1pm-2pm slot reserved for lectures. To receive full participation credit:
Although the progress document must be clear, it is short and informal. This document will form the basis of discussion during the meeting, and the TA will keep it on file as a record of progress made. The team should bring multiple copies to the meeting, one for each team member and one for the TA. This progress document should include the following information:
% cd a-checked-out-version-of-your-project % rcs2log -r "-d >=2007-04-10" > ChangeLog
where "2007-04-10" is replaced by the date of your last weekly
progress meeting. You can also use the cvs2cl script.
If you are using subversion as your version
control system, then use svn log or svn2cl to generate
your changelogs.
We will not be looking at your change log to measure progress; we will be looking only for good version control discipline: small, atomic commits with meaningful commit messages.
You should tag the code in your cvs repository for the preliminary release so that we can view the source code. You must do this by 5PM on May 1st. Tagging the code will allow you (and us) to go back to the codebase that you submitted for the preliminary release. If you do not do this by the deadline, you will not receive credit for the preliminary release.
Follow these steps to create the tag:
Later, if you wish to go back to the tagged version, run cvs update -r preliminary-release. This will put that revision in your workspace. You will not be able to commit from that workspace. If you wish to go back to the main trunk, run cvs update -A.
You should email your TA with the following information:
Your ta will run "cvs -d <your cvs root> co -r preliminary-release <your module>" and then follow your instructions to test the demo.