Page History
| Excerpt Include | ||||||
|---|---|---|---|---|---|---|
|
| Show If | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
|
| Tabsetup | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Tabsetup | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
When looking for inconsistencies, consider these "warning signs" or potential causes:
Inconsistencies among plans, requirements, and the resulting software products need to be identified throughout the project life cycle. One way to ensure this activity is not forgotten is to conduct periodic reviews of requirements against project plans and software products.
Before corrective action can be taken, consider performing an analysis to identify and weigh options when the corrective action is not readily apparent. This analysis could be similar to that used for change requests and problem reports (see Change Requests/Problem Reports). 3.2 Initiate corrective actions and track until closureSample corrective actions include:
To initiate corrective actions and track them to closure, consider the following for implementation on the project:
Excerpt Include | SITE:SPAN | SITE:SPAN | nopanel | true | Additional guidance related to reporting and tracking corrective actions to closure may be found in the following related requirement in this handbook: SWE-053 - Manage Requirements Changes | SWE-080 - Track and Evaluate Changes |
Div | | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| refstable | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Show If | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Panel | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Consistency between software requirements, project plans, and software products is critical to ensuring mission success, preventing costly rework, and mitigating risks to safety, quality, and system performance. Discrepancies among these components can lead to misunderstandings, implementation errors, or operational failures, especially in highly complex or safety-critical NASA systems. Ensuring that inconsistencies are actively identified, addressed, and tracked to resolution provides a structured approach to aligning stakeholder expectations with the software being developed. It also ensures project commitments (e.g., schedule, resources, and deliverables) are realistic and achievable, which reduces the likelihood of project delays, budget overruns, and system defects. Key Supporting Points for the Rationale1. Prevention of Integration and System-Level Failures
2. Avoidance of Costly Rework
3. Alignment of Project Plans with Evolving Requirements
4. Mitigation of Risks in Safety-Critical Systems
5. Ensuring Synchronized Documentation and Communication
6. Alignment with NASA’s System Development Standards
Benefits of Enforcing Requirement 4.1.6
SummaryRequirement 4.1.6 ensures that inconsistencies between requirements, project plans, and software products are identified, resolved, and tracked consistently throughout the project lifecycle. This structured approach is crucial for maintaining alignment, ensuring quality, and minimizing risks in safety-critical, mission-critical, or resource-constrained environments. Tracking and resolving inconsistencies early mitigates risks that could otherwise lead to integration challenges, operational failures, or rework. This requirement supports NASA’s commitment to program excellence, safety assurance, and mission success. |
| Div | ||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||
3. GuidanceTypically, the corrective action process is described in a plan, such as the software development or software management plan (5.08 - SDP-SMP - Software Development - Management Plan) or the Software Assurance Plan (8.51 - Software Assurance Plan). Follow this documented process to capture and track to closure inconsistencies among requirements, plans, and software products. A recommended practice for this requirement is that all corrective actions be formally submitted with descriptions of the desired modifications to work products. If corrective actions are not documented consistently, they are difficult to analyze and track. A database provides a flexible environment for storing and tracking corrective actions. See also SWE-024 - Plan Tracking, 3.1 Identify inconsistencies among requirements, project plans, and software productsSuggested activities to identify inconsistencies and ensure that plans and activities or work products remain consistent with requirements, include:
When looking for inconsistencies, consider these "warning signs" or potential causes:
Inconsistencies among plans, requirements, and the resulting software products need to be identified throughout the project life cycle. One way to ensure this activity is not forgotten is to conduct periodic reviews of requirements to ensure the requirements, project plans, and software products are consistent. See also SWE-053 - Manage Requirements Changes and SWE-080 - Track and Evaluate Changes, SWE-050 - Software Requirements.
Before corrective action can be taken, consider performing an analysis to identify and weigh options when the corrective action is not readily apparent. This analysis could be similar to that used for change requests and problem reports (see 5.01 - CR-PR - Software Change Request - Problem Report). Test plans/procedures need to be modified to reflect requirement changes and resulting implementation changes. Testing of code changes should be conducted, including regression testing. If the software is safety-critical, a full set of regression tests should be run to ensure that there was no impact on the safety-critical functions. Refer to Software Assurance section. 3.2 Initiate corrective actions and track until closureSample corrective actions include:
To initiate corrective actions and track them to closure, consider the following for implementation on the project:
3.3 Additional GuidanceAdditional guidance related to this requirement may be found in the following materials in this Handbook:
3.4 Center Process Asset Libraries
See the following link(s) in SPAN for process assets from contributing Centers (NASA Only).
|
| Div | ||
|---|---|---|
| ||
4. Small ProjectsFor smaller projects, processes and tools should be scaled appropriately to fit the scope, complexity, and resource availability. While small projects may not have the same resources or risk profile as larger efforts, Requirement 4.1.6 remains essential to ensure alignment between requirements, plans, and products to avoid inefficiencies, errors, or risks to project success. Here’s a practical and streamlined approach to meeting this requirement for small projects: 1. Keep the Process SimpleFor small projects, adopt a light and easy-to-follow process to track and resolve inconsistencies. Avoid overcomplicating workflows. Focus on:
Recommended Steps:
2. Use Simplified ToolsSmall projects do not always need large-scale requirements management or configuration management tools. Instead, utilize lightweight, readily available tools. Suggested Tools:
Example:
3. Leverage Team Meetings for CollaborationFor small projects with fewer team members, frequent and focused meetings can effectively identify and resolve inconsistencies. Steps for Team Meetings:
Example:An inconsistency is identified during a weekly meeting: A safety-related software feature was deprioritized to save time, but the test plan still includes test cases for it. The team decides to modify the test plan accordingly, and the action is tracked to completion in the "Inconsistency Tracker." 4. Assign a Single Point of ResponsibilityFor small teams, managing corrective actions and discrepancies can be streamlined by having a single individual (preferably the project manager or systems engineer) responsible for ensuring these tasks are completed. Responsibilities of the Assigned Person:
Example:In a two-person team, the project manager identifies that the software developer misunderstood a newly added requirement. The project manager communicates the issue, clarifies the requirement, and confirms the developer updates the software promptly to avoid delays. 5. Incorporate Consistency Checks in ReviewsSmall projects may have fewer formal review processes, but consistency checks should be integrated into lightweight reviews at key lifecycle checkpoints. Review Points:
Example:During the pre-delivery review of a CubeSat software project, the team verifies that the telemetry control feature described in the requirements document is fully implemented and validated in the software and is not flagged as incomplete in the project schedule. 6. Apply Risk-Based PrioritizationSmall projects may have limited time and resources, so focus on addressing inconsistencies related to high-risk areas such as:
Example:For a small satellite navigation system, verify that:
7. Close the Loop on Corrective ActionsFor every identified inconsistency:
Example:An inconsistency is identified between the planned memory usage in the project plan (200 MB) and the current software product (210 MB). The team revises the project plan and confirms the allocated hardware resources can support the updated usage. The issue is logged as resolved in the tracker. Summary for Small Projects
By using a streamlined and scalable approach, small projects can effectively manage and resolve inconsistencies without imposing unnecessary overhead. This keeps the project aligned, reduces risks, and helps ensure successful delivery, even with limited resources. |
| Div | |||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||
5. Resources5.1 References
5.2 Tools
|
| Div | ||
|---|---|---|
| ||
6. Lessons Learned6.1 NASA Lessons LearnedThe NASA Lessons Learned database contains the following lessons learned that emphasize the critical importance of ensuring alignment between requirements, plans, and products and the detrimental consequences of failing to address inconsistencies properly: 1. Risk Assessment in Software Development ProjectsLesson Number 1321:
2. Deficiencies in Mission-Critical Software Development for Mars Climate Orbiter (MCO)Lesson Number 0740:
3. Requirement Traceability and Testing in the Space Shuttle ProgramLesson Number 0100:
4. Columbia Space Shuttle Accident (2003): Communication and Process GapsLesson Number 1122:
5. Navigation Software Lessons from the Galileo ProgramLesson Number 0756:
6. Early Identification of Volatility in Software RequirementsLesson Number 0991:
Concluding RelevanceThese lessons align with Requirement 4.1.6 by demonstrating the importance of identifying and correcting inconsistencies to prevent mission failures, reduce risk, and ensure alignment between requirements, project plans, and software products. Small projects can extract relevant lessons—like the importance of early traceability, consistency checks, clear ownership, and incremental validations—to mitigate common pitfalls even in simpler or resource-constrained environments. Applying these historical insights helps reinforce the importance of rigor and vigilance in all stages of the software lifecycle to avoid repeating past mistakes and ensure project success. 6.2 Other Lessons LearnedNo other Lessons Learned have currently been identified for this requirement. |
| Div | |||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||
7. Software Assurance
7.1 Tasking for Software Assurance
7.2 Software Assurance ProductsSoftware assurance (SA) plays a critical role in identifying and resolving inconsistencies across the requirements, project plans, and delivered software products. The following SA products ensure systematic monitoring, corrective actions, and alignment: 1. List of Inconsistencies Identified Among ProductsSA identifies discrepancies between the following artifacts:
Key Elements:
Example: 2. Change Management System Results
Example: 3. Software Problem Reporting or Defect Tracking System ResultsSA uses defect tracking systems to monitor and analyze inconsistencies discovered during development phases. These should include:
Example: 7.3 MetricsSoftware assurance relies on key metrics to evaluate how effectively inconsistencies are tracked and resolved, providing actionable insights for process improvement: Required Metrics:
See also Topic 8.18 - SA Suggested Metrics 7.4 GuidanceAnalyzing Project Planning DocumentsSA must consistently analyze project reference documents (e.g., Resource Allocation Plans, Development Schedules, Requirements Specification, and Test Plans) for alignment and gaps. Items often overlooked:
Proposed Changes AnalysisFor all change requests, SA evaluates the risk and impact, especially with focus on safety and security considerations:
Example: Evaluation Checklist:
Tracking Changes Through ImplementationSA ensures changes are:
Safety Priority in Conflicts:For conflicts between safety and security, safety considerations should take precedence. These changes must align with the project’s risk profile and NASA directives. 7.5 Additional Guidance
Implementation Tip: This improved section emphasizes actionable guidance, consistent methodologies, and links corrective actions to metrics tracking, ensuring effective oversight of inconsistencies across the software lifecycle. Additional guidance related to this requirement may be found in the following materials in this Handbook:
|
| Div | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||
8. Objective Evidence
|
Enter the necessary modifications to be made in the table below:
SWEREFs called out in text: 157, 273, 521, 549
SWEREFs NOT called out in text but listed as germane: 031, 271, 307
5.2 Tools
| Div | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
6. Lessons Learned6.1 NASA Lessons LearnedThe NASA Lessons Learned database contains the following lessons learned related to ensuring plans and products remain aligned with requirements:
6.2 Other Lessons LearnedNo other Lessons Learned have currently been identified for this requirement. |
| Div | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||
7. Software AssuranceExcerpt Include | | SWE-054 - Corrective Action for Inconsistencies | SWE-054 - Corrective Action for Inconsistencies |
| Panel | ||||
|---|---|---|---|---|
| ||||
1. Monitor identified differences among requirements, project plans, and software products and confirm differences are addressed and corrective actions are tracked until closure. |
7.2 Software Assurance Products
List of any inconsistencies identified among products, including risks and issues| Note | ||
|---|---|---|
| ||
|
| title | Definition of objective evidence |
|---|
7.3 Metrics
- # of Corrective Actions (CAs) raised by SA vs. total #
- CA Attributes (Type, Severity, # of days Open, Life cycle Phase Found)
- CA State (Open, In work, Closed)
- Trends of CA Open vs. Closures over time
- # of incorrect, missing, and incomplete requirements (i.e., # of requirements issues) vs. # of requirements issues resolved
- Trend the # of inconsistencies or corrective actions identified, and # closed.
- # of software work product Non-Conformances identified by life cycle phase over time
7.4 Guidance
1. Analyze the different project planning documents and confirm that all inconsistencies are documented and addressed. Items that are often overlooked include some of the following:
- A set of requirements with estimated effort too great for the allotted time and effort planned in the schedule (Also, budget and schedule mismatch with requirements)
- Items planned for implementation or purchase too late for the "need" date for integration
- Development schedules not aligned with "need" dates
- Assurance activities planned that don't align with project phases or activities
- Requirements needing expertise not planned or coordination with another group or development that has not been planned
Any inconsistencies identified during the SA review of project plans, requirements, and software products should be documented along with suggested corrective actions, submitted to the project management, and tracked to closure. As the project progresses, inconsistencies among different project products should be kept in mind, particularly during reviews and meetings, and continually identified and addressed as needed
2. Software assurance should analyze all proposed changes for impacts, looking closely at any impacts the change may have on any of the software related to safety or security. The analysis should also consider whether there will be any impacts on existing interfaces or the use of any COTS, GOTS, MOTS, or reused software in the system and whether the change will impact any future maintenance effort. Any identified risks should be brought up to discuss the approval/rejection of the change.
Examples:
- Ensure that the software requirements are met by the design and code.
- Ensure that the planned activities in the project software plans are followed and completed
- Ensure that the software products meet the requirements, conform to the software plans, and meet the acceptance criteria
- Ensure that the software code meets the software requirements and does not contain features and capabilities that are not included in the requirements, make sure that all software features and capabilities are tested.
3. Confirm:
- That the project tracks the changes
Software assurance will check to see that any changes that are submitted are properly documented and tracked through all the states of resolution (investigation, acceptance/rejection, implementation, test, closure) in the project tracking system.
- That the changes are approved and documented before implementation
Software assurance should track the changes from their submission to their closure or rejection. Initially, SA should confirm that all changes follow the change management process that the project has established. Initially, the change will be documented and submitted to the authorizing CCB for consideration. The authorizing CCB (which will include a software assurance person) will evaluate any changes for impacts.
If the software is safety-critical, the responsible software assurance personnel will perform a software safety change analysis to evaluate whether the proposed change could invoke a hazardous state, affect a control for a hazard, condition, or state, increase the likelihood or severity of a hazardous state, adversely affect safety-critical software, or change the safety criticality of an existing software element. Keep in mind that changes to the hardware or the software can impact the overall system’s safety and while the focus is on software changes, the software also needs to be aware of changes to the hardware that may impact how software controls, monitors and analyzes inputs from that hardware. Hardware and software changes can alter the role of software from non-safety critical to safety-critical or change the severity from moderate to critical.
Some other considerations for the evaluation of changes:
- Is the change an error correction or a new requirement?
- Will the change fix the problem without major changes to other areas?
- If major changes to other areas are needed, are they specified, and is this change really necessary?
- If the change is a requirements change, has the new requirement been approved?
- How much effort will be required to implement the change?
- If there is an impact on safety or reliability, are there additional changes that need to be made in those areas? Note: If there is a conflict between safety and security, safety changes have priority.
When all the impacts are considered, the CCB votes on acceptance/rejection. Software assurance is a voting member of the CCB. Software assurance verifies that the decision is recorded and is acceptable, defined as:
- When the resolution is to “accept as is”, verify that the impact of that resolution on quality, safety, reliability, and security is compatible with the Project’s risk posture and is compliant with NPR 7150.2 and other Center and Agency requirements for risk.
- When the resolution is a change to the SW, the change will sufficiently address the problem and will not impact quality, safety, reliability, security, and compliance with NPR 7150.2; the change will not introduce new or exacerbate other, discrepancies or problems.
- In either case, the presence of other instances of the same kind of discrepancy/problem has been sought out and, if detected, addressed accordingly.
- Verify that appropriate software severity levels are assigned and maintained.
- Assure any risk associated with the change is added to the Project/facility risk management system and is addressed, as needed, in safety, reliability, or other risk systems
- That the implementation of the changes is complete
Software assurance will check to see if the implementation of the approved changes has been coded as per the change request. Check to see that any associated documentation changes are submitted/approved and/or made as needed (i.e., updates to requirements, design, test plans/procedures, etc.)
- That the project tests the changes
Software assurance will check to see that the project test any of the code that has changed and runs a set of regression tests to see that the change has not caused a problem anywhere else in the software system. If the software is safety-critical, a full set of regression tests should be run to ensure that there was no impact on the safety-critical functions.
4. Confirm software changes are done in the software control process
Software assurance will check that the software control process has been followed throughout the handling of the submitted change and that the status of the change is recorded and confirmed as closed

