CI/CD trifft Embedded Automotive Development

Abstract - In der modernen Softwareentwicklung sind Continuous-Integration- und Continuous-Deployment-(CI/CD-)Pipelines unverzichtbar, um Codequalität sicherzustellen und Entwicklungszyklen zu beschleunigen. In der Embedded-Programmierung – insbesondere im Automotive-Bereich – gestaltet sich die Umsetzung dieser Prinzipien jedoch schwierig, da Hardwareabhängigkeiten und eingeschränkte Laufzeitumgebungen besondere Anforderungen stellen. Das Forschungsprojekt TwinSpace setzt genau hier an: Es integriert CI-Praktiken in den Entwicklungsprozess eingebetteter Systeme und ermöglicht automatisierte Leistungsanalysen bereits in frühen Entwicklungsphasen – noch bevor ausführbarer Code vorliegt. Durch die automatisierte Messung von Laufzeitparametern und die Bereitstellung hardwarebezogener Einblicke fördert TwinSpace eine datengetriebene Hardwareauswahl und macht Leistungsengpässe frühzeitig sichtbar. Damit leistet TwinSpace einen wichtigen Beitrag zur Transformation klassischer Embedded-Entwicklung hin zu einer modernen, effizienten und transparenten Softwareentwicklung für eingebettete Systeme.
TwinSpace Continuous Integration Pipeline Example

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.