Vom Modell zum Code

Softwareentwicklung bei Thomas

Fragen zum Thema Software-entwicklung?

Der Elektromechanische Aktuator (EMA) mag ein kleines Bauteil sein. Doch die Fähigkeiten der intelligenten Vorsteuereinheit sind enorm – und neben der Hardware hat die Software daran einen großen Anteil. Das wird spätestens dann deutlich, wenn man sich den Programmcode anschaut, den der winzige Mikrocontroller des EMA enthält: Er umfasst rund 160.000 Zeilen Programmcode und ist dabei durch über 160 Parameter auf die einzelnen Bedürfnisse des Kunden anpassbar. Das ermöglicht diesem eine besonders hohe Flexibilität und führt zu einer schnelleren Integration des Produktes in das Endsystem.

Vom Lastenheft zum Programm-Code

Der Code ist das Werk des 13-köpfigen Teams der Softwareentwicklung, das von Christoph Pessara, Director Software and Integration Testing, geleitet wird. Doch bevor die Software-Spezialisten ans Werk gehen können, sind andere am Zug. „Am Anfang steht das Lastenheft, in dem der Kunde seine Anforderungen und Vorstellungen festhält. Aus ihm leitet die Systementwicklung die Funktionalitäten des Systems ab und überführt sie in eine Systemarchitektur, die den Funktionsumfang und das Zusammenspiel von Software, Hardware und Mechanik festschreibt. Erst dann kommen wir ins Spiel und entwickeln die Software“, so Pessara.

Hierzu verfolgt das Team einen modellbasierten Ansatz: So genannte „semi-formale Modelle“ beschreiben Abläufe und Strukturen sowie die Beziehungen zwischen den Softwarekomponenten. Anhand dieser Beschreibungen entsteht mit Hilfe eines Code-Generators der Programm-Code.

Arichtektur, Entwicklung und Testing – vielfältige Tätigkeiten

Die Aufgabenbereiche der Softwareentwicklung sind dabei vielseitig: Die Softwarearchitekten im Team definieren dabei den statischen Aufbau (z.B. Schnittstellen zwischen den Komponenten), sowie das dynamische Verhalten, welches sich unter anderem aus Laufzeit, Performance und Zustandsdiagrammen zusammensetzt. Zudem werden die einzelnen Systemfunktionen auf die verschiedenen Softwarekomponenten heruntergebrochen und diese in ihrer Funktionalität definiert. Beispiele für ein solches Modul sind Stromregler, CAN-Treiber oder Speicherverwaltungskomponenten.

Die Aufgabe der Software-Entwickler im Team ist es dann, anhand dieser Beschreibungen das konkrete Software-Design zu erstellen und mit Hilfe von Code-Generatoren in einen Programm-Code zu überführen. Die Softwaretester prüfen schließlich, ob das aus vielen einzelnen Modulen zusammengesetzte Programm alle Vorgaben erfüllt und wie gewünscht funktioniert.

Effiziente und transparente Entwicklung

Die Vorteile der modellbasierten Entwicklung sind immens: Zum einen erleichtert die Visualisierung in einem Modell die Zusammenarbeit mit Kunden und anderen Abteilungen, weil sie komplexe Zusammenhänge verständlich macht. Zum anderen erlaubt sie, eine saubere konzeptionelle Basis zu legen. Und sie ermöglicht, bereits das Software-Design modellhaft zu beschreiben und aus ihm heraus den Code zu generieren, was die Abläufe erheblich beschleunigt.

„Vom modellbasierten Ansatz profitieren wir und unsere Kunden auf vielfache Weise“, so Pessara. „Wir nutzen eine standardisierte, einheitliche und verständliche Modellierungssprache. Wir erzielen saubere Architekturen, die im Nachgang eine gute Wiederverwendung ermöglichen. Und nicht zuletzt ist die Fehleranfälligkeit gering, da der Code-Generator für wiederkehrende Design-Muster immer wieder die gleichen Code-Patterns nutzen kann.“

Hinzu kommt, dass bei der Entwicklung durch eine kontinuierliche Integration der Softwareänderungen und einem hohen Maß an Testautomatisierung eine schnelle Rückmeldung für die Entwickler realisiert wird.

In der Praxis bedeutet das, dass jede Änderung an der Software nachts durch ein vollautomatisiertes Testsystem geprüft wird. So können frühzeitig Fehler erkannt und eliminiert werden.
Diese Automatisierung ermöglicht es, dass sich die Tester auf die Testerstellung und nicht auf die Testdurchführung fokussieren können.

Architektur und Code passen immer zusammen

Eine Software modellbasiert zu entwickeln ist also wesentlich effizienter und transparenter, als den kompletten Programmcode auf einmal zu schreiben. Denn durch die Abstraktion bleibt die Komplexität niedrig und man kann mit Hilfe des Modells  das Design und die Architektur kongruent halten.

Beispielsweise ist es oft erforderlich durch Änderungen Anpassungen an Architektur, Design, Code und Tests vorzunehmen. Um dies präzise auf allen Ebenen umzusetzen ist der Modellansatz von besonderem Vorteil.

Vom Modell (links) zum Code (rechts)

Pessara: „In der klassischen Programmierung konnte es vorkommen, dass das, was der Softwarearchitekt konzipiert hat, und das, was der Softwareentwickler letztlich daraus machte, ‚auseinanderlief‘. Letztlich zählte nur, dass das Produkt am Ende funktioniert. Die konkrete Umsetzung der Programmierung war dabei nur zweitrangig. Allerdings führte das zu komplexen Codes und schwer zu wartenden und anfälligen Systemen. All das ist mit dem modellbasierten Ansatz Vergangenheit. Wir können unsere Software schneller anpassen, jede Code-Änderung direkt testen und letztlich einen höheren Reifegrad garantieren.

Wird die Software beispielsweise in Umgebungen eingesetzt, wo das Thema funktionale Sicherheit eine Rolle spielt, so wird die Sicherstellung der Durchgängigkeit im gesamten Entwicklungsprozess verlangt.

Durch das Modell können Sicherheitsanalysen einfacher realisiert und die Durchgängigkeit während der Entwicklung dargestellt werden.“

Kunden profitieren

Normalerweise setzen eher Hersteller von großen Bauteilen und komplexen Systemen auf die modellbasierte Software-Entwicklung. Dass Thomas die Methode für vergleichsweise kleine Komponenten wie den EMA nutzt, ist etwas Besonderes. Und aus Kundensicht ist es ein echter Gewinn. Schließlich werden die regulatorischen Vorgaben im Mobility- und Off Highway-Markt strenger. Systeme müssen geltende Standards einhalten und stets effizienter werden. Aspekte wie die genannte funktionale Sicherheit müssen berücksichtigt werden. Entsprechend entwickelt sich die Technik stetig und Systeme werden immer intelligenter. Der Entwicklungs-, Zeit- und Kostendruck ist groß. Mit der modellbasierten Softwareentwicklung leistet Thomas einen Beitrag dazu, all diesen Herausforderungen jetzt und in der Zukunft gerecht zu werden.

de_DEGerman