In the course of the constantly increasing use of embedded systems, for example in medical technology, automation and the automotive industry, the demands on the systematic, quality-assured development of the systems are also increasing. An essential aspect of the so-called systems engineering is the holistic consideration of the three classical development disciplines mechanics, electronics and software.
In order to structure the development of software and software-based systems, various process models have been defined. One of the best-known models is the V-model, which was developed in Germany in the mid-1980s, while the Capability Maturity Model CMM has established itself in the USA. Both approaches describe the individual development steps from the capturing, recording, and documentation of requirements, through system design and implementation, to verification and validation, including analysis, testing and maintenance. These process models have developed in two directions in recent years.
On the one hand, an iterative, incremental approach has established itself as an alternative over the course of time, for example with the Agile Methods, which were originally developed and are now widely used in the IT sector. The goal of this approach is to focus more on the actual product and less on process artefacts. An exciting question remains whether and how agile methods can be an effective and efficient alternative in the field of embedded system development and, in particular, how they can meet the requirements for the development of safety-critical systems, since the comprehensibility and traceability of the development process is of decisive importance for the approval of such systems apart from the verifiability of their functionality.
At the same time, it was recognized that the software indeed plays an important role, but especially with embedded systems an overall and complete system view is necessary. The transition from CMM to CMMi and the further development of the software-based Unified Modelling Language UML towards SysML are prominent examples. With SysML, a notation has been defined that goes beyond the description of software systems and focuses on the overall system.
Quality, reliability and safety remain top priorities
In the phase of verification and validation of embedded systems two fundamentally different approaches have to be distinguished. In the static analysis, the program code is first examined without executing the software and without considering the hardware. Here, numerous formal errors in the code can be detected at an early stage of development. During the dynamic tests, the interaction of software and hardware is then tested. In the case frequently encountered practice that not all hardware components are available at the start of the test, an incremental procedure has proven to be successful, in which the hardware is integrated step by step in so-called hardware-in-the-loop tests until the level of the overall system is reached.
Another important factor in the development of embedded systems is the choice of programming language. At the level of high-level languages, C and, increasingly, C++ have found widespread use. In addition, new alternatives such as RUST are currently being defined, the strengths and weaknesses of which need to be tested in more detail in practical use.
In systems engineering, also the functional safety of the system is playing an increasingly important role. Existing standards such as ISO 26262 define clear guidelines for the development and operation of the system. In addition, there are software-specific standards whose aim is to guarantee the quality of the software. An important example is the MISRA-C/C++ standard, which was developed by the English Motor Industry Software Reliability Association, was first used in the automotive industry and has since become widely used. Taking into account the importance of the standard, special sessions on this topic are planned in the program of the Embedded World Conference 2020.
In the area of embedded systems, the software cannot and must not be viewed and treated without the inclusion of hardware and the overarching system aspects. Particularly when developing software for systems with high reliability and/or safety requirements, the earliest possible consideration of the overall system is of decisive importance. Essential challenges here are the traceability of requirements and design decisions from the system to the software level and vice versa, as already required in various standards. This traceability not only makes it possible to check whether all requirements have been taken into account in the design and in the realization and validation of the system, but also makes it easier to recognize the effects of subsequent changes in the specification, in the design and/or in the software and to take them into account accordingly.
A very important aspect with regard to the correct functioning of software in embedded systems, besides the pure functionality, is the runtime behavior of the program. The real-time behavior often plays a decisive role in embedded systems. Here, too, the system view is indispensable. An additional challenge is the increasing use of multi-core processors, which, due to the true concurrency of processors, places new demands on software and system design in particular.
In addition to functional safety, the aspect of security is becoming increasingly important. In particular, this also involves protecting the system and its components against unauthorised interference which could impair the data and thus the functionality of the system and, in extreme cases, cause danger to life and limb by manipulating data, for example in an electronic braking system. Effective measures against the "hacking" of embedded systems must be further developed and tested in practice.
Often changes or extensions are necessary in already proven systems. Dealing with so-called legacy software is a big challenge. Depending on the amount of documentation of the existing software, detailed analyses are required to ensure the correct interaction of the old and new software components. Porting to new architectures like Multicore causes additional challenges. Especially in the field of control engineering a parallelization of code is not a trivial task, because many algorithms are built according to the sequential pattern input-processing-output.
Free and open source software (FOSS) is also increasingly being used in embedded systems. Apart from the question of how this software can be optimally integrated into the system architecture and functionality, important questions of liability, licencing, and copyright arise.
And, of course, the increasing use of artificial intelligence also has a decisive influence on the development and use of embedded systems, especially with regard to the predictable behavior and the safety of the systems. In addition, the first promising approaches to the use of AI in quality assurance of embedded systems, for example for the intelligent evaluation of analysis and test results, can be observed. This potential needs to be further explored and assessed in terms of its strengths and weaknesses.
At the embedded world Conference 2020 in Nuremberg we will address all these aspects competently and comprehensively. In order to achieve a fruitful exchange of experiences, we count on your active participation.