CS 257: Software Design

Final Project, Phase 2

You have your idea. Now it's time to make a plan.

Incremental Development Plan

A simple and tool for moderately complex projects is an incremental development plan. If you plan your work as a sequence of small, testable steps, you get lots of benefits. Each task can be completed fairly quickly, so you make steady progress. Each step is testable, so if you show the discipline required to actually test each step, you catch most of your bugs very early. Because you're taking baby steps and testing frequently, you're never very far from a running product (even though it will be incomplete). And best of all, the process of writing the plan makes you think ahead about the kinds of problems you're likely to encounter, so you can plan to address or avoid them.

When I make an incremental development plan, I typically use a text file and just type a bulleted list. Sometimes I use list-making software or a piece of paper or a whiteboard, but the principle is the same. Each bullet point includes two things: a brief description of the task for this step, and a brief description of my testing plan for the step. (Since "make a unittest.TestCase subclass with the main test cases" or something like that is often one of my early steps, my descriptions of tests often refer back to that test suite.)

Here are the first few steps of an example plan for writing the web crawler.

What to hand in for Phase 2