44
Softwareanforderungsanalyse Spezifizieren und Dokumentieren von Anforderungen Burkhardt Renz THM, Fachbereich MNI Wintersemester 2018/19

Softwareanforderungsanalyse - Spezifizieren und

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Softwareanforderungsanalyse - Spezifizieren und

SoftwareanforderungsanalyseSpezifizieren und Dokumentieren von Anforderungen

Burkhardt Renz

THM, Fachbereich MNI

Wintersemester 2018/19

Page 2: Softwareanforderungsanalyse - Spezifizieren und

Spezifikation und Dokumentation von Anforderungen

Start

Analyse des Anwendungsgebietsund Ermittlung von Anforderungen

Evaluierung undAbstimmung

Qualitätssicherung Spezifikationund Dokumentation

Alternative Vorschläge

Vereinbarte Anforderungen

Dokumentierte Anforderungen

Konsolidierte Anforderungen

Page 3: Softwareanforderungsanalyse - Spezifizieren und

Übersicht

Was spezifizieren und dokumentieren?

Gliederung für AnforderungsspezifikationProblem Frames

Wie spezifizieren und dokumentieren?

Natürliche SpracheModellbasierte DarstellungFormale Spezifikation

Page 4: Softwareanforderungsanalyse - Spezifizieren und

Erwartungen an eine Anforderungsspezifikation

vollständigkonsistentadäquateindeutigverständlich, gut strukturiertprüfbarrelevant, risikogerechtverfolgbar

Page 5: Softwareanforderungsanalyse - Spezifizieren und

Übersicht

Was spezifizieren und dokumentieren?Aufbau und Gliederung der AnforderungsspezifikationProblem Frames

Spezifikation in natürlicher Sprache

Modellbasierte Spezifikationen

Formale Spezifikationen

Page 6: Softwareanforderungsanalyse - Spezifizieren und

Gliederung der Anforderungsspezifikation

ISO/IEC/IEEE Standard 29148:2011Systems and software engineering – Life cycle processes –Requirements engineeringenthält in Kapitel 8.4 Beispiel für die Gliederung des Softwarerequirements specification documentIm deutschen Sprachraum oft Unterscheidung

Lastenheft„Vom Auftraggeber festgelegte Gesamtheit der Forderungen andie Lieferungen und Leistungen eines Auftragsnehmersinnerhalb eines Auftrags“Pflichtenheft„. . . vom Auftragnehmer erarbeitete Realisierungsvorgabenaufgrund der Umsetzung des vom Auftraggeber vorgegebenenLastenhefts“

Page 7: Softwareanforderungsanalyse - Spezifizieren und

Mustergliederung nach ISO 29148:2011 I

1. Einführung1.1 Anlass und Ziele1.2 Einsatzbereich1.3 Produktübersicht

1.3.1 Kontext1.3.2 Funktionen des Produkts1.3.3 Art der Benutzer1.3.4 Annahmen und Einschränkungen

2. Referenzen3. Einzelanforderungen

3.1 Externe Schnittstellen3.2 Funktionen3.3 Anforderungen an die Benutzbarkeit3.4 Anforderungen an die Leistungsfähigkeit3.5 Anforderungen bzgl. des logische Datenmodells3.6 Entwurfsbedingungen und -einschränkungen3.7 Weitere Qualitätsmerkmale3.8 Wartungs- und Supportinformationen

Page 8: Softwareanforderungsanalyse - Spezifizieren und

Mustergliederung nach ISO 29148:2011 II

4. Verifikation (bzgl. aller Unterpunkte von 3.)5. Anhang

5.1 Annahmen und Abhängigkeiten5.2 Akronyme und Abkürzungen

Page 9: Softwareanforderungsanalyse - Spezifizieren und

Spezifikationsbausteine von sd&m

Projektgrundlagen

Abläufe & Funktionen

AnwendungsfälleGeschäftsprozesse

Anwendungsfunktionen

Daten

DatentypverzeichnisDatenmodell

Benutzerschnittstelle

BatchDialogspezifikation

Druckausgaben

Externe Schnittstellen

DatenmigrationNachbarsystem-Schnittstellen

Einführung / Migration

NichtfunktionaleAnforderungen

NichtfunktionaleEigenschaften

Querschnittskonzepte

Ergänzende BausteineGlossar

Spezifikationsbausteine

Systemüberblick

Technische GrundlagenFachliche Grundlagen

Projektgrundlagen

Abläufe & Funktionen

AnwendungsfälleGeschäftsprozesse

Anwendungsfunktionen

Daten

DatentypverzeichnisDatenmodell

Benutzerschnittstelle

BatchDialogspezifikation

Druckausgaben

Externe Schnittstellen

DatenmigrationNachbarsystem-Schnittstellen

Einführung / Migration

NichtfunktionaleAnforderungen

NichtfunktionaleEigenschaften

Querschnittskonzepte

Ergänzende BausteineGlossar

Spezifikationsbausteine

Systemüberblick

Technische GrundlagenFachliche Grundlagen

Quelle: Andreas Birk Anforderungsspezifikationen in großenIT-Projekten, in: Jahrestagung der GI-Fachgruppe RequirementsEngineering, Kaiserslautern 2004.

Page 10: Softwareanforderungsanalyse - Spezifizieren und

Problem Frames

Die Grundidee

Maschine Anwendungs-gebiet Anforderungen

a b

Grundlegende Problem FramesMichael Jackson Problem Frames: Analyzing and structuringsoftware development problems

http://esb-dev.github.io/mat/saa-pf-bh.pdf

Page 11: Softwareanforderungsanalyse - Spezifizieren und

Übersicht

Was spezifizieren und dokumentieren?

Spezifikation in natürlicher SpracheSprachliche RegelnBlaupausen für die Formulierung von AnforderungenGlossar

Modellbasierte Spezifikationen

Formale Spezifikationen

Page 12: Softwareanforderungsanalyse - Spezifizieren und

Spezifikation in natürlicher Sprache

wird am häufigsten für Spezifikation von Anforderungenverwendet, warum?ausdrucksmächtigfür jeden ohne Spezialkenntnisse schreibbar und lesbaraber:

inhärent mehrdeutigfehlerträchtigschwierig zu prüfenje umfangreicher desto unübersichtlicher

Page 13: Softwareanforderungsanalyse - Spezifizieren und

Verbesserung der Qualität natürlichsprachlicherSpezifikationen

Man kann die Qualität von Anforderungsspezifikationen innatürlicher Sprache verbessern durch

geeignete Gliederung und Strukturierung des DokumentsSprachliche Regeln für Formulierungen bis hin zuBlaupausen für die Formulierung von Einzelanforderungenklare Definition und Verwendung von Bezeichnungen durchein Glossar

Page 14: Softwareanforderungsanalyse - Spezifizieren und

Sprachliche Regeln: Struktur der Sätze

Vollständige Satzstruktur bildenIm Aktiv formulierenAnforderungen in Hauptsätzen, Nebensätze nur zurErläuterung etc.Bei Vergleichen Bezugspunkt angebenBei Alternativen und/oder Fallunterscheidungen alleMöglichkeiten berücksichtigen

Page 15: Softwareanforderungsanalyse - Spezifizieren und

Sprachliche Regeln: Vage Bezeichnungen vermeiden

Unspezifische Nomen durch präzise Angaben ersetzennicht: „die Daten werden. . . “sondern: „die Daten des aktuellen Auftrags. . . “Verben, die Prozesse, Funktionen oder Abläufe beschreiben,präzise definieren„Daten werden übertragen“welche Daten? wohin übertragen?

Page 16: Softwareanforderungsanalyse - Spezifizieren und

Sprachliche Regeln: Nominalkonstruktionen

Nominalkonstruktionen sind Nomen, die aus Verben gebildetwerdenz.B. „Initialisierung, Neustarten des Systems“Oft verbergen sich hinter Nominalkonstruktionenunvollständig spezifizierte Abläufe

Page 17: Softwareanforderungsanalyse - Spezifizieren und

Sprachliche Regeln: Quantoren und Ausschlüsse

Allquantoren hinterfragen, weil sie in Umgangssprache oftimplizit kontextabhängig verwendet werdenz.B. „auf dem Dialog werden alle Daten angezeigt“z.B. „der Vorgang kann jederzeit abgebrochen werden“Existenzquantoren durch explizites Angeben des Exemplarspräzise verwendenz.B. „Es gibt eine Einstellung für die Schriftgröße“welche? wo?Ausschlüsse nach Ausnahmen hinterfragenz.B. „Es ist nicht möglich, dass. . . “wirklich?

Page 18: Softwareanforderungsanalyse - Spezifizieren und

Blaupausen für die Formulierung von Anforderungen

Vorlage für Bildung präziser Formulierung von Anforderungen

[When? Under whatconditions?]

THE SYSTEM<system name>

SHALL

SHOULD

WILL

MAY

<process verb>

PROVIDE <whom?> WITHTHE ABILITY TO <process verb>

BE ABLE TO<process verb>

<object> <additional detailsabout the object>

Quelle: Klaus Pohl, Chris Rupp Requirements EngineeringFundamentals, Kapitel 5.2

Page 19: Softwareanforderungsanalyse - Spezifizieren und

Modus von Äußerungen

Michael Jackson kritisiert den Einsatz von Zeitformen (Tempus)wie in „shall“ und „will“, weil Zeiten keinen Modus angeben,sondern eher zweideutig sind.

Besser die präzise Unterscheidung:

Optativ – Wunschform = drückt aus, was gewünscht wird zuerreichen, was vorgeschrieben wird, präskriptivIndikativ – Wirklichkeitsform = drückt aus, was imAnwendungsgebiet ist, unabhängig von dem zukonstruierenden System, beschreibend, deskriptivDefinition – Festlegung einer präzisen Sprechweise fürKonzepte etc.

Page 20: Softwareanforderungsanalyse - Spezifizieren und

Glossar

Verzeichnis der Begriffe und Bezeichnungen desAnwendungsgebietsPräzise Definition der Begrifflichkeiten – hilftMehrdeutigkeiten zu vermeidenerfordert genaues Verstehen des AnwendungsgebietsBasis der Kommunikation zwischen Fachexperten undSoftwareentwicklernRegeln:

Hintergrund der Begriffsbildung festhaltenAgreement bei allen Beteiligten herstellenKonsistente Struktur festlegenZentral zugänglichÜber die Laufzeit des Projekts gepflegtVerwendung der Begriffe des Glossars ist verpflichtend

Page 21: Softwareanforderungsanalyse - Spezifizieren und

Übersicht

Was spezifizieren und dokumentieren?

Spezifikation in natürlicher Sprache

Modellbasierte SpezifikationenAnwendungsfälleDrei PerspektivenDatenperspektivePerspektive der FunktionalitätPerspektive des Verhaltens

Formale Spezifikationen

Page 22: Softwareanforderungsanalyse - Spezifizieren und

Use-Case-Diagramm

Anwendungsfall: Interaktionssequenz eines Akteurs mit demSystem zur Erreichung eines ZielesUse-Case-Diagramm: Übersicht über die Anwendungsfälleund ihre Beziehungen zur Systemumgebungsowie untereinanderNicht viel mehr als eine graphisch dargestellte Liste derAnwendungsfälle

Page 23: Softwareanforderungsanalyse - Spezifizieren und

Beispiel Use-Case-Diagramm

Terminplaner

Initiator

Teilnehmer

Bearbeite Anfrage

Melde Einschränkungen

Löse Konflikte

Konflikt-löser

<include>

Page 24: Softwareanforderungsanalyse - Spezifizieren und

Spezifikation des Anwendungsfalls

Oft werden Blaupausen für textuelle Darstellung verwendet,z.B. Alistair Cockburn: Writing Effective Use CasesAktivitätendiagramm zur Darstellung der InteraktionenSequenzdiagramm zur Darstellung der Interaktionen

Page 25: Softwareanforderungsanalyse - Spezifizieren und

Kritik der Ansatzes mit Anwendungsfällen

Use cases are a popular albeit fairly fuzzy form of opera-tional specification. As their specification does not conveymuch, use cases are not really amenable to useful forms ofanalysis.However, they provide an outline view of the operationsthat an agent has to perform; such a view may prove usefulfor elicitation and communication with stakeholders.

– van Lamsweerde S. 277

Page 26: Softwareanforderungsanalyse - Spezifizieren und

Drei Perspektiven für Anforderungen

DatenperspektiveWelche Daten benötigt man für die Aufgabe?Wie hängen sie zusammen?Welche Daten speichert und/oder liefert das System?Perspektive der FunktionalitätWelche Transformation von Daten macht das System?Welche Aktionen in der Umgebung löst es aus?Perspektive des VerhaltensWelche Zustände hat das System?Wie reagiert es auf Ereignisse in bestimmten Zuständen?Welche Zustandsübergänge macht es dann?

Page 27: Softwareanforderungsanalyse - Spezifizieren und

Entity-Relationship-Modellierung

Entitäten und EntitätstypenAttributeBeziehungen und Assoziationen (Beziehungstypen)MultiplizitätenDiagrammdarstellung in Chen-Notation oder UML-Notation

Page 28: Softwareanforderungsanalyse - Spezifizieren und

Beispiel: Bibliotheksverwaltung

*

1

1 *

*

*

1

*

beschreibt

Vormerkung

Vormerkdatum

Ausleihe

AusleihdatumRückgabedatum

Ausleiher

AusweisNr {PK}NameVornameAdresseE-Mail

Buchexemplar

Signatur {PK}Kaufdatum

Buchtitel

ISBN {PK}AutorTitelVerlagOrtJahr

Student

MatrikelNrStudienbeginn

Dozent

PersonalNrEintrittsdatum

Page 29: Softwareanforderungsanalyse - Spezifizieren und

UML-Klassendiagramm

Weiterentwicklung der Entity-Relationship-Modellierungim Wesentlichen kommen Methoden hinzuzugeschnitten (und basierend) auf objekt-orientierteProgrammiersprachen – etwas andere Semantik alsER-Modelle

Page 30: Softwareanforderungsanalyse - Spezifizieren und

Strukturierte Analyse

Spezifikationsmethode aus den 80er JahrenAktivitätsdiagramm: Prozesse/Funktionen mit Input- undOutput-DatenDatenflussdiagramm:

Datenspeicherdargestellt durch parallele LinienDatenflussdargestellt durch PfeilProzess/Funktiondargestellt durch OvalAkteurdargestellt durch Rechteck

wird heute nicht mehr viel verwendet

Page 31: Softwareanforderungsanalyse - Spezifizieren und

Beispiel: Terminplaner

Initiator

Anfrageprüfen

Einschränkungenanfragen

Einschränkungensammeln

Einschränkungenzusammenführen

Terminfestlegen

Einschränkungen

Teilnehmer

Teilnehmer

AnfrageTermin

Kopie derAnfragen an Teilnehmer

Anfrageungültig

Anfragegültig

AnfrageEinschränkungen

IndividuelleEinschränkungen

MöglicheTermine

Termin-benachrichtigung

Page 32: Softwareanforderungsanalyse - Spezifizieren und

UML-Diagramme

AktivitätendiagrammAktivitäten, Kontrollfluss, Entscheidungsknoten,Synchronisation nebenläufiger Ausführung, . . .Sequenz- bzw. InteraktionsdiagrammBeteiligte Rollen, Lebenslinie, Nachrichten/Methodenaufruf,. . .

Page 33: Softwareanforderungsanalyse - Spezifizieren und

Statecharts bzw. UML-Zustandsdiagramm

Statechart von David Harel 1984Zustandsdiagramm der UML

Prinzip

Zustand Folge-zustand

Ereignis/Aktion

Page 34: Softwareanforderungsanalyse - Spezifizieren und

Beispiel: Terminplaner

Daten-sammlung

TerminValidierung

Termine

Einschrän-kungen

angefragt

Einschrän-kungen

auflösen

Planung

Terminfestgelegt

Terminmitgeteilt

Anfrage abgelehnt

Terminanfrage

[nicht autorisiert]

[autorisiert]

okay

nicht möglich

[alle verfügbar]

[Konflikte]Einschränkungenabgeschwächt [keine Konflikte]/Termin festlegen

/mitteilen

Page 35: Softwareanforderungsanalyse - Spezifizieren und

Übersicht

Was spezifizieren und dokumentieren?

Spezifikation in natürlicher Sprache

Modellbasierte Spezifikationen

Formale SpezifikationenLogikBeispiel: ZBeispiel: AlloyDiskussion formaler Methoden

Page 36: Softwareanforderungsanalyse - Spezifizieren und

Grundlagen formaler Spezifikationen

AussagenlogikAtomare Aussagen, die wahr oder falsch sein könnenKomplexe Aussagen gebildet durch ¬ ,∧,∨,→, . . .

PrädikatenlogikTerme bezeichnen Objekte des Universums, FunktionenPrädikate sind Beziehungen der Objekte, die wahr oder falschsein könnenAussagen gebildet durch aussagenlogische Operatoren sowiedie Quantoren über Variablen ∀ x ,∃ yTemporale LogikFolge von Zuständen, in denen bestimmte atomare Aussagenwahr oder falsch sein könnenTemporale Operatoren ♦ später mal, � immer, © imnächsten Zustand

Page 37: Softwareanforderungsanalyse - Spezifizieren und

Die Spezifikationssprache Z

Z ist eine Sprache zur formalen Beschreibung mathematischerSachverhaltedient der Beschreibung von Software und auch Hardwareentwickelt an der Universität Oxford von Jean-Raymond Abrial2002 durch ISO als Standard 13568 standardisiertName kommmt von Ernst Zermelo, Axiome der Mengenlehrenach Zermelo-Fraenkel (ZF, ZFC)in der Praxis verbreiteste formale SpezifikationsspracheLiteratur: Jonathan Jacky The Way of Z: PracticalProgramming with Formal Methods, CUP 1997

Page 38: Softwareanforderungsanalyse - Spezifizieren und

Grundelemente von Z, 1

Eine Z-Spezifikation besteht aus Mengen, Typen, Axiomenund SchemataTypen, wie [Datum],NMengen haben einen Typ, wie Personen :P Name, Zaehler : NAxiome definieren globale Variablen und Invarianten, wie

limit : N

limit ≤ 65535

Page 39: Softwareanforderungsanalyse - Spezifizieren und

Grundelemente von Z, 2

Schemata bilden einen eigenen Namensraum und gliedern dieSpezifikation, sie bestehen aus:

NameDeklaration von ZustandsvariablenInvariantenBeziehungenOperationen, die Zustand ändern

Page 40: Softwareanforderungsanalyse - Spezifizieren und

Beispiel: Bibliotheksverwaltung

Bestand an Büchern

BibliothekBestand : PBuchBenutzer : PPersonausgeliehen : Buch 7→ Person

dom ausgeliehen ⊆ Bestandran ausgeliehen ⊆ Benutzer

Page 41: Softwareanforderungsanalyse - Spezifizieren und

Beispiel: Bibliotheksverwaltung

Ausleihen von Büchern

Ausleihen∆BibliothekauszuleihendesBuch? : BuchAusleiher? : Person

auszuleihendesBuch? ∈ Bestand \ dom ausgeliehenAusleiher? ∈ Benutzerausgeliehen′ = ausgeliehen ∪ {(auszuleihendesBuch?,Ausleiher?)}Bestand ′ = BestandBenutzer ′ = Benutzer

Page 42: Softwareanforderungsanalyse - Spezifizieren und

Alloy

Spezifikationssprache entwickelt von Daniel Jackson MITbasiert auf Mengen, Relationen und relationaler Logikhat interaktiven Alloy-Analyzer, der Modelle zur Spezifikationfindet und so interaktives Entwickeln einer SpezifikationerlaubtAlloy = Legierung, weil Verschmelzung von Z mit ModelCheckingverwendet oft für (kritische) Ausschnitte einer SpezifikationLiteratur: Daniel Jackson Software Abstractions: Logic,Language, and Analysis, MIT Press 2012Literatur: Burkhardt Renz und Nils Asmussen KurzeEinführung in Alloy, THM 2014

Page 43: Softwareanforderungsanalyse - Spezifizieren und

Beispiel mit Alloy

Demo Zugsegmente und Sicherheitsrichtlinie (nach D. Jackson)

Page 44: Softwareanforderungsanalyse - Spezifizieren und

Diskussion: formale MethodenStärken

Immer eindeutig (da Semantik formal definiert)Konsistenz formal prüfbarErfüllung wichtiger Eigenschaften beweisbar und/oderautomatisiert testbarFormale Verifikation von Programmen/Code möglichModelle simulierbar/animierbar, z.B. Alloy

Schwächensehr aufwändigNachweis der Vollständigkeit schwierigGroße Spezifikationen schwer zu verstehen, profundeAusbildung notwendigAspekte von Benutzerschnittstellen schwierig darstellbar