Content updates needed on this page: 

1. Requirements

4.1.3 The project manager shall perform software requirements analysis based on flowed down and derived requirements from the top-level systems engineering requirements, safety and reliability analyses, and the hardware specifications and design. 

1.1 Notes

NPR 7150.2, NASA Software Engineering Requirements, does not include any notes for this requirement.

1.2 History

1.3 Applicability Across Classes


1.4 Related Activities

This requirement is related to the following Activities:

Related Links

2. Rationale

Software requirements are the basis of a software project.

Analyzing software requirements allows a team to ensure that they are properly formed and accurately and clearly describe the software system to be built.  The analysis provides a structured method of reviewing requirements to identify any issues with them individually or as a collected set.  The team should address identified issues before using the requirements for further project work.  This reduces the need for future rework, not only of the requirements but also of any work based on those requirements.

3. Guidance

The software requirements analysis determines the safety criticality, correctness, consistency, clarity, completeness, traceability, feasibility, verifiability, and maintainability of the requirements. The software requirements analysis activities include the allocation of functional, non-functional, and performance requirements to all functions.

Faulty requirements may be due to incomplete, unnecessary, contradictory, unclear, unverifiable, untraceable, incorrect, in conflict with system performance requirements, otherwise poorly written, or undocumented requirements. It is important that operators properly identify and document safety requirements, and per industry standards, ensure that safety requirements are internally consistent and valid at the system level for the resulting computing system to work safely throughout its lifecycle.

After documenting the Software Requirements, run them through a requirements analysis tool (e.g., QVScribe) to analyze their quality. (QVScribe access may be obtained via a NAMS request.)


Software requirement analysis must be performed on all safety-critical software requirements on Class A, B, and C software.  This software requirement analysis should be performed on Class D software but is not required.

It is important to ensure that requirements have been evaluated adequately for completeness because incomplete requirements can cause several problems:

  • Incorrect estimates of project resources.
  • Missing or additional design elements.
  • Additional cost and schedule rework to correct for missing/incorrect requirements.
  • Added resources for verification and validation.
  • Loss of customer confidence due to improperly described requirements.

The requirements analysis methodology needs to be "measurable or otherwise verifiable." Checklists of questions to consider (such as those included in the Resources section of this guidance) may be helpful.

Requirements Analysis - Analyze requirements to ensure that they are necessary and sufficient - SP3.3
"In light of the operational concept and scenarios, the requirements for one level of the product hierarchy are analyzed to determine whether they are necessary and sufficient to meet the objectives of higher levels of the product hierarchy. The analyzed requirements then provide the basis for more detailed and precise requirements for lower levels of the product hierarchy."
"As products are defined, their relationship to higher level requirements and the higher level definition of the functionality and quality attributes should be understood. Also, the key requirements used to track progress are determined. For instance, the weight of a product or size of a software product can be monitored through development based on its risk or its criticality to the customer."

Regardless of the methods chosen, the project team documents the methodology used for software requirements analysis in an appropriate project document, such as the Software Development Plan/Software Management Plan (SDP/SMP), and includes some minimum steps:

  • Verify requirements safety criticality, correctness, consistency, and completeness.
  • Verify the requirements are clear, precise, unequivocal, verifiable, testable, maintainable, and feasible.
  • Verify requirements traceability.
  • Verify that requirements have been properly flowed down from one level to the next (i.e., from the system requirements to the software subsystem requirements and the various levels of requirements within the software subsystem).
  • Verify that requirements have been properly identified and flowed across from the software interfaces, including all computer hardware and fault management requirements.
  • Examine the requirements "individually and as an integrated set.

See also topic 5.08 - SDP-SMP - Software Development - Management Plan

The analysis of software requirements is performed in conjunction with the allocation and decomposition of requirements. Guidance on the logical decomposition of requirements may be found in SWE-050 - Software Requirements.

The following roles may be involved in software requirements analysis:

  • Software Requirements Engineers including Software Engineers and Developers
  • Software Safety Engineers, Software Assurance, Safety Assurance
  • Systems Engineers
  • Hardware Engineers
  • Cybersecurity Engineers
  • Operations Engineers
  • Fault Management Engineers
  • Customers/Users

Software requirements analysis begins after the System Requirements Review (SRR) milestone. The development team analyzes the software requirements for completeness and feasibility. The development team may use a structured or object-oriented analysis and a requirements classification methodology to clarify and augment the requirements. Prioritizing requirements may also occur as part of requirements analysis. Developers work closely with the requirements definition team to resolve ambiguities, discrepancies, and “to-be-determined” (TBD) requirements or specifications. Special emphasis should be placed on software reuse throughout the requirements analysis and the design phase, identifying potentially reusable architectures, designs, code, and approaches.

When the requirements analysis is complete, the development team prepares a summary requirements analysis report and holds a Software Requirements Review (SwRR). During the SwRR, the development team presents the results of their analysis for evaluation. Following the SwRR, the requirements definition team may need to update the requirements specification to incorporate any necessary modifications. The requirements analysis is revised based on changes to requirements made after SwRR. This revision work is completed by Preliminary Design Review (PDR) at the same time the requirements are baselined. The Entry/Exit Criteria for the SwRR milestone review are defined in Topic 7.09 - Entrance and Exit Criteria.

Software requirements analysis is a continuous activity performed on all software requirements and software requirement changes.

The use of formal inspections is an excellent method of reviewing requirements with stakeholders because it brings multiple viewpoints to bear and also achieves a common understanding of the requirements. Information on formal inspections can be found in SWE-087 - Software Peer Reviews and Inspections for Requirements, Plans, Design, Code, and Test Procedures. Software peer reviews/inspections (SWE-088 - Software Peer Reviews and Inspections - Checklist Criteria and Tracking, SWE-089 - Software Peer Reviews and Inspections - Basic Measurements) are a recommended best practice for all safety and mission-success-related requirements, design, and code software components. Guidelines for software peer reviews/inspections are contained in Topic 7.10 - Peer Review and Inspections Including Checklists.

3.1 Determine safety criticality

Software safety personnel need to be involved in the analysis of software requirements to determine their safety criticality. Software safety personnel analyze software requirements in terms of safety objectives to determine whether each requirement has safety implications. Those requirements with safety implications are designated and tracked as "safety-critical."

Additional analysis steps typically performed by software safety personnel include:

  • Verification that software safety requirements are derived from appropriate parent requirements, include modes, states of operation, and safety-related constraints, and are properly marked.
  • Verification that software safety requirements "maintain the system in a safe state and provide adequate proactive and reactive responses to potential failures."      

Additional information on the analysis performed by software safety personnel can be found in the Topics 8.54 - Software Requirements Analysis and 8.58 - Software Safety and Hazard Analysis of this Handbook (NASA-HDBK-2203). 

The criterion for determining software safety criticality is defined in NASA-STD-8739.8.

See also PAT-034 - SA Requirements Analysis Checklist

3.2 Determine correctness

Requirements are considered correct if they respond properly to situations and are appropriate to meet the objectives of higher-level requirements. A method for determining correctness is to compare the requirements set against operational scenarios developed for the project.

3.3 Determine consistency

Requirements are consistent if they do not conflict with each other within the same requirements set and if they do not conflict with system (or higher-level) requirements. Some examples of inconsistencies are using different terminology, values, or units of measure in different places when in fact they should be the same terminology/value/unit. It is helpful to have at least one person read through the entire set of requirements to confirm the use of consistent terms/terminology/values/units throughout. A requirements analysis tool may also be able to catch some of these inconsistencies.

3.4 Determine clarity

Requirements are clear if they are precise, unequivocal, and unambiguous (can only be interpreted one way) both individually and as a collection. Requirements need to be concise, stated as briefly as possible without affecting the meaning. 

Suggested methods for confirming the clarity of requirements include:

  • Reading the requirements and supporting documents.
  • Formal inspection.

3.5 Determine completeness

Requirements are complete if there are no omissions or undefined conditions in the requirements set. Requirements are also complete if there are no "TBDs" in the requirements set.

Suggested methods for confirming the completeness of requirements include:

  • Reading the requirements and supporting documents including the requirements traceability.
  • Formal inspection.
  • Reviewing the requirements set to confirm that availability, installation, maintainability, performance, portability, reliability, safety, security, and other requirements are included as appropriate to the project.
  • Review the requirements to confirm they are "sufficiently complete to begin design."
  • Review the requirements to confirm they have any necessary accompanying rationale and verifiable assumptions.
  • Review the requirements set against nominal and off-nominal operational scenarios developed for the project.
  • Review the requirements using the various requirements checklists specified in Section 3.11 below.

3.6 Determine traceability

When determining requirement traceability, the team ensures that requirements are traced bi-directionally so that all software requirements have a parent (higher level) requirement, and all levels of software requirements flow down to the appropriate detailed (lower) levels for implementation. For requirements to be properly traced, they are also uniquely identified.

Suggested methods for this type of analysis include:

  • Trace requirements from parent/source documents into the software requirements specification and vice versa.
  • Review existing traceability matrices for completeness and accuracy (SWE-052 - Bidirectional Traceability).
  • Review the requirements set to confirm there are no "extra" or "unneeded" requirements (those not necessary to meet the parent requirement).

3.7 Determine feasibility

Technically feasible requirements are reasonable, realistic requirements that can be implemented and integrated successfully to meet the operational concepts and system requirements of the project within the given operating environment, budget, schedule, available technology, and other constraints.

Suggested methods for this type of analysis include:

  • Reviewing requirements to confirm they do not "overly constrain the design."
  • Reviewing the requirements to confirm they do not unnecessarily "necessitate the use of non-standard, unusual, or unique hardware or software."
  • Review the requirements to confirm they are appropriate for the operation and maintenance of the project.
  • Reviewing the requirements to confirm all requirements are realistic including performance requirements.

3.8 Determine verifiability

Requirements are verifiable if they are testable. They are also verifiable if there is “a technique to verify and/or validate the requirement."  001 Suggested techniques include testing, demonstration, inspection, and analysis. Engineering and Software Assurance have a joint responsibility for ensuring the requirements are verifiable.

Suggested methods for determining if requirements are verifiable include:

  • Reviewing the requirements to confirm that they use verifiable terms (e.g., do not use terms such as "easy," "sufficient," and "adequate").
  • Reviewing the requirements set to confirm requirements are "stated precisely to facilitate specification of system test success criteria."
  • Confirming that there is at least one feasible method/technique identified to verify the requirement

3.9 Determine maintainability

Requirements are maintainable if they are "written so that ripple effects from changes are minimized (i.e., requirements are as weakly coupled as possible)."  Maintainability can be achieved, by reviewing the requirements set and looking for unnecessarily coupled or interdependent requirements.

3.10 Communicate outcome

Although not considered a software engineering product, it is recommended that the results of software requirements analysis be captured in the project documentation and communicated to those who need this information to make decisions or to develop (or update) project documents. The stakeholders and the project will decide how to address the results of the analysis, including any changes that need to be made to address the findings. The methodology used for the software requirements analysis and the results of the software requirements analysis is communicated at multiple project formal reviews as defined in the software development or management plan. Specifically, according to the NASA Software Assurance and Software Safety Standard (NASA-STD-8739.8). Guidance for the analysis report content may be found in Topic 5.21 - Software Requirements Analysis Report Minimum Content

3.11 Requirements Checklists

There are several checklists that aid in the analysis of software requirements. They look at the various aspects described in the previous sections. The available requirements checklists are:

See Topic 7.24 - Human Rated Software Requirements for other Software Product Requirements related to Human Rated Software. 

3.12 Additional Guidance

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

Related Links

3.13 Center Process Asset Libraries

See the following link(s) in SPAN for process assets from contributing Centers (NASA Only). 

SPAN Links

4. Small Projects

Projects with small budgets or limited personnel may choose to limit the number of reviews involved in software requirements analysis. It is important in this situation to avoid skipping any important analysis activities. Consider using checklists or other guides to ensure all analysis elements are addressed.

Additionally, multiple roles may be filled by a single person on small projects, so it may be helpful to request assistance from experts outside the project when conducting requirements analysis. These persons can provide "fresh eyes" as well as specific key perspectives that may not be available on the core project team.

A requirements analysis tool (e.g., QVScribe) that is free to the project or available at a reduced cost may be used to analyze the requirements.

5. Resources

5.1 References

Enter necessary modifications to be made in the table below:

SWEREFs to be addedSWEREFS to be deleted


SWEREFs called out in text: 061, 086, 157, 271, 276, 277, 278, 559, 576

SWEREFs NOT called out in text but listed as germane: 057, 105, 174, 189

Related Links Pages

5.2 Tools

5.3 Process Asset Templates

6. Lessons Learned

6.1 NASA Lessons Learned

The NASA Lessons Learned database contains the following lessons learned related to software requirements analysis:

  • Software Requirements Management. Lesson Number 3377 : "Cost and schedule impacts that result from incomplete, incorrect, or changing software requirements increase the later they occur in the software life cycle."
  • Orbital Space Plane - Stay true to the process! (Contributor to Orbital Space Plane (OSP) problems.) Lesson Number 1501 : "Development of the Level 2 requirements did not follow established systems engineering guidelines for allocation, the inclusion of performance and functional requirements, validation, and feasibility assessments. ... Requirement development, analyses, and system design activities were not synchronized. Functional decomposition was not complete before system design started and before Level 3 requirements were base-lined. ... The process for demonstrating requirements feasibility was unclear."

6.2 Other Lessons Learned

The Goddard Space Flight Center (GSFC) Lessons Learned online repository  contains the following lessons learned related to software requirements identification, development, documentation, approval, and maintenance based on analysis of customer and other stakeholder requirements and the operational concepts. Select the titled link below to access the specific Lessons Learned:

  • Consider impact on testing when developing requirements in early lifecycle phases. Lesson Number 84: The recommendation states: "Consider impact on testing when developing requirements in early lifecycle phases, and ensure a critical review by operations team members."
  • Validation of the science data earlier in the life cycle. Lesson Number 92: The recommendation states: "Plan for and implement validation of the science data earlier in the life cycle, particularly for externally provided instruments."
  • Primary Instruments should have a Programmable Processor. Lesson Number 105: The recommendation states: "Primary Instruments should have a Programmable Processor."
  • Develop science data processing requirements to the necessary level. Lesson Number 116: The recommendation states: "Develop science data processing requirements to the necessary level to support development."
  • Project's hardware designers to include a debug register that is both readable and writable. Lesson Number 160: The recommendation states: "Advise the project's hardware designers to include a debug register that is both readable and writable, to enable software developers to test read and write accesses to the hardware."
  • Systems Engineer should revisit requirements every build. Lesson Number 285: The recommendation states: "Software Systems Engineer should work with the customer stakeholder to fully understand the Parent REQ (i.e. the original reason/purpose of REQ) when writing the related Child REQ. This should be captured in the Child REQ Rationale for use by the software developer during implementation.  Refer to GPR 7123.1C: Systems Engineering. Section 4, Key Systems Engineering Functions, addresses this Lesson, particularly Sections 4.1.1, Understanding the Objectives, and 4.1.4, Requirements Identification, where it states, “Rationale should be documented for each requirement. Capturing the reasoning behind requirements is critical to future management of requirement changes.”"
  • Engage system test leads in flight software (FSW) requirements. Lesson Number 299: The recommendation states: "Before the System Requirements Review (SRR), reach out to your system test lead (or someone with experience with testing similar systems) to review your electrical and flight software (FSW) architecture, requirements, and use cases. Specifically, ask them to identify any changes that would simplify the system testing."
  • Satisfy critical functionality with systems developed against key requirements, not as a Tech Demo. Lesson Number 341: The recommendation states: "It is risky to assume that functionality developed as Tech Demo will receive sufficient attention/resource to achieve operational status. Instead, designate desirable functions as requirements, so they receive project resources and priority."
  • Goddard Dynamic Simulator (GDS) Fault Management derived Requirements. Lesson Number 344: The recommendation states: "The Goddard Dynamic Simulator (GDS) team needs to review the GDS requirements when the fault management table is initially defined (as well as when there are changes to the tables), and during the FSW Build Testing phase, at the start of Systems Testing. This review should include working with the Flight Software team at the contents of the Fault Detection and Correction (FDC) tables to determine what telemetry needs to be simulated. This review may result in new GDS requirement(s)."

7. Software Assurance

7.1 Tasking for Software Assurance

7.2 Software Assurance Products

  • From SWE-050 - Software Requirements, The results of the independent SA analysis performed on the detailed software requirements, including the list of requirements issues identified and records in a problem tracking system.


    • Software requirements.
    • Software requirements analysis results or report.

7.3 Metrics

  • # of software work product Non-Conformances identified by life cycle phase over time
  • # of Software Requirements (e.g., Project, Application, Subsystem, System, etc.)
  • # of Software Requirements that do not trace to a parent requirement   
  • Defect trends for trace quality (# of circular traces, orphans, widows, etc.)
  • # of detailed software requirements vs. # of estimated SLOC to be developed by the project
  • # of incorrect, missing, and incomplete requirements (i.e., # of requirements issues) vs. # of requirements issues resolved
  • # of safety-related requirement issues (Open, Closed) over time
  • # of safety-related non-conformances identified by life cycle phase over time

See also Topic 8.18 - SA Suggested Metrics

7.4 Guidance

Deficient requirements are the largest single factor in software and computing system project failure, and deficient requirements have led to a number of software-related aerospace failures and accidents.

Faults in requirements can originate from the adoption of requirements that are incomplete, unnecessary, contradictory, unclear, unverifiable, untraceable, incorrect, in conflict with system performance requirements, otherwise poorly written, or undocumented. It is important that operators properly identify and document safety requirements, and per industry standards, ensure that safety requirements are internally consistent and valid at the system level for the resulting computing system to work safely throughout its lifecycle.

Software Assurance and software safety should perform an independent SA analysis of the detailed software requirements as they are developed.  Use the guidelines in the 8.54 - Software Requirements Analysis. See tab 2, SW Requirements Analysis Techniques.

Ensure that the detailed software requirements include or point to requirements for COTS, GOTS, MOTS, OSS, or reused software components that are part of the software system. 

NASA Missions go through a logical decomposition in defining their requirements. Requirements analysis addresses a system’s software requirements including analysis of the functional and performance requirements, hardware requirements, interfaces external to the software, and requirements for qualification, quality, safety, security, dependability, human interfaces, data definitions, user requirements, installation, acceptance, user operation, and user maintenance.  

When evaluating the software requirements, use the list of items in the PAT-034 - SA Requirements Analysis Checklist

There are several additional checklists that aid in the analysis of software requirements. They look at the aspects various aspects described on tab 3. The other available requirements checklists are:

Consider if the requirements being analyzed are SMART requirements “specific, measurable, attainable (achievable/actionable/appropriate), realistic, timebound (timely, traceable)”.

To confirm that the software requirements satisfy the conditions in SWE-051 make sure that the flowed down and derived requirements are from the top-level systems engineering requirements, safety and reliability analyses, and the hardware specifications and design.

Software safety personnel need to be involved in the analysis of software requirements to determine their safety-criticality. Any software requirements that trace are determined to have safety implications. Those requirements with safety implications are tracked as "safety-critical."

7.5 Additional Guidance

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

Related Links