next up previous contents
Next: 4 Document Guidelines Up: dev_guide Previous: 2 Software Management   Contents


3 Software Life Cycle

A life cycle is the sequence in which a project specifies, prototypes, designs, implements, tests, and maintains a piece of software. Explicit recognition of a life cycle encourages development teams to address development issues at the appropriate time; for example, to establish basic software requirements before design or coding begins. We recommend that developers roughly follow the staged delivery model (below) when designing significantly new versions of the full model and when developing large components and libraries.

3.1 The Staged Delivery Model

The staged delivery model involves the following steps [5] :

  1. Software Concept

    Collect and itemize the high-level requirements of the system and identify the basic functions that the system must perform.

  2. Requirements Analysis

    Write and review a requirements document - a detailed statement of the scientific and computational requirements for the software. Both scientists and the code development team should review and approve the requirements document.

  3. Architectural Design

    Define a high-level software architecture that outlines the functions, relationships, and interfaces for major components. Write and review an architecture document.

  4. Stage 1, 2, ..., n

    Repeat the following steps creating a potentially releasable product at the end of each stage. Each stage produces a more robust, complete version of the software.

    1. Detailed Design

      Create a detailed design document and API specification. This can be done by writing code headers instrumented for ProTeX. Incorporate the interface specification into a detailed design document and review the design.

    2. Code Construction and Unit Testing

      Implement the interface, debug and unit test.

    3. System Testing

      Assemble the complete system, verify that the code satisfies all requirements.

    4. Release

      Create a potentially releasable product, including User's Guide and User's Reference Manual. Frequently code produced at intermediate stages software will be used internally.

  5. Code Distribution and Maintenance

    Official public release of the software, beginning of maintenance phase.

Small, simple pieces of software may not require reviews and separate documents at each stage, but it is still a good idea to prepare at least a design document and review it before implementation. Section 4 contains document templates. Since the documents for each successive stage build on each other, a design document contains brief summaries of requirements and system architecture.

next up previous contents
Next: 4 Document Guidelines Up: dev_guide Previous: 2 Software Management   Contents