This section contains special features and topics which contain material that is broader than any one Software Engineering requirement. Many take the form of how-to's and tutorials for those wishing to learn about the state of software engineering within NASA. For Frequently Asked Questions see the page: FAQ - Engineering, Assurance, and Safety |
7.01 - History and Overview of the Software Process Improvement (SPI) Effort - Addresses the history of the NASA software improvement efforts to provide a background for the development of this electronic handbook 7.03 - Acquisition Guidance - Guidance for projects implementing those requirements in NASA Procedural Requirement (NPR) 7150.2, NASA Software Engineering Requirements that address software acquisition. 7.05 - Work Breakdown Structures That Include Software - Provide guidance on the development of a work breakdown structure (WBS) for software on projects. 7.06 - Software Test Estimation and Testing Levels - Provide guiding principles and best practices pertaining to software test estimation and a description of the typical "levels" of testing performed for a software project. 7.07 - Software Architecture Description - Recommend content for software architecture descriptions for NASA projects. 7.09 - Entrance and Exit Criteria - This guidance provides the recommended life cycle review entrance and exit criteria for software projects and should be tailored for the project class. 7.10 - Peer Review and Inspections Including Checklists - Describes the role of Peer Reviews and Inspections in detecting and evaluating product defects, and tracking solutions integration into the product. 7.11 - SWE History - The SWE History Summary includes all SWE numbers and their history of use in all versions of the Software Engineering Handbook. 7.13 - Transitioning to a Higher Class - Provide guidance for projects that desire to transition software from a lower to a higher classification. 7.14 - Implementing Measurement Requirements and Analysis for Projects - Provides guidance for projects implementing the NPR 7150.2 requirements addressing or including software measurement. 7.15 - Relationship Between NPR 7150.2 and NASA-STD-7009 - Discusses the relationship of NPR7150.2 to NASA-STD-7009 (Models and Simulation) 7.16 - Appendix C. Requirements Mapping and Compliance Matrix - Guidance for using the 7150.2D Appendix C Requirements Mapping and Compliance Matrix. 7.17 - 7150.2D Appendices (Definitions, References, etc.) - This content is taken verbatim from NPR 7150.2D, NASA Software Engineering Requirements. 7.18 - Documentation Guidance - Provide a set of minimum content guidance for software project plans, reports, and procedures. 7.19 - Software Risk Management Checklists - Software Risk Management is a process whereby the project identifies and tracks threats to the success of the project. 7.20 - Assessing - Meets the Intent - Guidance for projects that need to assess whether an industry partner or subcontractor’s standards meet the intent of NASA requirements. 7.21 - Multi-condition Software Requirements - Specific recommendations for verifying software requirements with multiple conditional statements. 7.22 - Space Security: Best Practices Guide - This topic guides mission security implementation in the form of principles coupled with applicable controls that cover both the space vehicle and the ground segment. 7.23 - Software Fault Prevention and Tolerance - This topic guides developers to reduce the likelihood of software faults pre-flight and to detect/mitigate the effects of software errors should they occur in-flight. 8.01 - Off Nominal Testing - Guidance focusing on out of bounds parameters, failure scenarios, unexpected conditions, and capabilities that are typically considered as "must not work" functions. 8.02 - Software Reliability - The goal of SW reliability and maintainability is to assure that SW performs consistently as desired, when operating within specified conditions. This topic covers additional basic information on software reliability. 8.03 - Organizational Goals of Software Assurance Metrics - Derivation of SA Metrics from the Goal Statements using the Goal, Question, Metric method. 8.04 - Additional Requirements Considerations for Use with Safety-Critical Software - Requirements to be considered when you have safety-critical software on a program/project/facility. 8.05 - SW Failure Modes and Effects Analysis - A "bottoms up" structured analysis method to help determine potential failures or hazards in the software design with guidance and forms. 8.06 - IV&V Surveillance - This guidance will establish the rationale behind the creation of an IV&V Requirements and Surveillance activities. 8.07 - Software Fault Tree Analysis - A top-down analysis method to help identify the causes of presupposed hazards. 8.08 - COTS Software Safety Considerations - A discussion on the use of COTS in safety-critical systems. 8.09 - Software Safety Analysis - Software Safety Analysis (SSA) is a term that is used to describe a wide range of analyses. This article provides guidance on performing an SSA to satisfy the NASA-STD-8739.8 requirement associated with NPR 7150.2 SWE-205 - Determination of Safety-Critical Software. 8.10 - Facility Software Safety Considerations - Facility software system safety exists to ensure the safe and continuous operation of software associated with ground-based facilities. 8.11 - Auto-Generated Code - Model based coding techniques used with code generating tools. 8.12 - Basics of Software Auditing - Software audits provide an independent evaluation of the conformance of software products and processes to applicable requirements, standards, guidelines, plans, and procedures. 8.13 - Test Witnessing - Guidance for software assurance personnel performing test witnessing. 8.14 - SA Tasking for NPR 7150.2B – Topic retired. See an earlier version of SWEHB for this topic, it does not apply to the current version of the SWEHB. 8.15 - SA Tasking Checklist Tool - Checklist tool that gives SA analysts the ability to tailor the software assurance and software safety tasks in NASA-STD-8739.8B and generate a tailored checklist for the tasks required on a project's software classification and safety-criticality. 8.16 - SA Products - Provides information for the major software assurance and safety work products resulting from the performance of the Software Assurance and Software Safety (SASS) tasks required in the NASA Software Assurance and Software Safety Standard, NASA-STD-8739.8 278. Each product’s section may include sub-products, potential analysis methods/technologies, and suggested content for capturing and reporting on the product activities. 8.17 - Software Safety Audit Checklists - This topic contains checklists for use by Software Assurance and Software Safety personnel when they are auditing projects with safety-critical software. 8.18 - SA Suggested Metrics - This topic contains the complete list of software assurance/safety metrics that are suggested for use with the SA tasks in NASA-STD-8739.8. 8.19 - Dead / Dormant Code and Safety-Critical Software - This topic discusses the issues of having dead or dormant code in software that is safety-critical. 8.20 - Safety Specific Activities in Each Phase - This topic provides a summary of the safety-specific activities that should be performed for any safety-critical software. The activities are grouped into the approximate life cycle phases where they will be performed. 8.21 - Software Hazard Causes - This topic provides a list of possible software causes that should be considered when developing hazard analyses. 8.22 - Hazardous Commands - Provides some requirements for consideration when the software has hazardous commands. 8.23 - Software Contents of a Certification of Flight Readiness - Topic discusses the software contents and reviews leading up to a Certification of Flight Readiness (CoFR) for different types of projects. 8.24 - Software Assurance Risk - This chart summarizes SA Risks by Risk Phases 8.51 - Software Assurance Plan - The Software Assurance (SA) Plan product documents the expected work for the Software Assurance and Software Safety (if applicable) personnel for the project. 8.52 - Software Assurance Status Reports - Software Assurance Status Reports product content. 8.53 - IV&V Project Execution Plan - IV&V Project Execution Plan product introduction 8.54 - Software Requirements Analysis - The Software Requirements Analysis product focuses on analyzing the software requirements that have been developed from the system requirements. 8.55 - Software Design Analysis - The Software Design Analysis product focuses on analyzing the software design that has been developed from the requirements (software, system, and/or interface). This topic describes some of the methods and techniques Software Assurance and Software Safety personnel may use to evaluate the quality of the architecture and design elements that was developed. 8.56 - Source Code Quality Analysis - Source Code Analysis methods and techniques. 8.57 - Testing Analysis - Testing Analysis product content. 8.58 - Software Safety and Hazard Analysis - Software Safety and Hazard Analysis product content. 8.59 - Audit Reports - The Audit Reports topic focuses on the many aspects of software auditing and how to report the results. 9.01 Software Design Principles - This topic contains the Guiding Principles that have been built over the years at NASA. These Principles are designed to help projects be successful by reducing the likelihood of defects. 9.03 Coding Standards - Implement a "secure" coding standard on all mission-critical software. 9.05 Data Interface Integrity - Design software to verify the integrity of all inputs and outputs in the control system 9.06 Dead Code Exclusion - Establish a policy for eliminating unreachable code or mitigating the risk of any unreachable code. 9.07 Fault Detection and Response - In the software design, provide mechanisms to detect credible system faults and to react to these faults according to a pre-described plan. 9.09 Incorrect Memory Use or Access - Design software to protect against incorrect use of memory. 9.10 Initialization - Safe Mode - Design flight software to initialize software and hardware to a known, safe, and deliberate state 9.12 Resource Margins - Establish and maintain quantitative margins for all critical resources, allowing for maturation of usage estimates through the life cycle. 9.13 Resource Oversubscription - Include a robust and well thought out response to resource oversubscription situations in the software design. 9.14 Resource Usage Measurement - Incorporate timely visibility into the use of computing resources into the software design. 9.15 Safe Transitions - Assert required preconditions and post-conditions at software transitions. 9.16 Thread Safety - Design interaction between threads to prevent inappropriate interference. 9.17 Toggle Commands - Design both internal and external commanding to place the system into an explicitly specified state. These checklists can be used by developers as guidance for coding or for peer review checklists as well as by assurance and safety personnel to check that best practices have been followed. Although many of these checklists are designed for use with safety-critical software, a majority of the practices are applicable for all software. 6.1 - Design for Safety Checklist - Lists some key practices for software design, particularly when designing safety-critical software. 6.2 - Checklist for General Software Safety Requirements - Provides a list of many of the requirements that should be included in a safety-critical software system. 6.3 - Checklist for Choosing a Real Time Operating System (RTOS) - Considerations for choosing the best RTOS for your application. 6.5 - Checklist for C Programming Practices – Good practices to follow when coding in C for safety-critical software. 6.6 - Checklist for C++ Programming Practices – Good practices to follow when coding in C++ for safety-critical software. 6.7 - Checklist for Ada Programming Practices - Common errors to look for when coding in Ada. 6.9 - Checklist for Generic (Non-Language-Specific) Programming Practices - Practices that should be considered when coding safety-critical software in any language. 6.10 - Checklist for General Good Programming Practices - Contains a number of practices and activities that can improve the quality of the software. 6.12 - Reserved for next checklist - 5.01 - CR-PR - Software Change Request - Problem Report - Minimum recommended content for the Software Change Request - Problem Report. 5.02 - IDD - Interface Design Description -Minimum recommended content for the Interface Design Description. 5.03 - Inspect - Software Inspection, Peer Reviews, Inspections - Minimum recommended content for the Software Inspection, Peer Reviews, Inspections. 5.04 - Maint - Software Maintenance Plan - Minimum recommended content for the Software Maintenance Plan. 5.05 - Metrics - Software Metrics Report - Minimum recommended content for the Software Metrics Report. 5.06 - SCMP - Software Configuration Management Plan - Minimum recommended content for the Software Configuration Management Plan. 5.07 - SDD - Software Data Dictionary - Minimum recommended content for the Software Data Dictionary. 5.08 - SDP-SMP - Software Development - Management Plan - Minimum recommended content for the Software Development - Management Plan. 5.09 - SRS - Software Requirements Specification - Minimum recommended content for the Software Requirements Specification. 5.10 - STP - Software Test Plan - Minimum recommended content for the Software Test Plan at a high level, 5.11 - STR - Software Test Report - Minimum recommended content for the Software Test Report. 5.12 - SUM - Software User Manual - Minimum recommended content for the Software User Manual. 5.13 - SwDD - Software Design Description - Minimum recommended content for a Software Design Description. 5.14 - Test - Software Test Procedures - Minimum recommended content for the Software Test Procedures Plan. 5.15 - Train - Software Training Plan - Minimum recommended content for the Software Training Plan. 5.16 - VDD - Version Description Document - Minimum recommended content for the Version Description Document. 5.17 - Software Assurance Plan Minimum Content - Minimum Recommended Content for a Software Assurance Plan. 5.18 - Safety Plan Minimum Content - Minimum Recommended Content for a Safety Plan. 5.19 - Software Assurance Status Report Minimum Content - Minimum Recommended Content for Software Assurance Status Reports. 5.20 - IV&V Project Execution Plan Minimum Content - Minimum Recommended Content for IV&V Project Execution Plan. 5.21 - Software Requirements Analysis Report Minimum Content - Minimum Recommended Content for Software Requirements Analysis Report. 5.22 - Software Design Analysis Report Minimum Content - Minimum Recommended Content for Software Design Analysis Report. 5.23 - Testing Analysis Report Minimum Content - Minimum Recommended Content for Testing Analysis Report. 5.24 - Hazard Report Minimum Content - Minimum Recommended Content for Hazard Report. 5.25 - Audit Report Minimum Content - Minimum Recommended Content for Audit Report. 5.26 - Source Code Quality Analysis Report Minimum Content - Minimum Recommended Content for Source Code Quality Analysis Report.
See edit history of this section
Post feedback on this section
7.02 - Classification and Safety-Criticality - Aids to help those responsible for determining the software classification and the software safety criticality
7.04 - Flow Down of NPR Requirements on Contracts and to Other Centers in Multi-Center Projects- Provides suggestions to the software lead for levying the Agency-level requirements contained in NPR 7150.2 to contracts and multi-center projects.
7.08 - Maturity of Life Cycle Products at Milestone Reviews - This chart summarizes current guidance approved by the NASA Office of the Chief Engineer (OCE) for software engineering life cycle products and their maturity level at the various software project life cycle reviews.
7.12 - Topic retired
Expanded Software Assurance Work Products below.
9.02 Software Safety and Design Principles - This page contains the cross-references between elements of SWE-134 and the Software Design Principles.
9.04 Command Receipt Acknowledgement - Design software to send a positive acknowledgement of command receipt.
9.08 Flight Software Modification - Include in the software design the capability for commanding modification of the software, and for preventing unwanted modifications.
9.11 Invalid Data Handling - Design software to handle invalid data appropriately.
6.4 - Checklist for Choosing Off-The Shelf Software (OTS) - Checklist for Choosing Off-The Shelf Software (OTS) – Provides many questions to answer before choosing a COTS product that will be used across the project life cycle.
6.8 - Checklist for Fortran Programming Practices - Points out a number of common problems to avoid when coding in Fortran.
6.11 - Examples of Programming Practices for Exception Handling - Shows some good and bad examples of exception handling when coding safety-critical software.