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. |


