Book description
As the complexity and criticality of software increase and projects are pressed to develop software faster and more cheaply, it becomes even more important to ensure that software-intensive systems are reliable and safe. This book helps you develop, manage, and approve safety-critical software more efficiently and effectively. Although the focus is on aviation software and compliance with RTCA/DO-178C and its supplements, the principles also apply to other safety-critical software. Written by an international authority on the subject, this book brings you a wealth of best practices, real-world examples, and concrete recommendations.
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
Software Engineering for Embedded Systems, 2nd Edition
Software Engineering for Embedded Systems: Methods, Practical Techniques, and Applications, Second Edition provides the techniques and …
book
Design for Embedded Image Processing on FPGAs
Dr Donald Bailey starts with introductory material considering the problem of embedded image processing, and how …
book
Patterns in the Machine: A Software Engineering Guide to Embedded Development
Discover how to apply software engineering patterns to develop more robust firmware faster than traditional embedded …
book
Real-Time Embedded Systems
This book integrates new ideas and topics from real time systems, embedded systems, and software engineering …