Model-Driven Code Generation and Analysis 2014-01-0217
Model-based development is the established way of developing embedded control algorithms, especially for safety-critical applications. The aim is to improve development efficiency and safety by developing the software at a high abstraction level (the model) and by generating the implementation (the C code) automatically from the model. Although model-based development focuses on the models themselves, downstream artifacts such as source code or executable object code have to be considered in the verification stage.
Safety standards such as ISO 26262 require upper bounds to be determined for the required storage space or the execution time of real-time tasks, and the absence of run-time errors to be demonstrated. Static analysis tools are available which work at the code level and can prove the absence of such errors. However, the connection to the model level has to be explicitly established. In this article we present an approach to integrate static code analyzers with model-based development tools. The static analysis can be invoked automatically from the modeling tool with relevant model-level information automatically being propagated to the analyzer to optimize analysis precision. The results are mapped back to the modeling level. This way, timing bugs, stack overflows, and run-time errors can be detected early in the development process. Implementation-level errors can be traced back to the modeling level, and can be investigated at both the model and the implementation level. This significantly reduces the development effort and allows bugs to be detected early in the development process.