Softwaretechnik

Lesson 4
Requirementsengineering

Was für ein System soll entstehen?

Idealfall

Einziger Benutzer und Entwickler und Tester sind identisch

Realfall: Viele Stakeholder

Der Stakeholder ist jemand, dessen Einsatz auf dem Spiel steht und der daher ein Interesse an Wohl und Wehe dieses Einsatzes hat. Im übertragenen Sinne wird „Stakeholder“ heutzutage nicht nur für Personen verwendet, die tatsächlich einen Einsatz geleistet haben, sondern für alle, die ein Interesse am Verlauf oder Ergebnis eines Prozesses oder Projektes haben; beispielsweise auch Kunden oder Mitarbeiter. (Wikipedia)

Stakeholder

  • Ein Auftraggeber (Abteilungsleiter IT)
  • Der Einkauf
  • Der Projektleiter des Kunden
  • Die Testabteilung des Kunden
  • Abteilungsleiter des Fachbereichs
  • Poweruser 
  • Poweruser der anderen Abteilung
  • 300 oder 300.000 08/15 User
  • Entwickler von Systemen mit denen es Schnittstellen gibt
  • Betrieb
  • Operating

Viele Stakeholder

  • viele Ziele
  • teilweise wiedersprüchlich
  • Wie findet man die Ziele?
  • Wie einigt man sich auf Ziele?
  • Wie kommt man von diesen Zielen auf Requirements?
  • Ist das eigentlich das Gleiche?
  • Wie sorgt man dafür das alle das Gleiche verstehen

Ziel

Ein Ziel ist ein in der Zukunft liegender, gegenüber dem Gegenwärtigen im Allgemeinen veränderter, erstrebenswerter und angestrebter Zustand (Zielvorgabe). Ein Ziel ist somit ein definierter und angestrebter Zustand innerhalb einer Ereignisfolge, meist einer menschlichen Handlung zu einem Zweck. (Wikipedia)

Ziele

sind (im Sinne der Vorlesung) sehr grobe Anforderungen

Beispiel: Die Bearbeitung einer Kundenanfrage soll schneller werden
=> Daraus können Sie im Normalfall keine Software bauen

Requirement

Eine Anforderung ist eine Aussage über die notwendige Beschaffenheit oder Fähigkeit,
die von einer Person zur Erreichung eines Ziels benötigt wird, die ein System oder Systemteile erfüllen oder besitzen muss, um einen Vertrag zu erfüllen oder einer Norm, einer Spezifikation oder anderen, formell vorgegebenen Dokumenten zu entsprechen. (Wikipedia)


Definitionsprobleme

Genauer sind Requirments also Aussagen, die war sind wenn ein Ziel erreicht wurde. Dies widerspricht leider der Art und Weise wie Requirements sinnvoller Weise formuliert werden.

Glücklicher Weise kümmert sich nicht wirklich jemand um Definitionen von solchen Dingen.

Ein Spezifikation

Ist die Summe alle Anforderungen 

(ja, wir haben eine Zirkelschluss, aber Menschen können damit umgehen)

Title

Anforderungsarten / Kano Modell


Basis- Merkmale

Fehlen führt zu Unzufriedenheit. Erfüllung aber maximal zu Indifferenz

Leistungs-Merkmale

je mehr destso besser. 

Begeisterungs-Merkmale

Fehlen sie werden sie nicht vermisst. Aber sie können echte Begeisterung auslösen.

Entwicklung

Begeisterungsmerkmale von Heute entwickeln sich zu Leistungs-Merkmalen von Morgen und den Basis-Mermalen von Übermorgen

Quellen für Anforderungen

Basis-Merkmale

  • Vorgängerversion
  • Handbücher
  • Ähnliche Systeme / Projekte

Achtung: Nicht alles was wie ein Basis-Merkmal aussieht ist eins. Es kann sich auch um einen Bug handeln.

Leistungs-Merkmale

Stakeholder "fragen"
Oft werden nur diese erhoben

Fragentechnik

  • Fragebogen: Fest vorgegebene Fragen -> Viel Teilnehmer
  • Interview: Es entwickelt sich ein Gespräch. Aufwendig
  • Beobachtung: Auch mit Kamera / Recorder. Vorsicht Persönlichkeitsrechte & Betriebsrat
  • Apprenticeship: Kombination der praktischen Erfahrung mit einem frischen Blick auf die Dinge
  • On Site Customer: Intensiver Informationsfluss durch ständige Anwesenheit. Gefahr zu einseitiger Anforderungen

Begeisterungs-Merkmale

Kreativtechniken
  • Brainstorming
  • Verändern des Produktes: 
    • Wie sieht die Software aus, wenn wir keinen Monitor verwenden. 
    • Wenn das System auf dem Mars betrieben wird (massive Latenz)
  • Ideen von ganz anderen Bereichen übertragen.

Qualitätskriterien

  • Vollständig
  • Korrekt
  • Konsistent
  • Prüfbar
  • Eindeutig
  • Verständlich
  • Abgestimmt
  • Klassifizierbar (kann, soll, muss)
  • Notwendig
  • Bewertet (Priorisiert)
  • Gültig und aktuell
  • Realisierbar
  • Verfolgbar
  • Realisierungsneutral

Begriffsklärung

Was ist ein Zug
  • Ein physikalische Fahrzeug mit 1-3Lokomotiven und beliebig vielen Wagons?
  • Nur die Wagons?
  • Ein Fahrzeug wie obiges, dass auf einer bestimmten Strecke fährt?
  • Die wiederkehrende Fahrt eines Fahrzeugs (w.o.) auf einer bestimmten Strecke an einem bestimmten Wochentag?
  • Die wiederkehrende Fahrt eines Fahrzeugs (w.o.) auf der Strecke von einem Bahnhof zum nächsten?

Glossar

Legen Sie ein Glossar an
  • Verwenden Sie nur die Begriffe aus dem Glossar
  • Genau so wie sie dort definiert sind
  • Synonyme vermeiden und nur die Standardvariante verwenden
  • Besonders wichtig ist dies bei den klassifizierenden Worten: darf, muss, soll

  • Ich habe bisher nicht erlebt, dass das so gelebt wird, aber es wäre bestimmt toll.

Verständlich / Eindeutig

Aktiv Formulieren

Vermeiden Sie passiv Konstruktionen
Nicht "Es wird eine Meldung ausgegeben"
Sondern "Das System gibt eine Meldung aus" 
Es wird klarer wer etwas tut. 
Es ist einfacher zu lesen

Echte Verben

Vermeiden sie substantivierte Verben

Beispiel: "Durch Knopfdruck startet der Benutzer das Drucken"
Was genau bedeutet "startet das Drucken?"

"Wenn der Benutzer den Knopf drückt zeigt das System den Betriebssystem Druckdialog an."

"Wenn der Benutzer den Knopf drückt druckt das System das Formular auf dem Standarddrucker aus."

Starke Verben

starke Verben, fordern bestimmte Angaben:
  • "drucken" 
    • Wer?
    • Was?
    • Wo?

Generalisierungen

Alle / Niemand / Keiner
Immer / Nie

Oft fehlen hier wichtige Einschränkungen

Sätze

  • Einfach
  • Kurz
  • Nebensätze in eigene Anforderungen auftrenen
  • Und / Oder / Nicht Konstrukte in Tabellen umwandeln

Abstimmung von Requirements

Requirements sind oft widersprüchlich
Praktisch nie lassen sich alle Requirements umsetzen.
Dabei kommt es zu Konflikten.

Konflikt Eskalationsmodell

Nach Friedrich Glast

  1. Verhärtung
  2. Debatte & Polemik
  3. Taten statt Worte
  4. Image & Koalition
  5. Gesichtsverlust
  6. Drohstrategien
  7. Begrenzte Vernichtungsschläge
  8. Zersplitterung
  9. Gemeinsam in den Abgrund

Konflikt Eskalationsmodell

1-3 Win - Win
4-6 Win-Lose
7-9 Lose-Lose

Verhaltensstrategien

Nur auf den 1. Stufen
  • Diskussion und Zusammenarbeit
  • Zwang Druck vs Nachgeben Einlenken
  • Vermeidung Verdrängung

Konflikt Gespräch

  • Geführt durch neutralen Moderator
  • Beide Parteien müssen dazu bereit sein
  • Beide Parteien stellen Ihre Sicht der Dinge dar
  • Anklagen vermeiden "Du hast"
  • Stattdessen "Ich möchte"
  • Statement: Wie soll sich die Situation ändern? Realistisch bitte
  • Einigung auf konkrete Änderungen

Hilfsmittel

  • Emotionen durch Sachinformationen ersetzen
  • Kriterien sammeln
  • bewerten
  • Streng nach Bewertung entscheiden
  • Vorgesetzten zur Entscheidung vorlegen

Dokumentation

  • Sammlung von Anforderungssätzen
  • Use Case
  • User Story
  • Specification by Example

  • Roman

Sammlung von Anforderungssätzen

  • tendentiell sehr fein granular
  • es fehlt der Überblick
  • lassen sich gut nach diversen Kriterien sortieren

Use Case

  • Es wird eine Interaktion eines Users (oder eines anderen Systems) mit dem System beschrieben
  • enthält typischer Weise die folgenden Elemente
    • Id
    • Name
    • Kurzbeschreibung
    • Akteure
    • Vorbedingung
    • Fachlicher Auslöser
    • Normalfall
    • Varianten
    • Nachbedingung

User Story

Formelhafter Satz: Wer, Was, Warum
plus Akzeptanzkriterien

Als ein erfahrener Schachspieler möchte ich dass mir das Programm Zugvarianten zu einer Stellung zeigt, damit ich Partien analysieren und daraus lernen kann.
  • Es werden nur die stärksten Züge gezeigt.
  • Jeder Zug wird gemäß seiner Stärke bewertet.
  • Die Anzeige erfolgt automatisch nach jedem Zug
  • Das Feature kann ein und aus geschaltet werden.

Ein User Story ist kein Requirement sonder ein Token für ein Gespräch

Specification by Example

  • Die Spezifikation erfolgt in tabellarischer Form
  • Diese entsteht in Workshops zwischen Stakeholder, Entwickler und Tester 
  • Vorteil: 
    • Sehr konkret
    • Kann direkt als Test verwendet werden
  • Wird oft ergänzt durch mehr prosaische Texte als Einleitung.

Nicht funktionale Anforderungen

  • technologische Anforderungen
    • Es ist Java in Version x.y zu Verwenden. 
    • Die Anwendung muss auf einem JEE7 konformen Applikationsserver laufen
  • Qualitätsanforderungen
    • Änderbarkeit
    • Verfügbarkeit
    • Performance
    • Durchsatz
    • Skalierbarkeit
    • Wartbarkeit
    • Bedienbarkeit
    • Robustheit

Nicht funktionale Anforderungen

  • Anforderungen an die Benutzeroberfläche
    • Die Benutzer Oberfläche muss dem Windows Design Standard X entsprechen
    • Antwortzeiten auf Benutzeraktionen
  • Anforderungen an sonstige Lieferbestandteile
    • Muss ein Handbuch, Installationsanleitung geliefert werden?
    • Welche Eigenschaften muss das haben?
  • Anforderungen an durchzuführende Tätigkeiten
    • Wartung
    • Support 
    • Betrieb
    • Projektplanung und Management

Anforderungen ändern sich

  • Es entstehen neue, oder sie werden neu entdeckt.
  • Sie werden detailliert oder überarbeitet
  • In einem Jahr werden ca 10% der Anforderungen geändert.

Anforderungen müssen wie praktisch alle Artefakte der Softwareentwicklung gepflegt werden so lange sie eine Relevanz haben.

Spezifikation bei Example kann hier massiv helfen
Ebenso der agile Ansatz: Ein Thema komplett abarbeiten und ausliefern. Danach ist das Requirement in gewisser Weise erledigt.

Aufgaben

  • Schreiben Sie Zehn Anforderungen für einen Gegenstand ihrer Wal (Waschmaschine, Toaster ...)
  • Tauschen Sie die Anforderungen mit Ihrem Kommilitonen
  • Finden Sie 10 Möglichkeiten die Anforderungen falsch / widersprüchlich zu interpretieren
  • Formulieren Sie für jede Gruppe Stakeholder je zwei Anforderungen, eine Funktionale, eine nicht Funktionale
  • Benennen Sie eine andere Gruppe, der wenigstens eine dieser Anforderungen nicht gefallen wird

Literatur

Softwaretechnik Lesson 4

By Jens Schauder

Softwaretechnik Lesson 4

  • 1,556