SE2 (ECE452/SE464/CS446/CS646): Software Design and Architecture Fall 2006

Prof Ric Holt, Department of Computer Science, Waterloo University

Assignment 3: Implementation of Your System


This assignment is a follow-on from Assignment 1, in which the goal was to design the Software Architecture for your project, and Assignment 2, in which the goal was to produce a corresponding Detailed Design.


The following constraints are imposed:

  •  All documentation (including the solution to each assignments) is to be web-readable, eg, in HTML (or other form readable from the web). At the same time, your report must be printable, and you are to turn in a hard copy of your report for marking.


You are to do the implementation and functional testing for your system, based on your architecture and detailed design. You are to produce a report describing this work. (Later, in Assignment 4, you will make a presentation of your working program for the management.) Your report should be useful for a number of purposes: help in reading the source programs, help in maintaining the programs to fix problems or add new features, help in clarifying the relations between the Detailed Design and the implementation, etc. Your report should be targetted to be read by programmers and managers.


Your report should include the following:

Title: About 3 to 6 words making clear what your report is about.

Authors: List of authors, their addresses, date, etc.

Abstract: About 2/3 of a page overviewing the key points in your report, targeted to a programmer, developer or manager.

Introduction and Overview: About 1 to 3 pages summarizing the purpose of report, its organization, and its salient conclusions. A person should be able to read just the abstract or just the introduction and have a good idea what is in the rest of your report.

Revisions of Detailed Design: How did the implementation vary from the detailed design, and how was the detailed design updated? Explain any changes in architecture as well.

Status of Project:

  • What was accomplished?
  • Anything not done?
  • Anything requiring future attention?
  • Any areas where future enhancements expected?
  • Give a concrete example of at least one expected future change or enhancement of your system. Explain how difficult, including simple impact analysis, you expect future changes to be?

Build and Installation Guide: Explain how your system is compiled, installed, deployed and run.

Demonstration of System: Explain how your system will be demo'd. (The demo will be part of Assignment 4.)

Test Suite:

  • Describe your test suite and methods.
  • Tabulate the results of running your tests.
  • In an appendix give actual test programs or scripts.
  • Describe the coverage of your tests:
    • What percent of your source lines were exercised in your tests?
    • What lines in what modules were not exercised (just provide a brief summary)
  • Explain how your tests would be used in testing of future versions of your system

Task/time log: Refer to your time estimates from your Report on your Software Architecture. Give a table showing predicted and actual times. (Note that you are to keep a log of time to do the implementation, on a per-person basis.) Give a discussion of your table.

Directory/File Structure: Give a short, clear description of how your code and your documentation is stored in files and directories.

Recommendations for Future Projects: Give constructive suggestions for how this project might be done differently in future versions of this course, to improve the learning experience.


Length of report.  Do not make your report longer than necessary. In general, shorter reports that contain appropriate information are preferred. Your report must not be longer than 10 pages (in the hard copy version); this limit does not include the source programs or test scripts.

Write clearly. Organize your report so it is easy to find things in it.