Anforderungen an eine Software-Architektur

Jürgen Welzenbach

02/08/2023

Die Zeiten, als embedded System einfache, dedizierte und überschaubare Aufgaben zu erledigen hatten, sind längst vorbei. Funktionen wie Bluetooth-Anbindung, Safety, Security, weitreichende Konfigurationsmöglichkeiten und Zusammenfassung von mehreren Systemen zu einem Größeren (weil die µCs leistungsfähiger geworden sind) lassen die Code-Basis schnell anwachsen. Wenn die zugrunde liegende Software-Architektur nicht dafür ausgelegt ist, wird jede weitere Änderung oder Erweiterung zu einem Vabanque-Spiel.
Vergleicht man das Ganze mit dem Bau eines Hauses dann kommt auf das Fundament und die darüber liegenden Stockwerke noch ein Balkönchen dran, da noch eine Gaube, … und in kürzester Zeit nimmt die Architektur ähnliche Auswüchse an wie unser Titelbild.

Abhängigkeiten kann man zwar in einem Diagramm darstellen. Aber welche Änderung sich im Detail wie auswirkt, lässt sich im Vorfeld nicht mehr mit Sicherheit bestimmen.

Zu guter Letzt hält sich die Begeisterung des Managements in engen Grenzen, wenn infolgedessen Zeit und Kosten aus dem Ruder laufen.

Anforderungen an eine Architektur

Einfache Software

Als Akronym der Wahl gilt KISS (Keep it simple, stupid): Die Software muss einfach sein. Eine komplexe Architektur erzwingt komplexen Code – und damit wird die Software in jeglicher Hinsicht teuer (aufwändige Codierung, umständliche Unit-Tests, zeitaufwändige Fehlersuche). In den meisten Fällen ist die einfachere Lösung auch die bessere (Sparsamkeitsprinzip auch bekannt als “Ockhams Rasiermesser”).

Fokussierung

Die grundlegenden Konzepte der Architektur sollten einfach sein, so dass die knappe Zeit für die komplexen Themen verwendet werden kann. Bei einem Hochhaus plant man auch nicht jede Etage anders, oder?

Wartbarkeit/Erweiterbarkeit

Wer kann schon zu Projektbeginn vorhersagen, welche Änderungen oder neuen Features noch kommen werden. Spätestens, wenn es an ein Nachfolgeprodukt mit einem Blumenstrauß an neuer Funktionalität geht, rächt es sich gnadenlos, wenn Softwarekomponenten nicht erweiterbar oder austauschbar sind oder Verantwortlichkeiten nicht klar abgegrenzt bzw. Komponenten verteilt sind.

Testbarkeit

In einem früheren Blogbeitrag habe ich bereits die Werbetrommel für das Simulieren von Software gerührt. Man kann Software, die direkt auf einem “bare metal” SDK aufsetzt, auch Unit-testen (siehe Blogbeitrag). Aber eine Abstraktionsschicht (z.B. für Zugriff auf GPIOs) erleichtert das Leben nochmals ein gehöriges Stückchen.

Verteilte Entwicklung

Software ist wohl nur in sehr wenigen Fällen noch das Ergebnis einer One Man Show. Wenn einfache Features Änderungen an vielen Modulen zur Folge haben, treten sich die Entwickler zwangsweise gegenseitig auf die Füße und müssen immer wieder Merge-Konflikte auflösen. Davon abgesehen, dass das natürlich ordentlich nervt, kostet es unnötig Zeit (und dann sind wir schon wieder bei den Kosten. Jetzt nerve ich :).

Fazit auch hier wieder: Modularität und klare Abgrenzung von Funktionalität und Zuständigkeiten erleichtern die Arbeit.

Cliffhanger

Mit diesem Beitrag will und kann ich das Thema Softwarearchitektur natürlich nicht erschöpfend behandeln. Wozu auch – schließlich gibt es dazu regalmeter- bzw. gigabyteweise Literatur. Mir geht es erst einmal darum, einen Denkanstoß zu geben, sich im Vorfeld schon Gedanken zu machen (in der Medizin-Software ist das eh gefordert), wie das “Häuschen” mal aussehen soll, wo die Zimmer liegen, wie man von einem Zimmer zum anderen und zu den Etagen gelangt. Und dass es zu dem Zeitpunkt noch nicht wichtig ist, wie die Wände gestrichen werden oder ob es doch goldene Wasserhähne sein sollen.

In einem nachfolgenden Beitrag werde ich konkrete Maßnahmen vorstellen, wie man die geforderten Ziele erreichen kann.

In der Zwischenzeit loht ein Blick auf arch42. Die Autoren bieten nicht nur Material für Einsteiger oder zum Vertiefen, sondern auch eine Dokumentenvorlage in verschiedenen Formaten (Word, LaTeX, asciidoc, Markdown, EnterpriseArchitekt, Confluence) und in mehreren Sprachen.

 


Geschrieben von Jürgen Welzenbach

Jürgen hat nach seinem Elektrotechnikstudium in Erlangen seine Diplomarbeit in Kooperation mit einem Hersteller von ophthalmologischen Geräten und der Universitätsaugenklinik durchgeführt.

In zwei Erlanger Unternehmen fand er zur Embedded Software und hat vor allem HMIs für Baumaschinen und Laboranalysegeräte entwickelt.


Weitere Beiträge

  • 22/10/2026
  • Allgemein, Hardware, Mechanik, Qualität, Testen

Ein Prototyp funktioniert. Das Gerät startet, die Elektronik arbeitet wie vorgesehen und der erste Test ist erfolgreich. Damit ist die Entwicklung allerdings noch lange nicht abgeschlossen. Denn bei einem ...

Weiterlesen
  • 08/10/2026
  • Allgemein, Dokumentation, Medioora, Requirements Engineering, Software, Systems Engineering

Wenn Anforderungen anfangen, sich zu verteilen... Je größer und komplexer ein Entwicklungsprojekt für ein Medizingerät wird, desto mehr Informationen entstehen. Anforderungen stehen in Dokumenten, technische Entscheidungen werden an anderer ...

Weiterlesen
  • 10/09/2026
  • Allgemein, Fertigung, Produktion, Unternehmen

Unser Production Hub in Erlangen wächst und zwar bereits zum zweiten Mal. Die Produktionsfläche haben wir noch einmal deutlich vergrößert. Was als kleine In-House-Fertigung neben unserem Entwicklungsbüro begann, ist mittlerweile ...

Weiterlesen
Datenschutz-Übersicht

Diese Website verwendet Cookies, damit wir dir die bestmögliche Benutzererfahrung bieten können. Cookie-Informationen werden in deinem Browser gespeichert und führen Funktionen aus, wie das Wiedererkennen von dir, wenn du auf unsere Website zurückkehrst, und hilft unserem Team zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind.

Unbedingt notwendige Cookies

Unbedingt notwendige Cookies sollten jederzeit aktiviert sein, damit wir deine Einstellungen für die Cookie-Einstellungen speichern können.