All NASA software development needs to follow some level of defined software processes. The processes used in a software development activity can be derived from a set of common processes defined at the Agency level, Center level or organizational level. Class E software that is not safety critical and Class H software, labeled with "P (Center)," can be developed with a simplified software development process per a Center's direction (See SWE-140). A Center's software processes can be defined at the appropriate level that is needed by the software engineers on the project and per the direction of the Center requirements. Engineering management and or the project lead software engineer has the responsibility to develop, train, maintain, and execute all software process development steps and to ensure that all software being developed follows the organization's defined software development processes.
Many, if not all, Centers started a Software Engineering Process Group (SEPG) and chartered and tasked it with the development of their organization's software processes. These products are typically documented and maintained current in a suitable repository. Centers typically use a software process asset library (PAL) as a repository for the storage and maintenance of their software development processes. PALs typically align with overall Center business management systems and process and procedure libraries.
The number and type of standard processes to be developed or implemented are left to the Center to determine, but, if developed properly, they are sufficient to progress through the phases of the software development life cycle, while satisfying the entrance and exit criteria (see Topic 7.9 ) for reviews and life cycle phase transitions (see SWE-019 ). These standard processes interpret and reflect the application of the requirements in NPR 7150.2. They include activities that incorporate best practices for developing quality software and software systems.
For organizations developing Class A, B, and C software (Class C software as defined by the Center requirements), the Center processes benefit by aligning with the processes contained in the Software Engineering Institute's (SEI) CMMI method. The degree to which they follow the CMMI method can be assessed in a Standard CMMI Appraisal Method for Process Improvement (SCAMPI ) activity (see the CMMI ). To the extent appropriate and useful, Class D and Class E software development will also benefit by the use of these CMMI-aligned Center processes.
This requirement does not mandate a single process for a given set of activities at a Center. When several software development organizations exist at a Center, they may establish and maintain processes that vary across the organizations. The important point for these organizations is that the processes they use must be developed, documented, and followed consistently throughout the software development activity. How this is done is up to the specific organization or the Center. Centers that utilize different processes in different organizations must assure that all the process versions satisfy and are consistent with the requirements in NPR 7150.2.
SEPGs may find it helpful to consult the following sources when developing new processes, or maintaining and improving existing processes:
- The Agency PAL and the Center PALs can be used to locate and select processes and activities that are applicable to software development activities.
- The processes and best practices described in the Software Engineering Institute's (SEI) Capability Maturity Model Integration for Development (CMMI-Dev), Version 1.3. The CMMI-Dev describes the applicability of its processes for developing software work products.
- NPR 7123.1A, which establishes a core set of common Agency-level technical processes and requirements needed to define, develop, realize, and integrate the quality of the systems products created and acquired for NASA. The set of common processes in the NPR may be supplemented or tailored to achieve specific project requirements.
- AS9100C, which provides a process-based quality management system for aerospace applications. "The application of a system of processes within an organization...can be referred to as the 'process approach'. An advantage of the process approach is the ongoing control that it provides over the linkage between the individual processes within the system of processes, as well as over their combination and interaction."
- The IEEE STD 12207, which "establishes a common framework for software life cycle processes, with well defined terminology, that can be referenced by the software industry. It contains processes, activities, and tasks that are to be applied during the acquisition of a software product or service and during the supply, development, operation, maintenance, and disposal of software products."
Additional guidance related to software process establishment may be found in the following related requirements in this Handbook: