Project 3 - Fall 2012

Planning, Specifications, Design, Review

Due Date1 Assignment2 Value3
Sun 11/04 Plan 5
~11/11 Component Specifications 10
~11/18 Component Design 20
~11/18 Component Test Plan 20
~11/25 Review Notes 10
~11/25 Review Report 5
Sun 12/02 Final Specifications, Design and Test Plan 15
Sun 12/02 Post-Mortem Report 10
n/a management 5

Table of Contents

  1. Introduction
  2. Major Activities and Deliverables
  3. Rules

1. Introduction

The first two projects were largely team activities. In the next two projects you will do much of your work as individuals, tho with considerable assistance from other team members. Each member of the team will (over the next two projects) be responsible for the design and implementation of one piece from your architecture. Depending on your architecture, these could each be a complete architectural component, or small pieces (e.g. an applet or a few classes) from a single architectural component. Choose your pieces carefully: Your pieces can be implemented in any language or combination of languages, and use any tool-kits or middle-ware you find convenient ... but it must be code (not HTML or images).

In this project you will create specifications, designs and testing plans for the chosen pieces. In the next (and final) project you will execute these plans, building, testing, integrating, and demonstrating working software.

2. Major Activities and Deliverables

There are several major parts to this project, each of which has its own goals, processes, and deliverables:

  1. Initial Plan
    You will, as a team, select the pieces to be designed and implemented, and develop a plan for this project, dividing the work over your team members and the available time.
  2. Component Specifications
    You will, as a team, elaborate the architecture above the chosen pieces sufficiently to generate detailed specifications for the pieces. You will then write up detailed component specifications for each of the pieces to be designed in this project.
  3. Detailed Component Design
    You will, as individuals, prepare a detailed design for one of the selected pieces.
  4. Unit Testing Plan
    You will, as individuals, prepare a detailed unit testing plan for the piece that you have designed.
  5. Submit for Review
    You will, as individuals, package your specifications, design, and test plan, and submit it for a design review by the other members of your team.
  6. Design Review
    You will, for each submitted package:
  7. Revision and Final Designs
    You will, as individuals, revise your designs and plans to address all important issues raised in the design review.
  8. Post Mortem
    You will, as a team, review the processes you followed in this project to see what lessons you can learn for how to do things more effectively in the future.
  9. Project Management
    All of the above will be planned, documented, and managed.

2.1 Plan

The amount of work required to refine your architecture to the point that it is possible to identify and specify your chosen components will vary greatly from one project to the next, and I would encourage you to get this behind you as quickly as possible. Once you have a sense of what the chosen components are, you should have a pretty good idea of how much work it will be to do the designs and test plans. You should, however, leave yourself ample time for discovering issues in the review process and making the required changes.

2.1.1 Deliverables

Each team will prepare a task-breakdown, identify the dependency relationships between tasks, and owners for each sub-task, assign due-dates, and schedule regular reviews of both work-products and progress (to enable adequate time to deal with the problems that will happen). A good management plan will include regular status checks, the results of which should be recorded in the plan document.

As your understanding of the problem evolves and you respond to unanticipated events, you will have to revise your plan (not merely estimates, but the work to be done). Make sure that you document each of these problems and the manner in which you decide to respond to it. If deadlines are missed, or deliverables fail to pass review, the fact, as well as the causes and the plan to remedy them must be documented.

2.1.2 Grading

Your initial Management Plan will be graded on the basis of:

2.1.3 Submission

Maintain your plan on github. You will surely be updating it, and we will be reviewing your history (changes and comments) to see how you dealt with problems. When you are ready to submit it for grading, fill out the following form and e-mail it to the submission alias.
    Team: name-of-your-team

    Members: person1, person2, person3, person4

    Project: 3A - Preliminary Plan
       Plan:    https://github.com/your_repo/...
       primary author: person1

       if you have other files to submit, please include a brief
       description of each.

    Late points:
        if this submission is late, who is using up how many late points

2.2 Component Specifications

Each team member will take ownership of one or more components. To prepare a component specifications, you will:

2.2.1 Deliverables

A specification will be prepared for each component to be designed and implemented in projects 3 and 4. Each component specification should include:
  1. An addendum to the (Project 2) architectural description filling in any additional context required for the new component descriptions.

    It is quite possible that a single addendum (created by the entire team) can be used for all of the component specifications.

  2. A general description of the component and its role in the system.
  3. A complete specification of all external interfaces to this component (both form and functionality).
  4. A complete set of requirements that must be satisfied by this component.

2.2.2 Grading

This submission be graded on the basis of:

2.2.3 Submission

When you are ready to submit your preliminary component specifications, for review fill out the following form and e-mail it to the submission alias.
    Team: name-of-your-team

    Members: person1, person2, person3, person4

    Project: 3B - Component X Specifications
       Revised Architecture: https://github.com/your_repo/...
       primary author: person1
       Component X Specifications:  https://github.com/your_repo/...
       primary author: person2
       ...

       if you have other files to submit, please include a brief
       description of each.

    Late points:
        if this submission is late, who is using up how many late points

2.3 Component Design

Each team member will prepare a detailed design for one or more modules, ideally comprising 100-400 lines of code when complete. This design need not be at the level of complete pseudo-code, but (in combination with the specifications) should be sufficient to enable a skilled programmer to easily implement the specified module(s).

Each module design should include:

If any of these design elements are non-obvious, the rationale for those decisions should be described so that the implementer can better understand what they are to do. People are more likely to make mistakes when working on things they do not understand.

2.3.1 Deliverables

You can prepare your designs in any form you find convenient, but you will probably find it easiest to create them as code modules with compilable declarations, extensive comments, and very little actual code. Overview and rationale can be presented as comments in front of the described elements.

2.3.2 Grading

This design be graded on the basis of:

2.3.3 Submission

When your design is ready for submission, fill out the following form and e-mail it to the submission alias.
    Team: name-of-your-team

    Members: person1, person2, person3, person4

    Project: 3C - Component X design
       Design: https://github.com/your_repo/...
       primary author: person1

       if you have other files to submit, please include a brief
       description of each.

    Late points:
        if this submission is late, who is using up how many late points

2.4 Test Plan

Once you have specifications and a design to satisfy them, you have to figure out how you will test your implementation, to ascertain that it actually works. It is likely that, in the process of developing your test plan, you assertions that are hard to measure, or functionality that is difficult to verify (or verify automatically). If this happens, you may need to revisit your requirements, specifications and design.

2.4.1 Deliverables

Your test plan should include:

2.4.2 Grading

Your test plan will be graded on the basis of:

2.4.3 Submission

When your test plan is ready for review, fill out the following form and e-mail it to the submission alias.
    Team: name-of-your-team

    Members: person1, person2, person3, person4

    Project: 3D - Component X test plan
       Test Plan: https://github.com/your_repo/...
       primary author: person1

       if you have other files to submit, please include a brief
       description of each.

    Late points:
        if this submission is late, who is using up how many late points

2.5 Review Notes

Each member of the team will submit his preliminary specifications, design and test plans for review by the other team members. Each team member will participate in the reviews of the designs and plans submitted by the other members of his/her team.

2.5.1 Deliverables

Prior to each review meeting, each of you (individually) will read the submitted specifications, designs, and test plan and prepare detailed notes on all questions and concerns. These notes must be submitted at least 24 hours prior to the actual review session. They should be neat notes, describing legitimate issues clearly enough to be sent as email, and organized for discussion (e.g. in the recommended review order).

2.5.2 Grading

Each set of review notes will be graded on the basis of:

2.5.3 Submission

When you have prepared your study notes, check them in to github, fill out the following form, and e-mail it to the submission alias.
    Team: name-of-your-team

    Members: person1, person2, person3, person4

    Project: 3E - Component X - study notes
       notes: https://github.com/your_repo/...
       author: person1

       if you have other files to submit, please include a brief
       description of each.

    Late points:
        if this submission is late, who is using up how many late points

2.6 Review and Report

Your team will conduct a formal design review for each submitted Specification/Design/Test Plan package. The process will be the same as for the architectural review ... but because you have already followed this process (for your architectural reviews) these reviews will not be observed and graded. But you are still responsible for producing a report for each review, and these reports will be graded. Each team member will lead one design review, and act as scribe for one design review.

As with the architectural review, this is not "meeting minutes". Rather it is a distillation of key issues and decisions. It should be carefully written and reviewed. It must contain:

2.6.1 Deliverables

Each team member should act as scribe and prepare the report for one of the design reviews.

2.6.2 Grading

Each review report will be graded on the basis of:

2.6.3 Submission

When you have completed your Review Report, the scribe should fill out the following form and e-mail it to the submission alias.
    Team: name-of-your-team

    Members: person1, person2, person3, person4

    Project: 3F - Component X - review report
       report: https://github.com/your_repo/...
       scribe: person1

       if you have other files to submit, please include a brief
       description of each.

    Late points:
        if this submission is late, who is using up how many late points

2.7 Final Component Specifications, Design and Test Plan

It is likely that your design review will turn up issues that require changes to your specifications, design and test plan. Address those issues (by revising your specifications, design and test plan), document the changes that were made to address each, and get agreement from the reviewers that the issues have been satisfactorally addressed.

2.7.1 Deliverables

  1. summary of changes made and reasons for each.
  2. updated architectural context.
  3. updated component specification.
  4. updated updated component design.
  5. updated test plan.

2.7.2 Grading

This submission be graded on the basis of:

2.7.3 Submission

When you have addressed all of the issues raised in your review and are ready to submit your final component specifications, design and plan, fill out the following form and e-mail it to the submission alias.
    Team: name-of-your-team

    Members: person1, person2, person3, person4

    Project: 3G - Component X - final design/plan
       Summary of changes: https://github.com/your_repo/...
       Specifications: https://github.com/your_repo/...
       Design:    https://github.com/your_repo/...
       Test Plan: https://github.com/your_repo/...
       author: person1

       if you have other files to submit, please include a brief
       description of each.

    Late points:
        if this submission is late, who is using up how many late points

2.8 Post-Mortem Report

This project is a learning exercise, and one of the major ways we learn is by analyzing past mistakes. You will, as a team, review all aspects of this project. One of you will then summarize that process into a post-mortem analysis report.

2.8.1 Deliverables

A report, summarizing the key issues raised in your post-mortem, and the conclusions you came to. Your post-mortem discussion should include:

Note that if you make no mistakes, you will not be able to earn any points on the post-mortem. Fortunately, no teams have ever found it necessary to deliberately make mistakes in order to have something to analyze.

2.8.2 Grading

This report be graded on the basis of:

2.8.3 Submission

Make sure that you have kept your management plan up-to-date, upload the notes from your post-mortem discussion to github, fill out the following form and e-mail it to the submission alias.
    Team: name-of-your-team

    Members: person1, person2, person3, person4

    Project: #3H - Post-Mortem
       Plan:    https://github.com/your_repo/...
       primary maintainer: person1
       Report:  https://github.com/your_repo/...
       primary editor: person2

       if you have other files to submit, please include a brief
       description of each.

    Late points:
        if this submission is late, who is using up how many late points

2.9 Management

The team will be graded on how effectively they managed themselves and the work:

  1. Perform the work according to the plan.
    We will determine when work was done by looking at the dates of the final check-ins.
  2. Monitor progress and detect problems.
    Monitoring plans should be included in your project plan. Status should be reviewed regularly, and logged as updates to the project plan. Problems that come up should be recorded as updates to the project plan and discussed in your post-mortem.
  3. Reasonably adjust the plan in response to problems.
    Detected problems and responses should be reflected in revisions to the plan, and discussed in your post-mortem.

3. Rules

3.1 Due Dates and Slip Days

Any assignment that is not turned in by its due date, will have its grade reduced by 10% (of its nominal value) for each late day. I understand that problems happen, and so each student is granted three slip days. A team of four students would have twelve slip days between them.

One slip-day will excuse one deliverable being late by one day. If a design is one day late, and that delays the design review by a day, then you may find that you need two slip-days. Don't make the mistake of using up your slip-days too soon, because the pressures generally get tighter later in the course.

When a team needs to use slip-days, they need to decide who's days they are using. However you decide is OK with me, but we will be tracking the slip days per student. If will be using any slip days on a deliverable, tell me in advance that you will be doing so (so that I don't nag you about whether or not I lost your submission message).

3.2 Collaboration and Citation

This is a team project, but different individuals will have primary responsibility for different processes or work products (or different parts of a single work product or process). Each team will be working on a different type of product. You are free to talk your team members (and for that matter other teams) about the processes you are following. You may review your work products with your own team members, and revise them based on their feedback ... but ...

  1. If you are the primary author of a work-product, you must cite the source of text you did not write (if it is more than a sentence), or any information that did not originate within your team or from your interviews.

    You will be doing research to develop your product definition and requirements. I expect that many of the ideas for your product will come from this research. Cite all of your sources for each work product, and explain how each source contributed to your work products.

  2. You may not share any of your work products (other than as required for reviews) with members of other teams.