Computer Science 121 - Project 1b

Architecture Development

Fall 2007

$Id: proj_1b.m4 113 2007-10-23 20:17:23Z Mark $

Critical Dates

Project Description

  1. Introduction
  2. Deliverables Table
  3. Assignement Details
  4. Grading
  5. Rules and Submission

1. Introduction

This is the second part of a three part project. In this part, you will continue with the same teams and product concepts you had in Project 1A. Now that you have requirements, you can move on to defining an architecture to realize them. The architecture is the basis for component designs, initial construction estimates, development and testing plans.

This will complement the treatments (in the next few lectures) on:

The primary goal of this project is to give you real experience with the preparation, analysis, and articulation of a system architecture. In the final part of project 1, this architecture will be subjected to review. And, as always, we hope to further develop your abilities to intelligently plan and carry out a group endeavor, and to critically evaluate the completed effort.

2. Deliverables

The graded deliverables for this project are summarized in the following table. All are described in greater detail in the assignment descriptions and grading criteria.

Type Basis Description Value
team work product Index of Work Products 2
team work product Work Plan 5
team work product Architectural Overview 8
team work product Architectural Diagrams 4
team work product Component Specifications 8
team work product Architectural Rationale 4
team work product Architectural Issues 4
individual work product Component Design Analyses 16
team whole submission Quality of Architecture 8
team work product Post Mortem Analysis 8
team methodology Use of Version Control 4
team methodology Planning and Management 4
individual work product Quality of Individual Work 15
individual methodology Share of Work 5
individual methodology Schedule Adherence 5

3. Assignment

For this project you will:

  1. come up with a plan and schedule for developing, evaluating, and documenting your architecture, creating the required work products, and dividing that work among your team members.

    Standard project activities (like plan development, post-mortem, and index of work products) should be assigned to different people (than in the previous project), so that everyone gets an opportunity to do each of these tasks.

  2. develop a high-level architecture for your product (describing the functionality of and interfaces to each major component). Note that vague aspects of your architecture, which do not seem important at this point, may become major sources of trouble in step 4.

  3. assess the quality of the architecture (against the standards described in the first lecture on architecture). If the architecture is unsatisfactory, understand why and go back to step 2.

  4. each member of the team will take one (or more) of the defined components and attempt a preliminary high-level design for that component (how it might be implemented).

    In doing this, you will discover what the hard parts of each component are. In coming to understand those problems, you will come up with changes to the architecture that would make them easier to implement. You will also discover unforseen interactions between components. Take these lessons back to the group, enumerate them, and go back to step 2 again.

    If your system has more major components than team members, some team members will have to do designs for multiple components. They will receive the average grade for the quality of their designs, but this will credit them with a larger share of work (to balance the work among team members).

    It is unlikely that your product will have fewer major components than your team has members ... but if you find this to be the case, pick the largest of your components and recursively decompose it into major sub-components (with specified functionality and interfaces) until you create enough components to enable each team member to at least one preliminary design.

  5. satisfy yourselves that each of the defined components is reasonably buildable, and that the resulting system is likely to meet all of the specified requirements.

  6. write up a description of your architecture (intended to communicate it to people of similar experience to your own, but who have not been involved in its design):
    • high level architectural overview of what the system must do, and how it will work.
    • high level architectural diagram, illustrating the major components and the interfaces between them.
    • preliminary specifications for each component, describing its functionality and interfaces.
    • preliminary design notes on how each component could be implemented (these are not specifications, but merely an existence proof).
    • rationale for this architecture, and a discussion of the issues that guided it to this form.
    • a list of issues and concerns you have about this architecture.

  7. conduct a post-mortem of the entire project, and write up a report of that review.

WARNING

4.Grading

This is a team project, and most of your individual grades will be determined by the quality of the team's results. This means that all of you should be concerned about the quality of all of the work products. Some of the assigned tasks are intrinsically whole-group activities (review, architectural response, post-mortem). Many others, while in principle doable by one person, will probably have significant input from other team members.

Each major work product should have a primary author, who works up the basic organization and personally writes most of the prose. The author of a work product is expected to gather and synthesize tributary work from other team members. Note, however, that since the whole team will be graded on the quality of each work product, it is only prudent for the entire team to review any high-value work product before it is submitted.

The contributions (e.g. measured in hours) of each team member to each work product should be reflected in the index of work products, as should be the primary author of each work product. To be counted as the primary author, you must have personally written at least 2/3 of the text in the submitted work-product.

In addition to an overall team grade, a portion of each individual's grade will be determined by:

4.1 General Criteria

This project requires the same general project index, plans and post-mortems that are part of every project in this class:

4.2 Project Specific Grade-ables

The project specific grade-ables for this project are:

4.3 Work Product Formats

File Types

I grade for content and not style, and would prefer that you spend your time organizing your thoughts rather than formatting documents. My preferred file type for most work-products is ASCII text (with a reasonable line length).

Some deliverables may be awkward to prepare as ASCII text:

If you prepare these using Microsoft Office tools, you can submit those files as your work-products. If you use other tools:
  1. develop the work-product under subversion.
  2. produce a pdf output of your final version.
  3. check that final version of the output into subversion in a reports directory.
  4. We will use the pdf to grade the work-product, and the subversion history of the original source to grade your use of version control.
The packages you submit for review, and the review report you return to the team whose product you reviewed should be in a directly readable form (e.g. pdf and/or ascii text).

Document Format

I am telling you the criteria on which I will grade submissions. I will not, however, give you samples for most of the work products I expect:

I will, however, suggest a layout for your Index of Work Products. I make an exception here because:

  1. very little creativity goes into this work-product.
  2. a good layout makes projects much easier to grade.

5. Rules and Submissions

When you are done, create a message that includes:

And submit all of these things to me in an e-mail with the subject "cs 121 - Project 1b".

If you will be submitting your project late, please let me know (so that I know I haven't lost your submission message).

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.