Was die Parallelentwicklung von Hardware und Software für Systems Engineers bedeutet
Traditionell arbeiten die Entwickler von Hardware und Software kaum zusammen. Das liegt daran, dass es in der Vergangenheit primär nur zwei Szenarien gab: Entweder wurde Software entwickelt, um Hardware zu steuern; Oder die Hardware hat die Software befähigt, aktiv zu werden. So oder so, die Hardware wurde in der Regel zuerst entwickelt, eine Parallelentwicklung fand kaum statt.
Doch heute besteht ein enormer Druck, die Entwicklung von Hardware und Software zu parallelisieren. Das wird unter anderem von den vielen neuen Anwendungen des Internet of Things (IoT) vorangetrieben. Das erfordert Systems Engineers, die dies verstehen.
Dieser Artikel wurde unter anderem vom Artikel meines Kollegen Adrian Rolufs inspiriert mit dem Titel Why The Demand For System Engineers Is So High. Adrian geht darin allerdings mehr auf die Implikationen im Arbeitsmarkt ein. Was wieder zeigt, wie wichtig nach wie vor die Rolle des Menschen ist.
Steuerungssoftware
Seit Jahrzehnten werden Maschinen von Software gesteuert. In solchen Szenarien steht die Hardware ganz klar im Vordergrund. Zum Beispiel soll eine CNC-Maschine ein Werkstück bearbeiten. Die Kunden interessieren sich zunächst für die maximale Größe des Werkstücks, die verfügbaren Werkzeuge, usw. Wenn die Hardware steht, muss „nur noch“ die Software geschrieben werden. Beim Design der Hardware werden also die Anforderungen an die Software kaum berücksichtigt.
Befähigende Software
Im zweiten Szenario steht die Software im Vordergrund. Um eine Funktion in der Welt auszuführen, braucht eine Software zwangsläufig eine Möglichkeit, mit der Welt zu interagieren. Ein entsprechendes Beispiel wäre ein Kaffeeautomat. Die Software braucht zwangsläufig Sensoren und Aktuatoren, um die Funktion ausführen zu können. Hier bestand klassisch ein funktionsorientiertes Denken.
„Hardware first“ führt zu Problemen
Wenn die Hardware als gegeben angenommen wird, dann kann sie nicht optimiert werden. In der Praxis führt das zu unnötiger Komplexität, bspw. weil die notwendigen Informationen von mehreren Sensoren abgeleitet werden müssen, oder weil die Hardware Komplexität in die Software verlagert, die in der Hardware besser aufgehoben wäre.
Dadurch, dass die Domänen oft „gesetzt“ sind, und auch dadurch, dass Hardware und Software unterschiedlich entwickelt werden, findet nur wenig Austausch statt. Das Softwareteam stellt kaum Anforderungen an die Hardwareentwickler, und diese fragen selten nach.
Dieser Ansatz hat Jahrzehnte lang funktioniert – nicht sonderlich gut, aber gut genug. Doch wir erreichen nun einen Punkt, wo es schwer ist, mit diesem Ansatz wettbewerbsfähig zu bleiben. Eine Parallelentwicklung von Hardware und Software kann hier zu besseren und innovativeren Produkten beitragen.
Internet of Things (IoT)
Nun gut, ich komme um das Buzz-Wort „IoT“ nicht herum. Doch dies ist einer der Treiber von dieser Problematik. Denn durch IoT werden Hardware und Software wesentlich enger miteinander verzahnt, als in der Vergangenheit. Auch da ist ein Kaffeeautomat wieder ein gutes Beispiel – links ein altes, rechts ein modernes Gerät:
Bild Links: Wikipedia; Bild Rechts: CafeX
Um den Kaffeeautomat von CafeX wurde in letzter Zeit viel Wind gemacht. Ob wir so einen Roboter brauchen, und ob der Kaffee wirklich besser ist als aus dem Automaten, sei dahingestellt. Aber es ist offensichtlich, dass die Zusammenarbeit und Abstimmung zwischen Hardware und Software viel intensiver ist, als bei den traditionellen Modellen. Ein System wie das von CafeX wird ohne interative Parallelentwicklung kaum zu realisieren sein.
Mit Systemdenken Welten überbrücken
Um solche Entwicklungen zu ermöglichen, müssen Hardware- und Softwareteams enger und kontinuierlich zusammenarbeiten. Und um das Beispiel des Kaffeeautomaten aufzugreifen, sicherlich spielen da auch noch andere Disziplinen mit hinein, wie Baristawissen. Schließlich soll der Kaffee auch gut schmecken. Das erfordert Disziplin-übergreifendes Denken. Dazu habe ich übrigens kürzlich mit meiner Kollegin Cary Bryczek einen Artikel im IREB RE-Magazin veröffentlicht.
Da die Disziplinen teilweise doch sehr unterschiedlich ticken, muss jemand die Rolle des Systemingenieurs übernehmen um zu koordinieren. Manchmal hat diese Rolle einen anderen Namen, aber das ist unerheblich. Weiterhin findet in manchen Organisationen bereits eine gute Zusammenarbeit zwischen Hardware und Software statt. Doch in der Regel sind mehr als nur zwei Disziplinen beteiligt, die anderen müssen auch mit ins Boot geholt werden.
Fazit: Systemdenken ist nicht nur ein Wettbewerbsvorteil, es ist inzwischen überlebenswichtig. Parallelentwicklung ist da nur ein Aspekt. Es ist heute kaum mehr möglich, innovative Produkte ohne Systemdenken zu entwickeln.
Titelbild: CafeX