In der modernen Softwareentwicklung sind etablierte Continuous-Integration- und Continuous-Deployment-(CI/CD-)Pipelines unverzichtbar geworden. Sie steigern die Codequalität und reduzieren den Aufwand für das finale Release enorm, da die nötigen Schritte bereits während des Entwicklungsprozesses inkrementell erfolgen. In der eingebetteten-Programmierung, genauer im Automotive-Bereich, ist die Implementierung derartiger Pipelines komplexer. Hier kommt unser Forschungsprojekt TwinSpace zum Tragen, das einen entscheidenden Schritt in Richtung einer modernen Entwicklungslandschaft in der Automobil- und Embedded-Industrie darstellt.
Ein zentraler Aspekt unseres Vorhabens ist die frühzeitige Identifikation der Leistungsanforderungen der zu entwickelnden Software. Durch diesen proaktiven Ansatz können wir fundierte Entscheidungen bezüglich der Hardwareauswahl treffen und legen somit den Grundstein für optimierte Systemleistungen.
Mit der Integration von CI-Praktiken streben wir danach, Entwicklungsprozesse zu transformieren und somit bereits in frühen Entwicklungsstadien, in denen ein Ausführen des Codes noch nicht sinnvoll möglich ist, dennoch ein Bewusstsein für dessen Leistungsverhalten aufzuzeigen. Mit dem TwinSpace-Ansatz sind beispielsweise automatische Leistungsmessungen nach Code-Änderungen möglich.
Dafür werden die entwickelten Komponenten des TwinSpace-Ansatzes (Extraktoren, Generatoren und Prototyping-Systeme) in eine CI-Pipeline integriert, um eine automatisierte Messung zu ermöglichen.
In diesem Prozess wird der entwickelte Code durch einen oder mehrere Extraktoren in die LPDL transferiert. Diese wird zwischengespeichert und durch einen Generator in wiederum C-Code übersetzt. Dieser C-Code, aus welchem nicht mehr auf die ursprüngliche Funktion geschlossen werden kann, wird mithilfe des Prototyping-Systems gebaut und auf ein Remote-Target geflasht. Dort werden dann Messungen erstellt, welche dem Entwickler zur Verfügung stehen.
Somit können verschiedenen entwickelten Features die entstandene Last zugewiesen werden oder auch bereits frühzeitig im Entwicklungsprozess problematische Implementierungen erkannt werden.