CSE 432S/533S: Project Implementation II
This page is intended to help each project team define its
implementation for the second project cycle. The implementation
defined in this stage will also carry forward into the second evaluation
stage with refinements to the implementation being driven by lessons
you learned while completing the implementation and in the second
evaluation stage.
Guidelines for the Implementation Document
Each project's second implementation document should provide a complete
and detailed listing of the software itself, including (1) code
files containing all necessary declarations and definitions in the
target implementation language, (2) instructions for how to build and
run your software, and (3) a technical summary of the implementation
using English text (and if you would like any technical diagrams you
find useful) to illustrate class structure, class associations, and
interactions among the different classes, functions, etc. in the
implementation.
In general, the level of functionality you should be aiming for by the
implementation document deadline is again for a "working prototype",
i.e., one that (1) can exercise the major subsystems of your second
project cycle's design, and (2) for each subsystem can demonstrate the
basic functions you have designed for a single scenario with no bad
inputs, or other complications (the "happy path" scenario). In the
evaluation stage, however, you will then refine this code further to
address scenarios involving problematic inputs, and other situations
that could break the prototype code - basically your job in that last
stage will be to try to make your prototype as robust, efficient,
etc. as possible, beyond the level expected for the implementation
stage which is simply to have a reasonable basic functionality
working.
More importantly, each project's implementation document should
provide a narrative describing (and comments in your
declaration and definition files should point out) how the low level
design is mapped into the implementation, which is a working prototype
of the system. This should be an English summary of how you
converted and extended (and possibly revised) the class and function
layouts given in your low level design document to achieve the working
prototype.
Please be especially careful to explain how the associations and
interactions between the classes (1) impacted how you wrote the
definitions of the functions and class methods, and (2) were leveraged
by those functions and class methods to implement the interactions
between the classes that you specified in your high level and low
level design documents. The idea of this summary is to give the
reader of your implementation document a single place where they can
see how you moved from low level design to implementation in the
second project development cycle.
Deliverable: Implementation Document
Using Word, LaTeX, or other editing tools as you prefer, you will
produce a document that describes your team's implementation for the
current development cycle of your project and that contains the
following sections:
- a cover page with the title of the project, the nature
of the document (Implementation II), the names of the team members who
contributed materially to the document, and the date the document was
submitted. In creating your implementation document, you can either
add the following new sections to your low level design document, or if
you prefer you can create a separate implementation document.
- an implementation overview section that describes how
you mapped your low level design into your implementation, and gives
an English explanation of the code files (described in the next
sections) and their contents, especially focusing on the class and
function definitions in the source file listings in the last section
of this document. In this section you should describe how the class
associations and interactions specified in your high level and low
level design documents both shaped and were shaped by your
implementation of those definitions.
- a project implementation code file outline section
that will serve as a "packing slip" for the code files in your
implementation. Please make sure that if you have
added/removed/renamed/etc. any classes/methods/member
variables/functions/etc. since your low level design, those changes
are reflected in this list. It should:
- state the language (or languages) in which you will implement
your project,
- list the names of the source and header code files that will
contain your implementation,
- list the classes and functions that will appear in those files,
saying whether each class or function is declared or
defined in that file, and
- list the associations (for example, inheritance, ownership,
reference counting, etc.), between the classes and describes
how each association will be declared.
- a project declaration and definition code file listing
section that contains the code files containing the declarations and
definitions of the classes, functions, member functions, and member
variables in your implementation. The comments in the listing should
reflect a summary of the information provided in (1) the
implementation overview section of this document, and also (2) the
high level and low level design overviews from the previous two week's
documents. Thus, the comments in the code should offer a pretty
thorough view of the design patterns you chose, how they mapped into
the high level and low level designs, and then into your
implementation, but in contrast to the implementation overview section
where the entire summary is in one place, the comments should reflect
how each function, etc. plays its part locally in that overall
technical structure.
- an instructions for building and running section, that
gives step by step instructions for logging in, building and running
your code on a platform that is available in one of the CEC Windows or
Linux labs. If there are any libraries, etc. that need to be
downloaded in order to build or run your prototype, you should also
say what they are and give step by step instructions for downloading
them and using them in your project. One option is to set up
a demo environment in your team account on the CEC machines, and in
this section giving us directions (and access) for running your
implementation there.
Participation: every member of your team should be
significantly involved in the production of the code and the writing
of this document, though how you structure the interactions within the
team is up to you. For example, it's fine for one person to capture
notes from a group discussion of the second implementation stage and write
them up as long as the other team members contributed materially to the
discussion that is captured.
Deadline: by 11:59pm on Sunday July 5, 2009,
please e-mail your team's second implementation document to Prof. Gill at cdgill@cse.wustl.edu.
As with the requirements and high level design documents, your team
should treat this implementation document as a "work in progress",
evolving it appropriately throughout the development cycle, and by the
evaluation stage the documents you have produced previously should
constitute most of your final project report, other than the evaluation
results and analysis which you will add in the last stage of the
cycle.