"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 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.
I really enjoyed this book. It unfortunately made me feel worse about my current field (medical devices), but I found it to be an enjoyable and persuasive read.
The book, as the author points out, is basically an overview of the various safety standards and tools at the time of the book's publication, with many citations, references, and suggestions for further reading. If you're new to Safety-Critical systems, this will get you exposed to topics that (may) be in your future, and if you're in the field, this will likely cover topics you know, have experience with without the background or terminology for why you're doing it, and topics you've possibly never seen applied in your work.
Much of this book is presented with the admission that not every topic in the book will be applied equally by different teams, and that the culture of the company (safety culture) is relevant as well. Intermingled with the content is some nice anecdotes and commentary on where Chris Hobbs personally thinks some of the standards are currently missing the mark and/or out of date.
Some of my personal takeaways: - The medical device standards are... lacking compared to some of the other standards. Presumably, the justification is the relative magnitude of harm typically being lower (1 person on a failure being impacted versus larger groups), but it was interesting to see how behind the times the Medical Device standards seem to be. -- Chris Hobbs discussion of some of the inadequacy of some of the old testing approaches, which still seems to be the common standard for Medical Device software testing, spoke to some of my own personal observations and experiences in the field. - The culture point seems so critical to me. I would love to adopt and apply a number of the methods and tools discussed in this book to my professional work, but the various trends in my (local) industry (AI, cost cutting, etc) would make it a non-starter.
I highly recommend this book for Firmware engineers with an interest in Safety-Critical systems. I'm curious what a fourth edition of this book would look like in 5-10 years, if AI development infects these industries and possibly lowers the quality bar...
Not being an expert in this field (yet!), it's hard to judge the accuracy or coverage of the material, but I can say that it is a very well written overview of many different approaches and issues in safety-critical software systems. This book would be useful for an engineer just getting into safety-critical software engineering, a technical manager who needs to understand the broad concepts, or even software engineers who want to peek over the fence and evaluate some outsider techniques for creating better non-safety code.
One ding (let's say minus 0.1 star) is that the author has a strange definition of "Heisenbug", which he seems to take as any bug that arises from unexpected or unknowable internal state... however I believe it refers more specifically to a bug of this type that changes its outcome with you attempt to debug it (or *observe* it). See The Jargon File for a definition. It's not such a big deal, but the author *really* likes the term.