Kategorien
Anforderungsanalyse

Anforderungen – Wie soll man sie beschreiben? Die Wahl des geeigneten Dokumentationsmittel

Wie beschreibt man eigentlich Anforderungen? Einige sagen, dass eine Satzschablone (eine Anforderung pro Satz) sinnvoll ist. Wie passt aber eine komplexe Anforderung in einen Satz? Und was ist mit Use Cases, mit denen kann man doch auch Anforderungen beschreiben? Und was ist überhaupt ein Use Case? Und wie passt das zum Begriff Geschäftsprozess?

Fragen über Fragen.

Dieser Artikel soll ein bisschen Licht ins Dunkel bringen und einen praktikablen Ansatz aufzeigen.

 

Definition Anforderung

Leider kann man mit den gängigen Definitionen über eine Anforderung nicht viel anfangen, da sie alle zu grob sind und in der Praxis zu wenig aussagen. Nimmt man z.B. eine gängige Definition aus IEEE bzw. von IREB, die sich durchaus etabliert haben, stellt man fest, dass das alles und nichts ist.

Definition nach IEEE (Auszug)

Eine Anforderung ist eine Bedingung oder eine Fähigkeit, die ein Benutzer benötigt, um ein Problem zu lösen oder um ein Ziel zu erreichen.

Definition nach IREB aus CPRE Glossar

Eine Anforderung ist:

  1. Eine Bedingung oder Fähigkeit, die von einem Benutzer (Person oder System) zur Lösung eines Problems oder zur Erreichung eines Ziels benötigt wird.
  2. Eine Bedingung oder Fähigkeit, die ein System oder Teilsystem erfüllen oder besitzen muss, um einen Vertrag, eine Norm, eine Spezifikation oder andere, formell vorgegebene Dokumente zu erfüllen.
  3. Eine dokumentierte Repräsentation einer Bedingung oder Eigenschaft gemäß 1. oder 2.

Damit wäre eine Anforderung etwas Einfaches, wie Anforderung eine UserId zu verwenden, die aus 8 Zeichen etc. bestehen soll, oder was komlexeres, wie Geld abheben oder die Zulassung eines KFZs auf dem Straßenverkehrsamt. Alle drei Beispiele sind per Definition Anforderungen.

Anhand der Beispiele kann man erkennen, dass man Anforderung sehr wohl unterscheiden muss. Einen komplexen Ablauf kann man nicht mit einer einfachen Beschreibung wie z.B. mit einer Satz Schablone beschreiben. Da braucht es schon eine geeignete Beschreibungssprache, wie zum Beispiel die UML mit den Use Cases oder auch die BPMN.

Wie geht man vor?

Eine praktische Vorgehensweise wäre es, sich die Anforderung anzusehen und als erstes fest zu stellen, ob sie einen Ablauf beinhaltet oder nicht. Beinhaltet sie keinen Ablauf, wie z.B. die Anforderung an eine UserID, kann man diese mit gewohnten Standard-Mitteln (Text, textuell) beschreiben. Beinhaltet sie einen einfachen Ablauf, der sich vielleicht mit ein oder zwei einfachen Sätzen beschreiben lässt, dann kann man eine solche Anforderung sicherlich auch mit einer Satzschablone beschreiben.

Beispiel: Das herein- und hinauszoomen in einem PDF Reader. Das ist sicher ein ganz einfacher Ablauf, der mit einer Satzschablone einfach zu beschreiben wäre.

„Das System muss dem Benutzer die Möglichkeit bieten, rein- und raus zu zoomen.“

Hierfür ist diese Schablone sicherlich gut geeignet.

Aber was ist, wenn der Ablauf komplizierter ist?

Dann wäre der nächste Test, ob es ein Geschäftsprozess oder einen Geschäftsvorfall ist. Falls es ein Geschäftsvorfall ist, kann man den mit der gängigen Use Case Modellierung umsetzen. Ist es ein Geschäftsprozess kann man diesen mit der BPMN Modellierung umsetzen. Die folgende Grafik zeigt das Ganze im Überblick:

Somit kann man sehr praktikabel jede einzelne Anforderung überprüfen und darüber entscheiden, wie man sie tatsächlich modelliert.

Der praktische Ansatz:

Einfache Anforderung ohne Ablauf oder mit einem sehr einfachen Ablauf kann man mit natürlich-sprachlichen Mitteln (Prosa, Satzschablone) sehr gut dokumentieren. Ist die Anforderung ein Ablauf mit mehren Schritten und der Ablauf ist ein Use Case, nutzt man am besten die Use Case Modellierung. Ist es ein Geschäftsprozess eignet sich die Geschäftsprozeß-Modellierung mit BPMN am besten.

Beispiele und Gegenbeispiele

Die Anforderung in einem online Shop sich den Warenkorb anzeigen zu lassen, würden viele als Use Case modellieren, da die Katalogsuche, die Bestellung der Ware etc. alles Use Cases sind. Das könnte man so machen, aber mit dem Satz: „Falls der Benutzer angemeldet ist, muss das System dem Benutzer die Möglichkeit bieten, sich den Warenkorb anzeigen zu lassen“.

Damit ist alles gesagt! Wozu dafür einen Use Case anlegen, eine Use Case Schablone ausfüllen oder gar ein Aktivitäts-Diagramm zu erzeugen? Denn was würde in der Ablaufbeschreibung des Use Cases drin stehen:

1. Kunde wählt Warenkorb anzeigen beim online Shop

2. Online Shop zeigt Warenkorb dem Kunden.

Das war es! Dafür einen Use Case anlegen, macht wenig Sinn!

Anders herum wäre aber das Ausleihen eines Buches viel sinnvoller als Use Case zu modellieren, als mit einer Satzschablone bzw. natürlich zu beschreiben.

Wenn man den kompletten Ablauf sieht, dann hat man da bestimmt mehr als 5 Bedingungen und viele Ausnahmen. Selbst wenn man die Satzschablone verwendet und einen Satz formuliert wie: „Falls der der Benutzer angemeldet ist, muss das System den Benutzer die Möglichkeit bieten ein Buch auszuleihen“

Was ist mit Randbedingungen und Ausnahmen? Da wäre die Use Case Modellierung mit eine Schablone oder einem Aktivitäts-Diagramm sinnvoller.

Zusammenfassung

Nutzen Sie die gesamten Möglichkeiten, die im Requirements-Engineering existieren und nicht den Golden Hammer! Um eine sinnvolle Beschreibung haben zu wollen, muss man das richtige Mittel einsetzen!

 

 

Kategorien
Anforderungsanalyse

Geschäftsprozess vs. Geschäftsvorfall

Es ist ganz interessant, dass viele Leute auch seit Jahren den Unterscheid zwischen einem Geschäftsvorfall und Geschäftsprozess nicht kennen bzw. anhand der Namensgleichheit (Ähnlichkeit) nie Gedanken darüber gemacht haben, dass da ein gravierender Unterscheid besteht. Das kann man den Leuten sogar nicht verübeln, da die UML selbst keine enge Definition eines Use Cases kennt.

 

Dieser Artikel klärt das Ganze mal auf.

Am besten verstehen kann man das Ganze, wenn man sich erst mal eine Standard-Definition für einen Use Case ansieht. Wobei man hier schon auf ein Begriffsproblem stößt: Use Case und Anwendungsfall, sowie Geschäftsvorfall ist das gleiche, Geschäftsprozeß ist was anderes.

Wieso ist eine Definition eines Use Case so schwierig?

Das liegt daran, dass die UML selbst eine Notation ist. Deswegen ist die Definition im UML Standard auch sehr grob. Die UML ist ja auch keine Vorgehensweise. Erst eine Vorgehensweise definiert Elemente detailliert. Sieht man sich die Definition in der UML an:

„Use cases are a means for specifying required usages of a system. Typically, they are used to capture the requirements of a system, that is, what a system is supposed to do.“ siehe UML Superstructure

So kann man mit dem Use Case jede Art von System modellieren. Die Vorgehensweisen, die UML nutzen, waren da detaillierter und schränken das Ganze ein.

Deshalb ist es meiner Meinung nach sehr wichtig erst mal eine saubere Use Case Definition zu haben. Sonst passieren merkwürdige Dinge bei der Use Case Modellierung. Da modellieren die einen Partysysteme mit Cocktail mixen als Use Case, die anderen modellieren Gartensysteme mit Blumen gießen als Use Case. Das eigentliche Ziel sind aber doch EDV Systeme. Warum also diese Definition nicht auf ein vernünftiges Maß reduzieren bzw. bringen? Hier eine praktikable Definition für einen Use Case, die gleichzeitig eine Abgrenzung zum Geschäftsprozess liefert.

Definition für eine Use Case/Anwendungsfall/ Geschäftsvorfall an (Ich verwende ab jetzt Use Case, die anderen Begriffe passen aber auch).

Definition Use Case:

„Ein Use Case ist ein software-gestützter Ablauf, der nach relativ kurzer Zeit ein Ergebnis für einen primären Akteur erzeugt.“

Diese Definition hat sich 1000fach bewährt. Man kann allerdings vielleicht nur etwas damit anfangen, wenn man ein Beispiel dazu nutzt. Das Standard-Bespiel der Weltliteratur ist schon seit über 25 Jahren der Use Case: Geld abheben am Geldautomat.

Ein klassischer Use Case. Man macht kurz was, Karte einschieben etc. und man erhält nach kurzer Zeit das Geld (Ergebnis).

Dazu kann man sich beliebige Bespiele überlegen bzw. im Internet finden. Anmelden auf einer Webseite, Personedaten ändern, etwas Bestellen, im Internetbanking überweisen, Kontostand abfragen, Umsätze einsehen etc..

Übrigens gabs tatsächlich bei der Sparkasse Geldautomaten auf denen neben der Abbruch Taste „Geschäftsvorfall abbrechen“ stand.

Ist der Ablauf ein Use Case?

Als Prüfung gilt:

  • Ist der Ablauf Computer (Software) gestützt?
  • Ist der Ablauf kurz (vertretbare Wartezeit)
  • Erzeugt er ein Ergebnis für den primären Akteur?
  • Findet kein Akteurwechsel statt?

Sind diese Fragen mit Ja zu beantworten, ist die Wahrscheinlichkeit sehr hoch, dass es sich um einen Use Case handelt.

So weit, so gut, aber was passiert jetzt bei der KFZ Zulassung oder besser aufgedrückt beim Ablauf „Zulassen eines PKWs“.

Jeder, der schon mal ein Auto zugelassen hat, weiß, dass das schon etwas länger dauern kann. Ferner sind verschiedene Personen (Akteure) beteiligt Außerdem gibt es manuelle Tätigkeiten, wie das Kleben der Plaketten und das Anschrauben der Schilder. Es gibt sogar maschinelle Tätigkeiten, wie das Prägen der Schilder.

Man sieht recht schnell, dass die Use Case Definition hier nicht passt. Somit kann man prüfen, ob eher ein Geschäftsprozess vorliegt.

Ist der Ablauf ein Geschäftsprozess?

Als Prüfung gilt:

  • Wechselt der Akteur?
  • Gibt es Wartezeiten im Ablauf?
  • Gibt es im Ablauf manuelle Tätigkeiten?
  • Gibt es im Ablauf maschinelle Tätigkeiten?

Sind diese Fragen mit Ja zu beantworten, ist die Wahrscheinlichkeit sehr hoch, dass es sich um einen Geschäftsprozess handelt.

Wieso ist nur die Wahrscheinlichkeit hoch?

In beiden Fällen habe ich geschrieben, dass die Wahrscheinlichkeit hoch ist, wenn man die jeweiligen Fragen mit Ja beantwortet, es sich um einen Use Case bzw. einen Geschäftsprozess handelt.

Es gibt keine ganz klare Grenze. Meist allerdings eher bei den Geschäftsprozessen. Es kann sein, dass es sich, obwohl keine manuellen und oder maschinellen Tätigkeiten im Ablauf vorhanden sind, es sich trotzdem um einen Geschäftsprozess handelt.

Ferner waren bestimmte Abläufe, die früher ein Geschäftsprozess waren und heute ein Use Case bzw. Anwendungsfall ist. Bespiel: Das Anlegen eines Girokontos. Früher musste man zur Bank, einen Antrag ausfüllen, dann wurde der bearbeitet etc., also ein klassischer Geschäftsprozess. Heute kann man ein Girokonto innerhalb kurzer Zeit samt allen Prüfungen übers Internet anlegen und sofort verwenden, somit heute ein Use Case.

Der Zusammenhang zwischen Geschäftsprozess und Use Case

Wenn die Abgrenzung nun grob klar ist, stellt sich die Frage, ob es einen Zusammenhang zwischen Use Case und Geschäftsprozess gibt.

Den gibt es natürlich. Im Geschäftsprozess „KFZ zulassen“ gibt es einen einzelnen Schritt (Aktivität), der das Bezahlen der Zulassung darstellen wird. Im Geschäftsprozess-Modell interessiert mich aber nur, das ein Bezahlbetrag in die Aktivität hinein geht und eine Quittung hinausgeht. Ferner noch die Art, wie ich bezahlen will, z.B. Kreditkarte oder EC-Karte.

Das würde völlig ausreichen, um den Geschäftsprozess zu verstehen. Aus diesem Schritt wird dann ein Use Case, den ich dann im Use Case Modell weiter detailliert herunterbrechen kann.

Gegenüberstellung

Geschäftsprozess Geschäftsvorfall/Use Case
Kompletter Geschäftsmäßiger Ablauf z.B. in der KFZ Zulassung Abschnitt eines Geschäfts­prozesses oder eigenständig z.B. Bezahlen Zulassung, Geld abheben am Geldautomat
Akteurwechsel Kein Akteurwechsel (primärer Akteur bleibt gleich)
Manuelle Tätigkeiten möglich Keine Manuellen Tätigkeiten
Maschinelle Tätigkeiten möglich Keine Maschinellen Tätigkeiten
Erzeugt ein geschäftsmäßiges Ergebnis Erzeugt ein (Teil) Ergebnis, das weiter verwendet werden kann, entweder direkt oder als Ergebnis eines Schritts im Geschäftsprozeß

Zusammenfassung:

Sie sehen, es gibt schon einen gravierenden Unterschied zwischen Geschäftsprozess und Use Case. Ferner werden normalerweise Geschäftsprozesse und Use Cases mit unterschiedlichen Notationen modelliert. So gibt es für die Use Cases die UML, während es für die Geschäftsprozesse die BPMN gibt.

Allerdings gibt es auch die Möglichkeit Geschäftsprozesse mit UML Use Cases zu modellieren (Später mehr dazu).

Kategorien
Top

Software-Engienering aus meiner Sicht –

My Software-Engineering

Herzlich Willkommen auf meiner Webseite mit dem Titel My Software Engineering.
Auf dieser Seite geht es um meine Erfahrungen und um meine Sicht auf das Thema.

Verbesserungspotential

Es gibt kaum einen Bereich, in dem man auf so viel Halbwissen trifft, wie im Software-Engineering (SWE). Jeder, der meint Programmieren zu können, meint er kann auch Software-Engineering und/oder/auch UML und darüber schreiben. Damit werden Dinge, gerade hier im Internet veröffentlicht, die -meiner Meinung nach- völlig falsch sind und/oder völlig überholt sind, aber immer noch als Standard angesehen werden.

Ich habe mittlerweile in dem Bereich SWE über 25 Jahre Erfahrung, gesammelt in vielen Projekten und 100derten vom Schulungen und Workshops. Leider habe ich aufgrund der Arbeit keine Zeit gehabt darüber zu schreiben bzw. etwas zu veröffentlichen.

Seit Jahren habe ich mich mit dem Gedanken getragen mal ein Buch über Software-Engineering zu schrieben. Allerdings sind Bücher im Jahr 2020 vielleicht nicht mehr ganz zweitgemäß. Daher habe ich mich entscheiden diese Webseite ins Leben zu rufen. Ist vielleicht auch zeitgemäßer als ein Buch.

Meine Meinung und Erfahrung

Achtung wichtig: Auf dieser Webseite wird nur meine Meinung über Software-Engineering dargestellt!

Ich habe das bewusst so initiiert, da ich nicht ungedingt immer nach Lehrbuch vorgehe, sondern meine gesammleten Erfahrungen der letzten 25 Jahr hier einbringen möchte. Was in Lehrbuchern steht, muss nicht zwangsläufig richtig sein. Welcher Lektor kann ein Fachbuch inhaltlich beurteilen?

Der Autor dieser Seite

Warum bilde ich mir ein, dass ich zu dem Thema SWE etwas beitragen kann?

Über den Autor:

Ich habe 1984 mit dem Maschinebau-Studium begonnen und bin dort an die FORTRAN 77 Programmierung gekommen. Das war meine erste Studienarbeit. In meiner zweiten Studienarbeit habe ich ein C-Programm geschrieben.

Um mein Studium zu finanzieren, arbeitete ich parallel bei der IBM Bildungsgesellschaft in Essen. Dort kam ich mit Smalltalk in Kontakt. Zum Ende des Studiums fing ich an einem Lehrstuhl für technische Informatik an zu arbeiten.

Somit kannte das Thema Programmierung.

Spannend wurde das Ganze aber erst durch meine ersten Berührungspunkte mit der Softwaremodellierung.

Ich fand schon damals die sogenannte HIT Programmierung (vom Hirn ins Terminal, also ohne Analyse und Design), wie es viele meiner Studienkollegen und Softwareentwickler taten, nicht gerade zielführend.

Ich fand vielmehr ziemlich faszinierend, dass man bei den Anforderungen angefangen, mit gewissen Techniken eine saubere Programmierung herleiten konnte. Also wie ein Konstrukteur, der erst eine Maschine entwirft, dann diese anhand des Bauplans baut und diese auch funktioniert ohne zu viel zu experimentieren.

Damit war mein Interesse am SWE geweckt und ich fing mich mit der Datenmodellierung auseinander zu setzen, was durch meine Tätigkeit bei IBM begünstigt wurde. Ich lernte viel, auch über einen Kurs „IBM 17T06 Konzeptionelles Datenbankdesign“ (in Anlehnung an Max Vetter), den ich sogar später mal halten durfte. Da ich auch mit Datenbank-Programmierung zu tun hatte, konnte man das SWE und die Programmierung aufeinander abstimmen und ich lernte schnell, was und wie man sinnvoll modellieren konnte.

Durch das Aufkommen der objektorientierten Programmiersprachen Smalltalk und C++, die Ende der 80 Jahre anfingen in den Markt zu drängen (ich weiß, dass Smalltalk von 1980 und C++ von 1983 ist), kam das Thema Analyse und Design immer mehr auf. Man behauptet übrigens, dass mit der OOSE es eine Art Renaissance des Softwareengineerings gegeben hat. Das fand ich sehr interessant. Durch viele Veröffentlichungen erhielt ich einen tiefen Einblick in die verschiedenen Methoden, die in der OOSE verwendet wurden. Hierzu zählten unter anderem die Ansätze der Autoren von Booch, Rumbaugh, Coad/Yourdon und später auch Jacobson sowie Methoden wie die Visual Modelling Technique von IBM und viele weitere. Durch meine Arbeit an der Uni, ab 1991, verbunden mit viel Forschung zu diesen Themen, und parallel durchgeführte Projekte, Schulungen und Workshops vertiefte ich meine Kenntnisse und versuchte viele von den Techniken in der Praxis einzusetzen. Bei der IBM hielt ich ab 1992 einen Kurs „IBM 17T42 Objektorientierte Analyse und Design“, die die Vorgehensweise nach Peter Coad und Edward Yourdon unterstützte.

Da alle Methoden aus meiner Sicht ihre Schwächen hatten, entwickelte ich Anfang der 90iger Jahre meine eigene Vorgehensweise, die ich in verschiedenen Projekten einsetzte und damals sogar zertifiziert wurde. Das Ganze basierte übrigens noch auf der Booch Notation, da die UML ja erst Mitte der90er Jahre entstand.

Mit Aufkommen der UML und den Werkzeugen änderte sich das Ganze ein wenig. Es wurden mehr pragmatische, einfache Ansätze gewählt. Seitdem habe ich für viele Firmen Vorgehensweisen festgelegt bzw. diese an die Bedürfnisse des Kunden angepasst. Hierzu zählt z.B. die Anpassung bzw. Einpassung meiner eigenen Vorgehensweise mit UML in das V-Modell, die Ausarbeitung zur Dokumentation der Software-Modellierung für verschiedene große Unternehmen, die unternehmensweit eingeführt wurden.

Ich kenne mich somit in Methoden/Vorgehensweisen und deren Anwendung sehr gut aus und habe in dem Bereich mehr als 25 Jahre Erfahrung. Diese Webseite soll meine Erfahrungen und Kenntnisse widerspiegeln, deswegen MySoftwareenginering.

Essen, im Januar 2020

Dr. Christian Borchart

Viel Spaß auf diesem Blog!