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, consider the list of items below:
Is the approach to requirements decomposition reasonable, appropriate, and consistent?
Are the system’s software requirements both individually and in aggregate of high quality (correct, consistent, complete, accurate, unambiguous, and verifiable)?
Will requirements adequately meet the needs of the system and expectations of its customers and users?
Do requirements consider the operational environment under nominal and off-nominal conditions? Are the requirements complete enough to avoid the introduction of unintended features? Specifically:
Do the requirements specify what the system is supposed to do?
Do requirements guard against what the system is not supposed to do?
Do the requirements describe how the software responds under adverse conditions?
Is this requirement necessary?
Are the requirements understandable?
Are the requirements organized in a manner such that additions and changes can be made easily?
Are the requirements unnecessarily complicated?
Has system performance been captured as part of the requirements?
Are the system boundaries (or perhaps operational environment) well defined?
Is a requirement realistic given the current technology?
Is the requirement singular in nature, or could it be broken down into several requirements? (looking at grammar not whether it can be decomposed or not)
Within each requirement level, are requirements at an appropriate and consistent level of abstraction?
In the traceability, are the parent requirements represented in appropriate child requirements?
Do the parent requirements include outside sources such as:
Testing requirements that drive software design decisions (e.g., special system level timing requirements/checkpoint restart).
Supporting requirements rationale.
Is there bidirectional traceability between parent requirements, requirements, and preliminary design component?
Do the detail software requirements trace to a reasonable number of parent requirements? (e.g., does the ratio between detail requirements and parent requirements look reasonable, do all of the software detail requirements trace to too few parent requirements (inadequate system requirement definitions)).
Are trace links of high quality (e.g., avoidance of widows and orphans, circular traces, traces within a requirements level, etc.)?
Have high-risk behaviors or functions been identified, and does SA agree with the identified behaviors? This should result in a list of critical activities to be performed by software and analyzed further by software assurance.
For critical activities, are associated requirements correct and complete against SA understanding of the system behavior? Note: consider additional analysis rigor to address critical activities.
Are interface requirements with the hardware, users, operators, or other systems adequate to meet the needs of the system concerning expectations of its customer and users, the operational environment, safety and fault tolerance, and both functional and non-functional perspectives?
Has a fault tolerance strategy for fault detection, identification, and recovery (FDIR) from faults been provided, and is it reasonable?
Is the role of software as part of the FDIR understood?
Are software related activities associated with the fault tolerance strategy for fault detection and identification and recovery captured as requirements?
Is human safety addressed through the requirements?
Have hazards and hazard causes been adequately identified, with associated software detection and mitigations captured as requirements?
Are must-work and must-not-work requirements understood and specified?
Have requirements addressed the security threats and risks identified within the system concept specifications and the system security concept of operations (e.g., System Security Plan)
Do requirements define appropriate security controls to the system and software
Can the requirement(s) be efficiently and practically tested?
Do the requirements address the configuration of, and any associated constraints, associated with COTS, GOTS, MOTS, and Open Source software?
Do the requirements appropriately address operational constraints?
Does the requirement conflict with domain constraints, system constraints, policies, or regulations (local and governmental)?
Have users/operators been consulted during requirements development to identify any potential operational issues?
Have the software requirements been peer reviewed?
Div
id
tabs-3
3. Resources
3.1 References
refstable-topic
Show If
group
confluence-users
Panel
titleColor
red
title
Visible to editors only
Enter necessary modifications to be made in the table below:
SWEREFs to be added
SWEREFS to be deleted
SWEREFs NOT called out in text but listed as germane: none