ABSTRACT

"I highly recommend Mr. Hobbs' book." - Stephen Thomas, PE, Founder and Editor of FunctionalSafetyEngineer.com

Safety-critical devices, whether medical, automotive, or industrial, are increasingly dependent on the correct operation of sophisticated software. Many standards have appeared in the last decade on how such systems should be designed and built. Developers, who previously only had to know how to program devices for their industry, must now understand remarkably esoteric development practices and be prepared to justify their work to external auditors.

Embedded Software Development for Safety-Critical Systems discusses the development of safety-critical systems under the following standards: IEC 61508; ISO 26262; EN 50128; and IEC 62304. It details the advantages and disadvantages of many architectural and design practices recommended in the standards, ranging from replication and diversification, through anomaly detection to the so-called "safety bag" systems.

Reviewing the use of open-source components in safety-critical systems, this book has evolved from a course text used by QNX Software Systems for a training module on building embedded software for safety-critical devices, including medical devices, railway systems, industrial systems, and driver assistance devices in cars.

Although the book describes open-source tools for the most part, it also provides enough information for you to seek out commercial vendors if that’s the route you decide to pursue. All of the techniques described in this book may be further explored through hundreds of learned articles. In order to provide you with a way in, the author supplies references he has found helpful as a working software developer. Most of these references are available to download for free.

part I|2 pages

Background

chapter 1|10 pages

Introduction

chapter 2|14 pages

Terminology of Safety

chapter 3|20 pages

Safety Standards and Certification

chapter 4|4 pages

Representative Companies

part II|2 pages

The Project

chapter 5|24 pages

Foundational Analyses

chapter 6|10 pages

Certified and Uncertified Components

part III|2 pages

Design Patterns

chapter 7|8 pages

Architectural Balancing

chapter 8|26 pages

Error Detection and Handling

chapter 9|8 pages

Expecting the Unexpected

chapter 10|22 pages

Replication and Diversification

part IV|2 pages

Design Validation

chapter 11|10 pages

Markov Models

chapter 12|14 pages

The Fault Tree

chapter 13|8 pages

Software Failure Rates

chapter 14|24 pages

Semi-Formal Design Verification

chapter 15|25 pages

Formal Design Verification

part V|2 pages

Coding

chapter 16|8 pages

Coding Guidelines

chapter 17|16 pages

Code Coverage Metrics

chapter 18|14 pages

Static Analysis

part VI|2 pages

Verification

chapter 19|14 pages

Integration Testing

chapter 20|14 pages

The Tool Chain

chapter 21|2 pages

Conclusion