Automatische Überprüfung von Anforderungen

Motivation

Die Überprüfung von Anforderungen („Validierung“) gehört zu den vier Hauptaktivitäten des Requirements Engineerings. Das Ziel dieser Überprüfung ist einerseits die frühzeitige Sicherstellung, dass die (dokumentierten) Anforderungen die tatsächlichen Wünsche und Bedürfnisse der Stakeholder erfüllen. Andererseits soll damit überprüft werden, ob die Anforderungen die notwendige Qualität aufweisen, um damit weitere Entwicklungsaktivitäten wie Entwurf, Realisierung und Test erfolgreich durchführen zu können.

Gemäß dem International Requirements Engineering Board (IREB) sollen im Rahmen der Anforderungsprüfung sowohl Inhalt, Dokumentation als auch Abgestimmtheit von Anforderungen sichergestellt werden. Dazu werden unterschiedliche Qualitätskriterien zur Prüfung herangezogen, die sich entweder auf einzelne Anforderungen oder die Gesamtmenge der Anforderungen beziehen. Zu den wesentlichen Kriterien gehören die

  • inhaltliche Korrektheit und Notwendigkeit einer jeden Anforderung
  • Konsistenz, also Widerspruchsfreiheit und Einheitlichkeit der Anforderungen
  • Vollständigkeit der gesamten Anforderungsmenge
  • Vollständigkeit der Beschreibung jeder einzelnen Anforderung
  • Verfolgbarkeit bzw. Nachvollziehbarkeit der Anforderungen
  • Eindeutigkeit in der Formulierung der Anforderungen
  • Prüfbarkeit jeder Anforderung
  • generelle Verständlichkeit der Anforderungen

Obwohl seit vielen Jahren spezifische Notationen, Beschreibungsschablonen und Best Practices zum Schreiben guter Anforderungen existieren, tun sich viele Unternehmen noch immer bei der adäquaten Erfassung, Dokumentation und Verwaltung ihrer Anforderungen im Hinblick auf diese Qualitätskriterien schwer. So bemängeln nach dem RE-Kompass 2014/2015 selbst unter RE-affinen Firmen über 50% der Befragten Probleme in der Eindeutigkeit und Vollständigkeit ihrer Anforderungen.

Insbesondere, aber nicht ausschließlich, in Auftraggeber-Auftragnehmer-Beziehungen, spielt die Überprüfung von Anforderungen daher eine zentrale Rolle, da nachträgliche Korrekturen – auch bei agiler Entwicklung – häufig mit erheblichen Kosten verbunden sind.

Doch so wichtig und zielführend die systematische Überprüfung von Anforderungen auch ist: eine praktische Etablierung dieser ist in vielen Firmen aus organisatorischen oder zeitlichen Gründen selten möglich. Anforderungen werden daher – wenn überhaupt – nur ad hoc gereviewt bzw. erst dann geklärt, wenn Unklarheiten bei den Entwicklern oder anderweitigen Projektbeteiligten auftauchen. Auch wenn dies – glücklicherweise – häufig noch frühzeitig eine gänzliche Fehlentwicklung verhindern kann, entstehen in diesem Fall unnötigen Abstimmungs- und Korrekturschleifen, die Budget- und Zeitpläne von Projekten oftmals durcheinanderwirbeln.

Durch die zunehmende Digitalisierung insbesondere auch von Softwareentwicklungsaktivitäten selbst, stellt sich daher die Frage nach einer zuverlässigen Automatisierung der Qualitätssicherung. In diesem Artikel werden daher die aktuellen Möglichkeiten und Grenzen des ReqSuite® Quality Checkers zu diesem Zweck dargestellt.

ReqSuite® Quality Checker

Beispielhafte Meldungen des Quality Checkers

ReqSuite® ist eine moderne Anforderungsmanagement-Software, die das Ziel verfolgt, die inhärente Komplexität von Beschaffungs- und Entwicklungsprojekten für alle Projektbeteiligten beherrschbar zu machen, um dadurch Risiken zu reduzieren und die Effizienz von Vorhaben signifikant zu steigern. Im Gegensatz zu anderen Anforderungs- und Projektmanagement-Werkzeugen bietet ReqSuite® ausgereifte Assistenzfunktionen, um Anwender auch unter inhaltlichen und sprachlichen Aspekten bei der Anforderungserfassung zu unterstützen.

Der Quality Checker ist eine dieser Assistenzfunktionen innerhalb von ReqSuite® und dient dazu

  • unpräzise und unvollständig spezifizierte Anforderungen
  • Widersprüche und Duplikate
  • sowie Unvollständigkeiten bzw. Überspezifikationen in der Gesamtmenge der Anforderungen zu erkennen.

Anhand von Beispielen werden nachstehend die einzelnen Prüfmöglichkeiten des ReqSuite® Quality Checkers vorgestellt.

Erkennung von unpräzisen und unvollständig spezifizierten Anforderungen

Unpräzise Formulierungen

Die sicherlich bekannteste und problematischste Kategorie von problematischen Anforderungen sind unpräzise oder in sich unvollständig spezifizierte Anforderungen. Die Schwierigkeit hierbei besteht darin, dass man sowohl beim Schreiben als auch beim einfachen Lesen den Eindruck gewinnt, genau zu wissen, was gemeint ist, und erst bei einer detaillierten Beschäftigung mit den Anforderungen bestehende Ungenauigkeiten bewusst werden.

Die mangelnde Präzision einer Anforderung ergibt sich zumeist durch die Verwendung grundsätzlich schwammiger Begriffe sowie durch die Nutzung von Wörtern, die ohne Quantifizierung oder Detaillierung nicht eindeutig interpretiert werden können. Nachstehend sind einige Beispiele genannt.

  • „Excel-Export: Das System soll nach Möglichkeit Daten nach Excel exportieren können.“ –> ist dies verpflichtend umzusetzen oder ist das eine optionale Anforderung?
  • „Reiseprozess: Der Lieferant muss den Reiseprozess analog zum Prozess der Publikationsfreigabe abbilden.“ –> also den gleichen Prozess nochmal oder wie?
  • „Performanz: Das System soll schneller als das alte sein.“ –> d.h. konkret was?
  • „Zuverlässigkeit: Das System muss eine bessere Verfügbarkeit haben als bisher.“ –> und wie hoch soll diese Verfügbarkeit sein?
  • „Antwortzeit: Auf jede Nutzereingabe soll das System in wenigen Sekunden antworten.“ –> und wieviel sind wenige? 2, 3, 5, 10?

Zu erkennen, dass eine Anforderung nicht präzise ist, ist nicht immer einfach, denn bereits kleine Änderungen eines Satzes machen die Anforderung bereits präzise. Für eine automatische Prüfung ist es daher von großer Wichtigkeit, diese Nuancen in Texten zu verstehen und Unterschiede zwischen guten und schlechten Anforderungen erkennen zu können. Während der Entwicklung des Sprach-Checkers wurden daher nicht Regeln für gute Anforderungen (beispielsweise auf Basis von Satzschablonen) implementiert, sondern vielmehr Erfahrungen mit schlechten Anforderungen aus über 50 industriellen Anforderungsspezifikationen unterschiedlicher Branchen konsolidiert.

Unvollständig spezifizierte Anforderungen

Eine unvollständige Spezifizierung einzelner Anforderungen ergibt sich daneben zumeist durch das Fehlen notwendiger Informationen bei der Verwendung gewisser Verben. Auch hierzu ein paar Beispiele:

  • „Ergebnisanzeige: Wenn die Suche erfolgreich war, soll das System dem Nutzer die Ergebnisse anzeigen.“ –> in welchem Fenster und in welcher Form?
  • „Datenplausibilisierung: Das System muss die eingegebenen Kundendaten plausibilisieren.“ –> anhand welcher Regeln und hinsichtlich was?
  • „Datenexport: Wenn der Vorgang abgeschlossen ist, müssen die Kundendaten exportiert werden.“ –> automatisch oder auf Knopfdruck? von wo? nach wo? in welchem Format?

Eine Überprüfung von Anforderungen auf unvollständige Spezifizierung setzt daher eine intensive Analyse von Satzinhalten voraus. Je mehr Kontextwissen bei einem Leser vorhanden ist, desto weniger fallen entsprechende Formulierungen auf, da die inhaltlichen Lücken durch eigenes Wissen (oder implizite Annahmen) gefüllt werden. Hier können daher automatische Prüfverfahren, die ein tiefgehendes Wissen über einen vollständigen Satzbau implementieren, helfen. Der ReqSuite® Quality Checker ist genau hierauf trainiert.

Nicht erkennbare Anforderungen

Ein weiterer Problemfall – der leider branchenübergreifend in einer Vielzahl von Anforderungsdokumenten zu finden ist – ist die Beschreibung von Anforderungen nicht als klare Anforderung. Stattdessen werden sachliche Aussagen im Präsenz getätigt, bei denen einem Leser unklar bleibt, ob hier der Status Quo oder ein gewünschter Zielzustand (und somit eine Anforderung) beschrieben ist. Insbesondere dann, wenn heterogene Beschreibungsformen in der Gesamtmenge der Anforderungen verwendet werden und beispielsweise im Folgesatz eine klare Anforderung zu erkennen ist, stellt sich die Frage, ob auch andere Formulierungen eine Anforderung sind. Als Beispiele seien hier angeführt:

  • „Benachrichtigung: Nach der Reservierung wird vom System eine Nachricht an den Benutzer versendet.“ –> ist das heute schon oder ist das noch umzusetzen?
  • „Reaktionszeit: Auf 98% aller Anfragen antwortet das System in weniger als 1 Sekunde.“ –> ist das heute der Fall oder ist das eine Anforderung?
  • „Einmalzahlung: Ein Vertrag kann auch gegen eine Einmalzahlung abgeschlossen werden.“ –> ist das heute schon so? ist das eine neue Regelung? und wenn ja: ist diese Softwareseitig abzubilden?

Auch für das Erkennen solcher Formulierungen bietet der ReqSuite® Quality Checker Unterstützung.

Erkennung von Widersprüchen und Duplikaten

(Potentielle) Widersprüche

Widersprüche zwischen Anforderungen führen unweigerlich zu Missverständnissen, Klärungsrunden oder gar späten Überraschungen, sofern den Entwicklern nicht frühzeitig der Widerspruch auffällt und nur eine Variante der Anforderungen gesehen und implementiert wird. Beispiel:

  • „Das System muss allen Nutzern ermöglichen, Kundendaten pflegen zu können.“  vs. „Das System darf nur dem Administrator ermöglichen, Kundendaten pflegen zu können.“ –> was davon ist umzusetzen?

Duplikate bilden daneben einerseits ein Risiko für die Bildung solcher Widersprüche (z.B., wenn nur eine Textstelle geändert wird und deren Duplikate unverändert bleiben); anderseits erschweren Wiederholungen aber auch die Lesbarkeit des gesamten Anforderungsdokuments und blähen es nur unnötig auf.

Im ReqSuite® Quality Checker können deshalb auch Widersprüche und Duplikate erkannt werden.

Erkennung von Unvollständigkeiten und Überspezifikationen

Konzeptionelle Unvollständigkeiten und Überspezifikationen

Unvollständigkeiten in der Gesamtmenge von Anforderungen liegen dann vor, wenn wichtige Anforderungen von den Stakeholdern gänzlich vergessen und somit nicht erfasst wurden (inhaltliche Unvollständigkeit) oder wenn Anforderungen weitere Anforderungen implizieren und diese aber fehlen (konzeptionelle Unvollständigkeit).

Diese konzeptionelle Unvollständigkeit, auf die ReqSuite® gegenwärtig fokussiert, lässt sich nur kontextspezifisch erkennen. Werden beispielsweise Anwendungsfälle spezifiziert, aber fehlen noch daraus resultierende Detailanforderungen, so kann dies nur dann erkannt werden, wenn die kontextspezifische Abhängigkeit von Anwendungsfällen und funktionalen Details bekannt sind.

Insbesondere da Anforderungen unterschiedlicher Art üblicherweise von unterschiedlichen Personen beigetragen werden, ist eine manuelle Erkennung von konzeptionellen Unvollständigkeiten jedoch oftmals herausfordernd. Ohne eine automatische Überprüfung ist es daher schwer, die Anforderungsanalyse angemessen zu steuern, was häufig zu späten Anforderungserweiterungen mit entsprechenden Auswirkungen auf das Gesamtprojekt führt. Der ReqSuite® Quality Checker wurde deshalb genau im Hinblick hierauf entwickelt und kann Kontextwissen zur Laufzeit interpretieren und auf gegebene Anforderungsmengen anwenden.

Neben konzeptionellen Unvollständigkeiten führen andersherum aber auch Überspezifikationen häufig zu Dokumenten, die unnötigerweise den Kosten- und Zeitrahmen von Projekten gefährden. Kam beispielsweise eine fachliche Komponente durch eine spezielle Funktion in die Anforderungsmenge, aber wurde die Funktion zwischenzeitlich verworfen, so macht es keinen Sinn mehr, diese fachliche Komponente noch weiter zu berücksichtigen. Entsprechend müssen auch Überspezifikationen frühzeitig eliminiert werden, um unnötige oder gar kontraproduktive Projektarbeit zu vermeiden.

Der ReqSuite® Quality Checker kann daher auch solche Überspezifikationen erkennen und entsprechende Korrekturen auf Knopfdruck vorschlagen.

Fazit

Die Überprüfung von Anforderungen ist das A und O um frühzeitig dafür zu sorgen, dass kostspielige Nacharbeiten im weiteren Projektverlauf verhindert werden können. Eine saubere Anforderungsanalyse ohne abschließende Validierung der Ergebnisse ist daher „verschenkte Liebesmüh'“ und torpediert zumeist die Ziele, die man sich durch ein systematisches Requirements Engineering setzen wollte. Während die inhaltliche Überprüfung von Anforderungen nach wie vor nur durch Stakeholder erfolgen kann („ist das wirklich das, was ich möchte?“) können jegliche Qualitätsaspekte der Dokumentation automatisch überprüft und somit frühzeitig sichergestellt werden. Dadurch können die Aufwände für spätere Nachfragen und insbesondere Nacharbeiten signifikant reduziert werden.

Mit dem ReqSuite® Quality Checker steht erstmals eine solche Automatisierung in einem kommerziellen Requirements Management Tool zur Verfügung. Anwender, die ReqSuite® als Werkzeug für ihr Anforderungsmanagement verwenden, können folglich umgehend von einer Vielzahl hilfreicher Prüfungen profitieren. Für andere Interessenten steht zumindest die Prüfung der Anforderungen auf sprachliche Qualität mittels des ReqSuite® Sprach-Checkers über eine Web-API zur Verfügung, so dass eine Einbindung dieser Prüfungen auch in andere Werkzeuge möglich ist.

Sebastian Adam
Sebastian Adam
Dr. Sebastian Adam ist Geschäftsführer der OSSENO Software GmbH und operativ für die Bereiche Produktinnovation und Marketing verantwortlich. Vor seiner Zeit bei OSSENO arbeitete er 10 Jahre lang als Berater, Wissenschaftler und Teamleiter für Requirements Engineering am Fraunhofer-Institut für Experimentelles Software Engineering (IESE). Dr. Adam hat bereits mehrere Duzend Unternehmen begleitet und verfügt über branchenübergreifende Best Practices bezüglich der Einführung und Durchführung von Requirements Engineering.