UNDER CONSTRUCTION
Notes in this template provide guidance to authors on how the section if to be completed. Once the section is populated, the Note may be deleted. Notes are not intended to be left in the completed page.
1. Introduction
Typically starts with a quote from the NPR that helps define the activity. Additional descriptive material is meant to help define the activity but not be so detailed that it pulls in all of the guidance from the SWEs in the activity.
4.3.1 Software design is the process of defining the software architecture, components, modules, interfaces, and data for a software system to satisfy specified requirements. The software architecture is the fundamental organization of a system embodied in its components, their relationships to each other and the environment, and the principles guiding its design and evolution. The software architectural design is concerned with creating a strong overall structure for software entities that fulfill the allocated system and software-level requirements. Typical views captured in an architectural design include the decomposition of the software subsystem into design entities, computer software configuration items, definitions of external and internal interfaces, dependency relationships among entities and system resources, and finite state machines. The design should be further refined into lower-level entities that permit the implementation by coding in a programming language. Typical attributes that are documented for lower-level entities include the identifier, type, purpose, function, constraints, subordinates, dependencies, interface, resources, processing, and data. Rigorous specification languages, graphical representations, and related tools have been developed to support the evaluation of critical properties at the design level. Projects are encouraged to take advantage of these improved design techniques to prevent and eliminate errors as early in the life cycle as possible. Software, developed or purchased, has additional requirements to comply with from Section 508 of the Rehabilitation Act, as defined in NPR 2800.2.Software peer reviews and inspections are the in-process technical examination of work products by peers to find and eliminate defects early in the life cycle. Software peer reviews and inspections are performed following defined procedures covering the preparation for the review, the review itself is conducted, results are recorded, results are reported, and completion criteria is certified. When planning the composition of a software peer review or inspection team, consider including software testing, system testing, software assurance, software safety, software cybersecurity, and software IV&V personnel.
Activity graphical representation of Inputs, Outputs, Predecessor and Successor Activities as appropriate. Not meant to be exhaustive, but representative of a typical project.
1.1 Inputs
List of some of the inputs from other activities that are necessary for the activity to begin.
Examples:
- SRS - Software Requirements Specification - Requirements - These influence the design of the software
- SwDD - Software Design Description- Contains Architecture description - This influences the design of the software
1.2 Predecessor Activities
List of some of the other activities that must be started (not necessarily completed) so that this activity may begin.
Examples:
Predecessor Activities are performed before Design. These activities produce the work products that will be reviewed.
- Life Cycle Planning - Design activities are included in the plan and schedules
- Software Requirements - These influence the design of the software
- Software Architecture - These influence the design of the software
1.3 Outputs
List of some of the outputs or work products of the activity. These are typically used as inputs by the downstream activity. In some cases there is a supporting SWE associated with the work product.
| Output Work Product | Used by Downstream Activity |
|---|---|
|
|
|
|
|
|
1.4 Successor Activities
Links to Activities which might be started or supported by this activity.
- Implementation and Unit Testing - Implements the Design into one or more code modules.
- Preliminary Design Review
- Critical Design Review
- Test Readiness Review
- Operational Readiness Review
1.5 Activity Repetition
Describe what conditions determine if the activity needs to be repeated, such as re-planning after a change in requirements or schedule constraints.
- How much of the activity needs to be repeated
- Frequency of repetition
- Design is always done once. It should be peer reviewed and analyzed by Software Assurance.
- Design may be reviewed and re-analyzed as often as there are significant changes in architecture or requirements. For example:
- Technology changes to the architecture requires changes to the design
- Customer changes to requirements require changes to the design
1.6 Center Resources From SPAN
Add links to SPAN activity pages that are appropriate for this activity. Use links from the Activity section of the front page. SPAN All of the links to SPAN activities are provided. Delete the ones that do not apply
Several Centers Process Asset Libraries have materials related to this activity. Related Processes, templates, and other resources may be found in the following Activities in SPAN (available to NASA only).
| Activity | Description |
| Assets for use during product design |
2. Software Development Activity
This tab contains the links to pages in the SWEHB that are at the heart of the activity.
2.1 SWEs
This section contains the links to SWE pages that form the heart of the activity. For each SWE, the related tasks from tab 4 are listed.
- Copy of SWE-058 - Detailed Design with new tab 4
- 4.3.2 The project manager shall develop, record, and maintain a software design based on the software architectural design that describes the lower-level units so that they can be coded, compiled, and tested.
- Tasking
- Assess Design Readiness
- Establish Coding Standards and Processes
- Establish Project Specific Design Considerations
- Establish Detailed Design Documentation and Progress Reviews
- Establish Design Maintenance Processes and Mechanisms
- Work Products
- SwDD - Software Design Description
- Preliminary at PDR - 7.9 - Entrance and Exit Criteria (tab 7)
- Baselined at CDR - 7.9 - Entrance and Exit Criteria (tab 8)
- Updated at TRR - 7.9 - Entrance and Exit Criteria (tab 11)
- IDD - Interface Design Description
- Preliminary at PDR - 7.9 - Entrance and Exit Criteria (tab 7)
- Baselined at CDR - 7.9 - Entrance and Exit Criteria (tab 8)
- Updated at TRR - 7.9 - Entrance and Exit Criteria (tab 11)
- SUM - Software User Manual
- Baselined at ORR - 7.9 - Entrance and Exit Criteria (tab 13)
- Software Development Process - which includes details on the Design Process to be followed.
- List of design components including when they are expected to be available - as input to Development Schedule
- List of methods, tools, standards, and guidelines for your project.
- List of training and experience required by team members to perform the design and development work.
- ....
- SwDD - Software Design Description
- Metrics
- # of architectural issues, found in peer reviews, identified vs. number closed.
- # of design issues, from peer reviews, found versus the number of design issues resolved.
- # of requirement issues (Open, Closed) over time.
- # of non-conformances identified found versus resolved.
- # of software work product Non-Conformances identified versus closed.
2.2 Topics and other Supporting Materials
This section is for SWEHB pages, other than SWEs, that directly support the activity. This section contains Topics, PATs, and other relevant pages.
2.2.1 Topics
- 6.3 - Checklist for Choosing a Real Time Operating System (RTOS)
- Considerations for choosing the best RTOS for your application.
- 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.
2.2.2 Supporting Materials
- Software Design Principles
Links to Software Design Principles
Title Software Design Principle 9.03 Coding Standards Implement a "secure" coding standard on all mission-critical software. 9.04 Command Receipt Acknowledgement Design software to send a positive acknowledgement of command receipt. 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.08 Flight Software Modification Include in the software design the capability for commanding modification of the software, and for preventing unwanted modifications. 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.11 Invalid Data Handling Design software to handle invalid data appropriately. 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.
2.3 Other Associated SWEs, Topics, etc.
Includes other SWEHB pages that are indirectly associated with the activity. May include SWEs, Topics, document definition pages, PATs, etc. They may have been mentioned in the guidance of another page. This section may be removed if there is no content for it.
3. Software Assurance Activity
Software Assurance is integral to the performance of all Software Development activities. It includes Process Monitoring as well as Process Analysis.
- Process Monitoring - addresses the question, "Is the development team following their processes and producing the expected work products?"
- Process Analysis - addresses the question, "Are there better ways of performing the processes that would result in the early discovery of defects?"
3.1 Software Assurance Tasks from SWEs
Software Assurance Tasks are included in tab 7 of the SWEs in this activity.
3.1.1 - Copy of SWE-058 - Detailed Design with new tab 4
Tasking From NASA-STD-8739.8B
- 1. Assess the software design against the hardware and software requirements and identify any gaps.
- 2. Assess the software design to verify that the design is consistent with the software architectural design concepts and that the software design describes the lower-level units to be coded, compiled, and tested.
- 3. Assess that the design does not introduce undesirable behaviors or unnecessary capabilities.
- 4. Confirm that the software design implements all of the required safety-critical functions and requirements.
- 5. Perform a software assurance design analysis.
- Software Assurance Products
- Software Design Analysis
- Results of software assurance design analysis, including assessments in Tasks 1, 2, and 3.
- List of any identified design risks and issues.
- Metrics
- # of architectural issues identified vs. number closed.
- # of design issues found versus the number of design issues resolved.
- # of safety-related requirement issues (Open, Closed) over time.
- # of safety-related non-conformances identified by life cycle phase over time.
- # of software work product Non-Conformances identified by life cycle phase over time
3.2 Topics and Other Supporting Materials
3.2.1 Topics
- Topic 8.16 - Software Design Analysis
- SA Tasks for SWEs
- SWE-034 - Acceptance Criteria
- 1. Confirm software acceptance criteria are defined and assess the criteria based on guidance in the NASA Software Engineering Handbook, NASA-HDBK-2203.
- SWE-134 - Safety-Critical Software Design Requirements
- 1. Analyze the software requirements and the software design and work with the project to implement NPR 7150.2 requirement items "a" through "l."
- 4. Analyze the software design to ensure the following:
a. Use of partitioning or isolation methods in the
design and code,
b. That the design logically isolates the safety-critical
design elements and data from those that are
non-safety-critical. - 5. Participate in software reviews affecting safety-critical software products.
- 6. Ensure the SWE-134 implementation supports and is consistent with the system hazard analysis.
- SWE-057 - Software Architecture
- 1. Assess that the software architecture addresses or contains the software structure, qualities, interfaces, and external/internal components.
- 2. Analyze the software architecture to assess whether software safety and mission assurance requirements are met.
- SWE-143 - Software Architecture Review
- 1. Assess the results of or participate in software architecture review activities held by the project.
- SWE-080 - Track and Evaluate Changes
- 1. Analyze proposed software and hardware changes to software products for impacts, particularly safety and security.
- SWE-081 - Identify Software CM Items
- 2. Assess that the software safety-critical items are configuration-managed, including hazard reports and safety analysis.
- SWE-203 - Mandatory Assessments for Non-Conformances
- 2. Assess the impact of non-conformances on the project software's safety, quality, and reliability.
- SWE-034 - Acceptance Criteria
- SA Tasks for SWEs
3.2.2 Process Asset Templates
- PAT-021 - SADESIGN Checklist
- Click on the image to preview the file. From the preview, click on Download to obtain a usable copy.
- PAT-023 - Preparing for a SARB Checklist
- Click on the image to preview the file. From the preview, click on Download to obtain a usable copy.
- PAT-031 - Critical Design Analysis Checklist
- Click on the image to preview the file. From the preview, click on Download to obtain a usable copy.
- PAT-008 - Safety Considerations for Design Peer Reviews Checklist
- Click on the image to preview the file. From the preview, click on Download to obtain a usable copy.
- PAT-020 - Examples of Interface Problems
- Click on the image to preview the file. From the preview, click on Download to obtain a usable copy.
3.3 Other Associated SWEs, Topics, etc.
Includes other SWEHB pages that are indirectly associated with the activity. May include SWEs, Topics, document definition pages, PATs, etc. They may have been mentioned in the guidance of another page. This section may be removed if there is no content for it.








