bannerb
Book A. Introduction

Welcome

Welcome to the NASA Software Engineering Handbook (SWEHB). This wiki based Handbook provides users and practitioners with guidance material for implementing the requirements of NPR 7150.2, NASA Software Engineering Requirements. Use of this SWEHB is intended to provide "best-in-class" guidance for the implementation of safe and reliable software in support of NASA projects. This SWEHB is a key component of the NASA Software Working Group's (SWG) implementation of an Agency-wide plan to work toward a continuous and sustained software engineering process and product improvement.

The SWG designed this Handbook for the community that is involved in the acquisition, management, development, assurance, maintenance, and operations of NASA software. Readers can use it to sharpen their skills in specific areas or suggest valuable guidance for others in the NASA software community. Novice and experienced software team members can use the Handbook as an easily accessible reference or manual that captures the broad knowledge base of numerous experts who have extensive experience in all aspects of NASA's software systems.

In this SWEHB you will see information for determining the scope and applicability of the individual requirements from NPR 7150.2. You will also see the rationale behind the requirements, guidance on their implementation, the specific tools that were used in the development of NASA software, pointers to key lessons learned, and select references for further information.

We have adopted the "wiki" approach for this version of the Handbook to encourage you to submit candidate improvements to the information in this Handbook. Your comments, suggestions for improvement, offerings of additional candidate material for the Handbook, and identification of errors are solicited to make this a living and ongoing source of useful information. You can submit your inputs and responses via "Feedback" in the NASA Technical Standards System (NTSS) at http://standards.nasa.gov/.

The SWG's SWEHB Development Team will review and disposition your comments to enhance the wealth of useful material that is now at the fingertips of NASA's software community.

We hope you will find the information helpful in your day-to-day quest for engineering excellence. It has been provided by many contributing experts, distilled into useful chunks by the SWEHB Development Team, and reviewed by NASA's Software community.

 

(Contact the SWEHB site admin for resolution of technical difficulties.)

 

SWEHB Introduction

The NASA Software Engineering Handbook (SWEHB) originated from multiple requests for additional guidance, rationale, resources, references and lessons learned for acquiring, managing, developing, assuring and maintaining NASA software systems. The design of the electronic (wiki-based) format was selected to accommodate the following evolving needs:

  • To publish material in a timely fashion.
  • To provide needed information in concise screen-friendly chunks.
  • To simplify updates to the Handbook.
  • To make it easily searchable.
  • To engage the NASA software community by providing an easy-to-use vehicle for
    • providing feedback,
    • sharing examples of best practices, and
    • contributing lessons learned developed on their own projects.

The SWEHB is accessible on the NASA Engineering Network (NEN). The Agency's software community will find they have complete and speedy access to all written content and reference links in the Handbook through the NEN. Numerous important links are also provided for relevant processes, templates, and tools in the Software Processes Across NASA (SPAN) repository, accessible to NASA users from the SPAN tab in this Handbook.

The SWEHB wiki can be used in a similar manner to the use of hard copy guidebooks, but it offers significant advantages for the reader. Once a general familiarity with the resource is obtained, the user will be able to directly access concise information relevant to their interest or need. (Typically a quick scan and flip through the Handbook structure, including the chapter organization and the reference/appendix material, is enough to gain familiarity.)

The SWEHB provides guidance associated with each SWE (Software Requirement)  in NPR 7150.2 as well as related guidance in the form of features and topics which span across several SWEs. Software developers take note - Only general approaches for Agency use are provided in the information in these essays. Users are expected to consult NASA Center resources for local procedures and guidance, when available.

The Software Engineering Handbook is available on the NEN from the Software Engineering Community of Practice homepage. This site offers additional guidance and information to software developers, including the Ask an Expert pick, a Contact List, a Classification Tool, a Document Repository, and much more. Frequent users may wish to add a direct bookmark to the SWEHB in their browser <https://swehb.nasa.gov>.

Here's an overview of each major section within the SWEHB:

  • A contains the Introduction.
  • B contains the developed guidance for each institutional requirement in NPR 7150.2. These SWE descriptions are from Chapter 2 of NPR 7150.2. The SWEs are presented in nominal ascending numerical order, with some higher-numbered SWE intermixed. These latter SWE represent the changes made after the initial release of NPR 7150.2.  Please note that in many cases the information from removed SWEs has been included in related SWEs that subsumed the subject. The SWEHB was written so that each SWE guidance section provides stand-alone explanations and interpretive information about the implementation of requirement. To enhance the usefulness of each module, the guidance includes hyperlinks for easy reference to related SWEs and Topics.
  • C contains the developed guidance for each software project requirement in NPR 7150.2. (Note that the SWE descriptions are organized into three chapters that mirror the organization of NPR 7150.2). The SWEs are presented in nominal ascending numerical order, with some higher-numbered SWE intermixed. These latter SWEs represent the changes made after the initial release of NPR 7150.2.  Please note that in many cases information from removed SWEs has been included in related SWEs that subsumed the subject. The SWEHB was written so that each SWE guidance section provides a stand-alone explanation and interpretive information about the implementation of the requirement. To enhance the usefulness of each module, the guidance includes hyperlinks for easy reference to related SWEs and Topics.
  • D contains special Topics, most in the form of essays, that are broader than any single SWE. Many of the special Topics take the form of "how to" and instructional material for users seeking to improve their knowledge and practices in software engineering. It is expected that the special Topics will help the user go beyond the minimum descriptions presented in each SWE. Topics are more expansive on particular ideas and contain additional instructions for developing and acquiring software. Note: Topic 7.17 includes the definitions of terms from the Appendix A of the NPR 7150.2.
  • E contains a list of terms including acronyms and/or definitions that are used in the Handbook, listings of and references to software development tools that are used around the Agency, and a complete listing of Handbook references in a numerated References Table.
  • F is a link to the Software Processes Across NASA (SPAN) repository accessible to NASA users only. This repository contains processes and process assets approved for use across the Agency.

Explanation of the SEARCH Box in the splash banner above: This utility allows the SWEHB user to interrogate the Handbook contents for particular items of interest.

In the SWEHB a typical SWE essay has six sections;

  • THE REQUIREMENT: This section is a restatement of the NPR 7150.2 requirement wording, including any Notes from either the requirement paragraph itself, or any applicable note from Appendix C. This section also gives a tabular representation of the applicability to each software class 438.

The text in this section can only be altered via an approved change request and NODIS (NASA Online Directives Information System)  update of NPR 7150.2. 

 

  • RATIONALE: This section provides useful information regarding the purpose of the requirement. Occasionally, historical information and/or references are included to further support the rationale statement.
  • GUIDANCE: This section provides information helpful for interpreting the requirement, its scope, its relationship to other SWE, associated best practices, and references to supporting materials (standards, guides, published technical papers, the NEN and SPAN materials).
  • SMALL PROJECTS: This section suggests implementation aids to small projects to help satisfy the SWE while accommodating the typically limited resources of time, funds, and personnel. The definition of "small project" needs to be determined by the user.

 

This determination does not relieve a project from satisfying the requirements in the NPR. When small projects need to reduce the set of applicable software requirements due to constraints, the designated Center Software Technical Authority is to be consulted. Waivers and Deviations against NASA requirements are broadly covered in NPR 7120.5  082, section3.3, and specifically covered for software in Chapter 6 of NPR 7150.2 (with associated guidance in this Handbook). NASA Chief Engineer’s specific direction on waivers and Technical Authority is located on the NEN. NODIS maintains a web page   082 for the posting of approved waivers for general reference.

 

  • RESOURCES: This section provides a listing of referenced and footnoted texts, documents found within publicly accessible NASA repositories and/or out on the web, and other useful documents (e.g., checklists and/or templates). It is instructive to note that the Handbook authors also included in the Resources sections listings of what might be best described as "additional reading", i.e., useful items not specifically cited or linked to in the GUIDANCE section, but thought by the authors to contain educational or expanded discussions of the ideas covered in the SWE write-up.

    Also, this section usually includes a separate table listing of tools, items that will help the user satisfy the requirement (e.g., developer tools). The Handbook wiki links SWEs and tools through the use of a master
    Tools table. The Tools table provides web sites for accessing the tool. It also lists Center(s) that currently use the tool in case the reader wants to seek out the "experiences" of a current user of the tool. Readers are invited to submit their tools for candidate inclusion in the Tools table for the benefit of others around the Agency.
  • LESSONS LEARNED (LL): This section contains references to the experiences of others involved in NASA software development activities as well as other industry and government development efforts. The majority are catalogued in the Public Lessons Learned library  439at the Office of the Chief Engineer (OCE). Some are derived from specialized project or Center collections as well as from reputable industry and government groups. Occasionally a lesson has only indirect applicability to the requirement. It is presented as a related lesson that can be applied to help understand the content of the SWEHB.

Remember that the NPR 7150.2 is a requirements document. It uses "shall" exclusively to indicate requirements. Applicability of a NPR 7150.2 requirement is determined by NASA Software Classification and the matrix in Appendix C (of the NPR). The SWEHB is not a requirements document, only an informational document. NO new requirements are added by the SWEHB. The authors strove to exclude the use of "shall" and "should" in any paragraph that might be interpreted as a requirement or even an augmentation to a requirement.

Earlier versions of NPR 7150.2 made extensive use of the NPR's Notes sections to help with the interpretation of the SWE. This Handbook is intended to collaborate with and to augment the current NPR's Notes, and to include valuable guidance from previous versions of NPR 7150.2.

The Requirements Mapping Matrix (RMM) in NPR 7150.2 443 provides a list of the applicability of each software project requirement by the class of software being developed. Associated with many of the entries in the RMM are one or more notes that modify the applicability of the requirement for a particular class. Since the SWEHB makes explicit mention of these modifiers in section 1 of the guidance for each SWE, an additional explanation for the modifiers is included here:

  • The "X" notation signifies that the full requirement (assuming "no exceptions") is invoked by NPR7150.2 for that class of software. Note that requirements labeled with an "X" can still be tailored with the appropriate approvals, or otherwise affected by approved deviations and or waivers.
  • A blank or empty cell in the RMM indicates that the requirement is optional and not invoked by NPR 7150.2 for that software Class.
  • “X not OTS” in the RMM indicates that the requirement applies to that software class with the exception of off-the-shelf, commercial software.
  • “X *(SC only)” indicates that the project is required to apply this requirement for safety-critical software in that software class. Determining the safety criticality of the software requires the use of checklists (e.g., use of the "litmus test") in NASA-STD-8739.8, NASA Software Assurance Standard 278 and NASA-STD-8719.13, Software Safety Standard 271 to determine specifically what parts of the project and its software are safety-critical.

Some general comments:

  • Note that the SWE titles in the SWEHB may not always agree with those in the NPR. The SWEHB Development Team expanded the titles for some of the SWE to help distinguish between other similarly sounding SWE names (e.g., "bidirectional traceability").
  • See the Terms Table for a complete list of definitions of unique terms used in the SWEHB.
  • Much of the referenced material listed in the Resources section is located on the NASA Headquarters NODIS site, e.g., NPRs, NPDs;  in NTSS 442 , e.g., NASA standards, IEEE standards, or in other NASA sites, e.g., materials from the OCE, Public LLs; etc. Please note that many of these Agency or Center assets are subject to scheduled updates. While we will make every effort to link to the latest versions, editions or documents, it is possible that you will discover references that have broken links or require updating. We invite the community to submit requests for information via "Feedback" at http://standards.nasa.gov/ and requests for changes to the Handbook via MSFC Form 4657, Change Request for a NASA Engineering Standard.
  • Extensive citations are also made to external sites (e.g., Software Engineering Institute (SEI) 157) and to general web-hosted sites. While attempts were made to cite publicly available (i.e., "free") references, there may be an occasional reference that suggests the reader "buy" a copy. If you come across one of these, and you are a NASA user, try to access it through the NASA Technical Standards 442 site. A simple and quick one-time registration is required. This NASA site provides prepaid access to many external repositories through an Agency-wide agreement with the site.
  • (Caveat: Since the web is a dynamic place, some references in the Resources section of the SWE may have been discontinued online or moved to another host by their owners.  While all references have been verified on internal Agency networks as well as external Virtual Private Network (VPN) access, the variances in firewall and VPN settings, permissions, and configurations may affect access to these references.)

Title Material

NASA TECHNICAL HANDBOOK

National Aeronautics and Space Administration

Washington, DC  20546-0001

NASA Software Engineering Handbook

NASA-HDBK-2203A

Approved: 2017-01-13

Superseding NASA-HDBK-2203

DOCUMENT HISTORY LOG

Status

Document Revision

Approval Date

Description

Baseline

1

02-28-2013

Initial Release

Revision 

 01-13-2017

Handbook updated to address the NASA Software Engineering Requirements, NPR 7150.2B, changes.  Update the guidance topics.

FOREWORD

This NASA Technical Handbook is published by the National Aeronautics and Space Administration (NASA) as a guidance document to provide engineering information; lessons learned; possible options to address technical issues; classification of similar items, materials, or processes; interpretative direction and techniques; and any other type of guidance information that may help the Government or its contractors in the design, construction, selection, management, support, or operation of systems, products, processes, or services.

This NASA Technical Handbook is approved for use by NASA Headquarters and NASA Centers and Facilities.  It may also apply to the Jet Propulsion Laboratory and other contractors only to the extent specified or referenced in applicable contracts.

This wiki-based NASA Technical Handbook provides users and practitioners with guidance material for implementing the requirements of NPR 7150.2, NASA Software Engineering Requirements. Use of this Software Engineering Handbook (SWEHB) in intended to provide "best-in-class" guidance for the implementation of safe and reliable software in support of NASA projects. This SWEHB is a key component of the NASA Software Engineering Working Group's (SWG) implementation of an Agency-wide plan to work toward a continuous and sustained software engineering process and product improvement.

Requests for information should be submitted via "Feedback" the at http://standards.nasa.gov/. Requests for changes to this NASA Technical Handbook should be submitted via MSFC Form 4657, Change Request for a NASA Engineering Standard.

 

Ralph R. Roe, Jr 
NASA Chief Engineer

Approval Date:

01/13/2017

Resources

The version of the handbook that you are viewing is noted in the header image. Clicking on this image while in any page of the SWEHB will take you back to the Introduction page for this version.

To access other versions of the Software Engineering Handbook use the links below: