Ein wichtiges Ziel ist es natürlich, Zeit zu sparen und weniger Fehler zu machen. Zusätzlich soll sich die Qualität des Codes erhöhen, da repetitive Teile automatisch erzeugt werden und die ganze Information nur an einer Stelle vorhanden ist ("Single Point of Truth": aus einer Quelle, dem Modell wird der Code für alle Controller, der Code für den steuernden PC und die Dokumentation des Protokolls erzeugt). Und zuletzt sind auch die Entwickler besser motiviert, wenn sie keinen langweiligen "Boilerplate" Code selbst schreiben müssen.
Unser Codegenerator ist eine .NET/ C# Applikation, welche C oder C++ Code für das embedded System erzeugt. Wir verwenden textuelle Modelle in JSON, welche die Datenstrukturen, Wertebereiche, Inhaltsbeschreibung etc. enthalten.
Der Generator liest das Modell ein, dann prüft er das Modell auf Syntax und Konsistenz und transformiert das Modell für die Codeerzeugung. Mit Hilfe der .NET Template Engine und den spezifischen Code Templates für C und C++, oder auch C# etc. erzeugt er dann den Zielcode für das embedded System oder auch für ein PC/ Tablet basiertes Konfigurationstool.
Wir verwenden Codegenerierung pragmatisch, d.h. nur dort wo wir wirklich einen Nutzen erzeugen können. Die wichtigsten zwei Anwendungen sind Kommunikation und Management von Daten und Bedienschnittstellen.
Für die Kommunikation modellieren wir Übertragungsdaten ("Protokolle") und Konfigurationsdaten. Daraus lässt sich der Code für Speicherung, Datenmanagement (nichtflüchtige Speicherung...) und Übertragung (sowohl zwischen embedded Controllern als auch zu übergeordneten (PC-) Systemen) erzeugen. Zusätzlich fällt auch gerade eine aktuelle Dokumentation der Daten an.
Die Modellierung von GUI (Graphical User Interface) Menüs ist die andere Anwendung. Der Menü-Baum und die dazugehörigen Berechtigungen werden modeliert, aus diesem Modell erzeugen wir den Code für das ganze Menü inklusive der Verbindung zum Datenmodell sowie den Code für das Zugriffs- und Berechtigungsmanagement.
Eine einfachere Anwendung ist Versionsinformation. Dabei wird der Code für die Verwaltung der Versionsinformationen der Software des embedded Systems automatisch erzeugt und kann z.B. für das Management von Updates verwendet werden.
Wenn wir in Projekten Codegenerierung einsetzen, dann können wir den Aufwand für die Entwicklung verkleinern und gleichzeitig die Qualität optimieren, vor allem auch für Änderungen kurz vor dem oder kurz nach dem Serienstart.
Wenn auch Sie von unserer Codegenerierung profitieren möchten, kontaktieren Sie mich:
Alois Cavelti
Haben Sie zusätzliche Fragen? Haben Sie eine andere Meinung? Wenn ja, mailen Sie mir oder kommentieren Sie Ihre Gedanken unten!
Projekte? Ideen? Fragen? Machen wir einen kostenlosen Erst-Workshop!
Keine Kommentare