Computer Science 121 - Project 2

Detailed Software Design

Fall 2007

$Id: proj_2.m4 136 2007-11-07 18:01:29Z Mark $

Critical Dates

In Project 1, we told you when each phase (1a, 1b, 1c) was due. For project 2 we are only giving you a final completion date, and are leaving it up to you to figure out when you should deliver each incremental phase.

Project Description

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

1. Introduction

This is a multi-phase specification, design, and review project. Whereas project 1 dealt with large systems issues (requirements, architecture, and architectural review), this project deals with a relatively small project, and with specification, design, and test plans on a much more detailed level. The number of tasks you will perform in the next month is much greater than the number you have performed in project 1 (which spanned two months) ... but the component you will be designing is much simpler, and the total work per person will be less than for project 1.

This is an overview of the entire project. There are separate, and more detailed descriptions for each of the phases:

This project will complement the treatments (in the lectures and reading) on:

We broke project 1 down into three phases for you, and assigned them separately. Project 2 is being assigned to you as a single large multi-phase activity. Based on your experiences with project 1a-c, you should now be well prepared to break down more complex projects into sub-tasks, schedule their completion and manage to that schedule. We will define incremental sets of deliverables for project #2, and a final delivery date by which all of them are due. It will be up to you figure out when you want to do and deliver which work products. This gives you much greater freedom in how to structure your effort, and a much greater opportunity to fail if you do not correctly understand the task interdependencies, or if you don't allow enough time to complete all of the work.

2. Delivery Phases

Project 2, in its entirety, is worth the same number of points as the three parts of project 1. Those points are divided among the phases as described below:

type Phase Description Value
team A Plan & Concept 15
team B Module Specifications 45
team C Module Design 45
team D Module Test Plan 45
team E Review & Revise 45
team Z All Project Post-mortem 20
team X Management 15
individual all work share 20
individual all work quality 30
individual all management 20
all combined total 300

If, after completing all of these phases, you would like to go for as much as 25% extra credit, you can build and test your plug-in (according to your plan). This will take more time (at a time when you will probably already be very busy), but I expect you will find that the planning done in the prior phases makes the actual implementation quite anti-climactic ... which is the point.

Phase Description Value
XC Build & Test 75

3. Assignment

GKrellM (pronouced G-krell-M) is an exensible and highly configurable system monitoring tool. You can find a great deal of information on the GKrellM web site. GKrellM includes a wide range of system activity monitors, ranging from basic system performance (CPU, network, disk, memory) to computer status (temperature, fan-speeds, battery status). Perhaps more interesting, however, is the fact that it is designed to incorporate an open ended set dynamically addable monitoring plug-ins. A summary of recent contributions can be found in the GKrellM Plugin registry. The APIs to support new pluggins are described in the GKrellM Plugin Programmers Reference.

In this project you will:

  1. come up with a concept for a new GKrellM plug in. The only constraint is that you must be able to implement it without special hardware. It does not have to involve any aspect of system status. Feel free to choose something that you are interested in (like which of your favorite movies have just come out on DVD or the snow depth at Bear Mountain).

    Come up with a plan and schedule for defining, designing, reviewing, and writing a test plan for a new GKrellM plug-in, producing all of 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 projects), so that everyone gets an opportunity to do each of these tasks.

  2. study the GKrellM plug-in APIs to determine what functions your plug-in must implement, and what status reporting functions you will have to use, and then write a detailed specification for your plug-in.

    WARNING: the GKrellM plug-in APIs are extremely rich. Do not under-estimate the amount of time it will take you to digest them and figure out what you need to know.

  3. prepare a detailed design for your plug-in.

  4. prepare a thorough and detailed test-plan for your plug-in.

  5. turn your specifications, design, and test plan over to another team for them to review (and reciprocate by reviewing theirs).

    revise your design and test plans to deal with any issues raised by the reviewing team, and (if appropriate) get their approval of the changes.

  6. if you like, for extra credit, you can actually build and test your plug-in (according to the above plans).

At the end of each major phase, you will conduct a post-mortem of that phase and submit your work-products for that phase. Your final submission should include a broader post-mortem of all of the projects assigned in this class.

The detailed assignment descriptions for each phase are described in the individual project descriptions:

WARNING

4. Grading

4.1 Grading Criteria

The detailed Grading Criteria for each phase are described in the individual project descriptions:

4.2 Individual Scores

It is expected that different people may carry heavier and lighter loads in each phase of the project. Trying to get everyone involved in every activity may not make sense. Individual work-share and quality scores (for this project) will be computed on the basis of the union of the work done for all phases.

4.3 Final Post-Mortem

At the end of this project, you will prepare a post-mortem on all of the projects in the course. Rather than looking at the specific activities in any given project, you will look at the overall effectiveness (or lack thereof) of the combined set of projects, in complementing theoretical material presented in the lectures and reading. This post-mortem should specifically deal with:

  1. The extent to which the projects focused on skills that required practical exercise, and skills that you believe were under- or over-represented.
  2. The relative price performance of each of the major tasks, in terms of the educational value gained, vs the time required.
  3. The extent to which you believe the targeted skills (and the lessons you learned in their exercise) will prove to be useful to you in the next few years.
  4. The appropriateness of how much time was provided for each activity. Were there activities that needed more time, or that could just as well have been done in less time.
  5. The extent to which the lectures prepared you for the projects, and to which the projects provided a practical foil for the principles discussed in the lectures.

5. Rules and Submissions

Each of the primary phases should be sumitted separately. Your final submission should be the pan-project post-mortem. When you have completed this, create a message that includes:

And submit all of these things to me in an e-mail with the subject "cs 121 - Final Post-mortem"