CSE 403, Spring 2009
Assignment #5: Zero-Feature Release

Due: Thursday, April 30, by 10:00pm
Turnin: Link

The Zero-Feature Release (ZFR) milestone consists of a skeletal implementation of your product. The initial implementation must be able to be installed and run, but running it does not have to do anything except display an initial window, webpage, or whatever your UI displays. This milestone will help you to ensure that your toolchain (version control, bug tracking, deployment, etc.) is operational.

Your entire submission will consist of a single URL — the webpage for your product. The webpage should include information about your product, including how to obtain the current release.

All information on your webpage should appear in your version control repository. (If something is not in your repository, then it might as well not exist.) In particular, it should be possible for someone not on your team to check out a copy of your repository, build according to your instructions, and then work solely from the copy. And this is, in fact, what the staff will do, in order to ensure that all the information is in your repository. You may continue committing to your repository — the staff will check out a version as of the due date, so we will be insulated from subsequent changes to the repository or website.

Like any open-source software, your project will ship with documentation of two types: that for end users, and that for developers. The product homepage should be focused on end users, but developers should be able to use it to find the information that they want, including where to find your repository.

Don't forget to include a plain-text README file or a README.html file in the top-level directory of your distribution and your repository. At a minimum, it should contain a pointer to your user and developer documentation.

Documentation for users

Your documentation for users should include at least the following information:

You might choose to make the product homepage be the same as the user manual, or make them separate, with the homepage linking to the user manual. If the user manual is a separate document, it may be in HTML, PDF, or some other format that you think is reasonable (get staff approval first). The homepage and other documentation does not have to be visually elaborate or use over-the-top web design, but it must be informative.

Documentation for developers

Your documentation for developers must include information for someone who wishes to contribute to your project as a developer, to create a customized version, to pick up development where you left off, etc. It should include at least the following information:

All of the tasks (running, compiling, and releasing your software) should work on the department instructional Linux machines. If that is not the case, please talk to the course staff.

Hints

The download that the user gets is sometimes called the "binary release" because it contains a pre-compiled, binary version of your product; the download that the developer gets is sometimes called the "source release" because it contains source code. But those terms are not appropriate for all software. For simplicity, we recommend that you create just one release that contains all the information that might be desired by either a user or a developer.

You can and should reuse the information from previous assignments. For example, part of your user documentation might come from your requirements and UI documents, and part of your developer documentation might come from your design documents. (Some of the information might be irrelevant to users or might need to be presented in a slightly different way; a proposal serves different purposes than product documentation.) We do not want you to maintain two parallel versions of information; any future revisions of documents can refer to your documentation where appropriate. In other words, every relevant piece of information should appear in your repository, but only once, and in a place that is easy for a user or developer to find.

If some details of (for example) your UI are not yet determined, you can leave those out; there is no sense in creating a polished document about things that are likely to change. But many aspects of your project should be settled by now, and you should document all of those. The documentation should reflect the progress your team has made so far.

The user/developer directions should be written so that a careful (but not telepathic) user/developer can follow them.

The most important thing is that your directions accurately match what the user must actually do. However, part of your grade will assess the simplicity of the instructions — the number and complexity of commands that a user or developer must use. Ideally, each task (compilation, testing, deploying) can be accomplished using a single command (a "one-step build") that invokes a build tool such as Make, Ant, Maven, SCons, rake, etc.

The staff needs access to your version control repositories, bug trackers, databases, and the like; if the course staff members' normal CSE accounts do not have access, then make a new account that the staff can use to access all of your materials, and tell us the usernames/passwords.

You may want to arrange a "dry run" with the customer beforehand (after doing a flawless one yourself, of course), to ensure that your instructions work.


Updated 5/17: Added more explicit information about steps for making a release and the ability to make a private release for testing. Slight re-organization of other material for clarity.