Self-describing Adaptive Software

Welle von oben
© Lajst

It is difficult to imagine carrying out many of the functions in today’s vehicles without software. One example is a driver assistance system such as lane assistants or fatigue detection systems. The software components of these systems are executed over distributed heterogeneous platforms. They communicate with another in order to perform various tasks together. The design process for vehicle software is currently devoted to specifying functions during the design phase and distributing them across the existing platforms. However, apart from updates that are installed when the vehicle is being serviced for example, the software system remains unchanged at runtime.

A frequent problem is that automatically adapting the software components to changing internal or external conditions such as a hardware outage, various driving situations or the dynamic integration of external Internet and mobile phones services, is extremely difficult to implement. In order to conserve system resources and energy, it helps to temporarily establish specific vehicle functions. For example, deactivating the parking assistant during highway driving because it is not required.

Adaptive Software Systems

Adaptive software systems represent a promising approach to developing future vehicle software. Through their dynamic architectures, these systems can react to changing situations at any time. The software components adapt autonomously when the driving situation changes, such as transiting from highway to city traffic. Adaptive embedded systems also enable the dynamic integration of external services. Since software components can be executed on different platforms at runtime, the functions on a defective platform can be assumed by other platforms. This increases the fault tolerance of the software system and thus the entire vehicle.

Self-Describing Software Components

Adaptive embedded systems work under the assumption that software components are dynamically used across distributed systems. To do this, certain information about the components is required at runtime, such as their executability on various platforms or their real-time capability. This information is maintained separately in a modular fashion for each component, which enables decentralized organization. Each component thus describes itself. Apart from the examples already mentioned, information regarding other existing parameters is required at runtime. One element of the self-description consists of so-called nonfunctional requirements. They describe how the functional behavior is achieved. Apart from the static, nonfunctional requirements, the self-description also contains information about dynamic runtime characteristics. Among others this includes the resources currently being used by a software component or the current capacity of a platform.

Development Method

In order to iteratively specify such adaptive embedded software systems with selfdescribing software components, the Fraunhofer Institute for Cognitive Systems IKS (former Fraunhofer ESK) worked together with the Carnot Institut CEA LIST in France to examine a new development method and tool chain in the project RT-DESCRIBE (Iterative Design Process for Self-Describing Real-Time Embedded Software Components). The software system is initially described in one of the specific prevailing UML models within the respective domain, such as the EAST-ADL architecture description language for automotive systems. This model is enhanced with information for the adaptivity by means of the so-called self-X extension that was developed as part of the project. The domain-independent extension is based on the standardized MARTE UML profile for describing embedded systems. Using the Qompass tool developed by CEA LIST, the designed system model is then enriched with containers encapsulating selfdescription, thus providing a subset of the model information at runtime. With the ERNEST tool developed by researchers at Fraunhofer IKS, the enhanced runtime model can be simulated and analyzed during development, which enables multistage, early validation of the software to be developed. This allows the detection and rectification of errors and flaws in an early stage of development. The results from the simulation environment flow back into the development model so that it can be iteratively optimized. This process reduces the development time and thus the development costs as well.  


The development method and tool chain created within the RT-DESCRIBE project enable the efficient development of adaptive embedded systems. Through the iterative simulation process, the parameters are continuously optimized and the system stability and adherence to real-time requirements are verified. At the end of the development process, executable and self-adapting software is generated that is enhanced by self-description.

The RT-DESCRIBE project was supported by the Programme Inter Carnot Fraunhofer from BMBF (German Federal Ministry of Education and Research) (Grant 01SF0804) and ANR (French National Research Agency).