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

  • 19/03/2025
  • Allgemein, Unternehmen, Veranstaltungen

Wir freuen uns, euch zu einem exklusiven VDI-Event des Netzwerk Systems Engineering einzuladen, das bei uns im Büro stattfindet!Am Freitag, den 28. März 2025, wird sich alles um die ...

Weiterlesen
  • 13/03/2025
  • Allgemein, Unternehmen

MEDtech Ingenieur verstärkt sein Führungsteam: Seit März 2025 übernimmt Daniel Saffer die Rolle des Chief Technical Officers (CTO). Mit seiner langjährigen Erfahrung in der Entwicklung sicherheitskritischer Embedded-Softwarelösungen für die ...

Weiterlesen
  • 29/01/2025
  • Allgemein, Hardware, Testen

EinleitungUm bei der EMV Prüfung für die Zulassung neuer medizintechnischer Geräte das Risiko zu reduzieren machen wir gerne Vortests mit den Geräten in der Prototypen Phase. Aktuell unterstützen wir ...

Weiterlesen
Cookie-Übersicht

Die Internetseiten der MEDtech Ingenieur GmbH verwenden Cookies. Cookies sind Textdateien, welche über einen Internetbrowser auf einem Computersystem abgelegt und gespeichert werden.

Zahlreiche Internetseiten und Server verwenden Cookies. Viele Cookies enthalten eine sogenannte Cookie-ID. Eine Cookie-ID ist eine eindeutige Kennung des Cookies. Sie besteht aus einer Zeichenfolge, durch welche Internetseiten und Server dem konkreten Internetbrowser zugeordnet werden können, in dem das Cookie gespeichert wurde. Dies ermöglicht es den besuchten Internetseiten und Servern, den individuellen Browser der betroffenen Person von anderen Internetbrowsern, die andere Cookies enthalten, zu unterscheiden. Ein bestimmter Internetbrowser kann über die eindeutige Cookie-ID wiedererkannt und identifiziert werden.

Durch den Einsatz von Cookies kann die MEDtech Ingenieur GmbH den Nutzern dieser Internetseite nutzerfreundlichere Services bereitstellen, die ohne die Cookie-Setzung nicht möglich wären.

Mittels eines Cookies können die Informationen und Angebote auf unserer Internetseite im Sinne des Benutzers optimiert werden. Cookies ermöglichen uns, wie bereits erwähnt, die Benutzer unserer Internetseite wiederzuerkennen. Zweck dieser Wiedererkennung ist es, den Nutzern die Verwendung unserer Internetseite zu erleichtern. Der Benutzer einer Internetseite, die Cookies verwendet, muss beispielsweise nicht bei jedem Besuch der Internetseite erneut seine Zugangsdaten eingeben, weil dies von der Internetseite und dem auf dem Computersystem des Benutzers abgelegten Cookie übernommen wird.

Die betroffene Person kann die Setzung von Cookies durch unsere Internetseite jederzeit mittels einer entsprechenden Einstellung des genutzten Internetbrowsers verhindern und damit der Setzung von Cookies dauerhaft widersprechen. Ferner können bereits gesetzte Cookies jederzeit über einen Internetbrowser oder andere Softwareprogramme gelöscht werden. Dies ist in allen gängigen Internetbrowsern möglich. Deaktiviert die betroffene Person die Setzung von Cookies in dem genutzten Internetbrowser, sind unter Umständen nicht alle Funktionen unserer Internetseite vollumfänglich nutzbar.

Weitere Informationen erhalten Sie in unserer Datenschutzerklärung.

Unbedingt notwendige Cookies

Dieses Cookie wird benötigt, um Ihre Cookie-Einstellungen zu merken und weitere Hauptfunktionen zur Verfügung zu stellen

Um Ihnen eine Auskunft über Ihre gespeicherten personenbezogenen Daten hier (https://medtech-ingenieur.de/gespeicherte-daten-2/) geben zu können, benötigen wir einen Cookie, um Sie bei der Datenabfrage identifizieren zu können. Dieser Cookie muss aus Sicherheitsgründen deshalb aktiviert sein. Ein weiterer Cookie wird gesetzt, um diesen Banner nicht erneut anzeigen zu müssen.

Cookie-Name Beschreibung
PHPSESSID Name: PHP session
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Wir benötigt, um Sie bei der Anfrage von personenbezogenen Daten identifizieren zu können. Das Cookie wird nur gesetzt, wenn Sie eine Anfrage hier (https://medtech-ingenieur.de/gespeicherte-daten-2/) stellen.
Laufzeit: Sitzungsende
Kategorie: Unbedingt notwendige Cookies
moove_gdpr_popup Name: Cookie-Box Einstellungen
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Wird benötigt, um Ihre Cookie-Einstellungen zu speichern, um den Cookie-Banner nicht erneut anzeigen zu müssen.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
comment_author_9c90e388e3e1be4a6c594fa6ac8a3eec
comment_author_email_9c90e388e3e1be4a6c594fa6ac8a3eec
comment_author_url_9c90e388e3e1be4a6c594fa6ac8a3eec
Name: Kommentar Einstellungen
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Cookie wird angelegt, wenn Sie ein Kommentar auf MEDtech Ingenieur veröffentlichen wollen, um Sie als Autor identifizieren und den aktuellen Status Ihres Kommentars anzeigen zu können. Das Cookie enthält den angegebenen Namen. Das Cookie wird erst gesetzt, wenn Sie der Speicherung Ihrer personenbezogenen Daten zustimmen.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
rmp-rate Name: RMP Rate
Anbieter: Eigentümer der Webseite (MEDtech Ingenieur)
Zweck: Cookie wird angelegt, wenn Sie eine Bewertung eines Blogbeitrags mithilfe des Sternebewertungssystems abgeben. Ihnen wird eine anonymisierte ID zugewiesen, um zu erkennen, ob Sie einen Artikel bereits bewertet haben oder nicht. Das Cookie wird nur verwendet, um zu verhindern, dass mehrfache Bewertung abgegeben werden und erst gesetzt, wenn Sie auf einen Stern klicken.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
medtech-download-page Name: Download Page
Anbieter: Eigentümer der Webseite (MEDtech Ingenieur)
Zweck: Cookie wird angelegt, wenn Sie den Landing-Page Prozess erfolgreich durchlaufen haben. Dies geschieht nur, wenn Sie einen Content-Download von unserer Website anstreben.
Laufzeit: 1/2 Jahr
Kategorie: Unbedingt notwendige Cookies