Anforderungen grafisch gestalten Modellieren mit UML und SysML

Autor / Redakteur: Christel Sohnemann* / Martina Hafner

Dieser Beitrag beschreibt anhand einer praxisbewährten Methodik, wie Sie strukturiert fachliche Beschreibungen von Systemabläufen detaillieren können, um ein gemeinsames Systemverständnis zwischen Auftraggeber und Auftragnehmer zu erzielen. Sie erfahren, wie Sie Anforderungen mit Elementen der Modellierungssprache SysML darstellen können, um so die vielfach geforderte Verfolgbarkeit (Traceability) zu erhalten.

Firmen zum Thema

Bild: pixelio.de, Rosenstaude
Bild: pixelio.de, Rosenstaude
( Archiv: Vogel Business Media )

Kennen Sie das auch? Es ist nicht mehr viel Zeit bis zum Release, alles lief bisher ganz gut, die Software scheint fast fertig und dann fällt plötzlich auf, dass der Kunde ein ganz anderes Verständnis von der Umsetzung einer Anforderung hatte als man selbst. Ganz nebenbei entdeckt ein Kollege, dass die Funktionalität, die das Team bisher beim angebundenen externen System wähnte, jetzt doch noch realisiert werden muss. Und haben wir überhaupt an allen entscheidenden Stellen die Performance-Anforderung XY bedacht?

Viele dieser und ähnlicher Probleme lassen sich durch ein strukturiertes und methodisches Vorgehen im Rahmen der Anforderungsanalyse und Detaillierung gezielt und frühzeitig klären.

Graphische Notationen stellen Systemzusammenhänge schnell erfassbar dar. Hierfür bieten sich Diagramme der UML oder der SysML an, die oftmals leichter verständlich sind als komplizierte und lange Texte. UML hat sich als weltweiter OMG-Standard der Softwaremodellierung seit über 10 Jahren bewährt; SysML ist ein jüngeres Kind der OMG. Als standardisierte Modellierungssprache für interdisziplinäre Systeme basiert sie auf der UML.

SysML geht jedoch gezielt auf die Probleme komplexer Systeme ein, an deren Realisierung mehrere unterschiedliche Ingenieursdisziplinen beteiligt sind, beispielsweise Hubschrauber, Teleskope, Herzschrittmacher, usw. SysML bietet im Gegensatz zur UML die Möglichkeit, mit Hilfe des „Requirement“-Elements (nicht-funktionale) Anforderungen zu modellieren. Dies ist natürlich auch für eingebettete Systeme sehr wertvoll, wo besonderer Augenmerk auf nicht-funktionale Anforderungen gelegt werden muss. Modellierte (nicht-funktionale) Anforderungen können mit weiteren Modellelementen in Beziehung gesetzt werden, um so die vielfach geforderte Verfolgbarkeit von Anforderungen im Modell sichtbar zu machen.

Wie komme ich von den Anforderungen zum Systemdesign?

Bild 1: Systemkontextdiagramm mit UML (Archiv: Vogel Business Media)

Ein guter Start beim Ermitteln der Anforderungen ist das Abstecken der Systemgrenzen mit Hilfe des Systemkontextdiagramms (Bild 1). Das Zielsystem wird als Blackbox mit Hilfe einer UML-Komponente oder eines SysML-Bausteins modelliert. Die direkt angrenzenden Fremdsysteme und Nutzer, welche mit dem Zielsystem interagieren, werden durch Akteure visualisiert und mit Kommunikationsverbindungen an das Zielsystem angeschlossen.

Die Projektbeteiligten erstellen das Systemkontextdiagramm gemeinsam und kommen so zu einem gemeinsamen Systemverständnis. Der Systemkontext sollte deshalb vor Erheben der Anforderungen im Idealfall vollständig ermittelt werden. Die notwendigen Diskussionen zur Klärung des Systemkontexts können sehr anstrengend sein: schnell wird deutlich, welche Projektbeteiligten recht unterschiedliche Vorstellungen vom Zielsystem haben, wer Funktionalität bei einem Akteur erwartet oder vom System selbst.

Diese Fragen so frühzeitig wie möglich zu klären kann entscheidend für den Erfolg Ihres Projekts sein! Mit Hilfe des Systemkontexts wird klar, für welche umliegenden Fremdsysteme später Schnittstellenanforderungen definiert werden müssen und für welche angrenzenden Anwender Nutzerschnittstellen zu ermitteln sind.

Ist die Systemgrenze geklärt, wenden wir den Blick in das Innere der Blackbox, sie wird zur „Whitebox“. Welche Dienstleistungen erwarten die Akteure vom System, was sind also die funktionalen Anforderungen des Systems? Welche nicht-funktionalen Anforderungen setzen den Rahmen für den Systementwurf?

Systemanwendungsfälle beschreiben die Systemdienstleistungen und werden in UML und SysML durch Ellipsen notiert. Motiviert durch einen fachlichen Auslöser, führen sie zu fachlichen Ergebnissen und sind zeitlich zusammenhängend. Jeder mögliche Systemablauf ist ein Systemanwendungsfall und verfeinert und detailliert die funktionalen Anforderungen an das System.

Bild 2: Systemanwendungsfall und Anforderungen (Archiv: Vogel Business Media)

Doch was ist mit den nicht-funktionalen Anforderungen? Auch sie sind für die möglichen Systemabläufe relevant. Nicht-funktionale Anforderungen beschreiben wir mit dem Requirement-Element der SysML und setzen sie mit Hilfe von „refine“ oder „trace“ mit dem Systemanwendungsfall in Beziehung (siehe Abbildung 2 ). Übersichtliche Beziehungsmatrizen, in welchen der Zusammenhang zwischen funktionalen und nicht-funktionalen Anforderungen dargestellt wird, lassen sich dann von Modellierungswerkzeugen oft automatisch generieren.

Bild 3: Anwendungsfallbeziehungen (Archiv: Vogel Business Media)

Viele Modellierungswerkzeuge bieten übrigens eine Integration mit Requirement Management Werkzeugen. Mit ihnen lassen sich Anforderungen verwalten und beschreiben und in ein Modellierungswerkzeug exportieren. Im Modell können wir sie mit SysML entweder untereinander in Beziehung setzen (nested, copy, deriveReqt), mit Analysemodellelementen detaillieren (refine), durch Systemdesignelemente erfüllen (satisfy) oder durch Testmodelle die Testbarkeit nachweisen (verify) (Siehe Abbildung 3). Damit ist eine durchgängige Verfolgbarkeit während der gesamten Systementwicklung möglich – wenn sie denn gefordert ist.

(ID:283092)