Was bedeutet das Internet der Dinge (IoT) für das Requirements Engineering?

Das Internet der Dinge (Internet of Things, IoT) ist derzeit ein heißes Schlagwort. Es besagt einfach, dass wir physische Geräte nehmen und sie mit dem Internet verbinden. Wie bei vielen Schlagwörtern ist das nicht wirklich neu: Das wird schon seit Jahrzehnten gemacht. Aber in der Vergangenheit ging es dabei meist um industrielle Nischenanwendungen. Jetzt ist IoT...

Das Internet der Dinge (IoT) ist derzeit ein heißes Schlagwort. Es besagt einfach, dass wir physische Geräte nehmen und sie mit dem Internet verbinden. Wie bei vielen Schlagwörtern ist dies nichts wirklich Neues: Dies geschieht seit Jahrzehnten. Aber früher ging es dabei typischerweise um industrielle Nischenanwendungen. Jetzt bewegt sich IoT in den Verbraucherbereich. Vor einigen Jahren gab es einiges Gelächter, als die Leute über die “Notwendigkeit” diskutierten, Toaster und Kaffeemaschinen mit dem Internet zu verbinden. Aber jetzt ist das Auto das heißeste “Ding”, das mit dem Internet verbunden werden kann. Aufgrund des hohen Werts und all der Möglichkeiten hat dies dem IoT einen enormen Schub gegeben.

Aber was bedeutet das für das Requirements Engineering? Wir haben bereits besprochen einige disruptive Trends kürzlich. Außerdem gibt es viele Trends, die nicht mit dem IoT zusammenhängen (z. B. agile Arbeit, in kurzen Iterationen usw.). Aber hier sprechen wir spezifisch über den Einfluss des IoT.

Hardware und Software entwickeln sich gemeinsam weiter

Früher wurden Hardware und Software nicht gleichberechtigt entwickelt: Entweder wurde zuerst die Hardware entwickelt und dann die Software, um sie anzusteuern. Denken Sie zum Beispiel an eine computergesteuerte Schneidemaschine.

Es gab auch Szenarien, in denen die Software im Vordergrund stand und die Hardware “nachträglich” daran angebracht wurde. Denken Sie zum Beispiel an einen Münzkaffeeautomaten.

Aber heute sollten Hardware und Software gemeinsam weiterentwickelt werden, damit sie für die jeweilige Aufgabe optimiert sind. Dies wird zu neuen und innovativen Designs führen.

Was das für Anforderungen bedeutet: Sowohl Hardware- als auch Softwareanforderungen müssen eine Rückverfolgbarkeit zu den übergeordneten Anwendungsfällen und Anforderungen aufweisen. Weiter “unten” müssen sie als separate Komponenten behandelt werden, damit die verschiedenen Teams sie auf die für sie am besten geeignete Weise weiterentwickeln können (typischerweise agil für Software, etwas formeller für Hardware). Schnittstellen entwickeln sich zusammen mit den Komponenten.

Over-the-Air-Softwareupdates

Heute klicken wir gedankenlos auf “Aktualisieren” bei Apps, aber die Idee gibt es noch gar nicht so lange. Das Spiel ändert sich grundlegend, sobald diese Updates sicherheitskritisch sind, wie es bei Autos oder medizinischen Geräten der Fall ist.

Over-The-Air-Updates bieten riesige Chancen, bergen aber auch Gefahren. Daher sind Sicherheit und Schutz Kernanforderungen und keinesfalls etwas, das man nachträglich bedenkt.

Ein weiterer Aspekt ist, dass Hardware nicht so einfach wie Software aktualisiert werden kann. Daher wird Hardware so einfach und generisch wie möglich gebaut. Das geschieht bereits: Netzwerkausrüstung wird oft “bereit” für nicht existierende neue Technologien ausgeliefert, an denen bereits gearbeitet wird, die aber noch nicht als Standard finalisiert sind (z. B. 5G-Netzwerke). Oder denken Sie an Tesla, das kostenpflichtige Funktionen drahtlos aktivieren kann, indem es die Funktion als Softwarepaket hochlädt.

Was das für Anforderungen bedeutet: Die Hardware wird mit Blick auf zukünftige Erweiterungen und vereinfachter auf Kosten der Software entworfen. Dies wird sich in einfachen Hardwarespezifikationen, aber komplexen APIs und Softwareanforderungen niederschlagen. Auch Produktvarianten werden zunehmend softwarebasiert sein.

Anforderungen werden zur Laufzeit ausgewertet

Requirements-Ingenieure wissen, dass der Kontext eines Systems klar definiert sein muss, da Anforderungen nur in einer gültigen Umgebung erfüllt werden können. Es ist einfach, den Kontext eines Heizkörpers zu definieren (Größe des Raumes, Außentemperatur, Isolierung). Aber der Kontext eines IoT-Geräts liegt völlig außerhalb der Kontrolle. Betrachten Sie ein autonomes Auto, bei dem die Straße mit all ihren Teilnehmern den Kontext darstellt.

Traditionell werden Anforderungen und Kontext im Voraus definiert und als Grundlage für ein Design verwendet. Aber es gibt eine Alternative, die noch nicht weit verbreitet ist: Anstatt die Anforderungen zur Entwurfszeit zu bewerten, bewerten Sie sie zur Laufzeit. Die Theorie dahinter wurde von Gunter, Gunter, Jackson und Zave. Das Ergebnis ist, dass das System zur Laufzeit aus einer Liste gültiger “Designs” auswählen und jenes aktivieren kann, das der gegebenen Situation (dem Kontext) am besten entspricht.

Was das für Anforderungen bedeutet: Zusätzlich zu menschenlesbaren Anforderungen formulieren Requirement Engineers für die Laufzeitauswertung maschinenlesbare Anforderungen und Kontextbeschreibungen.

Anforderungen sind Verhaltensbeschreibungen von Black Boxes

Systeme haben typischerweise eine “Black-Box”-Beschreibung, eine Beschreibung, die das Verhalten erklärt, ohne zu erklären, wie es erreicht wird. Betrachten Sie einen Computermonitor: Uns interessieren nur Eingabe (HDMI-Stecker) und Ausgabe (ein Bild auf dem Bildschirm). Wie dies erreicht wird, ist irrelevant, sei es mit einem LCD-Bildschirm, LEDs oder einer altmodischen Bildröhre. Diese Informationen sind Teil der “White-Box”-Beschreibung.

Wir werden immer mehr sehen verhaltensorientierte Beschreibungen, aus mehreren Gründen:

  1. Es erleichtert die Verwendung von Standardkomponenten.
  2. Technologie verändert sich so schnell, dass es viel einfacher wird, das Innenleben einer Komponente auszutauschen.
  3. Die Implementierung könnte eine künstliche Intelligenz (KI) sein. Ein richtig beschriebenes Verhalten ermöglicht auch die Überwachung auf plausibles Verhalten während der Laufzeit.
  4. Es vereinfacht das Testen auf zwei Arten: das Verhalten der Komponente kann gründlich getestet werden (und der Test wiederverwendet werden) und die Komponente kann durch eine Mock-Komponente ersetzt werden, falls die Komponente selbst noch nicht verfügbar ist.
Was das für Anforderungen bedeutet: Verhaltensgetriebene Anforderungen nehmen zu. Während diese traditionell zur Spezifikation von Interaktionen mit Menschen verwendet werden, werden wir diese auch zunehmend in anderen Szenarien sehen.

Schlussfolgerung

Machen Sie keinen Fehler: Mit dem Aufkommen des IoT wird sich die Arbeit des Requirement Engineers grundlegend verändern. Es handelt sich nicht nur um “mehr vom Üblichen”, sondern um einen echten Paradigmenwechsel. Diese Entwicklungen werden durch die Notwendigkeit von Veränderungen vorangetrieben: Nicht nur während der Entwicklung, sondern auch während des Betriebs. Sie werden auch durch ein exponentielles Wachstum der Komplexität angetrieben, das nur durch “Teile und Herrsche” bewältigt werden kann und zu deutlich mehr Black-Box-Denken führt.

Foto von Andy Kelly auf Unsplash

Ähnliche Beiträge