Warum sind Anforderungen im Software Engineering wichtig?

Veröffentlicht: 2021-10-05

In diesem Artikel gehen wir auf die Bedeutung von Anforderungen in der Softwareentwicklung ein und erklären, warum es keine kluge Idee ist, die Anforderungsphase beim Erstellen einer App zu vernachlässigen.

" Funktionierende Software vor umfassender Dokumentation. " Dies ist ein Teil des Agile Manifests.

Oberflächlich betrachtet mag diese Aussage implizieren, dass Anforderungen belanglos und der Zeit nicht würdig sind. Einige Entwickler und ihre Kunden verzichten auf eine angemessene Dokumentation. Aber das ist ein Fehler.

Beginnen wir mit einer kleinen Erklärung, welche Anforderungen an die Softwareentwicklung gestellt werden.

Was sind Anforderungen an die App-Entwicklung?

Es ist nicht so, dass sich die Definition von Anforderungen signifikant ändert, wenn sie auf die Softwareentwicklung angewendet wird. Anforderungen geben lediglich an, welche Funktionen ein Produkt enthalten soll und wie diese Funktionen funktionieren sollen. Wichtig ist, wie man sie anspricht.

Das Sammeln und Analysieren von Anforderungen ist eine der Anfangsphasen im Softwareentwicklungsprozess sowohl bei agilen als auch bei Waterfall-Methoden. In der Anforderungsphase der Ideenvalidierung muss zwischen Auftraggeber und Entwickler vereinbart werden, was genau das Endprodukt wie leisten soll. Anforderungen in der App-Entwicklung sind in der Regel recht detailliert.

So definieren Sie Softwareanforderungen

In der Softwareentwicklung kann es verschiedene Arten von Anforderungen geben.

Geschäftsanforderungen

Warum braucht der Kunde die App? Auf den ersten Blick können diese Informationen unnötig oder sogar überflüssig erscheinen. Schließlich haben Sie einen Kunden, der Sie dafür bezahlen möchte, eine App zu erstellen. Warum sollten Sie sich für ihre Gründe interessieren?

Nun, wenn Sie stolz auf das sind, was Sie tun, und Sie danach streben, Qualitätsprodukte herzustellen, sollten Sie sich um das Warum genauso kümmern wie um das Was und Wie.

Die Bedeutung von Geschäftsanforderungen besteht darin, dass sie eine Vision des Endziels bieten. Mit dem Ziel vor Augen können Entwickler Prioritäten setzen. Sie können ihr Fachwissen auch einsetzen, um bessere Lösungen anzubieten, um diese Ziele zu erreichen. Nicht umsonst gehört die Business-Analyse in den meisten Unternehmen zum Entwicklungsprozess.

Ohne klare Geschäftsanforderungen können schlechte Entscheidungen getroffen werden. Entscheidungen, die die Entwicklung verlangsamen, Termine stören und zu zusätzlichen Entwicklungsstufen führen.

Software Anforderungen

Arten von Anforderungen

Es gibt zwei Arten von Anforderungen: funktionale und nichtfunktionale. Vereinfacht sieht die Unterscheidung wie folgt aus:

Funktionale Anforderungen sind die Was-Anforderungen — Wozu dient dieses System? Wie der Name schon sagt, beschreiben sie die Funktionalität der Software.

Nichtfunktionale Anforderungen sind die Wie-Anforderungen — Wie wird dieses System das tun, wofür es entwickelt wurde? Diese Anforderungen beschreiben, wie sich jedes Feature unter welchen Bedingungen verhalten soll, welche Einschränkungen es geben sollte usw.

Die beiden gehen Hand in Hand. Nichtfunktionale Anforderungen ergänzen und definieren funktionale Anforderungen. Stellen wir uns zum Beispiel vor, wir erstellen eine Messaging-App.

Die wichtigsten funktionalen Anforderungen wären in diesem Fall:

  1. Die App muss Nachrichten senden können.
  2. Die App muss die Datei- und Medienübertragung unterstützen.
  3. Usw.

Diese sind ziemlich einfach und es ist leicht zu verstehen, warum funktionale Anforderungen wichtig sind: Sie beschreiben die Funktionalität. In diesem Beispiel ist die nichtfunktionale Anforderungen könnten wie folgt aussehen :

  1. Der Dienst muss in allen gängigen Browsern die volle Funktionalität bieten: Microsoft Edge, Google Chrome (neueste zwei Versionen), Mozilla Firefox (neueste zwei Versionen), Opera, Safari (neueste Version).
  2. Mobile Layouts müssen unterstützt werden.
  3. Usw.

Wie du siehst, Funktionsanforderungen sind im Grunde eine Liste von Funktionen, die in das System aufgenommen werden müssen . Andererseits sind nichtfunktionale Anforderungen spezifisch. Sie sind notwendig, um die Entwicklungs- und Testbedingungen zu definieren.

Zwar bietet der iterative agile Prozess die Möglichkeit, in jedem Stadium der Entwicklung Änderungen vorzunehmen , aber das bedeutet nicht, dass auf Anforderungen komplett verzichtet wird. Sie müssen sie nur flexibel machen.

Ohne genaue Parameterangaben ist es unmöglich zu verstehen, ob ein Feature genau so konzipiert ist, wie es sein sollte.

Anforderungen müssen gründlich analysiert und dokumentiert werden. Wieso den? Denn sonst kann vieles schiefgehen.

Das Damoklesschwert der undokumentierten Anforderungen

Problem mit undokumentierten Anforderungen

Die Bedeutung von Softwareanforderungen wird am besten von Spezialisten für Qualitätssicherung verstanden. Wenn die Projektanforderungen nicht richtig ausgelegt sind, erhalten QAs den größten Schlag. Stellen Sie sich vor, Sie versuchen festzustellen, ob Software korrekt implementiert ist, ohne klare Richtlinien dafür, was sie tun und wie sie dies tun soll. Es ist der totale Wahnsinn.

Dieses Problem betrifft jedoch nicht nur Tester. Keine offiziellen Spezifikationen zu haben bedeutet Folgendes:

  • Es gibt kein klares Verständnis dafür, was ein fertiges Produkt oder gar eine Funktion ausmacht.
  • Der Kunde weiß nicht, was er am Ende der Entwicklung erwartet und wofür er bezahlt.
  • Entwickler bleiben hängen und müssen die Besonderheiten der Funktionen basierend auf dem Gesagten herausfinden und wie sie es selbst verstanden haben.
  • Fehler. Sie sind überall.

Bugs und Fehler

Undokumentierte Anforderungen führen auf allen Seiten zu Missverständnissen. Es kommt nicht selten vor, dass ein Kunde und ein Entwickler dieselben Begriffe unterschiedlich verstehen. Vor allem, wenn es sich um ein Outsourcing-Entwicklungsunternehmen handelt, das mit dem Geschäft des Kunden nicht genau vertraut ist.

Fehlkommunikation wiederum führt zu ständigen Überarbeitungen, Änderungen und Fehlerbehebungen. Es besteht die Möglichkeit, dass ohne dokumentierte Anforderungen alles wie geplant verläuft, aber es ist gering. Normalerweise endet diese Kette mit gestörten Terminen und Kosten, die durch die Decke gehen.

Um eine reibungslose Projektentwicklung zu gewährleisten, müssen alle Teile des Produkts und der Prozess seiner Entwicklung von jedem Teammitglied gleich verstanden werden. Um sicherzustellen, dass Entwickler jede Funktion des Produkts genauso sehen wie der Kunde, wird eine Software-Anforderungsspezifikation (SRS) erstellt.

Der Teufel steckt im Detail: Was macht eine gute Software-Anforderungsspezifikation aus?

Jetzt können die tatsächlichen Software-Anforderungsspezifikationen außergewöhnlich detailliert sein oder nur ein Umriss von Funktionen sein. Der Detaillierungsgrad hängt von einer Reihe von Faktoren ab.

Hohe Qualitätsanforderungen sind für alle Projektbeteiligten leicht verständlich. Dies schließt den Kunden ein, der in technischen Aspekten versiert sein kann oder nicht. Manche Unternehmen fordern einen außergewöhnlich technischen und detailreichen Anforderungskatalog, andere bevorzugen Anforderungen in Laiensprache.

Eigenschaften eines guten SRS

Unabhängig davon, wie technisch ausgelastet Ihre Dokumentation sein wird, gibt es allgemeine Regeln für die Verwaltung von Softwareanforderungen. Es gibt sogar einen offiziellen Standard: IEEE Std 830-1998, „Recommended Practice for Software Requirements Specifications“. So sollte ein guter SRS laut Standard sein:

  • Richtig . Dieser ist einfach. Die Korrektheit des SRS wird vom Kunden und Entwickler auf Grundlage der zwischen ihnen geschlossenen Vereinbarung überprüft. Das SRS sollte den technischen Spezifikationen und allen anderen maßgeblichen Projektdokumentationen entsprechen.

  • Eindeutig . Einer der Hauptzwecke eines SRS besteht darin, Missverständnisse zu beseitigen. Deshalb muss jede Anforderungsspezifikation so geschrieben werden, dass sie nur eine mögliche Interpretation hat. Es ist nicht ungewöhnlich, dass ein SRS ein Glossar enthält.

  • Komplett . Je komplexer die Anwendung, desto detaillierter muss die SRS sein. Ein komplettes SRS deckt alle Seiten ab, von den Leistungsanforderungen bis zur Funktionalität. Sie setzt auch der Gestaltung gewisse Grenzen. Es gibt jedoch nie ein genaues Design vor. Es bietet nur Parameter.

  • Konsequent . Interne Konsistenz bedeutet, dass keine Aussagen in einem SRS anderen Aussagen in demselben SRS widersprechen. Dies ist ein weiterer Grund, ein Glossar hinzuzufügen – damit jedes Objekt, jeder Prozess und jede Spezifikation innerhalb des Dokuments mit einem genauen Begriff bezeichnet wird.

  • Rang nach Wichtigkeit und/oder Stabilität . In den meisten Fällen gibt es Must-Have-Anforderungen und Wunsch-Anforderungen. Für Software-Anforderungsspezifikationen ist es wichtig, beide Typen eindeutig zu kennzeichnen. Dies hilft Entwicklern und Projektmanagern, wenn sie einen Schritt-für-Schritt-Plan für das Projekt erstellen.

  • Überprüfbar . Es muss eine Möglichkeit geben, jede Anforderung, die Sie in den SRS aufnehmen, zu testen. Um als überprüfbar zu gelten, müssen Anforderungen messbare und konkrete Konzepte enthalten.

  • Veränderbar . Dies bezieht sich auf die SRS-Struktur. Um den Projektworkflow bei der Umsetzung von Änderungen nicht zu stören, muss der SRS klar und einfach zu ändern sein und die Anforderungen sollten nicht wiederholt werden.

  • Rückverfolgbar . Es sollte leicht sein, die Quelle jeder im SRS festgelegten Anforderung zu identifizieren.

Dies sind Empfehlungen . In der Realität können Unternehmen je nach Projekt, Kunde und Team auf einige dieser Punkte verzichten. Aber es ist immer gut, eine Anleitung zu haben.

Die Anforderungen sind praktisch, egal ob Sie sich auf iOS- und Android-Anwendungsentwicklung oder Webentwicklung spezialisieren. Sie sind Allzweckdokumentation. Und wie sie aussehen, ist in der Regel den Entwicklern und ihren Kunden überlassen.

Da ein SRS für alle Beteiligten leicht verständlich sein soll, ist auch die beste Gestaltung umstritten. Manche bevorzugen Tabellen, manche bevorzugen Listen. Es gibt Entwickler, die ihre Spezifikationen lieber in visueller Form als Datenflussdiagramme und Charts bevorzugen. Es gibt keinen einzigen richtigen Weg, um ein Anforderungsspezifikationsdokument zu erstellen.

Abschluss

Hier sind die häufigsten Punkte, wenn Softwareanforderungen nützlich sind:

  • Das Ziel verstehen
  • Schätzung der Entwicklungskosten
  • Erstellen eines umfassenden Zeitplans
  • Prioritäten setzen

Ob Anforderungen dokumentiert werden, entscheidet jeder Entwickler für sich. Und der Wert der Anforderungen variiert je nach Umfang des Projekts. Bei Mind Studios haben wir es vorzuziehen, die Dinge in Ordnung zu bringen, deshalb dokumentieren wir alle Anforderungen . Wenn Sie daran interessiert sind, wie wir das machen, oder Fragen zum Wert von Anforderungen im Allgemeinen haben, kontaktieren Sie uns über unser Kontaktformular .