Book description
The amount of software used in safety-critical systems is increasing at a rapid rate. At the same time, software technology is changing, projects are pressed to develop software faster and more cheaply, and the software is being used in more critical ways. Developing Safety-Critical Software: A Practical Guide for Aviation Software and DO-178C Compliance equips you with the information you need to effectively and efficiently develop safety-critical, life-critical, and mission-critical software for aviation. The principles also apply to software for automotive, medical, nuclear, and other safety-critical domains.
An international authority on safety-critical software, the author helped write DO-178C and the U.S. Federal Aviation Administration’s policy and guidance on safety-critical software. In this book, she draws on more than 20 years of experience as a certification authority, an avionics manufacturer, an aircraft integrator, and a software developer to present best practices, real-world examples, and concrete recommendations.
The book includes:
- An overview of how software fits into the systems and safety processes
- Detailed examination of DO-178C and how to effectively apply the guidance
- Insight into the DO-178C-related documents on tool qualification (DO-330), model-based development (DO-331), object-oriented technology (DO-332), and formal methods (DO-333)
- Practical tips for the successful development of safety-critical software and certification
- Insightful coverage of some of the more challenging topics in safety-critical software development and verification, including real-time operating systems, partitioning, configuration data, software reuse, previously developed software, reverse engineering, and outsourcing and offshoring
An invaluable reference for systems and software managers, developers, and quality assurance personnel, this book provides a wealth of information to help you develop, manage, and approve safety-critical software more confidently.
Table of contents
- Cover
- Half title
- Title Page
- Copyright
- Dedication
- Preface
- Acknowledgments
- Author
- Part I Introduction
-
Part II Context of Safety-Critical Software Development
-
2 Software in the Context of the System
- 2.1 Overview of System Development
- 2.2 System Requirements
- 2.3 System Requirements Validation and Verification
- 2.4 Best Practices for Systems Engineers
- 2.5 Software’s Relationship to the System
- 3 Software in the Context of the System Safety Assessment
-
2 Software in the Context of the System
-
Part III Developing Safety-Critical Software Using DO-178C
- 4 Overview of DO-178C and Supporting Documents
- 5 Software Planning
-
6 Software Requirements
- 6.1 Introduction
- 6.2 Defining Requirement
-
6.3 Importance of Good Software Requirements
- 6.3.1 Reason 1: Requirements Are the Foundation for the Software Development
- 6.3.2 Reason 2: Good Requirements Save Time and Money
- 6.3.3 Reason 3: Good Requirements Are Essential to Safety
- 6.3.4 Reason 4: Good Requirements Are Necessary to Meet the Customer Needs
- 6.3.5 Reason 5: Good Requirements Are Important for Testing
- 6.4 The Software Requirements Engineer
- 6.5 Overview of Software Requirements Development
- 6.6 Gathering and Analyzing Input to the Software Requirements
-
6.7 Writing the Software Requirements
- 6.7.1 Task 1: Determine the Methodology
- 6.7.2 Task 2: Determine the Software Requirements Document Layout
- 6.7.3 Task 3: Divide Software Functionality into Subsystems and/or Features
- 6.7.4 Task 4: Determine Requirements Priorities
- 6.7.5 A Brief Detour (Not a Task): Slippery Slopes to Avoid
-
6.7.6 Task 5: Document the Requirements
- 6.7.6.1 Document Functional Requirements
- 6.7.6.2 Document Nonfunctional Requirements
- 6.7.6.3 Document Interfaces
- 6.7.6.4 Uniquely Identify Each Requirement
- 6.7.6.5 Document Rationale
- 6.7.6.6 Trace Requirements to Their Source
- 6.7.6.7 Identify Uncertainties and Assumptions
- 6.7.6.8 Start a Data Dictionary
- 6.7.6.9 Implement Characteristics of Good Requirements
- 6.7.7 Task 6: Provide Feedback on the System Requirements
- 6.8 Verifying (Reviewing) Requirements
- 6.9 Managing Requirements
- 6.10 Requirements Prototyping
- 6.11 Traceability
- 7 Software Design
-
8 Software Implementation: Coding and Integration
- 8.1 Introduction
- 8.2 Coding
- 8.3 Verifying the Source Code
- 8.4 Development Integration
- 8.5 Verifying the Development Integration
-
9 Software Verification
- 9.1 Introduction
- 9.2 Importance of Verification
- 9.3 Independence and Verification
- 9.4 Reviews
- 9.5 Analyses
-
9.6 Software Testing
- 9.6.1 Purpose of Software Testing
- 9.6.2 Overview of DO-178C’s Software Testing Guidance
- 9.6.3 Survey of Testing Strategies
- 9.6.4 Test Planning
- 9.6.5 Test Development
- 9.6.6 Test Execution
- 9.6.7 Test Reporting
- 9.6.8 Test Traceability
- 9.6.9 Regression Testing
- 9.6.10 Testability
- 9.6.11 Automation in the Verification Processes
-
9.7 Verification of Verification
- 9.7.1 Review of Test Procedures
- 9.7.2 Review of Test Results
- 9.7.3 Requirements Coverage Analysis
-
9.7.4 Structural Coverage Analysis
- 9.7.4.1 Statement Coverage (DO-178C Table A-7 Objective 7)
- 9.7.4.2 Decision Coverage (DO-178C Table A-7 Objective 6)
- 9.7.4.3 Modified Condition/Decision Coverage (DO-178C Table A-7 Objective 5)
- 9.7.4.4 Additional Code Verification (DO-178C Table A-7 Objective 9)
- 9.7.4.5 Data Coupling and Control Coupling Analyses (DO-178C Table A-7 Objective 8)
- 9.7.4.6 Addressing Structural Coverage Gaps
- 9.7.4.7 Final Thoughts on Structural Coverage Analysis
- 9.8 Problem Reporting
- 9.9 Recommendations for the Verification Processes
-
10 Software Configuration Management
- 10.1 Introduction
-
10.2 SCM Activities
- 10.2.1 Configuration Identification
- 10.2.2 Baselines
- 10.2.3 Traceability
- 10.2.4 Problem Reporting
- 10.2.5 Change Control and Review
- 10.2.6 Configuration Status Accounting
- 10.2.7 Release
- 10.2.8 Archival and Retrieval
- 10.2.9 Data Control Categories
- 10.2.10 Load Control
- 10.2.11 Software Life Cycle Environment Control
- 10.3 Special SCM Skills
- 10.4 SCM Data
- 10.5 SCM Pitfalls
- 10.6 Change Impact Analysis
- 11 Software Quality Assurance
-
12 Certification Liaison
- 12.1 What Is Certification Liaison?
- 12.2 Communicating with the Certification Authorities
- 12.3 Software Accomplishment Summary
-
12.4 Stage of Involvement (SOI) Audits
- 12.4.1 Overview of SOI Audits
- 12.4.2 Overview of the Software Job Aid
- 12.4.3 Using the Software Job Aid
- 12.4.4 General Recommendations for the Auditor
- 12.4.5 General Recommendations for the Auditee (the Applicant/Developer)
-
12.4.6 SOI Review Specifics
- 12.4.6.1 SOI 1 Entry Criteria, Expectations, and Preparation Recommendations
- 12.4.6.2 SOI 2 Entry Criteria, Expectations, and Preparation Recommendations
- 12.4.6.3 SOI 3 Entry Criteria, Expectations, and Preparation Recommendations
- 12.4.6.4 SOI 4 Entry Criteria, Expectations, and Preparation Recommendations
- 12.5 Software Maturity Prior to Certification Flight Tests
-
Part IV Tool Qualification and DO-178C Supplements
- 13 DO-330 and Software Tool Qualification
- 14 DO-331 and Model-Based Development and Verification
- 15 DO-332 and Object-Oriented Technology and Related Techniques
- 16 DO-333 and Formal Methods
-
Part V Special Topics
- 17 Noncovered Code (Dead, Extraneous, and Deactivated Code)
- 18 Field-Loadable Software
- 19 User-Modifiable Software
-
20 Real-Time Operating Systems
- 20.1 Introduction
- 20.2 What Is an RTOS?
- 20.3 Why Use an RTOS?
- 20.4 RTOS Kernel and Its Supporting Software
- 20.5 Characteristics of an RTOS Used in Safety-Critical Systems
- 20.6 Features of an RTOS Used in Safety-Critical Systems
-
20.7 RTOS Issues to Consider
- 20.7.1 Technical Issues to Consider
-
20.7.2 Certification Issues to Consider
- 20.7.2.1 Creating a Safe Subset
- 20.7.2.2 User’s Manual
- 20.7.2.3 Reverse Engineering
- 20.7.2.4 Deactivated Features
- 20.7.2.5 Complexity
- 20.7.2.6 Disconnect with the System
- 20.7.2.7 Code Compliance Issues
- 20.7.2.8 Error Handling Issues
- 20.7.2.9 Problem Reporting
- 20.7.2.10 Partitioning Analysis
- 20.7.2.11 Other Supporting Software
- 20.7.2.12 Target Testing
- 20.7.2.13 Modifications
- 20.8 Other RTOS-Related Topics
- 21 Software Partitioning
- 22 Configuration Data
-
23 Aeronautical Data
- 23.1 Introduction
- 23.2 DO-200A: Standards for Processing Aeronautical Data
- 23.3 FAA Advisory Circular 20-153A
- 23.4 Tools Used for Processing Aeronautical Data
-
23.5 Other Industry Documents Related to Aeronautical Data
- 23.5.1 DO-201A: Standards for Aeronautical Information
- 23.5.2 DO-236B: Minimum Aviation System Performance Standards: Required Navigation Performance for Area Navigation
- 23.5.3 DO-272C: User Requirements for Aerodrome Mapping Information
- 23.5.4 DO-276A: User Requirements for Terrain and Obstacle Data
- 23.5.5 DO-291B: Interchange Standards for Terrain, Obstacle, and Aerodrome Mapping Data
- 23.5.6 ARINC 424: Standard, Navigation System Database
- 23.5.7 ARINC 816-1: Embedded Interchange Format for Airport Mapping Database
- 24 Software Reuse
- 25 Reverse Engineering
- 26 Outsourcing and Offshoring Software Life Cycle Activities
- Appendix A: Example Transition Criteria
- Appendix B: Real-Time Operating System Areas of Concern
- Appendix C: Questions to Consider When Selecting a Real-Time Operating System for a Safety-Critical System
- Appendix D: Software Service History Questions
- Index
Product information
- Title: Developing Safety-Critical Software
- Author(s):
- Release date: December 2017
- Publisher(s): CRC Press
- ISBN: 9781351834056
You might also like
book
Designing Secure Software
Designing Secure Software consolidates Loren Kohnfelder's more than twenty years of experience into a concise, elegant …
book
Semantic Software Design
With this practical book, architects, CTOs, and CIOs will learn a set of patterns for the …
book
Righting Software
Right Your Software and Transform Your Career Righting Software presents the proven, structured, and highly engineered …
book
Embedded Software Design: A Practical Approach to Architecture, Processes, and Coding Techniques
Design higher-quality embedded software from concept through production. This book assumes basic C and microcontroller programming …