Book A.

Book B.
7150 Requirements Guidance

Book C.

References, & Terms

(NASA Only)

SWE-020 - Software Classification

1. Requirements The project shall classify each system and subsystem containing software in accordance with the software classification definitions for Classes A, B, C, D, E, F, G, and H software in Appendix E.

1.1 Notes

The applicability of requirements in this NPR [7150.2, NASA Software Engineering Requirements] to specific systems and subsystems containing software is determined through the use of the NASA-wide definitions for software classes in Appendix E [Software Classifications] and the designation of the software as safety-critical or non safety-critical in conjunction with the Requirements Mapping Matrix in Appendix D. These definitions are based on (1) usage of the software with or within a NASA system, (2) criticality of the system to NASA's major programs and projects, (3) extent to which humans depend upon the system, (4) developmental and operational complexity, and (5) extent of the Agency's investment. The NPR [7150.2] allows software written to support development activities (e.g., verification software, simulations) to be classified separately from the system under development; however, such support software is usually developed in conjunction with the system and not as a separate project. Projects may decide to reuse processes and work products established for the development of the system to satisfy NPR 7150.2 requirements for the support software. The software assurance organization will perform an independent classification assessment and the results will be compared as per NASA-STD-8739.8, Software Assurance Standard. Software management and software assurance must reach agreement on classification of systems and subsystems. Disagreements are elevated via both the Engineering Technical Authority and Safety and Mission Assurance Technical Authority chains. The classification decision is documented in the Software Development or Management Plan as defined in Chapter 5 ["Software Documentation Requirements", section 5.1.1].

1.2 Applicability Across Classes





























Key:    A_SC = Class A Software, Safety-Critical | A_NSC = Class A Software, Not Safety-Critical | ... | - Applicable | - Not Applicable
X - Applicable with details, read above for more | P(C) - P(Center), follow center requirements or procedures

2. Rationale

The definitions of the different classes of software which are defined in Appendix E of NPR 7150.2, along with the Requirements Mapping Matrix in Appendix D, provide a built-in method of tailoring software requirements. Classifying software essentially provides pre-tailoring of software engineering requirements, software safety requirements, software assurance requirements, and other software requirements for different types and levels of software.  While every requirement may be applicable to the highest classification (Class A), not every requirement will be applicable to lower-level classifications.

3. Guidance

Complete classifying software as soon as it has been determined that a project includes software. Both the project and software assurance independently classify software and, as stated in the NPR 7150.2 note for this requirement, "Software management and software assurance must reach agreement on classification of systems and subsystems. Disagreements are elevated via both the Engineering Technical Authority and Safety and Mission Assurance Technical Authority chains. The classification decision is documented in the Software Development or Management Plan ..."

NASA has two significant independent classification schemas for software: (1) A software engineering lettered definitions "A" through "H" as described in NPR 7150.2, Appendix E; and (2) A software safety definition "Safety-Critical"/"Not Safety-Critical" as described in NASA-STD-8739.8, Appendix A. These are independent from one another to avoid placing an unnecessary requirements burden on software efforts that may not be highly critical from a NASA spaceflight perspective, but happen to be safety critical. An example of this situation is a simple lab experiment that involves class "D" software, but controls apparatus which presents a hazard. The safety hazards need to be fully addressed, but the non safety-related engineering and management requirements can be relatively few in number. NPR 7150.2 treats NASA software classification essentially as an ordered pair (Lettered Classification X Safety-Criticality). For a given system or subsystem, software is expected to be uniquely defined within a single classification pair. Knowing this pair determines the minimal set of software requirements from NPR 7150.2 needing to be addressed (via Appendix D of NPR 7150.2) by the project's software team.

When classifying software be sure to consider:

  • All software for the system or subsystem (classification may need to be assessed separately). 278
  • How the software is intended to be used.
  • Relevance to major programs and projects.
  • Interaction with humans.
  • Safety criticality (see "Safety-Critical Software Determination" in NASA-STD-8739.8). 271
  • Complexity (developmental and operational complexity is woven into the class definitions).
  • Investment.

Final classification of software occurs through project agreement with the independent check performed by the Software Assurance organization (see SWE-132). In the event of a conflict, the designated Software Engineering Technical Authority facilitates a resolution between the project and the Center Safety and Mission Assurance Organization, if possible. Care should be taken to properly classify software, since misclassification will result in missed requirements that will eventually be discovered (at reviews, during testing, etc.), resulting in greater cost and/or the submission of waivers to the Engineering Technical Authority.

As a project progresses, the software classification is revisited since design and usage decisions may be revised which alter the original classification (see SWE-021). For example, a research project may be so successful during development and testing that a decision is made to take the system out of the research laboratory and directly to the field for use in a real-world environment. This decision alters the software classification and the associated engineering, safety, and assurance requirements needed to fulfill the increased level of rigor and ensure delivery of a safe, quality product.   

When questions arise regarding software classification, consult the Engineering Technical Authority (TA).

Consult Center Process Asset Libraries (PALs) for Center-specific guidance and resources related to classifying software.

Additional guidance related to classifying software may be found in the following related requirement in this Handbook:

4. Small Projects

No additional guidance is available for small projects. The community of practice is encouraged to submit guidance candidates for this paragraph.

5. Resources

  • (SWEREF-083) NPR 7150.2D, Effective Date: March 08, 2022, Expiration Date: March 08, 2027 Contains link to full text copy in PDF format. Search for "SWEREF-083" for links to old NPR7150.2 copies.
  • (SWEREF-197) Software Processes Across NASA (SPAN) web site in NEN SPAN is a compendium of Processes, Procedures, Job Aids, Examples and other recommended best practices.
  • (SWEREF-271) NASA STD 8719.13 (Rev C ) , Document Date: 2013-05-07
  • (SWEREF-278) NASA-STD-8739.8B , NASA TECHNICAL STANDARD, Approved 2022-09-08 Superseding "NASA-STD-8739.8A,
  • (SWEREF-332) Software Project Planning, GRC-SW-7150.3, Revision C, Software Engineering Process Group, NASA Glenn Research Center, 2011. This NASA-specific information and resource is available in Software Processes Across NASA (SPAN), accessible to NASA-users from the SPAN tab in this Handbook. Note: Revision Mark-up visible on this version.

5.1 Tools

Tools to aid in compliance with this SWE, if any, may be found in the Tools Library in the NASA Engineering Network (NEN).

NASA users find this in the Tools Library in the Software Processes Across NASA (SPAN) site of the Software Engineering Community in NEN.

The list is informational only and does not represent an “approved tool list”, nor does it represent an endorsement of any particular tool. The purpose is to provide examples of tools being used across the Agency and to help projects and centers decide what tools to consider.

6. Lessons Learned

 No Lessons Learned have currently been identified for this requirement.