The genesis of automotive software began more than 15 years ago, when automotive engineers switched from mechanized control to software-based control, first with assembly and then quickly progressing to the C language. The popularity of C as the language of choice was based on the availability of trained programmers and the language’s high degree of flexibility.
Recognizing the difficulties and pitfalls of C, especially for automotive engineering groups with more mechanical than software expertise, the Motor Industry Software Reliability Association commenced an initiative to address this. They sponsored an expert committee comprised of industry and software tooling companies to produce the first public C coding standard: MISRA-C (1998).
Starting as a UK initiative, it quickly reached the global automotive sector, and in fact soon transcended industry lines into many different non-automotive applications. There have been two successors to this initial standard – a 2004 and 2012 update of the original MISRA C standard, reflecting the pervasive interest and adoption of this successful initiative.
Along with adoption of strong defensive coding practices, the automotive industry addressed functional safety with a new ISO standard, ISO 26262, as an adaptation of IEC 61508. This standard, ratified in November 2011, applies to automotive passenger car production, and has been widely adopted by the automotive industry. It mandates the use of strong defensive coding standards such as MISRA C.
What’s new in MISRA C:2012?
- Language versions: Support is now provided for C99 as well as the C90 standard
- Rules: 11 new rules have been introduced to curtail the usage of some potentially dangerous C99 language features
- Rule classification: The addition of a new Mandatory rule class. These are non-negotiable rules whereby deviations are simply not permitted
- Rule compliance and enforceability: Enhancements to ensure, that wherever possible, rules are amenable to automatic enforcement
- Improved rule definition: More rigorous definitions with comprehensive explanations and rationales