Definition: Anforderung/ requirement
Eine dokumentierte Darstellung einer Bedingung oder Fähigkeit, die zur Bewältigung bestimmter Aufgaben vorhanden sein muss
Definition: Anforderungsanalyse / requirements analysis
Prozess der Untersuchung von System-, Hardware- oder Software Anforderungen
Definition: Anforderungsgewinnung/ requirements solicitation
konkrete Handlungen zur Erhebung einzelner Anforderungen mittels Analysetechniken.
Anmerkung: „dem Klienten die Anforderungen aus der
Nase ziehen“
Definition: Anforderungspezifikation/ requirements specification
Dokument, das die Anforderungen an ein System oder eine Komponente spezifiziert.
Üblicherweise schließt dies
funktionale Anforderungen,
Leistungsanforderungen,
Schnittstellenanforderungen,
Entwurfsanforderungen und
Entwicklungsstandards
ein.
Definition: Software-Anforderungsspezifikation / software
requirements specification
Dokumentation der wesentlichen Anforderungen an eine Software (Funktionen, Leistung, Randbedingungen des Entwurfs und Merkmale) und deren externe Schnittstellen.
Die Spezifikation ist das zentrale Dokument der Software-Entwicklung.
—> Sie definiert mittelbar die Aufgaben der Entwickler.
Was sind die 3 Schritte zur Anforderungspezifikation?
Was sind Eigenschaften einer guten Spezifikation?
Welche der gelisteten Eigenschaften zählen zu den inhaltlichen Eigenschaften einer Anforderungsspezifikation?
Welche der gelisteten Eigenschaften zählen zu den Eigenschaften, die Darstellung & Form einer Anforderungsspezifikation betreffen?
Was ist der Nutzen der (Anforderungs-)Spezifikation ?
Die Spezifikation ist eine erforderliche Grundlage für…
die Abstimmung mit dem Kunden bzw. mit dem Marketing
den Entwurf und die Implementierung
das Benutzungshandbuch
die Testvorbereitung
die Abnahme
die Wiederverwendung
die Klärung späterer Einwände, Regressansprüche usw.
eine spätere Re-Implementierung
Was sind mögliche Folgen einer fehlenden Spezifikation?
ungeklärte und somit undokumentierte Anforderungen werden nicht erfüllt
—> fällt zwangsläufig erst nach der Implementierung auf
die Entwickler haben keine Entwicklungsgrundlage
es entstehen Ergebnisse, die nicht sinnvoll validierbar sind
Es fehlt die wesentliche Grundlage für das Handbuch
—> dieses sollte eine Reformulierung der Spezifikation sein
—> Effekt: Sporadisches Ausprobieren („rumklicken“) durch z.B. Fachautor (technical writer).
wesentliche Anwendungsfälle werden nicht beschrieben
Kein systematischer Test möglich
Streitigkeiten zwischen Hersteller und Kunde sind vorprogrammiert
„It‘s not a bug. It‘s a feature!“
Wenn beim Kunden (tendenziell) nach längerer Zeit Fehler auftreten, hat dieser keine Handhabe gegen den Hersteller, der dann mit dem o.g. Spruch kontert.
Die Wiederverwendbarkeit einer SW-Komponente kann nur mit
Kenntnis der Spezifikation beurteilt werden
Neue Versionen einzelner Komponenten müssen abwärts kompatibel sein
—> Die neue Version muss also mind. so viel können, wie die Vorversion
—> Somit muss die Spezifikation der neuen Version die der alten Version beinhalten oder referenzieren
Wie/Wodurch kann eine fehlende Spezifikation im nachhinein erzeugt werden?
Fehlende Spezifikationen können notfalls durch ein
Reverse-Engineering-Projekt erzeugt werden
—> teuer, hohes Projektrisiko
4 übergeordneten Eigenschaften einer Spezifikation
Definition: Lastenheft (LH)
= Anforderungssammlung
Ergebnis der Analyse
nicht eindeutig definitiert
—> wird von Firma zu Firma in inhaltlichen Fragen anders ausgelegt
Inhalt & Charakter:
Sammlung fachlicher Anforderungen aus Klientensicht
Zu jeder Anforderung wird dokumentiert, von welchem Klienten sie stammt
Inkonsistenzen (z.B. Widersprüche) und Unvollständigkeiten werden im LH bewusst in Kauf genommen
Welche Probleme kann es mit dem Lastenheft geben?
Die dauerhafte/fortwährende Pflege des LHs
Viele Unternehmen tun sich bereits schwer mit der fortwährenden Pflege der Spezifikation
—> Mit dem LH wird ihnen dies noch schwerer fallen
Die Erstellung des LH ist dennoch erforderlich!
Sollte die dauerhafte LH-Pflege zu aufwändig werden, kann sie später zugunsten der dauerhaften Pflege der Spezifikation bzw. des Pflichtenhefts aufgegeben werden
IST vs. SOLL -Analyse
Übersicht Analysetechniken
Wovon ist die Auswahl der Analysetechniken abhängig?
Anwendungsgebiet
Systemkontext
Aufgabenstellung
Erfahrung des Analytikers
Qualifikation der Gesprächspartner
Welchen Problemen steht die Anforderungsgewinnung gegebüber?
Abstrakte Vorstellungen aller müssen mittelbar zu einer präzisen Spezifikation zusammengeführt werden
Der Analytiker soll keine eigenen Vorstellungen einbringen
Es dürfen keine Anforderungen übersehen werden
Täuschung durch (einzelne) Klienten
Der Nutzen der Analyse wird häufig in Frage gestellt
Übericht
Beispieleintrag
Klassifikation von Anforderungen
1 Dimension - Bewusstsein
offene Anforderungen
latente Anforderungen
Entwickleroption
2 Dimension - Rigidität
harte Anforderungen
weiche Anforderungen
Nutzerfunktion
3 Dimension -Objektivierbarkeit
objektivierbare Anforderungen
vage Anforderungen
4 Dimension - Funktionaler Fokus
funktionale Anforderungen
nicht-funktionale Anforderungen
Nenne die Klassen von Anforderungen, der Dimension Bewusstsein
Nenne die Klassen von Anforderungen, der Dimension Rigidität
Nenne die Klassen von Anforderungen, der Dimension Objektivierbarkeit
Nenne die Klassen von Anforderungen, der Dimension Funktionaler Fokus
Defiition: offene Anforderungen
=> 1 Dimension - Bewusstsein
Klienten haben ihre Anforderungen bereits aufbereitet (expliziert) also „offengelegt“
Vorteil: Der Analytiker muss diese nur noch
sammeln
Definition: latente Anforderungen
Anforderungen, die dem Klienten derzeit nicht bewusst sind
—> müssen wie ein Schatz „geborgen“ werden
Definition: Enwicklungsoption
Aspekte, die dem Klienten egal sind.
Hinweis: Explizit notieren, da sonst Spezifikationslücke zu vermuten ist
Definition: harte Anforderungen
=> 2 Dimension - Rigidität
Wenn aufgrund von Ereignissen und Konditionen klar definierte Zustände herzustellen sind.
—> klare Entscheidbarkeit (z.B.: ja/nein, richtig/falsch)
Bsp.: „Bei erfolgter Lieferung ist eine Rechnung zu stellen.“
Definition: weiche Anforderungen
nicht-quantifizierbare Anforderungen, wie z.B. die Forderung nach einem „wartungsfreundlichen System“.
Definition: Nutzerfunktion
Bei weichen Anforderungen.
-> Zeigt den Nutzen des Zielsystems bzgl. des Erfüllungsgrads einer Anforderung.
Problem in der Praxis: Wie ermittle ich diese Funktion? Kaum möglich!
Der Wert der Nutzenfunktion liegt eher in der (Er-)Kenntnis ihres qualitativen Verlaufs.
Definition: objektivierbare Anforderungen
=> 3 Dimension -Objektivierbarkeit
sind messbar / quantifizierbar
-> Spezifikation muss möglichst viele objektivierbare Anforderungen enthalten (als Grundlage für die SW-Prüfung)
Definition: vage Anforderungen
=> 3 Dimension - Objektivierbarkeit
effektive Quantifizierung nicht immer möglich -> vgl. z.B. Wartbarkeit, allgemeine Performanz
Hier können wir zwar Quantifizierungen auf einer Ordinalskala angeben (z.B. schnellster, zweitschnellster, …), jedoch nicht auf einer Absolutskala (z.B. „Algorithmus benötigt 0,025s pro Datensatz.“).
Definition: funktionale Anforderungen
=> 4 Dimension - Funktionaler Fokus
beziehen sich auf die Abbildung von Eingaben auf Ausgabe
betreffen die konkrete Funktion des Programms im Sinn einer Applikationslogik
Definition: nicht-funktionale Anforderungen
Randbedingungen, unter denen ein System existieren muss.
Zuverlässigkeit (Systemreife, Wiederherstellbarkeit, Fehlertoleranz)
Aussehen und Handhabung (Look-and-feel)
Benutzbarkeit (Verständlichkeit, Erlernbarkeit, Bedienbarkeit)
Leistung und Effizienz (Antwortzeiten, Ressourcenbedarf, Wirtschaftlichkeit)
Sicherheitsanforderungen (Vertraulichkeit, Informationssicherheit, Datenintegrität, Verfügbarkeit)
Korrektheit (Ergebnisse fehlerfrei)
Betrieb und Umgebungsbedingungen
Wartbarkeit, Änderbarkeit (Analysierbarkeit, Stabilität, Prüfbarkeit, Erweiterbarkeit)
Portierbarkeit und Übertragbarkeit (Anpassbarkeit, Installierbarkeit, Konformität, Austauschbarkeit)
Flexibilität (Unterstützung von Standards)
Skalierbarkeit (Änderungen des Problemumfangs bewältigen)
Was sind die Inhalte einer Spezifikation?
Nur das „Was“ und nicht das „Wie“ beschreiben!
—> keine Lösungsansätze beschreiben, da eine Spezifikation kein Entwurf ist!
Eine Spezifikation ist stets neutral bzgl. der
Realisierung.
Teil der Spezifikation sind auch Angaben zu Mengengerüsten, mit denen die SW umzugehen hat.
Verbindung zu wesentlichen Anforder. bzgl. des Leistungsvermögens einer SW, wie z.B.:
Struktur (also auch Länge) von Schlüsseln wie etwa Kundennummern
spätere Auswahl von Algorithmen in Abhängigkeit vom erwarteten Datenvolumen
Anzahl von Zugriffen (lesend/schreibend) pro Zeit
Spezifikation von Funktionen
Checkliste für die Anforderungsanalyse & -spezifikation
Begriffslexikon anlegen und (weiter-) entwickeln.
Problemverständnis erlangen
nicht nach der Lösung suchen !!
Nach Objekten bzw. deren Klassen suchen
nicht nach Programmabläufen suchen !!
Das Spezifikationsdokument nach Aspekten
clustern z.B. Bedienung, Fehlerbehandlung
Konstantes Abstraktionsniveau innerhalb eines Abschnitts/Dokuments verwenden
—> Detaillierungsgrad konstant halten
Ein Mengengerüst entwickeln, um die Dimensionen des Problems und damit die Projektgröße besser einschätzen zu können
Die Klienten einbeziehen
Sprachen und Werkzeuge benutzen, Regeln durchsetzen
Spezifikationsdokument der Konfigurationsverwaltung unterstellen
Review der Spezifikation möglichst frühzeitig
Intensiver, flächendeckender Einsatz der Spezifikation
Nenne die Bestandteile eines Begrifflexicons.
Begriffsbezeichnung
Liste der Synonyme
Bedeutung des Begriffs (Text)
Abgrenzung des Begriffs (innere & äußere)
Kontext der Gültigkeit (z.B. zeitlich, räumlich)
Beschreibung der Attribute, die den jeweiligen Begriff eindeutig identifizierbar machen und deren Abgrenzung zu weiteren Attributen.
Unklarheiten
Querverweise
Was beschreiben Funktionale Anforderungen?
Funktionale Anforderungen beschreiben gewünschte Funktionalitäten eines Systems bzw. Produkts, dessen Daten oder Verhalten.
—> WAS soll das System tun/können?
Was beschreiben nicht-funktionale Anforderungen?
Nichtfunktionale Anforderungen sind Anforderungen, an die "Qualität" in welcher die geforderte Funktionalität zu erbringen ist.
Qualität im vorgenannten Sinn meint beispielsweise:
wie die Funktionalität ausgeführt werden soll (z.B. Reaktionszeit)
Bedingungen unter denen die Funktionalität ausgeführt wird (z.B. 7x24 Std.)
—> WIE bzw. unter WELCHEN Bedingungen soll etw passieren?
Last changeda year ago