everythingpossible - stock.adobe

Welche Arten von Anforderungen gibt es in der Entwicklung?

Softwareanforderungen lassen sich in drei Kategorien einteilen: geschäftliche, benutzerspezifische und softwarebezogene. Was die Kategorien bedeuten, erfahren Sie hier.

Ein umfassender Satz von Anforderungen ist für jedes Softwareprojekt von entscheidender Bedeutung.

Anforderungen identifizieren die geschäftlichen Anforderungen und Zwecke des Produkts auf hoher Ebene. Sie klären auch die Merkmale, Funktionen, Verhaltensweisen und Leistungen, die die Beteiligten erwarten.

Softwareanforderungen sind eine Möglichkeit, das Warum, Was und Wie einer Unternehmensanwendung zu identifizieren und zu klären. Wenn sie ordnungsgemäß recherchiert und dokumentiert werden, bilden Softwareanforderungen einen Fahrplan, der ein Entwicklungsteam unterstützt, schnell und mit minimalem Aufwand das richtige Produkt zu entwickeln.

Die tatsächlichen Arten von Softwareanforderungen und Dokumenten, die eine IT-Organisation für ein bestimmtes Projekt erstellt, hängen vom Zielpublikum und dem Reifegrad des Projekts ab. Tatsächlich erstellen Unternehmen oft mehrere Anforderungsdokumente, die jeweils auf die spezifischen Bedürfnisse von Führungskräften, Projektmanagern und Anwendungsentwicklern zugeschnitten sind.

Beginnen wir mit einem Blick auf die wichtigsten Arten von Anforderungen in der Softwareentwicklung: Geschäftsanforderungen, Benutzeranforderungen und Softwareanforderungen. Anschließend werden gängige Arten von Softwareanforderungsdokumentationen sowie bewährte Merkmale für die Definition von Anforderungen untersucht.

Arten von Projektanforderungen Infografik
Abbildung 1: Ein Softwareprojekt umfasst geschäftliche, benutzerspezifische und softwaretechnische Anforderungen.

Welche verschiedenen Arten von Anforderungen gibt es in der Softwareentwicklung?

Teams müssen Anforderungen skizzieren, um den Bedürfnissen der Geschäftsinteressenten und Benutzer sowie den eher technischen Funktionen der Software gerecht zu werden. Die drei Hauptarten von Anforderungen in der Softwareentwicklung sind Geschäfts-, Benutzer- und Softwareanforderungen.

Geschäftliche Anforderungen

Geschäftliche Anforderungen sind der Antrieb für viele Softwareprojekte. Ein Dokument mit Geschäftsanforderungen (Business Requirements Document, BRD) skizziert messbare Projektziele für das Unternehmen, die Benutzer und andere Interessengruppen. Business-Analysten, Führungskräfte und andere Projektsponsoren erstellen das Dokument mit Geschäftsanforderungen zu Beginn des Projekts. Dieses Dokument definiert das Warum hinter der Entwicklung. Für Softwareentwicklungsunternehmen dient es auch als Grundlage für die Erstellung detaillierterer Dokumente mit Kunden.

Ein Dokument mit Geschäftsanforderungen besteht aus einer oder mehreren Aussagen. Es gibt kein allgemein gültiges Format, aber ein gängiger Ansatz ist die Ausrichtung der Ziele. Verfassen Sie Aussagen, die ein Projektziel mit einem messbaren Stakeholder- oder Geschäftsziel in Einklang bringen.

Das Grundformat einer Aussage für ein Dokument mit Geschäftsanforderungen lautet: „Die Software [Projektname] wird [ein Geschäftsziel erreichen], um [einen geschäftlichen Nutzen zu realisieren].” Ein Beispiel für eine vollständige Aussage lautet: „Die Lasermarkierungssoftware ermöglicht es der Fertigung, Text und Bilder mit einem geeigneten Laserstrahl auf Edelstahlkomponenten zu markieren, um Kosten für chemisches Ätzen und Entsorgung zu sparen.”

In diesem Beispiel besteht der Zweck des vorgeschlagenen Softwareprojekts darin, ein industrielles Lasermarkierungssystem zum Markieren von Edelstahl-Produktteilen zu betreiben, das eine Alternative zu teuren und umweltschädlichen Chemikalien darstellt.

Geschäftsziele und Vorteile können vielfältig und manchmal austauschbar sein. Zu den üblichen Geschäftszielen und Vorteilen können folgende gehören:

  • Erreichen eines bestimmten technischen Ergebnisses, zum Beispiel die Implementierung einer neuen Technologie
  • Erreichen eines bestimmten logistischen Ergebnisses, zum Beispiel einer schnelleren Markteinführung
  • Steigerung des Marktanteils oder des Umsatzes, was das Geschäftswachstum fördert
  • Verbesserung der Kundenerfahrung, -zufriedenheit oder -beziehungen
  • Stärkung der Geschäftskontinuität, Sicherheit oder Compliance
  • Steigerung der Produktivität oder Effizienz des Unternehmens, zum Beispiel durch die Automatisierung manueller Prozesse
  • Aufbau der Marke des Unternehmens
  • Verwaltung oder Reduzierung von Kosten
  • Steigerung des Website-Traffics
  • Steigerung der Präsenz in sozialen Medien

Unternehmen erstellen ein Dokument mit Geschäftsanforderungen als Grundlage für nachfolgende, detailliertere Anforderungsdokumente. Stellen Sie sicher, dass das Dokument einen vollständigen Satz praktischer und messbarer Ziele widerspiegelt und die Kundenerwartungen erfüllt.

Schließlich sollte das Dokument mit Geschäftsanforderungen ein lebendiges Dokument sein. Bewerten Sie alle zukünftigen Anforderungen, Aktualisierungen oder Änderungen am Projekt anhand des Dokuments, um sicherzustellen, dass die Ziele des Unternehmens weiterhin erfüllt werden.

Benutzeranforderungen

Benutzeranforderungen spiegeln die spezifischen Bedürfnisse oder Erwartungen der Kunden der Software wider. Unternehmen nehmen diese Anforderungen manchmal in ein Dokument mit Geschäftsanforderungen auf, aber eine Anwendung, die umfangreiche Benutzerfunktionen oder komplexe UI-Probleme aufweist, kann ein separates Dokument rechtfertigen, das speziell auf die Bedürfnisse der vorgesehenen Benutzer zugeschnitten ist. Benutzeranforderungen heben, ähnlich wie User Stories, die Art und Weise hervor, wie Kunden mit der Software interagieren.

Es gibt keinen allgemein anerkannten Standard für Benutzeranforderungen, aber dies ist ein gängiges Format: „Der [Benutzertyp] soll [mit der Software interagieren], um [ein Geschäftsziel zu erreichen oder ein Ergebnis zu erzielen].“

Eine Benutzeranforderung in diesem Format für das Beispiel der industriellen Lasermarkierungssoftware sieht wie folgt aus: „Der Produktionsleiter soll in der Lage sein, bei Bedarf neue Markierungsdateien hochzuladen, um eine aktuelle und vollständige Bibliothek mit Lasermarkierungsbildern für die Produktion zu pflegen.“

Für jedes Softwareprojekt kann es viele Benutzeranforderungen geben, die jeweils eine Erwartung, ein Ziel oder eine User Story widerspiegeln. In den meisten Fällen handelt es sich bei Benutzeranforderungen um übergeordnete Ziele, die widerspiegeln, was die Software leisten können sollte. In der Regel werden technische Details zur Erreichung der Ziele vermieden. Benutzeranforderungen bilden häufig die Grundlage für spezifische Softwareanforderungen.

Softwareanforderungen

Nachdem das Dokument mit Geschäftsanforderungen die Geschäftsziele und Vorteile eines Projekts umrissen hat, sollte das Team eine Softwareanforderungsspezifikation (Software Requirements Specification, SRS) erstellen, die die spezifischen Merkmale, Funktionen, nicht-funktionalen Anforderungen und erforderlichen Anwendungsfälle für die Software identifiziert. Im Wesentlichen beschreibt die Softwareanforderungsspezifikation detailliert, was die Software leisten soll. Sie erweitert oder übersetzt das Dokument mit Geschäftsanforderungen und die Benutzeranforderungen in Merkmale und Funktionen, die Entwickler verstehen und implementieren können.

Softwareanforderungen lassen sich in der Regel in funktionale Anforderungen, nicht-funktionale Anforderungen und Domänenanforderungen unterteilen.

Funktionale Anforderungen. Funktionale Anforderungen sind Aussagen oder Ziele, anhand derer Teams das Systemverhalten definieren. Funktionale Anforderungen legen fest, was ein Softwaresystem leisten muss und was nicht. Sie werden in der Regel als Reaktionen – Interaktionen oder Ausgaben – ausgedrückt, die als Reaktion auf Eingaben oder Bedingungen generiert werden. Zu den gängigen funktionalen Anforderungen gehören Dateneingabe, Datenzugriff, Benutzerauthentifizierung, Warnmeldungen und Berichterstellung, Online-Zahlungen und Integrationen mit anderer Software.

Eine funktionale Anforderung kann eine Wenn-Dann-Beziehung ausdrücken, wie im folgenden Beispiel: „Wenn ein Alarm von einem Sensor empfangen wird, meldet das System den Alarm und hält an, bis der Alarm bestätigt und gelöscht wurde.“

Funktionale Anforderungen können bestimmte Arten von Dateneingaben oder betriebliche Einschränkungen wie Namen, Adressen, Abmessungen und Entfernungen detailliert beschreiben. Diese Anforderungen umfassen oft eine Reihe von Berechnungen, die für die korrekte Funktion der Software unerlässlich sind.

Funktionale Anforderungen sind relativ einfach zu testen, da sie das Verhalten des Systems definieren. Ein Test schlägt fehl, wenn das System nicht wie erwartet funktioniert.

Nicht-funktionale Anforderungen. Nicht-funktionale Anforderungen beziehen sich auf die Benutzerfreundlichkeit der Software. Nicht-funktionale Softwareanforderungen definieren, wie das System funktionieren oder arbeiten muss. Ein System kann seine funktionalen Anforderungen erfüllen, aber seine nicht-funktionalen Anforderungen nicht erfüllen.

Nicht-funktionale Anforderungen definieren die Eigenschaften der Software und die erwartete Benutzererfahrung (UX). Sie umfassen Folgendes:

  • Leistung. Diese misst, wie schnell die Software reagieren oder eine Ausgabe rendern sollte.
  • Benutzerfreundlichkeit. Der Schwierigkeitsgrad, den Benutzer beim Verstehen oder Verwenden einer Benutzeroberfläche oder eines Softwaresystems erleben.
  • Skalierbarkeit. Die Fähigkeit der Software, mehr gleichzeitige Benutzer oder Transaktionen zu verarbeiten.
  • Sicherheit. Die Art und Weise, wie die Software die Verarbeitung und Daten vor Verlust oder Diebstahl schützt.
  • Wartbarkeit. Die Fähigkeit der Software, im Laufe der Zeit gepatcht oder aktualisiert zu werden.
  • Kompatibilität. Die Kompatibilität umfasst die Hardware-, Betriebssystem- und andere Plattformanforderungen für die Software.
  • Portabilität. Die Fähigkeit der Software, auf verschiedenen Systemen oder Plattformen zu laufen.

Ein Beispiel für eine nicht-funktionale Anforderung in Bezug auf Leistung und Benutzererfahrung könnte lauten: „Die Seiten dieses Webportals müssen innerhalb von 0,5 Sekunden geladen werden.“

Domänenanforderungen. Domänenanforderungen sind Erwartungen in Bezug auf eine bestimmte Art von Software, einen bestimmten Zweck oder eine bestimmte Branche. Domänenanforderungen können funktional oder nicht-funktional sein. Der gemeinsame Faktor für Domänenanforderungen ist, dass sie festgelegte Standards oder allgemein akzeptierte Funktionsumfänge für diese Kategorie von Softwareprojekten erfüllen.

Domänenanforderungen können sehr unterschiedlich sein, treten jedoch typischerweise in den Bereichen Militär, Medizin und Finanzwesen auf. Ein Beispiel für eine Domänenanforderung für Software in medizinischen Geräten ist: „Die Software muss in Übereinstimmung mit der Norm IEC 60601 hinsichtlich der grundlegenden Sicherheit und Leistung für medizinische elektrische Geräte entwickelt werden.“

Ein weiteres Beispiel für eine Domänenanforderung für die Finanzbranche ist: „Die Software sollte den aktuellen Standards der allgemein anerkannten Rechnungslegungsgrundsätze für die Finanzbuchhaltung und Berichterstattung entsprechen.“

Software kann funktional und nutzbar sein, aber dennoch für die Produktion ungeeignet, weil sie die Domänenanforderungen nicht erfüllt.

Beispiele für Anforderungen in der Softwaredokumentation

Eine Softwareanforderungsspezifikation beschreibt die Software häufig als eine Reihe einzelner Funktionsmodule. Im Beispiel der Lasermarkierungssoftware kann eine Softwareanforderungsspezifikation die folgenden Module definieren:

  • Die Schnittstelle, die Markierungsbilddateien in Steuersignale für den Laserstrahl umwandelt.
  • Eine Benutzeroberfläche, über die sich ein Bediener anmelden, Produkte aus einer Bibliothek auswählen und Markierungszyklen starten oder stoppen kann.
  • Ein Testmodus zur Kalibrierung des Systems.

Es gibt einige Industriestandards für ein Softwareanforderungsspezifikation, wie zum Beispiel ISO/IEC/IEEE 29148:2018, aber Unternehmen können dennoch ein anderes bevorzugtes Format für Softwareanforderungsspezifikationen verwenden. Ein gängiger Ansatz lautet: „Die [Funktion oder Eigenschaft] soll [auf der Grundlage von Benutzereingaben etwas tun und entsprechende Ausgaben liefern].“

Einige Softwareanforderungen im Zusammenhang mit dem Beispiel des Lasermarkierungssystems können Folgendes umfassen:

  • „Der Lasermarkierungsvorgang muss AutoCAD-Vektorgrafikdateien in Laser-Ein-/Aus-Steuersignale sowie X- und Y-Spiegelsteuersignale umwandeln, die zum Betrieb des Lasersystems verwendet werden.“
  • „Die Software liefert dem Bediener visuelles Feedback, sodass dieser den aktuellen Status des Markierungszyklus in Echtzeit auf einem nahe gelegenen Monitor überlagert auf einem grafischen Produktbild verfolgen kann.“

Zusätzlich zu den funktionalen Anforderungen enthält eine Softwareanforderungsspezifikationen häufig nicht-funktionale Anforderungen, die Eigenschaften des Systems oder der Betriebsumgebung identifizieren. Diese beeinflussen wichtige Entscheidungen zum Systemdesign in Bezug auf Benutzerfreundlichkeit, Sicherheit, Verfügbarkeit, Kapazität, Zuverlässigkeit und Compliance. Sie bestimmen Entwicklungsentscheidungen und Designanforderungen für die Software, wie zum Beispiel die Häufigkeit von Passwortänderungen, Datenschutzeinstellungen und Anmeldedaten.

Ein Systemanalytiker oder Produktmanager erstellt eine Softwareanforderungsspezifikation in der Regel in Zusammenarbeit mit den relevanten Stakeholdern, wie zum Beispiel den Entwicklern und Führungskräften. Im Idealfall sollte jede in einem Softwareanforderungsspezifikation festgelegte Anforderung mit den in einem Dokument für die Geschäftsanforderungen dargelegten Geschäftszielen übereinstimmen. Für externe Softwareauftragnehmer bildet das fertige Softwareanforderungsspezifikation die Grundlage für die Kostenschätzung und die Vertragserfüllung.

Während die Softwareanforderungsspezifikation in der Regel funktionale und nicht-funktionale Anforderungen enthält, unterscheiden einige Unternehmen möglicherweise zwischen einer Softwareanforderungsspezifikation und einer funktionalen Anforderungsspezifikation. In diesen Fällen dient funktionale Anforderung als separates Dokument und befasst sich mit der Funktionsweise eines Softwareprodukts. Eine funktionale Anforderung legt häufig alle Felder und Benutzerinteraktionen im gesamten Softwareprodukt fest.

Abbildung 2: Wie man funktionale Spezifikationen skizziert.
Abbildung 2: Wie man funktionale Spezifikationen skizziert.

Merkmale guter Softwareanforderungen

Alle Arten von Softwareanforderungen erfordern im Rahmen des Produktentwicklungsprozesses umfangreiche Vorbereitungsarbeiten und die Einbeziehung der Stakeholder. Darüber hinaus zwingen solche Bemühungen Unternehmen dazu, darüber nachzudenken, warum sie ein Projekt durchführen, was das Softwareprodukt leisten soll und wie es die gewünschten Ziele erreichen wird. Anforderungsdokumente bilden die Grundlage, auf der Teams ein Softwareentwicklungsprojekt konzipieren, vorschlagen, budgetieren und umsetzen.

Folglich können Anforderungen einen tiefgreifenden Einfluss auf die Softwareentwicklung und die Geschäftsergebnisse über Monate oder sogar Jahre hinweg haben. Eine sorgfältige Abwägung und intellektuelle Investition im Vorfeld kann die Softwarequalität und die Geschäftsergebnisse erheblich verbessern.

Teams sollten sicherstellen, dass die Softwareanforderungen die folgenden acht Merkmale aufweisen.

Klar und verständlich. Softwareanforderungen müssen größtmögliche Klarheit bieten. Schreiben Sie Anforderungen in einfacher Sprache, frei von fachspezifischen Begriffen und Jargon. Klare und prägnante Aussagen machen Anforderungsdokumente für nachfolgende Merkmale während der Analyse und Überprüfung leicht zu bewerten.

Korrekt und vollständig. Das Dokument sollte alle Anforderungen genau beschreiben. Handelt es sich um ein Dokument mit Geschäftsanforderungen, sollte das Dokument alle Geschäftsziele und Vorteile detailliert aufführen. Handelt es sich um eine Softwareanforderungsspezifikation, sollte es alle vom System erwarteten Merkmale und Funktionen beschreiben. Verwenden Sie ein leicht lesbares Format und kehren Sie zurück, um noch zu bestimmende Einträge zu vervollständigen. Es ist selten Aufgabe einer einzelnen Person, ein korrektes und vollständiges Dokument mit Softwareanforderungen zu erstellen. Beziehen Sie alle relevanten Parteien – Führungskräfte, Projektmanager, Entwicklungsmitarbeiter, Kunden und sogar Benutzer – in eine sorgfältige und kontinuierliche Zusammenarbeit bei der Ermittlung der Anforderungen ein.

Konsistent, nicht redundant. Dokumente mit Softwareanforderungen sind oft lang und in mehrere Teile gegliedert, die jeweils spezifische Anforderungen enthalten. Konsistente Anforderungen weisen keine Konflikte auf, wie zum Beispiel Unterschiede in Bezug auf Zeit, Entfernung oder Terminologie. Beispielsweise kann der Unterschied zwischen Server und System einige Teammitglieder verwirren. Verwenden Sie daher nur einen Begriff, um die Maschine im Rechenzentrum zu bezeichnen, auf der die Software ausgeführt wird. Geben Sie eine Anforderung nur einmal an; duplizieren Sie sie nicht. Redundante Anforderungen führen oft zu Fehlern, wenn das Team eine Iteration ändert oder aktualisiert und der Manager vergisst, wiederholte Einträge an anderer Stelle im Dokument zu ändern oder zu aktualisieren.

Eindeutig. Keine Softwareanforderung darf Raum für Interpretationen lassen. Selbst klare Aussagen können dennoch unterschiedlich interpretiert werden, was zum Übersehen bei der Umsetzung führt. Beispielsweise mag es klar sein, dass eine Funktion, wie zum Beispiel ein mathematischer Prozess, auf eine Temperaturmessung angewendet werden soll. Eine Anforderung muss jedoch die Temperaturmessung in Celsius, Kelvin oder Grad Fahrenheit angeben. Formulieren Sie jede Aussage so, dass es nur eine mögliche Interpretation gibt. Zusammenarbeit und Peer-Reviews gewährleisten eine eindeutige Anforderungsdokumentation.

Designunabhängig. Softwareanforderungsdokumente sollten ein Ergebnis veranschaulichen. Wie ein Architekturdiagramm beschreiben die verschiedenen Arten von Anforderungen zusammen, was das Entwicklungsteam erstellen soll und warum, erklären aber selten, wie. Befähigen Sie Entwickler, während der Implementierungsphase des Softwareprojekts aus verschiedenen Designoptionen auszuwählen. Legen Sie keine spezifischen Implementierungsdetails fest, es sei denn, diese sind zur Erreichung der Geschäftsziele erforderlich. Ein Unternehmen kann beispielsweise Entwicklern die Verwendung von Open-Source-Komponenten in einem Projekt untersagen, da dieser Ansatz im Widerspruch zu seiner Fähigkeit steht, das fertige Projekt zu verkaufen oder zu lizenzieren.

Messbar und überprüfbar. Das Ziel eines Anforderungsdokuments ist es, einen Fahrplan für die Umsetzung zu liefern. Letztendlich müssen Teams ein abgeschlossenes Projekt bewerten, um festzustellen, ob die Bemühungen erfolgreich waren – dafür müssen sie in der Lage sein, Aussagen objektiv zu messen. Eine Anforderung wie „muss schnell starten” ist beispielsweise nicht messbar. Verwenden Sie stattdessen eine quantifizierbare Anforderung wie „muss innerhalb von fünf Sekunden initialisiert und bereit sein, Netzwerkverkehr zu akzeptieren”. Diese Eigenschaft ist besonders wichtig für die Arbeit von Softwaresubunternehmern, da nicht messbare Aussagen zu kostspieligen Nacharbeiten führen können. Erstellen Sie ein Softwareanforderungsdokument unter Berücksichtigung von Tests. Jede Aussage sollte es dem Team ermöglichen, Testpläne und Testfälle zu erstellen, die den abgeschlossenen Build validieren.

Nachverfolgbar. Es ist schwer zu sagen, wann Entwickler ein Softwareprojekt abgeschlossen haben. Im Idealfall besteht eine direkte Verbindung zwischen Anforderungsdokumenten und fertigem Code. Ein Projektmanager sollte in der Lage sein, die Herkunft eines Projekts von einer Anforderung über ein Designelement bis hin zu einem Codesegment und sogar zu einem Testfall oder Protokoll nachzuvollziehen. Wenn eine Anforderung nicht bis zum fertigen Code zurückverfolgt werden kann, wird sie vom Entwicklungsteam möglicherweise nicht implementiert, und das Projekt kann unvollständig sein. Code, der ohne entsprechende Anforderung vorhanden ist, kann überflüssig oder sogar schädlich sein. Umgekehrt gilt das Projekt als abgeschlossen, wenn der Projektmanager sieht, dass alle Anforderungen im fertigen Code berücksichtigt wurden und dieser die Tests bestanden hat.

Verwaltetes Dokument. Die meisten Softwaredesigndokumente sind lebendige und sich weiterentwickelnde Einheiten, die sich im Laufe der Zeit, manchmal sogar häufig, durch Zusammenarbeit und Überprüfung ändern können. Unternehmen entscheiden sich häufig dafür, Designdokumente über ein kommentiertes Versionskontrollsystem zu verwalten, das dem System ähnelt, mit dem die Softwareversionen in der Entwicklung verwaltet werden. Die Versionsverwaltung trägt dazu bei, dass alle Entwickler und Projektbeteiligten bei der Diskussion und Umsetzung auf dieselbe Dokumentversion zurückgreifen. Versionsaktualisierungen werden in der Regel regelmäßig an das Projektteam weitergeleitet und über Tools für die Teamzusammenarbeit und -freigabe zur Verfügung gestellt.

Erfahren Sie mehr über Softwareentwicklung