This version of SWEHB is associated with NPR 7150.2B. Click for the latest version of the SWEHB based on NPR7150.2C
3.12.5 The project manager shall determine which software processes, software documents, electronic products, software activities, and tasks are required for the project and software suppliers.
A list of typical software engineering products or electronic data products used on a software project is contained in Chapter 6 of this directive.
1.2 Applicability Across Classes
Class F and G are labeled with "X (not OTS)." This means that this requirement does not apply to off-the-shelf software for these classes.
Class A B C CSC D DSC E F G H Applicable?
Key: - Applicable | - Not Applicable
A & B = Always Safety Critical; C & D = Not Safety Critical; CSC & DSC = Safety Critical; E - H = Never Safety Critical.
Projects evaluate the environment (e.g., organization, funding, size, personnel) in which they plan to develop software. From this evaluation, they choose an appropriate set of processes, tasks and activities to develop software which meets their needs. The Center Process Asset Library (PAL) may contain processes tailored to different development environments. The planning down to the activity and task levels will assure that only the appropriate processes are selected from the ones available to the project. A further evaluation of these processes will determine the level of software resources that the project team needs to include in the planning documentation and funding requests.
The formulation phase in the life cycle (see SWE-019) includes the selection and execution of planning activities that are necessary for the successful initiation of a project. During this phase of the project, the project team defines customer needs, system level requirements, make-versus-buy strategies, overall project and software management plans, a work breakdown structure (WBS), software safety assessments, and primary project deliverables and work products, including, but not limited to, software documents and electronic products.
The project develops planning documents to account for the above and for use in managing the software development efforts. The core set of software plans includes a Software Development or Management Plan (see SDP-SMP), Configuration Management Plan (see SCMP), Test Plan (see Software Test Plan), Maintenance Plan (see Maint), and Assurance Plan (see SAP). The planning may be recorded in a single document or in standalone documents, depending on project size and requirements.
Projects may find it helpful to review the following sources of listed processes when planning their project implementation:
- Software Processes Across NASA (SPAN), accessible to NASA users from the SPAN tab in this Handbook, and Center PALs that 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 157. The CMMI-Dev describes the applicability of its processes areas for developing software work products.
- NPR 7123.1 041, 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 372, 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." 372
The processes that are selected and/or tailored to be applicable to the project will be accomplished by the project and software suppliers through the execution of the activities and tasks that compose the process. Specifically, NPR 7123.1, NASA Systems Engineering Processes and Requirements, describes an activity as a set of tasks that describe the technical effort needed to accomplish a process and to help generate the expected outcomes. Software processes are generally reviewed during the software development life cycle, and revised and modified as needed. The appropriate planning and scheduling of these tasks and activities enable the successful execution of the planned processes. The successful placement of the applicable and tailored processes, activities, and tasks on the project development schedule will complete the determination process.
NASA-specific planning information is available in Software Processes Across NASA (SPAN), accessible to NASA users from the SPAN tab in this Handbook.
Additional guidance related to Software Process Determination may be found in the following related requirements in this Handbook:
4. Small Projects
Small projects may want to use a standard set of processes that have been tailored for their development environment, and type of project. These processes may have been developed by people in the same organization that may have done similar developments.
- CMMI Development Team (2010). "CMMI for Development, Version 1.3: Improving processes for developing better products and services,"CMMI Development Team (2010). CMU/SEI-2010-TR-033, Software Engineering Institute.
Tools relative to this SWE may be found in the table below. You may wish to reference the Tools Table in this handbook for an evolving list of these and other tools in use at NASA. Note that this table should not be considered all-inclusive, nor is it an endorsement of any particular tool. Check with your Center to see what tools are available to facilitate compliance with this requirement.
No tools have been currently identified for this SWE. If you wish to suggest a tool, please leave a comment below.
6. Lessons Learned
A documented lesson from the NASA Lessons Learned database notes the following:
Flight Software Engineering Lessons. Lessons Learned 2218: "The engineering of flight software is a major consideration in establishing JPL project total cost and schedule because every mission requires a significant amount of new software to implement new spacecraft functionality. Constraints to the development and testing of software concurrent to engineering the rest of the flight system has led to flight software errors, including the loss of some missions. The findings of several JPL studies and flight mishap investigations suggest a number of recommendations for mitigating software engineering risk." 572