CODING STANDARD ENFORCEMENT
QA·MISRA
QA·MISRA is the market leader—bar none.
QA·MISRA is recognized worldwide as the leading, most powerful, and most widely adopted solution for MISRA compliance available today. QA·MISRA automatically enforces MISRA-C:1998 and MISRA-C:2004 now and gives you a head start to comply with the new MISRA-C++ and SAE J2632 guidelines underway for tomorrow.
From the onset, PRQA was intimately involved in the formulation of the MISRA Guidelines—reliably at the forefront delivering robust solutions to automatically enforce the latest rules ever since. We're active members of the MISRA C Working Group and the new MISRA-C++ Working Group.
QA·MISRA leverages the powerful code analysis technology and highly-configurable features in QA·C to consistently deliver a competitive edge to our customers—a venerable who's who in the automotive industry. Plus, QA·MISRA is used by most companies on the MISRA Steering Committee—that's a vote of confidence.
Today, there are more MISRA users outside of the automotive industry than in it. MISRA has evolved as a widely accepted model for best practices by leading developers in sectors including aerospace, telecom, medical devices, defense, railway, and others. QA·MISRA provides an efficient, practical solution to the challenge of enforcing the MISRA Guidelines wherever they are mandated.
"MISRA", "MISRA C" and the triangle logo are registered trademarks of MIRA Ltd, held on behalf of the MISRA Consortium.
The Motor Industry Software Reliability Association (MISRA) was formed from a consortium of organizations within the UK motor industry in reponse to a widespread recognition that computer software was becoming one of the most critical factors in contributing to the safety and reliability of motor vehicles. Their first publication, “Development Guidelines For Vehicle Based Software” was produced in 1994 and a number of other documents have followed which address various aspects of software engineering. The first edition of MISRA-C, “Guidelines for the Use of the C Language in Vehicle Based Software”, was published in 1998. Many of the coding rules which it contains were drawn from coding standards developed by PRQA for organizations within the motor industry and elsewhere. Since its launch, the uptake and usage of MISRA-C has far exceeded original expectations and it has been adopted across a wide variety of industries including rail, aerospace, military and medical sectors.
PRQA has been closely involved in the development of MISRA-C from its inception and continues to be influential in the MISRA-C Working Group.
In 2004, a revised version of MISRA-C was published, “MISRA-C:2004 Guidelines for the use of the C language in critical systems”. The new title was intended to reflect the relevance of MISRA-C to safety critical software in spheres beyond just the motor industry.
In 2007, two further related items were published: a Technical Corrigendum which provides both corrections and clarification to the 2004 guidelines, and an Exemplar Test Suite. The test suite comprises a body of C source code which seeks to demonstrate and illuminate the intention of the coding rules.
A working group exists to support the MISRA-C project by responding to queries submitted via the MISRA-C bulletin board. The group is also committed to further development and improvement of the rules and a further version of MISRA-C is planned because it is recognised that sigificant gaps still exist in the scope of the rules. One key issue to be resolved is the policy in relation to more recent versions of the C language .
At the present time, MISRA-C is still wedded firmly to the original version of the ISO C standard, commonly known as C90. A future version of MISRA-C is likely to sanction usage of at least some of the features of C99.
PRQA has been closely involved in the development of MISRA-C from its inception and continues to be influential in the MISRA-C Working Group.
NOTE: MISRA-C++ has not been finalized yet. PRQA is actively supporting the creation of the MISRA-C++ standard (see below and here). We will provide a compliance analyzer upon its official release.
Background
After their success with MISRA-C, MISRA set out to provide an equivalent standard for the C++ language. Starting in mid-2005, the energies and expertise of a number of organizations were channeled to create MISRA-C++.
Again, like our involvement with MISRA-C, PRQA is a leading member of this forum too. We currently contribute two valuable resources to provide domain and language expertise to this work:
- PRQA's Richard Corden as a full MISRA-C++ committee member. Richard is an acknowledged expert in the C++ language, and a full voting member of SC22/WG21. He is also the lead developer of the world’s most capable, full parsing C++ code analyzer: QA·C++.
- PRQA's comprehensive and widely-adopted HIGH·INTEGRITY C++ coding standard has been provided as source material covering a wide scope of the C++ language.
C++ continues to gain traction as a language choice for the development of safety critical systems. The release of the JSF++ Coding Standard and the upcoming finalization of the MISRA-C++ standard provide best practice support in this arena.
MISRA-C++, like it's predecessor MISRA-C, predominantly targets developers in the Motor Industry. However, as can be seen from the widespread use of the MISRA-C standard, it is likely that MISRA-C++ will also have a broader appeal.
A key principle in the design of the C++ language was (and still is) that is is compatible with the C language. However, the original designers of C++ made some changes to improve aspects of the C subset of C++. A good example is a stricter type system.
The goal of MISRA-C++ is to create a similarly motivated subset against the complete C++ language. Rules were added to cover areas that through experience have been shown to be dangerous, or are explicitly listed in the standard as having unspecified, undefined or implementation defined behavior. A key difference between the MISRA-C++ standard and many other standards in use today is that it does address areas of the language traditionally banned outright. Specifically, a significant set of rules relating to template and exceptions have been added, rather than the usual “Don't use 'feature X'”.
