Do you use 'C' as the programming language for mission-critical components?
Do you realize how these insecurities arise
in the C language?
Programmer misunderstands the language
The compiler does not do what the programmer expects.
The compiler contains errors
Why MISRA C?
The MISRA-C programming standard was defined by the
Motor Industry Software Reliability Association (MISRA) in 1998.
This consists of a set of rules to improve the safety of programs written in C.
MISRA is a consortium of major car manufacturers in the UK and MISRA-C is fast
gaining acceptance as the C programming standard in the automobile industry.
The C programming language is growing in importance with the use for real-time embedded
applications within the automotive industry. This is largely due to the inherent language flexibility,
the extent of support and its potential for portability across a wide range of hardware.
It is also being seen as a solution in other mission-critical industries such
as defence, aviation, railways and medical electronics.
Why Crystal C/C++ for MISRA C?
Crystal C/C++ includes MISRA C Static Checking
- A completely automated way to check the conformance of software with the
MISRA C standard.
- Conformance to MISRA C standard ensures
- Programs to be written to well-defined ensuring safety in mission critical software.
- Reduces software development and maintenance costs as non-conformances
are caught earlier in the development life-cycle.
- Reduces time spent on code inspections - a task which is not
easy to perform manually and can be highly error-prone.
- Ensures software quality, and will fit in effortlessly with your quality
- Increases productivity, shortening the software development time span.
- Crystal C/C++ provides an interactive mechanism in which Rules can
easily be configured and checked.
- Complying with programming standards like ‘MISRA C’ reduces the possibility
of run-time errors greatly contributing to improving software quality. Examples
of such rules include prohibiting the use of un-initialised or unused
variables, dereferencing null pointers, etc.