4
See edit history of this section
Post feedback on this section
Welcome from John Kelly
Software Program
Executive:
John C. Kelly 434
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 use the "Comments" box on almost any page of the wiki to submit your inputs and responses. 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 jointly reviewed by NASA's SWG and NASA's MSSC ** members.
* Chartered by the NASA Engineering Management Board and funded by the NASA Headquarters Office of Chief Engineer
** NASA Mission Software Steering Committee
(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 (
<ac:macro ac:name="unmigrated-wiki-markup">
<ac:plain-text-body><![CDATA[
]]></ac:plain-text-body>
</ac:macro>
- 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) 258. 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. An important set of links are also provided for relevant processes, templates, and tools in the NASA Process Asset Library (PAL).
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.)
Users are encouraged to provide general feedback on the SWEHB by using the "Comments" box found on the wiki pages. Suggestions for improvements, identification of errors, and proposed additions to the SWEHB are all welcome. The SWEHB Development Team will review and disposition comments received. Additions, if approved for posting by the SWEHB editor, will be added via incremental updates.
The SWEHB is organized in a series of cross-linked Books (A through E). The basic information within these Books is presented in the form of essays that provide guidance on the implementation of each software engineering requirement (SWE). The SWEHB has other essays, called "Topics," which are more expansive on particular ideas and contain additional instructions for developing and acquiring software.
The SWEHB provides guidance associated with each SWE. Software developers take note - Only general approaches for Agency use are provided in the information in these modules. Users are expected to consult NASA Center resources for local procedures and guidance, when available.
The Software Engineering Handbook is available from the Software Engineering Community of Practice 435homepage. This site offers additional guidance and information to software developers, including the Ask an Expert 436pick, a Contact List 435, a [Classification Tool] (Beta), a Document Repository 437, 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 Book within the SWEHB:
- Book A contains the Introduction.
- Book B contains the developed guidance for each SWE. (Note that the SWE descriptions are organized into six chapters within Book B 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 SWE represent the changes made between the NPR 7150.2 and the NPR 7150.2A revisions. The SWEHB was written so that each SWE guidance section provides stand alone explanations and interpretive information about the requirement. To enhance the usefulness of each module, the guidance includes hyperlinks for easy reference to related SWEs and Topics.
- Book C contains special Topic discussions 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.
- Book D lists the current tags (labels) that are used throughout the Handbook. To further assist the user in finding needed and useful information, a "tag" system has been developed using the SMARTS Tagging approach to indicate relationships between or among individual ideas contained within multiple SWEs. The tagging search feature in Book D allows both individual and multiple tag searching. Tag searches provide an additional way for users to browse and discover content within the Handbook. The terms "tag" and "label" are used interchangeably in the Handbook.
- Book E contains an appendix with definitions from NPR 7150.2A and miscellaneous types of information that help the user get the most out of the SWEHB. These entries include listings of and references to software development tools that are used around the Agency, the full set of NPR 7150.2 requirements 039, a list of terms used in the SWEHB, a Tools Table, a References Table, and even the names of the Handbook Team are available in this Book.
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.
Tag searches are performed using the search tool in Book D.
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 D. 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 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 258and the NASA PAL 266materials).
- 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.
- RESOURCES: This section provides a listing of referenced and footnoted texts, documents found within 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). 440Some 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 D (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.
The 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 NPR's Notes.
The Requirements Mapping Matrix (RMM)in NPR 7150.2 443provides a list of the applicability of each 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 SWE essay, an additional explanation for each note is included here:
- The "X" notation signifies that the full requirement (assuming "no exceptions") is applicable to the 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.
- The "SO" (i.e., Safety Only) designation signifies that the requirement for the classification of software needs only to satisfy the safety aspects of the requirement. This may require the use of checklists (e.g., use of the "litmus test") in NASA STD 8739.8 NASA Software Assurance Standard 278and NASA STD 8719.13 Software Safety Standard 271to determine specifically what parts of the project, its software, and therefore the requirement, are applicable to ensure the development of safe software.
- The "P (Center)" designation, while amply described in [SWE-140], is used separately or in combination with the "SO" modifier. The "P (Center)" modifier is only applicable to the items of the requirement that do not incur a "safety-critical" designation. The interpretation is consciously left to the individual Center Technical Authorities since they and their individual projects are unique, and this tends to make one universal applicable statement too inexact.
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").
- The SWEHB uses a
<ac:macro ac:name="unmigrated-wiki-markup">
hover-over
<ac:plain-text-body><![CDATA[]]></ac:plain-text-body>
technique to provide definitions of unique terms (see the Terms Table for a complete list).
</ac:macro>
- Much of the referenced material listed in the Resources section is located on the NASA Headquarters NODIS site, e.g., NPR's, NPD's; in the Agency PAL, e.g., materials from the OCE, Public LLs; or in the NASA Technical Standards (START)repository 442, e.g., NASA standards, IEEE standards, 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 these directly to the Handbook Development Team using the "Comments" box located at the bottom of each Handbook page.
- Extensive citations are also made to external sites (e.g., Hill Air Force Base at the Software Technology Support Center (STSC) 441, Software Engineering Institute (SEI) 157) and to general web-hosted sites. While attempts were made to cite publically 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, try to access it through the NASA START (technical standards) 442site. 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.)
Each page of the SWEHB has a "Comments" box to allow feedback and proposed inputs, revisions, and updates to the Handbook. The SWEHB Development Team requests comments on errors, inputs on real or perceived conflicts among the essays within the SWEHB and suggestions for additional material such as best-in-class examples, templates, tools or
<ac:macro ac:name="unmigrated-wiki-markup">
<ac:plain-text-body><![CDATA[
]]></ac:plain-text-body>
</ac:macro>
Title Material
DOCUMENT HISTORY LOG
Status |
Document Revision |
Approval Date |
Description |
Baseline |
|
MM-DD-YYYY |
Initial Release |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FOREWORD
This 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 Handbook is approved for use by NASA Headquarters and NASA Centers, including Component Facilities and Technical and Service Support Centers.
This Handbook establishes software engineering guidance approved by the Office of the Chief Engineer for use by NASA programs. This Handbook originated from multiple requests for additional guidance, rationale, resources, references and lessons learned for acquiring, managing, developing, assuring and maintaining NASA software systems.
Requests for information, corrections, or additions to this Handbook should be submitted via the "comments" section on any page of the wiki. The SWG's SWEHB team will review and disposition your comments and apply them as appropriate. "Feedback" may also be left in the NASA Standards and Technical Assistance Resource Tool at http://standards.nasa.gov.
|
|
Michael G. Ryschkewitsch |
Approval Date |
References
- (SWEREF-059) ISO/IEC 19770-5:2015(en), Information technology — IT asset management —
- (SWEREF-075) ISO/IEC 2382:2015, Information technology — Vocabulary, Replaces ISO/IEC 2382-20:1990,
- (SWEREF-076) ISO/IEC 26514:2008(en), Systems and software engineering — Requirements for designers and developers of user documentation
- (SWEREF-080) ISO/IEC/IEEE 26513:2017(en), Systems and software engineering — Requirements for testers and reviewers of information for users
- (SWEREF-081) NPR 1600.1A, Office of Protective Services, Effective Date: August 12, 2013, Expiration Date: December 12, 2021
- (SWEREF-082) NPR 7120.5F, Office of the Chief Engineer, Effective Date: August 03, 2021, Expiration Date: August 03, 2026,
- (SWEREF-083) NPR 7150.2D, Effective Date: March 08, 2022, Expiration Date: March 08, 2027 https://nodis3.gsfc.nasa.gov/displayDir.cfm?t=NPR&c=7150&s=2D Contains link to full text copy in PDF format. Search for "SWEREF-083" for links to old NPR7150.2 copies.
- (SWEREF-084) ISO/IEC 19770-1:2017(en); Part 1: IT asset management systems — Requirements,
- (SWEREF-085) NPD 2540.1I, Office of the Chief Information Officer, Effective Date: August 19, 2019, Expiration Date: August 19, 2024,
- (SWEREF-087) NPD 1600.2E, Office of Protective Services, Effective Date: April 28, 2004, Expiration Date: May 28, 2022
- (SWEREF-088) NIST Special Publication 800-53, Revision 5, September, 2020, U.S. Department of Commerce,
- (SWEREF-090) NIST Special Publication 800-37, Revision 2, National Institute of Standards and Technology, December, 2018,
- (SWEREF-093) Special Publication 800-146, Badger, Grance, et. al., National Institute of Standards and Technology, May, 2012
- (SWEREF-099) NFS 1852.237–73,
- (SWEREF-102) 48 CFR § 1852.237-72,
- (SWEREF-150) GAO-14-413, Report to the Chairman, Committee on Homeland Security and Governmental Affairs, U.S. Senate, May 2014,
- (SWEREF-157) CMMI Development Team (2010). CMU/SEI-2010-TR-033, Software Engineering Institute.
- (SWEREF-194) Federal Acquisition Regulation; FAR Case 2005-014, SmartBUY, A Proposed Rule by the Defense Department, the General Services Administration, and the National Aeronautics and Space Administration on 10/31/2007
- (SWEREF-195) FAR 52.212-4 Contract Terms and Conditions-Commercial Items, Effective Date: 2021-07/2021-09-10,
- (SWEREF-196) CMMI - Capability, Maturity Model, Integration, Version 2.0, See your SEPG for a NASA licensed copy.
- (SWEREF-197) Software Processes Across NASA (SPAN) web site in NEN SPAN is a compendium of Processes, Procedures, Job Aids, Examples and other recommended best practices.
- (SWEREF-229) NPR 7120.11A - Effective Date: September 08, 2020, Expiration Date: September 08, 2025
- (SWEREF-231) 22 CFR §120.16
- (SWEREF-258) Welcome to the Software Community. Software engineering is a core capability and a key enabling technology for NASA's missions and supporting infrastructure. Software Community site covers topics such as software requirements, design, implementation, architecture, assurance, testing, training, tools, process improvement, best practices, software release, models and simulations, and software research and technology innovation.
- (SWEREF-262) NASA Headquarters NASA Office of the Chief Engineer engineering deviations and waivers website.
- (SWEREF-271) NASA STD 8719.13 (Rev C ) , Document Date: 2013-05-07
- (SWEREF-278) NASA-STD-8739.8B , NASA TECHNICAL STANDARD, Approved 2022-09-08 Superseding "NASA-STD-8739.8A,
- (SWEREF-330) NPR 7120.7A, Effective Date: August 17, 2020, Expiration Date: August 17, 2025
- (SWEREF-361) NASA-STD-1006A, Approved 7/15/2022, PUBLIC: Upload Publicly Available Standard https://standards.nasa.gov/sites/default/files/standards/NASA/A/0/2022-07-15-NASA-STD-1006A-Approved.pdf
- (SWEREF-363) Wilmot, Jonathan, Fesq, Lorraine, Dvorak, Dan, Conference Paper, Publication Date March 5, 2016, GSFC-E-DAA-TN30323,
- (SWEREF-406) January, 2012. This is a list of the NASA Requirement Waivers. Instructions for submitting requirement waivers are outlined in Chapter 4 of NPR 1400.1, NASA Directives Procedural Requirements.
- (SWEREF-411) NASA IV&V Facility.
- (SWEREF-438) NPR 7150.2C, Effective Date: August 02, 2019
- (SWEREF-439) The NASA Lessons Learned system. The system provides access to official, reviewed lessons learned from NASA programs and projects.
- (SWEREF-442) NASA users must LOGIN to fully access the NTSS.: https://standards.nasa.gov/
- (SWEREF-489) NPD 1000.5C, Policy for NASA Acquisition, Effective Date: July 13, 2020, Expiration Date: July 13, 2025
- (SWEREF-593) NPD 1200.1E, Office of the Chief Financial Officer, Effective Date: July 21, 2008, Expiration Date: July 21, 2022,
- (SWEREF-594) NPD 1210.2, Office of the Chief Financial Officer, Effective Date: January 13, 2005, Expiration Date: October 24, 2023,
- (SWEREF-595) NPD 2091.1C, Office of the General Counsel, Effective Date: May 24, 2018, Expiration Date: May 24, 2023,
- (SWEREF-597) NPR 2190.1C, NASA Procedural Requirements, Effective Date: September 08, 2017, Expiration Date: September 08, 2022
- (SWEREF-598) NPD 2800.1E, Office of the Chief Information Officer, Effective Date: December 09, 2019, Expiration Date: December 09, 2024,
- (SWEREF-599) NASA Procedural Requirements, NPR 2841.1, Effective Date: January 06, 2011, Expiration Date: January 06, 2022, (Revalidated w/change 1)
- (SWEREF-600) NASA Procedural Requirements, NPR 7120.10A, Effective Date: February 21, 2017, Expiration Date: February 21, 2022
- (SWEREF-601) 48 CFR Ch. 18 (10–1–05 Edition) 1852.227–86
- (SWEREF-608) NPD 9250.1A, Effective Date: October 08, 2010, Expiration Date: October 08, 2024, NASA policy for property, plant, and equipment (PP&E)
- (SWEREF-663) NASA-STD-1006, Approved: 2019-10-29, Office of the NASA Chief Engineer