Warum das Rad immer wieder neu erfinden?
Wir sind seit vielen Jahren für unsere Kunden im Umfeld der Entwicklung von Embedded Software tätig. In unserer täglichen Praxis stellen wir immer wieder fest, dass viele unserer Kunden oder wir im Auftrag unserer Kunden ähnliche Funktionalität oft wiederholt neu entwickeln. Diese Tatsache stellt für jede Software-Entwicklungsabteilung eine unglaubliche Chance dar: Das Rad muss nämlich nicht immer wieder neu erfunden werden. Durch den Einsatz moderner Software-Entwicklungsmethoden und dem richtigen Werkzeug lässt sich das Prinzip der Software-Wiederverwendung, das in den meisten Bereichen bereits seit vielen Jahren etabliert ist auch für Embedded-Software anwenden. Oder würden Sie, wenn Sie eine GUI-Applikation entwickeln wollen, zunächst anfangen Code zu implementieren, um Schalter, Eingabefelder und Dialoge auf den Bildschirm zu malen?
Nein - Sie greifen auf Komponenten zurück, die genau das für Sie erledigen, damit Sie sich auf die eigentliche Applikationsfunktionalität konzentrieren können.
Warum also das Prinzip der Software-Wiederverwendung durch flexibel einsetzbare Komponenten nicht auch im Embedded-Umfeld konsequent anwenden? Immerhin lassen sich dadurch Zeit und Kosten in enormem Umfang sparen und gleichzeitig die Software-Qualität signifikant steigern.
Wie geht das?
Durch eine saubere Embedded-Software-Architektur können die Funktionalitäten so auf einzelne Software-Komponenten verteilt werden, dass kleine in sich geschlossene Funktionseinheiten entstehen, die durch saubere Schnittstellen von den anderen Software-Teilen getrennt sind. Die so geschaffenen Software-Bausteine haben also keine direkten Abhängigkeiten zu anderen Bausteinen und sind damit portierbar und flexibel einsetzbar. Das Zusammensetzen der einzelnen Bausteine, so dass diese in unterschiedlichen Kontexten verwendet werden können geschieht während der Initialisierungsphase der Applikation.
Durch eine Sammlung solcher wiederverwendbarer Bausteine behalten Sie Ihre Produktvarianten sicher im Griff, weil der Großteil des Codes als wiederverwendbare Software-Bausteine vorliegt. Die Varianten werden durch die Auswahl der geeigneten Bausteine und deren Verknüpfung gebildet. Der Code der wiederverwendbaren Software-Bausteine liegt nur einmal vor, zusammen mit den zugehörigen Unit-Tests. Das ist der entscheidende Vorteil gegenüber dem häufig praktizierten Ansatz zur Codewiederverwendung nach dem Prinzip Copy-Paste-Modify: Sie verwenden gründlich getestete Komponenten mit sauberen Schnittstellen in mehreren Anwendungen. Dadurch profitieren alle Varianten ganz automatisch von Verbesserungen / Bugfixes.
Im Idealfall lässt sich sogar ein Teil der Anforderungen durch einen generischen Embedded-Software-Baukasten wie z. B. den von redlogix angebotenen Baukasten für Rapid Embedded Software Development redBlocks abdecken. Dann sparen Sie erhebliche Entwicklungszeit und Kosten, die darauf verwendet werden müssten, um gängige Embedded-Software-Anforderungen zu erfüllen und können sich besser auf die Merkmale Ihrer Anwendung fokussieren, mit denen Sie sich vom Wettbewerb unterscheiden.
Funktioniert das auch für Deeply Embedded Anwendungen?
Ja! Selbst für kleinste 8-Bit-Mikrocontroller mit sehr begrenzter Speicherausstattung stehen mittlerweile sehr leistungsfähige C++-Compiler zur Verfügung, die eine Anwendung dieses Architekturansatzes perfekt unterstützen.
Mit der Programmiersprache C++ lassen sich wiederverwendbare Software-Komponenten optimal wie mit keiner anderen Sprache entsprechend der Systemressourcen skalierbar entwickeln. So hat der Entwickler z. B. die Wahl, ob er Methoden als virtuell deklarieren will und die damit einhergehende Flexibilität durch einen größeren Speicherbedarf und schlechteres Laufzeitverhalten erkaufen möchte. Alternativ lassen sich durch den richtigen Einsatz von Templates wiederverwendbare Software-Komponenten auch völlig ohne Overhead gegebenüber der Realisierung der gleichen Funktionalität in C umsetzen.
Im Rahmen unserer Schulungen vermitteln wir Ihnen den hier grob skizzierten Architekturansatz. Sie werden erstaunt sein, wie sich die Produktivität Ihrer Enwicklungsarbeit dadurch steigern lässt.