Migration of unmigrated content due to installation of a new plugin
2. Process Audit
3. Activities Checklist
This topic contains checklists for use by Software Assurance and Software Safety personnel when they are auditing projects with safety-critical software.
The first checklist, Software Safety Process Audit Checklist, is intended to be used primarily with contractor organizations doing the safety critical software and has more of a focus on the processes in place as well as checking on activities. The second checklist, Software Safety Activities Checklist for Internal Audits is intended to be used when the software safety personnel are in-house and focuses more on the compliance with the specific required activities for safety-critical software.
2. Software Safety Process Audit Checklist
The Software Safety Process Audit Checklist is intended to be used primarily with contractor organizations doing the safety critical software and has more of a focus on the processes in place as well as checking on activities.
This checklist is designed to check the processes in place for performing software safety activities, either in the contract organization or in the in-house organization.
Is there a software safety process in place for the development of software?
Is this process documented?
Is safety-critical software identified?
Has a software safety requirements analysis been done?
Are safety-critical requirements identified?
Is there CM in place for tracking all software safety-critical requirements?
Is the software analyzed throughout the design, development, test and the V&V process to verify and validate that the safety design requirements have been correctly and completely implemented?
Does software design analysis include Fault Tree Analysis (FTA), Failure Modes and Effects Analysis (FMEA), Code/Logic Analysis, & Traceability to assess the adequacy of hazard controls?
Is there a Safety Assessment Report? Is there end-to-end traceability of software safety activities, from initial system assessment through implementation and verification of Safety Critical Software Functions (SCSFs), software release, deployment, operations, and maintenance?
Have the verification methods been identified and applied for each software safety-critical requirement?
Does the safety organization have work instructions for each task that is performed?
Does the safety organization participate in milestone and software reviews, including
a) Conceptual review?
b) Requirement review?
c) Design reviews?
d) Code reviews?
e) Test readiness reviews?
f) System acceptance reviews?
g) Peer reviews?
Has safety/software safety reviewed the SRS?
a) Were safety-critical requirements identified?
b) Are all software controls, mitigations included in the Software Requirements Specification (SRS)?
Does safety track safety-critical requirements throughout the system lifecycle to ensure they are correctly coded, tested, and verified?
Is there a current process for formally documenting software safety-critical issues?
Does the software safety-critical organization review and approve all changes to the software safety-critical requirements during the change review process?
Is there objective data or evidence that shows the software development organizations followed good software processes?
Is there objective evidence that the system engineers and hardware engineers have reviewed the software requirements, software design, software testing and participated in the software peer reviews associated with software safety-critical functions?
Does the safety process include a hazard identification and analysis process?
Are system-level hazards identified and tracked?
Have all of the software contributions to the system hazard been identified?
Have software/hardware controls been identified to mitigate software contributions to system hazards?
Have adequate verification methods been identified for each hazard mitigation?
Are all safety-critical software requirements traced through the software products (i.e., software requirements, software design, software code, software test documents)?
Are the interfaces in an ICD or equivalent clearly defined?
What was the method for documenting discrepancies in the requirements? Were all discrepancies in the requirements documented in a tracking system?
Did the safety organization provide objective evidence that all safety-related discrepancies in the requirements review were fixed and closed?
Did safety ensure that all safety-related requirements have been satisfied by the design?
Is there evidence of closure of all safety-related action items from the software design reviews?
Did safety participate in design evaluations before release for coding?
Does the software architecture consistently define and support the implementation of all software safety-critical requirements and all applicable computer-based control system requirements?
Does the software architecture consistently define and support the implementation of Fault Detection, Isolation, and Recovery functions for all safety-critical activities?
Does the software design address software fault management functions?
Does the software design address cybersecurity requirements and functions?
Are all of the software design functionally traceable to the software requirements?
Did the software development engineers follow a secure coding standard when creating code?
Did the safety organization perform traceability from the requirements down to the design and code?
Was safety involved in the code peer reviews and/or code walkthroughs?
What was the method for documenting discrepancies in the code?
Is there objective evidence that all safety-related discrepancies identified in code reviews were fixed and closed?
Are all of the safety-critical code components below the cyclomatic complexity requirement of 15?
Is there evidence of repeatable software unit tests for all software safety-critical components?
Has an independent software code quality risk assessment been done? And is the software code risk acceptable?
Was the safety organization involved in test peer reviews for safety-critical test cases?
What were the methods for documenting discrepancies in the test?
Was traceability performed from the requirements and code to the test cases?
Was software assurance involved in the test readiness review?
Is there objective evidence that all safety-related discrepancies in the test reviews are fixed and closed?
Did software assurance witness all safety-critical formal qualification tests?
Does the test verify all software safety-critical components?
Do all software safety-critical components have 100% test coverage?
Is there objective evidence that the software being used is the same software version tested, including the software configuration items (e.g., software records, code, configuration data, tools, models, scripts)?
System Acceptance Review
Have safety issues been identified, documented, and resolved throughout the software lifecycle?
Is there evidence that all software changes are tracked and evaluated?
Is there a plan in place for maintenance, changes, and operations of the software?
3. Software Safety Activities Checklist for Internal Audits
The Software Safety Activities Checklist for Internal Audits is intended to be used when the software safety personnel are in-house and focuses more on the compliance with the specific required activities for safety-critical software.
Software Safety Activities Checklist for Internal Audits
This checklist is intended for use in auditing the performance of software safety activities
(Y=Yes, N=No, NA=Not Applicable)
(Y / N / NA)
General Safety/Software Safety
Has the Project determined that there are safety critical components in the system using the criteria in NASA-STD-8739.8?
Is there a process in place that defines the necessary activities and products for the Software Safety personnel?
Have the Software Safety personnel performed a software Hazard Analysis (HA)?
If not, have the Software Safety personnel participated in the System Preliminary Hazard Analysis to help identify where software needs to be included?
Have the software contributions to the system hazards been identified?
Has there been identification of software and hardware controls to mitigate software contributions to system hazards?
Have adequate verification methods been identified for each hazard mitigation to ensure an acceptable level of safety?
Has the list of generic software-based hazards, hazard contributions and hazard controls been reviewed to determine whether any of these might be applicable for this project? See the NASA Software Engineering and Assurance Handbook, NASA-HDBK-2203 and Appendix A in NASA-STD-8739.8 for a list of generic software-based hazards.
Have any potential software-related risks been identified in the Project Concept or Operational Concept? If so, have mitigations been planned for them?
Do your Software Safety personnel and the subcontractor organization share the safety information, if applicable?
Did the hazard analysis include any COTS, OTS, OSS, reused or heritage/legacy code?
Did the hazard analysis include any cybersecurity considerations?
Do the hazard reports include all software hazard causes, software contributions to systems hazards, any software mitigations for the hazards, and adequate verification methods for each hazard to ensure an acceptable level of safety?
Does the project have software safety resources addressed in project acquisition, planning, management, and control activities?
Have the Software Safety personnel confirmed that security has been considered and addressed in all safety-related areas?
Does any acquisition of software (either contracted or Commercial- off-the-Shelf (COTS)) include evaluation and assessment of risks due to the software’s contribution to safety and any limitations of the software?
Does the acquisition have a plan to address and mitigate any risks identified?
Have the Engineering and Safety and Mission Assurance (S&MA) Technical Authorities agreed on the software components that are safety critical?
Is there a Safety Plan in place for the Project? (It can be part of the Software Assurance Plan, Safety and Mission Assurance (SMA) plan, or Software Management/Development Plan)
Has the project defined the required software safety requirements to be used by the project?
Has the project completed a requirements mapping matrix for all of the software assurance and software safety requirements per NASA-STD-8739.8?
Is there a plan to place the software safety products under configuration management?
Have the systems/development groups identified the safety related system level, hardware and software requirements?
Did the Software Safety personnel attend the Systems Requirements Review? The Software Requirements Review?
Have the Software Safety personnel reviewed the Systems and Software Requirements Documents? Have they confirmed that the software-related safety requirements in the Systems Requirements Document have been passed down to the Software Requirements?
Have the Software Safety personnel confirmed that the software safety requirements are traced bi-directionally to the system hazards and system requirements?
Have the Software Safety personnel confirmed at least one requirement exists for each software hazard control?
Have the Software Safety personnel confirmed that the mitigations for any requirements that may affect software/system safety are included in the requirements?
Has a requirements safety analysis been performed?
Have the Software Safety personnel reviewed the interface documentation for completeness, and consistency? Are any findings documented?
Are any findings that may affect software/system safety documented?
Is the method for documenting discrepancies in the requirements specified?
Do the software requirements include all of the applicable software safety requirements (i.e., SWE-134) and any applicable computer-based control system requirements (SSP 50038)?
Do the software requirements address all of the known hazards associated with the software?
Have the Software Safety personnel attended the design peer review(s) for the safety-critical components?
Have the Software Safety personnel attended the milestone reviews for the safety-critical software? (Mission Design Review, System Design Review, Preliminary Design Review, Critical Design Review, etc.)
Have the Software Safety personnel analyzed the design to verify the requirements in SWE-134 are implemented in the design?
Have the Software Safety personnel confirmed that peer reviews are being held for safety critical components?
Have the Software Safety personnel confirmed that maintainability and reliability are being considered in the design?
Have any identified issues been addressed?
Have the Software Safety personnel performed the safety analysis for design, including analyzing the design for interface code, interrupt code, data code, logic analysis, and partitioning/isolation of safety critical code?
Have the Software Safety personnel confirmed that all the safety related requirements and functions have been implemented in the design?
Have the Software Safety personnel evaluated the balance between fault tolerance and failure tolerance?
Does software design analysis include Fault Tree Analysis (FTA), and Failure Modes and Effects Analysis (FMEA) to assess adequacy of hazard mitigations (controls)?
Do the software Safety personnel participate in software code peer reviews for safety-critical components?
Have the Software Safety personnel confirmed that static analysis is being done on the safety critical components?
Have the Software Safety personnel evaluated all change requests for their impact on safety?
Have the Software Safety personnel confirmed that the developers are using coding standards that support safety-critical coding practices?
Have the Software Safety personnel confirmed the static code analyzer(s) that is being used supports safety critical coding practices?
Has the static code analyzer that is being used been configured properly?
Have the Software Safety personnel confirmed that all safety-related design elements are correctly and completely implemented into code?
Have the Software Safety personnel reviewed the static code analysis findings and confirmed that all safety-related findings have been addressed?
Have the Software Safety personnel reviewed the static code analysis findings and confirmed that all security-related findings have been addressed?
Have the Software Safety personnel confirmed that all safety-critical code has been unit tested?
Have the Software Safety personnel confirmed that all approved safety-related changes have been implemented and unit tested?
Have the Software Safety personnel confirmed that all discrepancies in the code were reviewed, fixed, and closed?
Have the Software Safety personnel assessed that the source code satisfies the conditions in the NPR 7150.2, SWE-134 requirement for safety-critical and mission-critical software at each code inspection, test review, safety review, and project review milestone?
Have the Software Safety personnel confirmed that all identified safety-critical software components have a cyclomatic complexity value of 15 or lower?
If the cyclomatic complexity is not 15 or lower, is there a justification for why the complexity needs to be higher than 15?
Have the Software Safety personnel reviewed the implementations of hazard mitigations, controls, constraints, etc.?
Have the Software Safety personnel analyzed the interfaces of safety critical systems for potential safety or security risks?
Do the Software Safety personnel participate in test case peer reviews and test procedure peer reviews for safety-critical components?
Do the Software Safety personnel participate in Test Readiness Reviews for safety-critical software?
Have the Software Safety personnel confirmed that the test procedures are bi-directionally mapped to all the safety-related requirements?
Have the Software Safety personnel confirmed that the test environment is as close as possible to the operational environment?
Have the Software Safety personnel confirmed that software verification and validation activities include software safety verifications and validations?
Are the safety features used to mitigate hazards being verified by test?
Have the Software Safety personnel confirmed 100% test coverage? If not, have the Software Engineering personnel provided a risk assessment and an explanation of why 100% coverage cannot be achieved?
Are the Software Safety personnel witnessing tests for safety-critical components? If not, is Software Assurance witnessing the testing?
Have the Software Safety personnel confirmed that the test set includes both nominal and off-nominal operational scenarios, boundary testing, stress testing, resistance to failure testing and disaster testing?
Have the Software Safety personnel confirmed that regression testing is adequate and includes retesting of all related safety critical software code components?
Have the Software Safety personnel confirmed regression test procedures are updated to incorporate tests that validate the correction of critical anomalies?
Have the Software Safety personnel confirmed that all approved/implemented changes to the requirements, design or code for safety-critical software components have been accounted for in the updates to the test procedures for those components?
Have the Software Safety personnel confirmed that the values of the safety-critical loaded data, uplinked data, rules, scripts, and configurations that affect hazardous system behavior have been tested or verified?
Acceptance and Delivery
Did the Software Safety personnel participate in the System/Software Acceptance Review?
Have the Software Safety personnel confirmed that all safety issues identified throughout the lifecycle have been addressed and are closed?
Have the Software Safety personnel confirmed that the project has identified all the safety-related requirements, approved changes to be implemented, and defects to be resolved for each delivery?
Have the Software Safety personnel confirmed that the project has met all software safety-related requirements identified for the delivery?
Have all approvedsafety-related changes been implemented and successfully tested?
Have the Software Safety personnel confirmed that all the correct safety-related products are being delivered?
Have the Software Safety personnel witnessed any pre-operations testing?
Have the Software Safety personnel confirmed that the proper certification requirements are in place and accomplished prior to the actual operational use of the software?
Have the Software Safety personnel attended the Operational Readiness Review?
Operations / Maintenance
Has Software Safety confirmed the operating manual/procedures include a list of potential safety issues and work-around’s for those anomalies?
Has Software Safety confirmed that changes and reconfigurations of the software, during operational use and maintenance of the software, are analyzed for their impacts on system safety???
Does Software Safety monitor the handling of operational inputs, such as command data, and data loads to validate the accuracy of the data before uploading?
Does Software Safety analyze actual operational scenarios and activities to identify any new or previously unrecognized hazards and develop mitigations for them?
Do the Software Safety personnel document newly discovered or previously unrecognized hazards and their mitigations and verifications in a Hazard Report?
Do the Software Safety personnel submit problem reports to the maintenance team when errors or operational issues during operations are discovered,and work to develop safe workarounds for the problems until fixes can be included in a maintenance release?
Do the Software Safety personnel confirm regression testing of work-around fixes or maintenance releases include retesting of all related safety critical software code components?
Date(s) of Audit: ______________ Project: ___________________________________________