Blog

Von Hardware-First zu Software-First mit einer modularen Softwarearchitektur

Geschrieben von Roger Kulläng | 05.01.2022 12:14:00

Im heutigen, von App Stores und Softwarelösungen geprägten Geschäftsumfeld befinden sich viele traditionelle Hardware-Unternehmen in einer Situation, in der ihre Hardwareprodukte, die einst den Kern ihres Geschäfts bildeten, neben immer wichtiger werdenden Softwareleistungen stehen. Ein gutes Beispiel hierfür ist der Volkswagen Konzern. In seiner 2030 Strategie macht der Automobilhersteller deutlich, dass in den kommenden Jahren die Erstellung einer einheitlichen Softwareplattform ebenso wichtig ist wie die zur Fahrzeugproduktion notwendige gemeinsame Mechatronikplattform. Und sie sind keineswegs die Einzigen. Unternehmen, die sich einst auf erstklassige Maschinenbauingenieure verließen, haben heute mehr Programmierer als Konstrukteure.

Da ein Großteil des individuellen Kundennutzens, der Anpassungsmöglichkeiten und der Leistungen vieler Produkte heutzutage auf Software basiert, ist es nur logisch, dass der Softwarearchitektur mehr Aufmerksamkeit geschenkt wird. Der zunehmende Fokus auf Software wird jedoch dann zum Problem, wenn Unternehmen in Folge der Umstellung von Hardware auf Software mehrere Softwaremonolithen mit sich herumtragen, die jeweils zur Unterstützung einer bestimmten Produktplattform entwickelt wurden.

Solche Unternehmen stehen vor einer großen Herausforderung: Wie kann die aktuell bestehende Vielzahl der im Laufe der Jahre entwickelten Softwarelösungen in eine einzige effiziente Softwarearchitektur überführt werden, die maximale Leistung und Kundennutzen ermöglicht und gleichzeitig Entwicklungszeiten minimiert? Unternehmen, die es verpassen diesen notwendigen Transformationsprozess anzustoßen und umzusetzen, riskieren den Verlust ihrer Marktposition an aufstrebende Konkurrenten, die über eine effizientere Softwarearchitektur verfügen.

In diesem Blog-Artikel möchten wir Ihnen eine Möglichkeit aufzeigen, wie Unternehmen mithilfe von Modularisierung bestehende Softwareplattformen erhalten und gleichzeitig Kapazitäten für die Entwicklung neuer Softwarelösungen bereitstellen können. Dazu erforderliche Schlüsselkonzepte sind eine modulare Softwarearchitektur und die Entkopplung von Hardware und Software.

Modularisierung im Unternehmen: Wie organisiere ich meine Entwickler, um eine neue Hardwareplattform zu unterstützen?

Vergleicht man einmal die hauptsächlichen Kostenpunkte von Hardware und Software, so fällt auf, dass bei Software keine direkten Materialkosten, sondern in erster Linie Entwicklungskosten anfallen. Um die Kosten der Softwareentwicklung möglichst gering zu halten, ist es daher umso wichtiger, die verfügbaren Entwickler möglichst effizient einzusetzen.

Entwickler sind normalerweise um eine oder mehrere Softwareplattformen herum organisiert, die verschiedene Hardwareprodukte unterstützen, kontinuierlich neue Funktionen entwickeln und Bugs in der existierenden Software beheben.

Die Einführung eines modularen Baukastensystems für das Portfolio an Hardwareprodukten stellt die bestehende Organisation jedoch vor Herausforderungen. Wie sollen die verfügbaren Entwickler organisiert werden, um die neue Softwareplattform aufzubauen, ohne dabei bestehende Systeme zu vernachlässigen?

Schnell und günstig vs. teuer und (so gut wie) unmöglich

Der einfachste und schnellste Weg, die Einführung der neuen Hardwareplattform synchron mit der Entwicklung einer neuen Softwareplattform zu begleiten, wäre die Aufgabe der alten Plattform, um alle Entwickler ausschließlich am neuen System arbeiten zu lassen. Obwohl diese Vorgehensweise in der Theorie wie eine gute Lösung erscheinen mag, ist sie in der Praxis kaum umsetzbar.

Während der modulare Baukasten im Aufbau ist, werden keine Umsätze generiert. Bis zu dessen Fertigstellung ist das Unternehmen also auf den Vertrieb des alten Produktportfolios angewiesen. Werden trotzdem alle im Unternehmen beschäftigten Entwickler von der alten Softwarearchitektur abgezogen, entstehen folgende Probleme:

  • Unzufriedenheit bei den Kunden wegen fehlender Updates und Bugfixes bei den bestehenden Systemen - diese kann im schlimmsten Fall zum Verlust der Kunden führen.
  • Verluste bei der Qualität und der Wettbewerbsfähigkeit des aktuellen Produktportfolios, während die neue modulare Produktarchitektur in der Entwicklungsphase ist - Konsequenz: Reputationsverlust des Unternehmens.
  • Entdeckung neuer Sicherheitslücken und -risiken in Softwaresystemen machen Instandhaltungsmaßnahmen auch bei alten Systemen erforderlich (siehe die fünf Jahre nach dessen Aufgabe durchgeführten Patches am Betriebssystem Windows XP durch Microsoft).

Die zweite, deutlich risikoärmere Vorgehensweise, eine neue Softwareplattform im Unternehmen einzuführen, ist das Einstellen eines zweiten Entwicklerteams, das sich ausschließlich auf die Entwicklung des neuen Systems konzentriert, während das Stammteam an Entwicklern weiterhin an der alten Plattform arbeitet (oder umgekehrt). In der Praxis ist diese, wenn auch ideal erscheinende, Vorgehensweise aus finanzieller Sicht für kaum ein Unternehmen tragbar. Denn unter diesen Umständen müssten über mehrere Jahre hinweg zwei komplette Systeme unterstützt werden (siehe Grafik).

Leseempfehlung: Wie Sie Entwicklungszeiten und - kosten Ihrer Softwaresysteme effektiv reduzieren können, lesen Sie in unserem Blog-Artikel zum Thema “Erhöhte Qualität und Effizienz in der Softwareentwicklung durch Modularisierung”.

Die typische Vorgehensweise: Teams aufsplitten und externe Ressourcen hinzuziehen

Da keine der beiden oben beschriebenen Methoden in der Praxis umsetzbar sind, entscheiden sich die meisten Unternehmen für einen Mittelweg. Während einige wenige Entwickler mit der Wartung der alten Softwareplattform beauftragt werden, arbeitet der Großteil an der neuen Plattform. Um den entstehenden Workload zu stemmen, müssen oftmals zusätzliche Ressourcen herangezogen werden, um die Instandhaltung der alten Plattform zu gewährleisten.

Aber auch bei dieser Vorgehensweise kann es Probleme geben:

  • Bei größeren Problemen mit dem alten Softwaresystem ist unter Umständen das Know-how und die Expertise der Entwickler gefragt, die mit dem Aufbau der neuen Plattform beschäftigt sind, aber bis zur Problembehebung wieder an der alten Plattform mitarbeiten müssen.
  • Externe Ressourcen müssen zu Beginn von erfahrenen Entwicklern im Team eingearbeitet werden, was weniger Zeit für tatsächliche Arbeit am System bedeutet.
  • Mit der Instandhaltung der alten Softwareplattform beauftragte Entwickler fühlen sich ausgeschlossen, da sie gefühlt auf das Abstellgleis manövriert werden.

Durch die oben beschriebenen Faktoren kann es zu Verzögerungen im Entwicklungsprozess kommen. Die Konsequenz: Trotz Aufteilung der Ressourcen kann es passieren, dass über einen Zeitraum von zwei bis vier Jahre hinweg zwei Softwaresysteme gepflegt werden müssen. Außerdem verschiebt sich der Zeitpunkt der Einführung der neuen Softwareplattform, die das modulare Baukastensystem unterstützen soll, dadurch immer weiter nach hinten. Die mit der Modularisierung angestrebte Kostenersparnis und die Vorteile einer modularen Produktarchitektur bleiben vorerst aus.

Leseempfehlung: Mehr zu den Vorteilen eines modularen Baukastens lesen Sie in unserem Blog-Artikel “Von Komplexität zu Profitabilität – Der Wert eines Baukastensystems“.

Die Lösung: Modularisierung der Software vor der Modularisierung der Hardware in Angriff nehmen

Allzu häufig passiert es, dass die Software bei der Modularisierung zunächst vernachlässigt und erst viel später im Prozess berücksichtigt wird. Das Resultat: Die Entwicklungskosten schnellen in die Höhe und der Aufwand auf Seiten der Entwickler ist umso größer, da diese unter Zeitdruck auf eine modulare Softwarearchitektur umstellen müssen, um mit der Hardware mitzuhalten. Unternehmen können dem vorbeugen, indem sie mit der Modularisierung ihres existierenden Softwaresystems starten, bevor die Hardware modularisiert wird.

Einer der Gründe, die für eine modulare Softwarearchitektur sprechen, ist die Entkopplung der Software- und Hardwareplattformen, die es ermöglicht, zukünftige Änderungen der Hardware zu antizipieren. Eine passende Architektur der Software, bei der Module entkoppelt sind, ermöglicht es, dass zukünftige Features der neuen Plattform schon frühzeitig in Modulvarianten der Softwareplattform vorgesehen werden.

Leseempfehlung: Mehr zu den Vorteilen einer modularen Softwarearchitektur lesen Sie in unserem Blog-Artikel “Digitalisierung und Industrie 4.0 - Mit modularer Maschinensoftware”.

Wird zuerst die alte Plattform modularisiert, kann dasselbe Entwicklerteam später sowohl die neue als auch die alte Softwareplattform (und damit auch beide Hardwareplattformen) unterstützen, indem vorgenommene Modifikationen (Patches, Erweiterungen etc.) in die ältere Softwareversion eingepflegt werden. Die Doppelarbeit bei der Instandhaltung zweier verschiedener Systeme kann so auf ein Minimum reduziert werden. Ermöglicht wird dies durch die Tatsache, dass die Softwaresysteme zur Unterstützung der jeweiligen Hardwareplattformen in vielen Komponenten (z. B. Datenbanken, Alarmsysteme, Dateisysteme und externe APIs) übereinstimmen. So wird es einfacher, neue Features, Funktionen und Updates auch für die alten Softwaresysteme umzusetzen.

Der einzige Nachteil dieser Vorgehensweise besteht darin, dass das Implementieren des modularen Baukastens durch das Vorziehen der Modularisierung des alten Softwaresystems nach hinten verschoben wird. Daher sollte möglichst früh mit der Modularisierung der Software begonnen werden, idealerweise vor der Modularisierung der Hardware. Andernfalls kann die Qualität der neuen Software beeinträchtigt sein, da bis zur Markteinführung (Launch) der modularen Hardwareplattform nicht genug Zeit für die Entwickler bleibt, eine qualitativ hochwertige Softwarelösung zu entwickeln.

Modulare Softwarearchitektur am Beispiel Microsoft

Eines der bekanntesten Beispiele für eine funktionierende modulare Softwareplattform ist das Computerbetriebssystem Microsoft Windows. Die Plattform ermöglicht es, unabhängig von den Hardwaretreibern der Hardwarehersteller Systemerweiterungen einzuführen, ohne dass dabei wichtige Softwareanwendungen (z.B. Microsoft Office) beeinträchtigt werden. Das Ergebnis: Anwendungen wie Office laufen auf Rechnern mit Windows 7, 10 oder 11 sowie auf Rechnern von verschiedenen Hardware- und Chipherstellern gleichermaßen gut.

Fazit: Erfolgreiche Hardwaremodularisierung beginnt mit einer modularen Softwarearchitektur

Auch für Unternehmen, die einst auf Hardware spezialisiert waren, spielt Software heutzutage eine nicht zu unterschätzende Rolle. Software wird bleiben und ihre Relevanz wird in Zukunft weiter steigen. Während die Hardware verschiedener Produktvarianten immer ähnlicher wird, wird die Softwarekomponente zum entscheidenden Unterscheidungsmerkmal aufsteigen, das über den Erfolg eines Produkts in einem zunehmend wettbewerbsintensiven Markt entscheidet.

Der Wert eines Baukastensystems für Hardwareprodukte bleibt trotz der zunehmenden Verschiebung von Hardware zu Software bestehen. Um die Vorteile, die ein modulares System mit sich bringt, so schnell wie möglich zu realisieren, empfiehlt es sich, frühzeitig mit dem Aufbau einer modularen Softwarearchitektur zu beginnen. Dadurch wird ein Umstieg auf die neue modulare Produktarchitektur gewährleistet, ohne dabei in Probleme bei der Einteilung der verfügbaren Ressourcen für die Entwicklung zu laufen. Mit der richtigen Vorgehensweise können Sie so die Anzahl Ihrer Entwickler konstant halten und gleichzeitig die neue und alte Hardwareplattform unterstützen.

Erfahren Sie mehr darüber, wie Sie Mechanik, Elektronik und Software gemeinsam und ganzheitlich modularisieren können in unserem Webinar "Software-Architektur für Hardware-Unternehmen":

 

Autor

Roger Kulläng 

Senior Specialist Software Architecture 
roger.kullang@modularmanagement.com

LinkedIn