Anforderung (Informatik)
In der (Software-)Technik ist eine Anforderung (häufig {{Modul:Vorlage:lang}} Modul:Vorlage:lang:103: attempt to index field 'wikibase' (a nil value)) eine Aussage über eine zu erfüllende Eigenschaft oder zu erbringende Leistung eines Produktes, Systems oder Prozesses.
Anforderungen werden in der Anforderungserhebung aufgenommen, analysiert, spezifiziert und verifiziert. Der Prozess ist in das Anforderungsmanagement eingebettet. Anforderungen können beispielsweise in einem Dokument (z. B. Lastenheft) oder in einem Tabellenkalkulationssystem dokumentiert werden. In agiler Softwareentwicklung kommt Anforderungsmanagement-Software zum Einsatz, die das Anforderungsmanagement unterstützt (Backlog in Scrum, Jira etc.).
Arten von Anforderungen
Es existieren unterschiedliche Ansätze zur Klassifikation von Anforderungen.
Anforderungen – als Qualitätskriterien an Systeme und Softwareprodukte verstanden – können nach ISO/IEC 25000, bzw. entsprechend der Qualitätsmodelle aus ISO/IEC 25010<ref>ISO/IEC 25010 Systems and software engineering — Systems and software Quality Requirements and Evaluation (SQuaRE) — System and software quality models FINAL DRAFT. (PDF; 4,0 MB) Abgerufen am 24. März 2014.</ref> klassifiziert werden.
Am verbreitetsten ist die Unterteilung in funktionale und nichtfunktionale Anforderungen.
Eine Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.funktionale Anforderung legt fest, was das Produkt tun soll.<ref name="robertson">Suzanne Robertson, James Robertson: Mastering the Requirements Process. 2. Auflage. Addison-Wesley, Harlow 2006, ISBN 0-321-41949-9, S. 9–10.</ref> Ein Beispiel:
- „Das Produkt soll den Saldo eines Kontos zu einem Stichtag berechnen.“
Eine Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.nichtfunktionale Anforderung (englisch {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value), NFR) ist in der Literatur nicht einheitlich definiert. Gemeinsamer Nenner ist, dass sie über die funktionale Anforderung hinausgeht.<ref>Chris Rupp: Requirements-Engineering und -Management: Aus der Praxis von klassisch bis agil, Carl Hanser Verlag GmbH Co KG, 2014, ISBN 978-3-446-44313-6, S. 268–269 [1]</ref> Die nichtfunktionalen Anforderungen beschreiben, wie gut das System die Leistung erbringen soll<ref>System-Entwicklung in der Wirtschaftsinformatik: vdf Hochschulverlag AG, 2002, ISBN 978-3-7281-2762-4, S. 139 [2]</ref>; sie werden vielfach als Randbedingungen und Qualitätseigenschaften verstanden.<ref>Martin Eigner, Florian Gerhardt, Torsten Gilz, Fabrice Mogo Nem: Informationstechnologie für Ingenieure, Springer-Verlag, 2012, ISBN 978-3-642-24893-1, S. 52 [3]</ref> Ein Beispiel:
- „Das Produkt soll dem Anwender innerhalb von einer Sekunde antworten.“
Häufig werden neben diesen beiden Typen auch Randbedingungen (englisch {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)) als Anforderungen beschrieben. Häufige Randbedingungen sind eine Obergrenze für Kosten und ein einzuhaltender Termin für den Abschluss des Projekts.
Klassifikation nichtfunktionaler Anforderungen
Während funktionale Anforderungen je nach Projekt unterschiedlich geordnet werden, gibt es für nichtfunktionale Anforderungen typische Gliederungen, beispielsweise Volere<ref>Suzanne Robertson, James Robertson: Mastering the Requirements Process. 2. Auflage. Addison-Wesley, Harlow 2006, ISBN 0-321-41949-9, S. 171–201.</ref> oder DIN 66272.<ref>Chris Rupp, Sophist Group: Requirements Engineering und -Management. Hanser, München 2001, ISBN 3-446-21664-2, S. 264.</ref>
Nichtfunktionale Anforderungen können in zwei Hauptkategorien unterteilt werden:
Ausführungsqualität
Dies ist während des Betriebs (zur Laufzeit) beobachtbar.
- 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)
Weiterentwicklungsqualität / Evolutionsqualität
Dies ist in der statischen Struktur des Systems verkörpert.
- 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)
- Randbedingungen
Struktur einer Anforderung
Typischerweise besteht eine einzelne Anforderung aus folgenden Bestandteilen.
- Identifikator ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)): Identifiziert die Anforderung eindeutig.<ref name="Schienmann">Bruno Schienmann: Kontinuierliches Anforderungsmanagement. Addison-Wesley, München 2002, ISBN 3-8273-1787-8, S. 151.</ref><ref name="volere">Suzanne Robertson, James Robertson: Mastering the Requirements Process. S. 264.</ref>
- Beschreibung ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)): Beschreibt die Anforderung kurz und prägnant. Schienmann<ref name="Schienmann" /> trennt Kurz- und Langbeschreibung („Anforderungsbeschreibung“), während Robertson und Robertson<ref name="volere" /> nur ein Feld vorsehen, das der Kurzbeschreibung entspricht.
- Problembeschreibung ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)): Beschreibt das die Anforderung verursachende Problem.<ref name="Schienmann" /><ref name="volere" />
- Quelle ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)): Identifiziert die anfordernde Person oder ein Dokument, aus dem sich die Anforderung ergibt, beispielsweise eine Rechtsvorschrift.<ref name="Schienmann" /><ref name="volere" />
- Abnahmekriterium ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)): Beschreibt eine messbare Bedingung, mit der später geprüft wird, ob die Anforderung erfüllt wurde.<ref name="Schienmann" /><ref name="volere" />
Neben diesen Standardbestandteilen schlagen verschiedene Autoren zusätzliche Strukturelemente vor. Eine wichtige Rolle spielt dabei die Priorisierung von miteinander konkurrierenden Anforderungen um die Reihenfolge der Realisierung festzulegen oder eine Auswahl zu treffen, wenn die zur Verfügung stehenden Ressourcen (Zeit, Geld und Personen) nicht ausreichen, um alle Anforderungen zu erfüllen. Hier schlagen Robertson und Robertson in ihrem Vorgehensmodell Volere die folgenden Eigenschaften vor.<ref name="volere" />
- Kundenzufriedenheit ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)): Ein numerischer Wert, der angibt, wie sich die Erfüllung der Anforderung positiv auf die Zufriedenheit des Auftraggebers auswirkt.
- Kundenunzufriedenheit ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)): Ein numerischer Wert, der angibt, wie sich die Nichterfüllung der Anforderung negativ auf die Zufriedenheit des Auftraggebers auswirkt.
- Priorität ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)): Ein numerischer Wert, der die Priorität dieser Anwendung definiert und dann wichtig wird, wenn nicht alle Anforderungen erfüllt werden können.
- Konflikte ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)): Hier können Anforderungen aufgeführt werden, die dieser Anforderung widersprechen, sodass zwischen ihnen abgewägt werden muss.
Schienmann schlägt folgende Eigenschaften vor, um die Anforderungen bestimmten (Software-)Produkten zuzuordnen.<ref name="Schienmann" />
- Produktrelease: Identifiziert die Version des zu erstellenden Produkts, in dem die Anforderung erfüllt werden soll.
- Baustein: Identifiziert den Teil des zu erstellenden Produkts, mit dem die Anforderung erfüllt werden soll.
Die eigentliche Beschreibung der Anforderung kann durch folgende Elemente unterstützt werden und somit das Verständnis gefördert und Missverständnisse vermieden werden.
- Weiterführendes Material ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)): Dokumente, die zum Verständnis der Anforderung benötigt werden.<ref name="volere" />
- Zielsetzung: Definiert das mit der Anforderung verfolgte Ziel.<ref name="Schienmann" />
- Anmerkung: Bietet Platz für ergänzende Bemerkungen und Klarstellungen.<ref name="Schienmann" />
- Nomenklatur: Verweist auf formal definierte Fachbegriffe, die in der Anforderung verwendet werden.<ref name="Schienmann" />
Da Anforderungen nicht konstant bleiben, sondern sich im Verlauf eines Projektes weiterentwickeln, werden auch Informationen zu ihrem Lebenszyklus benötigt.
- Versionsgeschichte ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)) der Anforderung: Wann wurde sie von wem erstmals formuliert, wann von wem geändert usw.<ref name="volere" />
- Status: Identifiziert den aktuellen Zustand der Anforderung, beispielsweise ob sie vom Auftragnehmer bereits akzeptiert wurde.<ref name="Schienmann" />
- Offener Punkt: Bietet Platz für noch zu klärende Sachverhalte.<ref name="Schienmann" />
Im Verlauf der Anforderungsanalyse werden auch Geschäftsprozesse und Geschäftsobjekte modelliert, die zur Formulierung von Anforderungen herangezogen werden können.
- Geschäftsobjekt: Benennt ein Geschäftsobjekt, auf das sich die Anforderung bezieht.<ref name="Schienmann" />
- Geschäftsprozess: Benennt einen von der Anforderung betroffenen Geschäftsprozess.<ref name="Schienmann" />
Außerdem stehen Anforderungen miteinander und mit anderen Artefakten des Entwicklungsprozesses in Beziehung (engl. Requirements Traceability).
- Beziehung (engl. Trace Link): Verweist auf andere Anforderungen. Beispielsweise kann eine grobe Anforderung zu mehreren genaueren verfeinert werden oder Anforderungen stehen miteinander in Konflikt.<ref name="Schienmann" /><ref>Orlena Gotel, Jane Cleland-Huang, Jane Huffman Hayes, Andrea Zisman, Alexander Egyed: Traceability Fundamentals. In: Software and Systems Traceability. Springer London, 2012, ISBN 978-1-4471-2238-8, S. 3–22, doi:10.1007/978-1-4471-2239-5_1 (springer.com [abgerufen am 19. Dezember 2016]).</ref>
Siehe auch
- Business-Analyse
- Nutzungsanforderungen (Human-Centered Design)
- Spezifikation
- Software Requirements Specification
Einzelnachweise
<references />
ca:Requisit (enginyeria) es:Requisito (sistemas) fr:Exigence (ingénierie) ja:要求仕様 nl:Requirement pl:Wymaganie (inżynieria) pt:Requisito ru:Требование vi:Yêu cầu (kỹ thuật)