In the early 1990s it became obvious that software was becoming increasingly important in cars. With this recognition came another understanding – that software reliability was an absolute imperative for both commercial and safety reasons.
The MISRA (the Motor Industry Software Reliability Association) consortium was formed from representatives of different companies working in the automotive industry. It was set up initially with some UK government backing, to look at the challenges posed by the increasing use of software in motor vehicles and to provide guidance on how embedded software should be developed.
A steady stream of documents has subsequently been published by MISRA addressing various aspects of software engineering. One of the first, produced in 1994, entitled “Development Guidelines for Vehicle Based Software”, was an automotive-specific interpretation of the then emerging IEC 61508 standard- ie a precursor to the recently ratified ISO 26262 – derived from coding standards developed by PRQA for Ford™ and Rover™. MISRA’s work continued on a number of fronts but perhaps most significantly in the development of coding standards, culminating in the release of MISRA C:2012, also known as MISRA C3.
The MISRA coding guidelines are now accepted worldwide as the benchmarks for developing safety-critical software in C and C++, across the automotive industry and beyond.
The MISRA C/C++ Guidelines
- A set of coding guidelines for development in C/C++
- A set of rules which define a safer subset of the C/C++ languages
- A resource of guidance in good development practice
- A reference book describing common dangers and language vulnerabilities
- A text book providing education about code quality issues
Independent Research on MISRA C Compliancy Checking Tools
In 2012, TERA-Labs (a research division of the Karel de Grote University College, Antwerp, Belgium) published “A comparative Study of MISRA-C Compliancy Checking Tools”.
In conjunction with a panel of industrial partners, TERA-Labs selected a representative sample of key MISRA C:2004 rules and investigated the effectiveness of eight well known commercial tools in finding violations to these rules. The performance of each tool was assessed in respect of false positives (noise and incorrect diagnosis) and false negatives (missed non-compliances). QA·C with our MISRA C Compliance Module outperformed all other tools, finding important, material defects that other tools had missed, and generating the lowest incidence of false positives. As Dr Marijn Temmerman from TERA-Labs observed, “On paper all the selected tools claimed to provide comprehensive MISRA C compliance checking – but the reality was different”.
MISRA Compliance Module
- High-quality enforcement of MISRA C coding rules
- Accurate detection of non-compliances with minimal false positives
- Reporting and audit documentation to demonstrate compliance
- Improved software quality
- More consistent and effective code inspections
- Accelerated adoption of coding best practices
The same experts who helped to write the MISRA C Guidelines and support our customers in the field also develop our PRQA static analysis tools and compliance modules. This is undoubtedly one of the key reasons behind our exceptional performance in relation to MISRA C.
Each compliance module applies the extensive QA·C message set supplemented by some additional MISRA-specific checks to enforce the coding rules. Documentation is provided describing rule enforcement and message interpretation, and an extensive set of example code is included to aid understanding.
Fact Sheet about MISRA C3
This 1-page document provides a brief summary of the new MISRA C:2012 coding guidelines.
MISRA C3 compliancy datasheet
- MISRA, an overview
- MISRA C:2012, what’s new and how is it affecting you
- An independent assessment of static analysis tools for MISRA compliance by TERA-Labs
Learn more about the topic by Fergus Bolger.
Listen to Paul Burden discussing the importance of a coding standard.
Controlling deviations in a MISRA environment, published Nov 2014 in Embedded Computing Design