Technologien
Oktober 2022
Je einfacher die Anforderungen einer Systementwicklung bestimmt wurden, desto besser ist das Ergebnis. Das bedeutet aber auch, dass diese vollständig sein müssen. Um dabei eine konsequente Konzentration auf das Wesentliche zu erreichen, haben Helbling-Experten fünf Schritte ausgemacht. Dieses Vorgehen im Anforderungsmanagement hat sich in unzähligen Projekten bewährt, die Helbling für und mit Kunden umgesetzt hat. Unter anderem kommt hierbei der Black-Box-Ansatz zum Tragen.
Systementwickler sind häufig mit Komplexität konfrontiert. Aus Komplexität entstehen Risiken, denn unser Gehirn kann das dynamische Zusammenspiel von Strukturen und Wirkzusammenhängen nur in begrenztem Umfang überschauen. Der Anforderungsentwicklung kommt dabei eine besondere Bedeutung zu, denn sie steht am Beginn der Systementwicklung und determiniert damit ihren Erfolg. Einfachheit bietet in diesem Zusammenhang grosses Potential für Risikominimierung und Effizienzgewinne. Einfachheit ist jedoch nicht einfach zu erreichen.
Die Praxis zeigt, dass Anforderungen dem Paradigma der Einfachheit oft nicht genügen. Dies führt zu Missverständnissen und langwierigen Abstimmungsprozessen sowie erhöhtem Aufwand für Änderungsmanagement, Dokumentation und Systemtest.
Helbling hat in allen Bereichen Erfahrung mit der Übersetzung des Kundenwunsches in erfolgreiche Innovationsprojekte. Der Umgang mit Unschärfe und Übersetzung in bestmögliche Projektergebnisse ist ein zentraler Baustein der Entwicklungsdienstleistung von Helbling.
In Helbling-Projekten hat sich somit bei der Systementwicklung bewährt, eine qualifizierte Anforderungsentwicklung zu verfolgen. Das erhöht die Qualität des Produkts, ermöglicht grössere Freiheiten bei der Lösungsfindung, führt zu mehr Harmonie in der Kundenbeziehung und fördert ganz allgemein den Spass an der Entwicklungszusammenarbeit.
1. Schritt: Konzentration auf das Wesentliche
Im ersten Schritt lassen sich Anforderungen vereinfachen, indem Vorlagen zurechtgestutzt werden. Zudem können die Dokumentenstruktur vereinfacht und nicht benötigte Inhalte weggelassen werden. Wegfallen können etwa folgende Aspekte: Redundante Projektinformationen, Anforderungen ausserhalb des betrachteten Systemumfangs und Anforderungen an den Entwicklungsprozess. Relevante Aspekte von Normen und Standards sollten interpretiert und als konkrete funktionale Anforderungen formuliert werden, anstatt dass pauschal auf die entsprechende Norm verwiesen wird.
2. Schritt: Nur die Schnittstellen zählen
Überflüssige Komplexität in den Anforderungen ergibt sich häufig aus der fehlenden Trennung zwischen dem geforderten Verhalten an den Schnittstellen des betrachteten Systems und Festlegungen in Bezug auf die Lösung. Um dies zu vermeiden, verfolgt Helbling konsequent einen Black-Box-Ansatz.
3. Schritt: Lösungsraum öffnen
Für eine qualifizierte Anforderungsentwicklung ist es wichtig, die betrachtete Systemebene und damit deren Grenzen und Schnittstellen vollständig und exakt zu klären. Anforderungen, die sich auf einzelne Teilsysteme beziehungsweise Architekturkomponenten beziehen, sind bereits Teil der Lösung. Sie schränken den Lösungsraum gegebenenfalls ein. Als Anforderungen sollten sie nur dann formuliert werden, wenn eine klare Trennung zwischen den jeweils betrachteten Ebenen gewährleistet ist.
4. Schritt: In die Vergangenheit schauen
Anforderungen sind abhängig von internen Systemzuständen. Interne Systemzustände sind im Sinne der Systemtheorie das Ergebnis eines Ausgangszustands und einer Abfolge von Signalen an den Eingangsschnittstellen. Damit sind in dynamischen Systemen die Anforderungen auch abhängig von Ereignissen in der Vergangenheit. Das System wird damit gedächtnisbehaftet. Für eine klare Anforderungsentwicklung ist es wichtig, sich dessen bewusst zu sein und Betriebsmodi, Systemzustände, Daten und ähnliche, zeitlich veränderbare Systemeigenschaften mit einzubeziehen.
5. Schritt: Systemverhalten definieren
Systemgrenzen, Schnittstellen und interne Zustände sind nicht die Anforderungen selbst, sondern bilden die Basis für die einfache Formulierung von passenden Anforderungen. Die DNA jeder Anforderung ist dabei die Beschreibung einer gewünschten Auswirkung, die sich als Folge eines Ereignisses unter einer bestimmten Bedingung einstellen soll. Sind alle Systemschnittstellen und internen Zustände vollständig bestimmt, lässt sich auch das gewünschte Systemverhalten prinzipiell vollständig definieren. Etwa so, wie es die folgende Übergangstabelle beispielhaft zeigt:
Das System wird in diesem Sinne als Zustandsautomat aufgefasst, dessen Zustandsübergänge in ihrer Gesamtheit das Systemverhalten spezifizieren. Jede Zelle der Tabelle kann als Anforderung formuliert werden. Für zeitkontinuierliche oder zeitdiskrete Signalverarbeitung wie etwa in digitalen Reglern werden die Anforderungen analytisch definiert – das heisst über Differenzial- beziehungsweise Differenzengleichungssysteme. Auch hier entspricht die Anforderungsdefinition der Beschreibung eines Ursache-Wirkungs-Zusammenhangs, basierend auf Eingangssignalen und internen Zuständen, die sich abhängig vom zeitlichen Verlauf der Eingangssignale ändern.
Beispiel: Lösungsbeschreibung statt Anforderungsentwicklung
In einem Entwicklungsprojekt beauftragte ein Unternehmen bei einem Dienstleister die Integration eines Sensors in ein bestehendes eingebettetes System. Statt die Wirkzusammenhänge mit Bezug auf die Systemschnittstellen und interne Zustände zu beschreiben, enthielt die Anforderungsspezifikation Flussdiagramme im Sinne eines Software-Designs. Dieses Flussdiagramm stellt das Vorgehen dar:
Weniger aufwändig wäre eine bessere Anforderungsanalyse gewesen. Was ist die Intention hinter dem Funktionsaufruf „Starte Zeitzählung“? Die Übertragung der Flussdiagramme in eine Darstellung als Zustandsautomat führt zu folgendem vereinfachten Diagramm:
Die zugrundeliegende Anforderung konnte nun aus den Zustandsübergängen abgelesen werden: „Wird ein Aufwachereignis im Ruhezustand erkannt und anschliessend über die Funkstrecke eine Anfrage empfangen, dann soll das System innerhalb von zwei Minuten in den Ruhezustand wechseln.“ Diese Anforderung ist präzise testbar und lässt genügend Raum für eine Lösungsfindung, die Querwirkungen mit existierenden Funktionalitäten berücksichtigt.
Zusammenfassung: Einfachheit in der Anforderungsentwicklung bedeutet Vollständigkeit bei minimalem Umfang
Um optimale Voraussetzungen für eine Systementwicklung zu schaffen, bedarf es Einfachheit und Vollständigkeit. Dies erreicht man durch die Konzentration auf die wesentlichen, das Systemverhalten bestimmenden Aspekte. Dabei zählt ausschliesslich das Verhalten an den Schnittstellen. Der Fokus sollte hierzu auf den gewünschten Auswirkungen an den Ausgangsschnittstellen liegen – basierend auf den aktuellen und vergangenen Ereignissen an den Eingangsschnittstellen. In Helbling-Projekten wurde die Erfahrung gesammelt, dass Anforderungen dabei immer als Zusammenhang zwischen Ursache und Wirkung beschrieben werden sollten. Helbling führt deshalb mit seinen Kunden in diesem Sinne eine sorgfältige und gründliche Anforderungsanalyse in einer frühen Projektphase durch. Im Vergleich zu Fällen, bei denen dies nicht stattfindet, verbessert dieses Vorgehen die Qualität bei geringeren Zeit- und Kostenrisiken.
Autor: Ralf Hediger
Hauptbild: iStock