3.1.1.2 The project shall identify, develop, document, approve, and maintain software requirements based on analysis of customer and other stakeholder requirements and the operational concepts. NPR 7150.2, NASA Software Engineering Requirements, does not include any notes for this requirement. Class A_SC A_NSC B_SC B_NSC C_SC C_NSC D_SC D_NSC E_SC E_NSC F G H Applicable? Key: A_SC = Class A Software, Safety-Critical | A_NSC = Class A Software, Not Safety-Critical | ... | - Applicable | - Not Applicable Software requirements have their basis in customer requirements, system level parent requirements and operational concepts. Decomposition of these higher-level requirements and concepts is required to develop and document the requirements for software (see the SWE-049 section of this Handbook for decomposition guidance). Once the team identifies and documents software requirements, review and approval is necessary to ensure that they accurately capture user needs and project goals and objectives. Maintenance of software requirements is needed because they typically change (SWE-053) throughout the project based on information and experiences obtained during the project life cycle. A general process flow for capturing and maintaining software requirements is shown below: According the NASA Systems Engineering Handbook, requirements "...are decomposed in a hierarchical structure starting with the highest level requirements imposed by Presidential directives, mission directorates, program, Agency, and customer and other stakeholders. These high-level requirements are decomposed into functional and performance requirements and allocated across the system. These are then further decomposed and allocated among the elements and subsystems. This decomposition and allocation process continues until a complete set of design-to requirements is achieved. At each level of decomposition (system, subsystem, component, etc.), the total set of derived requirements must be validated against the stakeholder expectations or higher level parent requirements before proceeding to the next level of decomposition. The traceability of requirements to the lowest level ensures that each requirement is necessary to meet the stakeholder expectations. Requirements that are not allocated to lower levels or are not implemented at a lower level result in a design that does not meet objectives and is, therefore, not valid. Conversely, lower level requirements that are not traceable to higher level requirements result in an overdesign that is not justified." 273 The figure below from the NASA Systems Engineering Handbook illustrates this hierarchical flow down. The flow down of requirements This flow addresses requirements development via the nominal system flow down process. However, software requirements can also be developed/matured with the system (i.e., in spiral/incremental/agile fashion), especially when software plays a key role in the integration and build up of the system. Refer to reputable life-cycle reference documents (see also SWE-019) for further discussion of this type of requirements development. Requirements identification, development, documentation Projects that use modeling and simulation as part of the development process may choose to develop and document requirements using models or both text and models. Requirements captured as "text descriptions cannot be computer interpreted because they are in natural language text. They will remain ambiguous because natural language is not precise. The use of models augments the text forms by providing computer executable and transformable information that is free from ambiguity and needed by the engineers who will design according to the specifications." 292 Additionally, requirements documentation includes bidirectional traceability through the software life cycle phases. See guidance for SWE-052, SWE-059, SWE-064, and SWE-072 for discussion of requirements traceability. Requirements approval Once requirements are identified, developed, and documented, they are evaluated, analyzed (SWE-051) and approved in light of stakeholder requirements and operational concepts by one or more of the following, based on project procedures: Changes from any of these reviews or approval processes are incorporated into the software requirements before they proceed to the next step in the project life cycle. Approved requirements are baselined and maintained in the project's configuration management system. Requirements maintenance Managing requirements change is a critical aspect of requirements maintenance because changes to requirements can be an indicator of software instability and often mean increased costs, longer schedules, rework and can affect software safety. Guidance for SWE-053 addresses managing requirements change throughout the project and guidance for SWE-054 addresses correcting inconsistencies among requirements and project products. It is important that requirements be updated in the requirements management tool (if one is used) as well as the requirements documents (e.g., SRS, Data Dictionary, ICD, IRD). Those updated requirements are made available to all stakeholders, including developers, testers, managers, and anyone else making decisions or performing work based on software requirements. Consult Center Process Asset Libraries (PALs) for Center-specific guidance and resources related to software requirements identification, development, documentation, approval, and maintenance based on analysis of customer and other stakeholder requirements and the operational concepts. Benefits of Well-Written Requirements 273 Recommended practice is to include a rationale with each requirement or group of requirements. "The rationale should be kept up to date and include the following information: Additional guidance related to documenting, analyzing, and maintaining software requirements may be found in the following related requirements in this handbook: Document Software Requirements Software Requirements Analysis Bidirectional Traceability Between Higher Level Requirements and Software Manage Requirements Changes Corrective Action for Inconsistencies Software Requirements Specification Guidance specific to small projects may be found in the following related requirements in this handbook: Document Software Requirements Software Requirements Analysis Bidirectional Traceability (software requirements to higher level requirements) Manage Requirements Changes Software Requirements Specification 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. The NASA Lessons Learned database 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:
See edit history of this section
Post feedback on this section
1. Requirements
1.1 Notes
1.2 Applicability Across Classes
X - Applicable with details, read above for more | P(C) - P(Center), follow center requirements or procedures2. Rationale
3. Guidance
Requirements are typically documented (SWE-049) in a Software Requirements Specification (SRS) (SWE-109) and a Data Dictionary document (SWE-110). Additionally, software interface requirements may be captured in an Interface Control Document (ICD) or an Interface Requirements Document (IRD), along with hardware interface requirements. Guidance for the content and development of these documents, including requirements identification and development based on operational concepts and customer and stakeholder requirements, is located in other parts of this Handbook. That guidance can be found by following the links included above.
4. Small Projects
5. Resources
5.1 Tools
6. Lessons Learned
SWE-050 - Software Requirements
Web Resources
View this section on the websiteUnknown macro: {page-info}
"The requirements database is an extremely useful tool for capturing the requirements and the associated metadata and for showing the bidirectional traceability between requirements. The database evolves over time and could be used for tracking status information related to requirements such as To Be Determined (TBD)/To Be Resolved (TBR) status, resolution date, and verification status. Each project should decide what metadata will be captured. The database is usually in a central location that is made available to the entire project team." 273