Template for
FINAL REPORT


1. Introduction

Provide an overview of the problem that the group set out to solve, the original goals of the group, and the accomplishments made against those goals.


2. System description

2.1  Scenarios

Walk a potential user through the final system, describing how the system behaves from a user's point of view.  Provide screenshots.

2.2  Requirements

List the specific functional and non-functional requirements implemented, target environment, etc.  Also include any potential requirements that would be natural extensions but are beyond the scope of a semester-long project.


3. Software architecture

3.1  Overview

Provide a bird's-eye view of the software architecture. 

3.2  Subsystem decomposition

Using UML class diagrams (or similar graphical depiction), present the subsystems of the architecture and their connections, omitting details about their specific interfaces.  Each subsystem should correspond to a C++ class.  Also list the subsystems, with a brief description of the functionality of each.  Describe how the subsystems and components relate to one another (i.e., who instantiates whom, etc.). 

3.3  Building the system

Describe how to build your system, including all relevant information, such as the names of files and directories in CVS, the locations of the makefiles, and/or the IDE used.  Give enough detail so a future developer could look at your files, make sense of them, build your executable, and improve the source code.

3.4  Suggested improvements

Document any improvements to the code that you would suggest, such as ways to clean it up, make it more robust, reorganize it, etc.  Again, write in order to hand off the code to a future developer.


4. Project management

4.1 Organization

Describe the team organization (hierarchical, egoless, etc.), how often meetings were conducted, whether meetings were scheduled on a regular basis or as the need arose, how information was communicated between team members, how the sharing of source code was done, how decisions were made regarding dividing the work, etc.

4.2  Team

List the roles and contributions of each team member.

4.3  Schedule

Provide a weekly breakdown of tasks accomplished over the semester.

4.4  Risk management

List the original risks that were anticipated, along with their corresponding contingency plans.  Did any of them become a problem?  Did any new risks manifest themselves during the course of the project?  How were such problems handled? 


5. Postmortem

Take some time to think through what you have learned through this experience, and document those lessons learned.  Answer questions such as