Software- und Systems-Engineering Kernkompetenz für die Entwicklung eingebetter Systeme

Auch 2020 findet wieder die Embedded World Conference zu ausgewählten Themen statt.
Auch 2020 findet wieder die Embedded World Conference zu ausgewählten Themen statt.

Im Rahmen der Vorbereitung auf die Embedded World Conference 2020 in Nürnberg geben die Mitglieder des Steering Boards der Konferenz Einblicke in die von ihnen verantworteten Themenbereiche – Dr. Klaus Grimm zu den aktuellen Herausforderungen im Bereich des Software- und Systems-Engineerings.

Im Zuge des ständig zunehmenden Einsatzes eingebetteter Systeme, beispielsweise in der Medizintechnik, der Automation und im Automobilbereich, steigen auch die Anforderungen an die systematische, qualitätsgesicherte Entwicklung der Systeme. Ein essenzieller Aspekt des sogenannten Systems-Engineering ist dabei die  gesamtheitliche Betrachtung der drei klassischen Entwicklungsdisziplinen Mechanik, Elek­tronik und Software.

Software- und Systems-Engineering als Disziplin

Um die Entwicklung von Software und Software-basierten Systemen zu strukturieren, wurden verschiedene Pro­zessmodelle definiert. Eines der bekanntesten Modelle ist das V-Modell, das bereits Mitte der achtziger Jahre in Deutschland entwickelt wurde, während sich in den USA das Capability Maturity Model (CMM) durchgesetzt hat. Beide Ansätze beschreiben die einzelnen Entwicklungsschritte von der Erfassung und Dokumentation der Anforderungen über den Systementwurf und die Realisierung des Systems bis hin zur Verifikation und Validation, inklusive Analyse, Test und Wartung. Diese Prozessmodelle haben sich in den letzten Jahren in zwei Richtungen weiterentwickelt.

Zum einen hat sich im Laufe der Zeit als Alternative ein iteratives, inkrementelles Vorgehen etabliert, beispielsweise mit dem ursprünglich aus der IT stammenden, mittlerweile weit verbreiteten Ansatz der agilen Methoden. Ziel des Vorgehens ist es, den Fokus wieder stärker auf das eigentliche Produkt und weniger auf Prozessartefakte zu richten. Eine spannende Frage bleibt, ob und wie die agilen Methoden im Bereich der Entwicklung eingebetteter Systeme eine effektive und effiziente Alternative darstellen und insbesondere den Anforderungen an die Entwicklung von sicherheitskritischen Systemen gerecht werden können, da für die Zulassung derartiger Systeme neben der Nachweisbarkeit der Funktion auch die Nachvollziehbarkeit des Entwicklungsprozesses von entscheidender Bedeutung ist.

Gleichzeitig wurde erkannt, dass die Software zwar eine wichtige Rolle spielt, aber insbesondere bei eingebetteten Systemen eine vollständige Systemsicht nötig ist. Der Übergang von CMM auf CMMi (Capability Maturity Model Integration) sowie die Weiterentwicklung der auf Software bezogenen Unified Modelling Language (UML) in Richtung Systems Modeling Language (SysML) sind prominente Beispiele. Mit SysML wurde eine Notation definiert, die über die Beschreibung von Softwaresystemen hinausgeht und das Gesamtsystem in den Mittelpunkt rückt.

Qualität, Zuverlässigkeit und Sicherheit sind oberstes Gebot

In der Phase der Verifikation und Validation von eingebetteten Systemen sind zwei grundsätzlich verschiedene Ansätze zu unterscheiden. Bei der statischen Analyse wird zunächst ohne Ausführung der Software und ohne Berücksichtigung der Hardware der Programmcode untersucht. Hier kann der Entwickler in einer frühen Phase der Entwicklung bereits zahlreiche formale Fehler im Code aufdecken. Bei den dynamischen Tests wird anschließend das Zusammenspiel von Software und Hardware geprüft. Für den in der Praxis häufig auftretenden Fall, dass bei Testbeginn noch nicht alle Hardware-Komponenten zur Verfügung stehen, hat sich ein inkrementelles Vorgehen bewährt, bei dem in sogenannten Hardware-in-the-Loop-Tests die Hardware schrittweise integriert wird, bis die Ebene des Gesamtsystems erreicht ist. Einen weiteren wichtigen Faktor beim Entwickeln eingebetteter Systeme stellt die Wahl der Programmiersprache dar. Auf der Ebene von Hochsprachen haben C und in zunehmendem Maß auch C++ eine weite Verbreitung gefunden. Darüber hinaus werden aktuell neue Alternativen wie »Rust« definiert, deren Stärken und Schwächen im praktischen Einsatz noch detaillierter erprobt werden müssen.

Beim Systems-Engineering spielt in zunehmendem Maß auch die funktionale Sicherheit des Systems eine entscheidende Rolle. Existierende Standards wie die ISO 26262 definieren klare Vorgaben für Entwicklung und Betrieb des Systems. Darüber hinaus gibt es Software-spezifische Standards, deren Ziel es ist, die Qualität der Software zu gewährleisten. Ein wichtiges Beispiel ist der MISRA-C/C++-Standard, der von der englischen Motor Industry Software Reliability Association erarbeitet wurde, zuerst in der Automobilbranche zum Einsatz kam und mittlerweile eine weite Verbreitung gefunden hat. Der Bedeutung des Standards Rechnung tragend, sind im Programm der Embedded World Konferenz 2020 spezielle Sessions zu diesem Thema eingeplant.

Aktuelle Herausforderungen

Im Bereich der eingebetteten Systeme kann und darf die Software nicht ohne Einbeziehung der Hardware und der übergeordneten Systemaspekte betrachtet und behandelt werden. Insbesondere bei der Entwicklung von Software für Systeme mit hohen Zuverlässigkeits- und/oder Sicherheitsanforderungen ist die frühestmögliche Betrachtung des Gesamtsystems von entscheidender Bedeutung. Wesentliche Herausforderungen sind dabei die Verfolgbarkeit von Anforderungen und Design-Entscheidungen von der System- auf die Softwareebene, wie sie bereits in verschiedenen Standards gefordert wird. Die sogenannte Traceabilty ermöglicht nicht nur die Kontrolle darüber, ob alle Anforderungen im Entwurf und bei der Realisierung und Validation des Systems berücksichtigt wurden, sondern erleichtert auch, die Auswirkung von nachträglichen Änderungen in der Spezifikation, im Entwurf und/oder in der Software zu erkennen und entsprechend zu berücksichtigen.

Ein sehr wichtiger Aspekt in Bezug auf das korrekte Funktionieren von Software in eingebetteten Systemen ist neben der reinen Funktion das Laufzeitverhalten des Programms. In eingebetteten Systemen spielt das Realzeitverhalten oft eine entscheidende Rolle. Auch hier ist die Systemsicht unabdingbar. Eine zusätzliche Herausforderung stellt der zunehmende Einsatz von Multicore-Prozessoren dar, der durch die echte Nebenläufigkeit von Prozessoren neue Anforderungen insbesondere an den Software- und Sys­tementwurf stellt. Neben der funk­tionalen Sicherheit kommt einem an­deren Sicherheits­aspekt, dem der Security, eine deutlich zunehmende Bedeutung zu. Hier geht es insbesondere auch um den Schutz des Systems und seiner Komponenten vor unzulässigen Eingriffen, die die Daten und damit die Funktion des Systems beeinträchtigen und im Extremfall durch Manipulation von Daten, beispielsweise in einem elektronischen Bremssystems, eine Gefahr für Leib und Leben bewirken können. Wirkungsvolle Maßnahmen gegen das »Hacking« von eingebetteten Systemen sind weiterzuentwickeln und im praktischen Einsatz zu erproben.

Oft sind Änderungen oder Erweiterungen in bereits bewährten Systemen erforderlich. Der Umgang mit sogenannter Legacy Software stellt eine große Herausforderung dar. Abhängig vom Umfang der Dokumentation der existierenden Software sind detaillierte Analysen erforderlich, um das korrekte Zusammenwirken der alten und neuen Softwareanteile zu gewährleisten. Eine Portierung auf neue Architekturen wie Multicore bringt zusätzliche Herausforderungen mit sich. Gerade im Bereich der Regelungstechnik ist eine Parallelisierung von Code eine nicht triviale Aufgabe, da viele Algorithmen nach dem sequenziellen Muster »Eingabe-Verarbeitung-Ausgabe« aufgebaut sind.

In zunehmendem Maß wird auch in eingebetteten Systemen sogenannte Free-And-Open-Source-Software (FOSS) eingesetzt. Abgesehen von der Frage, wie die Software optimal in die System­architektur und -Funktion integriert werden kann, stellen sich wichtige Fragen der Haftung und des Urheberrechts.

Und auch der zunehmende Einsatz künstlicher Intelligenz hat einen entscheidenden Einfluss auf die Entwicklung und den Einsatz eingebetteter Systeme, insbesondere was das pro­gnostizierbare Verhalten und die Sicherheit der Systeme angeht. Darüber hinaus sind erste vielversprechende Ansätze zum Einsatz von KI bei der Qualitätssicherung eingebetteter Systeme zu verzeichnen, beispielsweise zur intelligenten Auswertung von Analyse- und Testergebnissen. Das Potenzial ist weiter zu untersuchen und bezüglich seiner Stärken und Schwächen zu bewerten.

In der Embedded World Conference 2020 in Nürnberg werden all diese Aspekte kompetent und umfänglich adressiert. Um zu einem für alle Gewinn bringenden Erfahrungsaustausch zu kommen, setzt der Veranstalter auf eine aktive Teilnehmerbeteiligung.

Embedded World Conference 2020
Messezentrum Nürnberg,
 25. – 27. Februar 2020
Die Embedded World Conference besteht aus 250 Vorträgen zu den Themen:
  • Internet of Things
  • Connectivity
  • Embedded OS
  • Functional Safety & Security
  • Hardware
  • Software-Engineering
  • Embedded Vision
  • Intelligent Systems
  • Embedded HMI & GUI
  • System-on-Chips
Programm und Anmeldung finden Sie auf der Homepage der Embedded World.