Writing Code That Won’t Kill A Functional Safety Source Book
Functional Safety is the term used for systems designed to minimize risk to human health. But there’s a dilemma in today’s tech-driven world.
We are more reliant than ever on software to control our planes, trains, cars, and boats, to operate our medical equipment, to process our food, to clean our water, and to power our homes. If these systems don’t function properly, they have the ability to injure, or even kill us. Meanwhile software complexity continues to increase exponentially making it impossible to exhaustively test the millions of individual states of a product, even for a relatively simple embedded system. Even when exhaustive state testing is possible, that testing may not reveal faults for software that interfaces with external systems (including humans), is multi-threaded, or runs on multi-core hardware.
If you’re a programmer who needs to work on functionally safe software, this state of affairs might make you panic. What to do? You need an education in process, in methods, and in best practices. While there’s a lot of great material out there, sorting out the valuable nuggets from the sales pitches and the impractical academic takes a lot of time.
We’re concerned about making safe software too, so we’ve done some research for you. Here are a few whitepapers, blogs, and articles on functional safety that are worth a read. If you’ve got other great functional safety references that you would recommend, please post them in the comments for everyone.
NASA Software Safety Guidebook Very comprehensive overview of safe software, terminology, processes, requirements, design, implementation, testing and integration
C/C++ Coding Standard Recommendations for IEC 61508 Mike Medoff, John Grebe, exida Consulting. Whitepaper on developing new C/C++ code as well as integrating with other modules, outlining principles and coding guidelines for writing safe C/C++ software
The Power of Ten – Rules for Developing Safety Critical Code Gerard J. Holzmann, NASA/JPL Laboratory for Reliable Software. Whitepaper on ten strict but straightforward rules that assist in building safe software with C
Implementing Functional Safety, IEEE Computer Society Christof Ebert, Vector Consulting Services. Article on the different ISO safety standards, high-level benefits of bringing process to the organization
Building Functional Safety into Complex Systems, Part I Building Functional Safety into Complex Systems, Part II Chris Hobbs, QNX Software Systems. Vendor whitepaper (behind an email wall) on the challenges faced in certifying complex software and the methods on properly validating software, with many examples and references
A Causal Model of Human Error for Safety Critical User Interface Design Julia Galliers, Shailey Minocha and Alistair G. Sutcliffe Centre, School of Informatics, City University, London, United Kingdom. University whitepaper that explains human causes of errors when building safety critical UIs, with detailed case study
ISO 26262 : 2011 Rustam Rakhimov, College of Information and Communication, Konkuk University, South Korea. Presentation with detailed overview of Automotive Safety standard ISO 26262, delving into each section of the standard
Static Verification of Non-Functional Software Requirements in the ISO-26262 Daniel Kästner, Christian Ferdinand, AbsInt GmbH. Whitepaper that expands static analysis to check for timing constraints, runtime errors, and stack overflows
Analysis of ISO26262 standard application in development of steer-by-wire systems Aliaksandr Marchanka, Masters Thesis, Chalmers University of Technology, University of Gothenburg, Sweden. Academic whitepaper that takes existing safety software and applies ISO26262 process to it, including use of Agile development and fault tree analysis tools
A quick guide to ISO 26262 Feabhas Ltd, United Kingdom. High-level summary of crucial points for ISO 26262, including FAQ and several case studies