This document presents guidelines for an organized, disciplined approach to software development that is based on studies conducted by the Software Engineering Laboratory (SEL), an organization sponsored by the National Aeronautics and Space Administration
/Goddard Space Flight Center
(NASA/GSFC) since 1976. It describes methods and practices for each phase of a software development life cycle that starts with requirements definition and ends with acceptance testing. For each defined life cycle phase, this document presents guidelines for the development process and its management, and for the products produced and their reviews.
Since its formation, the SEL has collected data from more than 100 software development projects. Typical projects range in size from approximately 35,000 to 300,000 delivered source lines of code (SLOC) and require from 3 to 60 staff-years to produce.
Flight dynamics software is developed in two distinct computing environments: the Flight Dynamics Facility (FDF)
and the Systems Technology Laboratory (STL). Mission support software is engineered and operated in the mainframe environment of the FDF. This software is used in orbit determination, orbit adjustment, attitude determination, maneuver planning, and general mission analysis. Advanced concepts for flight dynamics are developed and studied in the STL. Software systems produced in this facility include simulators, systems requiring special architectures (e.g., embedded systems), flight dynamics utilities, and projects supporting advanced system studies. The STL also hosts the SEL database and the entire set of SEL research tools.
What makes this document interesting is the nature of developing flight dynamics software which demands zero tolerance of errors. The delivered software must be 100% working and error-free. Failed to do so will result in an irretrievable loss of hundreds million dollar equipments and human lifes. On the other hand, developing flight dynamics applications is very well defined with the developers know precisely what to deliver, which makes developing the softwares analogs to building bridges.
This document will make an attractive reference for software developers, system analysts and software development managers who want to observe how to develop a software with a well-defined characteristics, a luxury for a significant percentage of software development projects.