For "safety critical" software, if something goes wrong, somebody might die. This is a very focused definition of "safety", and comes with a lot of consequences. Developers of safety-critical applications need to ensure that not only does their software behaves in a predictable fashion, but that the behaviour of the software does not put anyone’s life in danger. This has consequences for the development methodology used, the coding standards applied, and the design of the system.
In this talk, I will discuss my experience writing a base level library providing common functions and classes to safety critical applications running in a modern car. This will cover:
-
tools used
-
testing methodology
-
coding standards
-
approaches to error handling
-
impacts on design