This is a transcript of the first itemis screencast introducing model based design and implementation for embedded systems. It is intended for those readers that cannot access the screencast. The screencast is on Youtube.
Welcome to the itemis introduction screencast for Model Driven Software-Design for On- and Off-board software.
This is the first in a series of screencasts where we explain various aspects of Model Driven Software Design for complex systems comprised of embedded processors, mobile applications and enterprise infrastructure. We will show how to use open source tools for the engineering process. This screencast will explain the motivation and methodology for model driven software design and introduce the showcase that is used to explain various aspects in the following screencasts.
Software in embedded systems is getting increasingly complex. It is now a major part of electronics development. In addition, embedded systems are more and more connected. Modern cars consist of nearly 100 embedded control units and a complex network. And those systems are connected to off-board systems, as for example in remote diagnosis systems. This is an engineering challenge. We need flexible, reliable systems that comply with various safety standards. Those standards define process and methodologies for safety-critical systems. Manual engineering of software often leads to errors and increased cost in complex systems. We need a methodology and tools that can handle those systems.
We at itemis meet those challenges with model based design. Models help to manage complexity by increasing the level of abstraction. That allows us to discuss the relevant aspects for a problem and not getting confused by all the other aspects. A good model will separate the domain knowledge from the underlying infrastructure. It will also have different views for dynamic and static aspects of the system.
By raising the level of abstraction, a good model will provide a better understanding of the problem at hand. It will improve communication in the project team. And a good model will always be up to date and represent the actual system. However, that is not enough.
To reduce the error-prone manual coding, a good model has to support code generation. It will also support generation of a test framework and generation of the documentation. So, the model has to be at the core of the development process.
So does it this approach really work? Yes it does. We have set up a showcase to show how model driven software design works in embedded and enterprise systems.
The showcase system that we built is an example from the automotive domain.
It consists of three major parts. The sensor, the embedded devices and the enterprise applications.
To simulate a real sensor, we patched the open source racing simulation “Torcs” to send out information about the car state. Telemetric data from the sensor is sent throughout the system. It is generated by a virtual sensor on a PC and sent through an UDP link to a Gateway. This gateway is a blackfin board running Embedded Linux. The telemetric data is then sent over two channels. On the embedded side, it is broadcast on a CAN bus, where it is received by a display 3000 board. This is an atmel processor without operating system, but with a small display.
On the enterprise side, the data is sent over a serial link to a PC running a JBOSS application server. It can then remotely be accessed from iphones and android phones by means of standard web services.
With a manual approach, code for all these plattforms would have to be manually written. This is a source for errors and problems.
With model driven software design, we use an abstract unified model to represent the system. We generate code for all those platforms automatically and increasing the speed of the engineering process.
The power of model-based engineering is easily visible if we introduce a second item of sensor data, for example the rotations per minutes of the motor. All the software in the system would have to be changed manually, to handle the additional information.
However, with model based design, we just add the new piece of information to the model and then regenerate the code for the entire system.
We will explain methods and tools in several screencasts. You have just seen a summary of the introduction screencast.
- Screencast 2 will explain the use of domain specific languages for architecture modeling and code generation.
- Screencast 3 will show how to use an eclipse-based open source toolchain for developing software for embedded systems.
- In Screencast 4 we will bridge the gap from embedded systems to enterprise application and generate the infrastructure and mobile applications.
- Screencast 5 explains the handling of variants and product lines. Screencast 6 will deal with model based diagnosis of embedded systems.
All screencasts use the same showcase system.