Software Quality, Dependability and Safety in Embedded Systems
We often trust embedded systems with mission-critical functions, and even our own lives. But the designers of such systems (and especially their managers) are often domain experts who have not been formally trained in software development. While many embedded systems work well, in my design reviews I frequently see problems ranging from the subtle to the catastrophic. I have identified commonly occurring technical, process, and quality assurance issues based on my experience performing more than 135 industry design reviews. Common problems include a lack of embedded-specific software engineering skills, software process gaps, and a failure to appreciate that more than just product-level testing is required to create high quality software. Most of these problems cannot simply be fixed by adopting a tool, but rather require a change of culture and perspective in engineering organizations. All too often, the developers and their management simply don’t realize they have gotten in over their heads as their product’s software has escalated from performing a simple supporting function to providing make-or-break product functionality.