Die Qualitätsmerkmale im Anforderungsmanagement

REQUIREMENT ENGINEERING

Was genau ist „Requirement Engineering“?
Das Requirements Engineering konzentriert sich im Wesentlichen darauf, herauszufinden, was entwickelt werden sollte (und nicht, wie es entwickelt werden sollte). Das hat eine Reihe von Aspekten:

1. Was will der Kunde?

2. Was benötigt der Benutzer, um das System zu nutzen?

3. Wie wird sich die Software auf die Benutzer auswirken?

Anforderungs-Engineering ist der Prozess der Anpassung von Konstruktionsentwürfen an eine Reihe von Softwareanforderungen. Dies ist von entscheidender Bedeutung, um genaue Ergebnisse in der Softwareentwicklung zu erzielen. Requirements Engineering wird auch als Anforderungsanalyse bezeichnet. Dabei untersuchen die Requirements – Engineer eine Reihe von Daten, die sich auf die Ziele und Vorgaben der Software beziehen. Die Requirements – Engineer müssen anhand dieser Daten an spezifischen Codierungslösungen, die diese Ergebnisse unterstützen, arbeiten.

Zu den Elementen des Requirements Engineering gehören:
• Anforderungserhebung, bei der ein Softwareunternehmen die Anforderungen von einem Kunden erhält
• Anforderungsanalyse
• Anforderungsspezifikation
• Verhandlungen, bei denen die Prioritäten jeder Anforderung festgelegt werden, die grundlegenden Anforderungen notiert werden und vor allem Konflikte zwischen den Anforderungen gelöst werden.
• Ausarbeitung, in der die gesammelten Anforderungen verfeinert werden.
• Anforderungsüberprüfung, bei der die Requirements – Engineer bestätigen, dass die Anforderungen korrekt sind
• Validierung, bei der die Qualität der Anforderungen (d. H. Eindeutig, konsistent, vollständig usw.) und die Interpretation der Anforderungen durch den Entwickler bewertet werden.
• Management, bei dem die Änderungen verwaltet werden, die die Anforderungen während der Projektlaufzeit durchlaufen müssen.

Es ist wichtig darauf hinzuweisen, dass ein Großteil des Requirements Engineering mit den am Prozess beteiligten Stakeholdern oder Parteien zu tun hat. In der Regel passen Entwickler eines Softwareunternehmens die Softwareanforderungen an die Bedürfnisse des Kunden an.
Das bedeutet, dass während der Kommunikation zwischen dem Kunden und dem Softwareunternehmen viele Phasen des Anforderungs-Engineerings stattfinden.
IT-Experten haben darauf hingewiesen, dass das Anforderungs-Engineering für Unternehmen nach wie vor eine große Herausforderung darstellt, unter anderem aufgrund der Mehrdeutigkeit der Softwareentwicklung, der Herausforderung, genaue Anforderungen von einem Kunden zu erhalten und des fortlaufenden Prozesses, interne Prozesse in einem Entwicklungsunternehmen an die Ziele anzupassen. Mit anderen Worten, das Requirements Engineering versucht, diese Kluft zwischen dem, was der Kunde denkt, und dem, was die Entwickler denken, zu überbrücken und einen soliden, konsistenten Rahmen für die tatsächliche Erstellung anspruchsvoller Softwareprodukte zu schaffen.

User and System Requirements

In der Regel werden Anforderungen in zwei Detailebenen dargestellt. Benutzer- und Systemanforderungen, bei denen Benutzer eine allgemeine Beschreibung der Anforderungen benötigen, während Systementwickler eine detailliertere Systemspezifikation benötigen. Benutzer- und Systemanforderungen beziehen sich also nur auf unterschiedliche Detaillierungsgrade.

Unterschiedliche Detaillierungsgrade sind nützlich, da Informationen über das zu entwickelnde System für verschiedene Lesertypen übertragen werden.
Endbenutzer werden sich also nicht um Details kümmern, sondern benötigen eine allgemeine, abstrahierte schriftliche Anforderung.

Während die Leute, die an der Entwicklung beteiligt sind, brauchen sie, was genau sie tun sollten.

Sie werden wahrscheinlich eine Menge Probleme und Missverständnisse haben, wenn Sie nicht klar zwischen den einzelnen Ebenen unterschieden haben.

User Requirements

• Es beschreibt die Dienste, die das System bereitstellen soll, und die Einschränkungen, unter denen es arbeiten muss. Wir erwarten keine Detailgenauigkeit und keine genaue Funktion des Systems. Es handelt sich eher um allgemeine Anforderungen.
• Es ist normalerweise in einer natürlichen Sprache geschrieben und wird von Diagrammen geliefert.

System Requirements

• Die Systemanforderungen bedeuten eine detailliertere Beschreibung der Systemdienste und der betrieblichen Einschränkungen, z. B. wie das System verwendet wird, und der Entwicklungseinschränkungen, z. B. der Programmiersprachen.
• Diese Detailgenauigkeit wird von den an der Systementwicklung Beteiligten wie Ingenieuren, Systemarchitekten, Testern usw. benötigt.

Funktionale und nichtfunktionale Anforderungen

Die Softwareanforderungen werden in funktionale Anforderungen und nicht funktionale Anforderungen unterteilt.

Funktionale Anforderungen

Es deckt die Hauptfunktionen ab, die vom System bereitgestellt werden sollen. Wenn sie als Benutzeranforderung ausgedrückt werden, werden sie normalerweise abstrakt beschrieben.

Eine spezifischere funktionale Systemanforderung beschreibt jedoch die Systemfunktionen, die Eingaben, die Verarbeitung; wie es auf eine bestimmte Eingabe reagieren wird und was die erwartete Ausgabe ist.

Nicht-funktionale Anforderungen

Dies sind die Einschränkungen für die vom System bereitgestellten Funktionen.
Die Einschränkungen, wie z. B. wie viele Prozesse das System verarbeiten kann (Leistung), welche (Sicherheits-) Probleme muss das System behandeln, z. B. SQL.

Die Ausfallrate (Zuverlässigkeit), die verwendeten Sprachen und Tools (Entwicklung), die Regeln, die Sie befolgen müssen, um sicherzustellen, dass das System im Rahmen des Gesetzes der Organisation funktioniert (gesetzgeberisch).

Nichtfunktionale Anforderungen sind häufig kritischer als einzelne funktionale Anforderungen. Benutzer können in der Regel Wege finden, um eine Systemfunktion zu umgehen, die ihren Anforderungen nicht wirklich entspricht. Die Nichterfüllung einer nicht funktionalen Anforderung kann jedoch dazu führen, dass das gesamte System unbrauchbar wird.

Wenn ein Flugzeug beispielsweise nicht unbedingt die Zuverlässigkeitsanforderungen erfüllt, die Betriebssicherheit beeinträchtigt oder ein eingebettetes Steuerungssystem die Leistungsanforderungen nicht erfüllt, funktionieren die Steuerfunktionen nicht ordnungsgemäß.
Nichtfunktionale Anforderungen sollten messbar sein

Wann immer möglich, sollten wir nichtfunktionale Anforderungen quantitativ schreiben, damit sie getestet werden können. Sie können sie beim Testen des Systems messen, um zu überprüfen, ob das System die nichtfunktionalen Anforderungen erfüllt.
In der Praxis fällt es Kunden eines Systems oft schwer, ihre Ziele in messbare Anforderungen umzusetzen. Sie verstehen nicht, welche Zahl die erforderliche Geschwindigkeit oder Zuverlässigkeit definiert. Für einige Ziele, z. B. Wartbarkeit, können keine Metriken verwendet werden.

Die Kosten für die Überprüfung messbarer nichtfunktionaler Anforderungen können sehr hoch sein, und die Kunden glauben möglicherweise nicht, dass diese Kosten gerechtfertigt sind.

Nichtfunktionale und funktionale Anforderungen sind abhängig

Nichtfunktionale Anforderungen stehen häufig in Konflikt, interagieren miteinander oder generieren sogar andere funktionale oder nichtfunktionale Anforderungen.

Eine Benutzeranforderung, die sich mit Sicherheit befasst, wie z. B. die Beschränkung des Zugriffs auf autorisierte Benutzer, kann andere Anforderungen generieren, die funktionsfähig sind, wie z. B. die Notwendigkeit, Benutzerauthentifizierungsfunktionen in das System aufzunehmen.

Die typischen Probleme in der Anforderungsanalyse

• Unklare Zielvorstellungen
• Informationsverlust
• Sprachbarrieren
• Schlechte Qualität
• Veränderliche Anforderungen
• Hohe Komplexität

Die Qualitätskriterien im Requirements – Engineering

Um eine gute Anforderung schreiben zu können, muss von Anfang an bekannt sein, wie eine Anforderung bekannt sein soll, somit wird es auch realistischer, diese zu erreichen.

Die wesentlichen Qualitätsanforderungen für jede einzelne Anforderung

• Vollständigkeit
• Technisch lösungsneutral
• Eindeutig
• Realisierbar
• Verfolgbar
• Notwendig
• Prüfbar
• Konsistent

Die Qualitätskriterien für die Anforderungsspezifikation

• Vollständig
• Erschwinglich
• Abgegrenzt
• Konsistent