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.
The staged delivery model involves the following steps  :
Collect and itemize the high-level requirements of the system and identify the basic functions that the system must perform.
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.
Define a high-level software architecture that outlines the functions, relationships, and interfaces for major components. Write and review an architecture document.
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.
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.
Implement the interface, debug and unit test.
Assemble the complete system, verify that the code satisfies all requirements.
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.
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.