So erstellen Sie eine Softwareanforderungsspezifikation und verbessern Ihren Softwareentwicklungsprozess
Veröffentlicht: 2020-04-28Der weltweite Umsatz auf dem Softwaremarkt wird 2021 voraussichtlich die Marke von 507,2 Milliarden US-Dollar erreichen. Und 44 % der Unternehmen planen, ihre Technologieausgaben im Jahr 2020 zu erhöhen, berichtet Spiceworks.
Softwareprodukte sind ein äußerst wettbewerbsintensives Geschäft und erfordern oft beträchtliche Investitionen.
Als solche bedürfen sie einer sorgfältigen Planung. Es ist ratsam, alle Vorkehrungen zu treffen und Prozesse wie die Spezifikation der Softwareanforderungen zu befolgen.
In diesem Artikel besprechen wir die fünf notwendigen Schritte, die jedes Unternehmen unternehmen sollte, um seine Softwareentwicklungsanforderungen zu skizzieren.
Wir werden auch erkunden:
- Die Gründe für die Definition von Anforderungen an die Softwareentwicklung und wie dies dem Endprodukt helfen kann, die hohen Qualitätsstandards zu erreichen
- Was das Software-Anforderungsspezifikationsdokument ist
- Was Sie wissen müssen, bevor Sie die Anforderungen Ihrer Software definieren
- Was sind die funktionalen und nichtfunktionalen Anforderungen in der Softwareentwicklung?
- Welche Risiken bestehen bei undokumentierten Softwareanforderungen?
Lasst uns anfangen!
5 Gründe, Ihre Anforderungen an die Softwareentwicklung zu definieren, bevor Sie nach einem Entwicklungspartner suchen
Die Anforderungen an die Softwareentwicklung legen fest, welche Funktionen das Softwareprodukt haben soll und was das Ziel des Produkts ist.
Die Herangehensweise an diese Anforderungen kann für den Entwicklungsprozess und letztendlich auch für das Endprodukt den entscheidenden Unterschied machen.
Es ist wichtig, die Anforderungen an die Softwareentwicklung klar zu definieren, denn dies kann:
- Projektkonsistenz sicherstellen : Die Definition spezifischer Softwareanforderungen ist der Beginn eines Softwareentwicklungsprozesses und die Gewährleistung seiner Konsistenz in späteren Phasen. Nach einer längeren Entwicklungszeit können die Beteiligten verwirrt sein, was die Software tun soll. Klar definierte, klare und messbare Anforderungen beziehen sich auf die Geschäftsanforderungen und geben dem gesamten Projekt und allen Beteiligten Klarheit und Fokus.
- Sparen Sie Zeit und Geld: Wenn Sie Ihre Softwareanforderungen definieren und strukturieren, sind die Voraussetzungen für die Entwicklung des eigentlichen Produkts geschaffen. Wenn Sie im Vorfeld so gut wie möglich wissen, was die Software leisten muss und welche Funktionen sie haben sollte, erzielen Sie schneller und mit weniger Aufwand positive Ergebnisse.
- Schaffen Sie eine Basis für die Zusammenarbeit: Teams, die an der Softwareentwicklung arbeiten, bestehen oft aus Mitgliedern mit sehr speziellen und spezifischen Kenntnissen. Dies gilt insbesondere für Teams mit agiler Entwicklungsmethodik. Die Definition von Softwareentwicklungsanforderungen hilft, sie alle auf dem gleichen Stand zu halten. Anforderungen bieten eine Quelle der Wahrheit und allgemeine Richtlinien für das Projekt, indem sie alle Aspekte eines Produkts beschreiben. Dies erleichtert es jedem Einzelnen, seine Rolle im Gesamtbild zu erkennen.
- Sorgen Sie bei unerwarteten Änderungen für Stabilität: Jeder Entwicklungsprozess ist anfällig für plötzliche und unerwartete Änderungen: Designfehler, Testfehler, Managementänderungen, geänderte Funktionsziele usw. Das Änderungsmanagement ist wichtig, da es die steigenden Projektkosten kontrollieren und sicherstellen kann, dass sich die Lieferung des Produkts nicht verzögert. Ihre Anforderungen an die Softwareentwicklung sollten diese möglichen Änderungen koordinieren und antizipieren, um die möglichen Auswirkungen zu ermitteln.
- Stellen Sie sicher, dass das gesamte Softwareprojekt nicht scheitert: Schlecht definierte oder undefinierte Softwareanforderungen, die nicht priorisiert, unklar, unvollständig oder inkonsistent sind, gefährden das gesamte Softwareentwicklungsprojekt.
Was ist das Software-Anforderungsspezifikationsdokument?
Das Dokument Software Requirements Specification (SRS) umreißt die Funktionen und den Zweck des zukünftigen Softwareprodukts, was es tun und wie es funktionieren wird.
Es ist das Rückgrat des Softwareentwicklungsprojekts, da es die Grundlage und Richtlinien legt, die alle am Projekt beteiligten Parteien befolgen sollten.
Das Software-Anforderungsspezifikationsdokument beschreibt die Funktionalitäten, die das Produkt haben muss, um die Erwartungen seiner zukünftigen Benutzer zu erfüllen.
Dieses Dokument sollte immer enthalten:
- Eine Gesamtbeschreibung
- Der Zweck des Produkts
- Spezifische Anforderungen der Software
Darüber hinaus muss in einem SRS-Dokument festgelegt werden, wie die Software in die Hardware integriert oder mit anderen Softwaresystemen verbunden wird.
Die Gliederung des SRS-Dokuments kann wertvolle Erkenntnisse liefern, wie zum Beispiel:
- So minimieren Sie Entwicklungszeit und -kosten
- Wie und wann man eine Entscheidung über den Lebenszyklus eines Softwareprodukts trifft
Dieses Dokument bietet wichtige Informationen über die Entwicklungsprojekte für verschiedene Sektoren und hält sie auf einer Seite. Zu diesen Sektoren gehören:
- Entwurf
- Entwicklung
- QS-Tests
- Betrieb
- Instandhaltung
Obwohl die Begriffe „Software“ und „System“ manchmal synonym verwendet werden, gibt es Unterschiede zwischen der Softwareanforderungsspezifikation und der Systemanforderungsspezifikation.
Während Softwareanforderungsspezifikationen die zu entwickelnde Software beschreiben, sammelt ein Dokument zur Systemanforderungsspezifikation Informationen zu den Systemanforderungen.
Was Sie wissen müssen, bevor Sie Ihre Softwareanforderungen definieren
Bevor Sie die Softwareanforderungen tatsächlich im Spezifikationsdokument definieren, sollten Sie zunächst einige Dinge festlegen und verstehen.
1. Den Softwareentwicklungsprozess verstehen
Die Art des Softwareentwicklungsprozesses hängt von dem durchzuführenden Projekt und dem Team ab, das es entwickelt.
Der Prozess skizziert die Schritte des Softwareentwicklungslebenszyklus und jeder Schritt erstellt das Produkt, das für die nächste Phase im Zyklus benötigt wird.
Der Softwareentwicklungsprozess besteht aus diesen sechs grundlegenden Phasen:
- Erfassung der Softwareanforderungen und Analyse des Projekts
- Produktdesign
- Implementierung/Codierung
- Testen
- Einsatz
- Instandhaltung
Jeder nachfolgende Schritt ist vom vorherigen abhängig und erstellt einen Workflow. Gesammelte Anforderungen schaffen eine Grundlage für das Produktlayout und -design. Die Entwicklungsphase - Implementierung und Codierung - hängt vom Design ab.
Der Testprozess, der prüft, ob die Anforderungen erfüllt sind, gibt das resultierende Produkt aus der Entwicklungsphase entweder frei oder lehnt es ab.
Wenn das Produkt die Anforderungen erfüllt, ist das Produkt bereit für die Markteinführung mit anschließenden Wartungsvorgängen.
2. Definieren Sie die Geschäftsanforderungen für Ihre Softwarelösung
Jedes Softwareprodukt wird als Antwort auf eine bestimmte Geschäftsanforderung erstellt. Die Vorgehensweise zum Definieren und Analysieren der Softwareanforderungen bezieht sich auf ein bestimmtes Geschäftsziel.
Der Prozess der Definition der Geschäftsanforderungen der Software kann Ihrem Unternehmen helfen, den Umfang des Projekts zu bestimmen.
Dies wiederum hilft bei der Schätzung der Ressourcen und des Zeitrahmens, die für die Fertigstellung erforderlich sind.
Die Kenntnis der Geschäftsanforderungen einer Softwarelösung führt zu einem besseren Verständnis der Geschäftsanforderungen, die in spezifische Details unterteilt werden können.
Wenn ein Problem besteht und in der Analysephase identifiziert wird, ist es viel billiger, es vor Ort zu beheben, als wenn das Produkt auf den Markt kommt.
Befolgen Sie diese Schritte, um die Geschäftsanforderungen Ihrer Softwarelösung zu definieren:
- Identifizieren Sie Stakeholder und Gruppen, die von dem Softwareprodukt profitieren: Dazu gehören Projektsponsoren und Kunden, die das letzte Wort über den Umfang des Projekts haben. Dies sind auch die Endbenutzer der Softwarelösung, die ihren Anforderungen entsprechen muss.
- Erfassen Sie ihre Anforderungen: Was erwarten die oben genannten Gruppen von dieser Softwarelösung? Was sind ihre eigenen Anforderungen an das Produkt? Das Verständnis der unterschiedlichen Perspektiven jeder Interessengruppe hilft, ein vollständiges Bild davon zu erhalten, was das Projekt erreichen soll.
- Kategorisieren Sie ihre Anforderungen : Die Gruppierung von Anforderungen in mehrere Kategorien wie die folgenden erleichtert Ihr Analyseverfahren.
- Funktionale Anforderungen
- Betriebsanforderungen
- Technische Voraussetzungen
- Übergangsbestimmungen
- Interpretieren Sie ihre Anforderungen: Nachdem ihre Anforderungen und Erwartungen erfasst und kategorisiert wurden, ist es wichtig festzustellen, welche von ihnen erreichbar sind und wie Ihr Produkt sie erfüllen kann. Du solltest:
- Priorisieren Sie bestimmte Erwartungen
- Stellen Sie sicher, dass sie klar formuliert, ausreichend detailliert sind, sich auf die Geschäftsanforderungen beziehen und nicht vage sind
- Konflikte lösen
- Machbarkeit analysieren
3. Definieren Sie Ihren bevorzugten Tech-Stack und Ihre Entwicklungsmethodik (falls vorhanden)
Abhängig von den Zielen Ihres Softwareprodukts, der Größe des Entwicklungsteams und anderen Faktoren sollten Sie möglicherweise mehrere Entwicklungsmethoden in Betracht ziehen, die unter den gegebenen Umständen die besten Ergebnisse erzielen.
Dies sind die am häufigsten verwendeten Entwicklungsmethoden, für die Sie sich bei der Entwicklung von Software entscheiden können.
- Funktionsorientierte Entwicklung: Das Ziel dieser Methodik ist die häufige Bereitstellung der funktionierenden Software und ist kundenorientiert. Es eignet sich gut für kleinere Entwicklungsteams und ist ein Vorläufer für agile und schlanke Methoden.
- Wasserfall : Die traditionelle Art der Softwareentwicklung, dies ist ein plangesteuerter Ansatz, der im Voraus viel starre Struktur und Dokumentation erfordert. In der ersten Phase ist ein umfassendes Verständnis der Anforderungen des Projekts erforderlich. Gut für große, plangesteuerte Teams, die nicht von ihren ursprünglichen Ideen abweichen.
- Agil : Im Gegensatz zu Wasserfall ist die agile Methodik flexibel und berücksichtigt die Möglichkeit von Änderungen während des Entwicklungsprozesses. Es schätzt einzelne Teammitglieder und ihre Interaktionen sowie die Zusammenarbeit mit den Kunden. Ideal für Teams, die stark zusammenarbeiten.
- Scrum : Diese Methodik übernimmt die Vorstellung von Agile, dass Teammitglieder eng zusammenarbeiten sollten, und entwickelt Software mit einem iterativen Ansatz. Entwickler unterteilen Endziele in kleinere Ziele und arbeiten daran, indem sie Sprints verwenden, um Software zu erstellen. Ein nützlicher Ansatz für disziplinierte kleinere Teams.
- Lean : Die Grundprinzipien dieser Methode sind die Optimierung des Ganzen, die Beseitigung von Verschwendung, die Schaffung von Wissen, die schnelle Bereitstellung und das Aufschieben des Engagements. Es umfasst Fertigungspraktiken und verwendet agile Methoden, um sie im gesamten Unternehmen zu skalieren und außerhalb des Entwicklungsjobs anzuwenden.
So definieren und dokumentieren Sie die Anforderungen an die Softwareentwicklung in 5 Schritten
Sobald Sie den Softwareentwicklungsprozess verstanden und die Geschäftsanforderungen und die Entwicklungsmethodik definiert haben, können Sie die Anforderungen an die Softwareentwicklung dokumentieren.
Befolgen Sie diese fünf Schritte, um ein qualitativ hochwertiges Software-Anforderungsspezifikationsdokument für das Produkt zu erstellen, das Sie erstellen möchten.
1. Erstellen Sie eine Spezifikationsübersicht für die Softwareanforderungen
Der erste Schritt bei der Definition der Softwareentwicklungsanforderungen für das Dokument besteht darin, eine Gliederung für den SRS zu erstellen.
Diese Gliederung sollte folgende Kapitel umfassen:
- Zweck des Produkts
- Publikum
- Verwenden
- Umfang des Produkts
- Produktübersicht
- Bedürfnisse der Benutzer
- Annahmen und Abhängigkeiten
- Systemanforderungen und Funktionen
- Systemfeatures
- Marktanforderungen
- Geschäftsanforderungen
- UI-Anforderungen
- Funktionale Anforderungen
- Nicht-funktionale Anforderungen
Wenn Sie jeden dieser Punkte in der Gliederung Ihrer Software-Anforderungsspezifikationen definieren und ausfüllen, können Sie mit dem nächsten Schritt fortfahren.
2. Definieren Sie den Zweck und die Erwartungen des Produkts
Das allererste Kapitel in Ihren SRS-Dokumenten betrifft den Zweck des Produkts. Es legt die Erwartungen an die Softwarelösung fest, die Sie erstellen.
- Zielgruppe und Verwendung: In diesem Abschnitt müssen Sie die Personen im gesamten Projekt beschreiben, die Zugriff auf das Dokument haben und wie sie es verwenden sollen. Dies können Entwickler, Projektmanager, Tester, Vertriebs- und Marketingmitarbeiter oder Stakeholder in anderen Abteilungen sein.
- Umfang des Produkts: Dieses Segment dient zum Definieren des Produkts, das Sie angeben. Es sollte die Ziele der Softwarelösung und ihre Vorteile umreißen.
3. Erstellen Sie einen Überblick über ein fertiges Softwareprodukt
Die Übersicht oder die Beschreibung des Produktteils des SRS sollte die von Ihnen erstellte Software skizzieren.
Damit alle Projektbeteiligten wissen, was sie bauen, sollten Sie vorab folgende Fragen beantworten:
- Ist das Produkt eine neuartige Lösung?
- Ist es ein Update oder eine Neuauflage eines bestehenden Produkts?
- Ist es ein Add-On für ein bereits erstelltes Produkt?
Die Beantwortung der obigen Fragen hilft bei der Definition der folgenden Punkte:
- Benutzerbedürfnisse : Ihre Zielgruppe – die Personen, die Ihre Softwarelösung verwenden werden – gehört in dieses Segment. Es ist von entscheidender Bedeutung, Benutzer zu definieren, die das von Ihnen erstellte Softwareprodukt benötigen: Es gibt primäre und sekundäre Benutzer, die die Lösung regelmäßig verwenden, und möglicherweise gibt es separate Käufer, deren Bedürfnisse Sie ebenfalls definieren müssen.
- Annahmen und Abhängigkeiten: Dieser spezielle Abschnitt sollte die Faktoren umreißen, die die Erfüllung der SRS-Anforderungen beeinflussen könnten. Es sollte auch Annahmen enthalten, die STS macht und die falsch sein könnten. Notieren Sie auch alle externen Faktoren, von denen das Softwareentwicklungsprojekt abhängt.
4. Informieren Sie sich ganz genau über Ihre Anforderungen
Das Entwicklungsteam wird diesen speziellen Abschnitt sehr gut nutzen, denn hier müssen Sie die spezifischen Anforderungen für den Aufbau der Softwarelösung detailliert beschreiben.
Sie bestehen aus funktionalen und nichtfunktionalen Anforderungen, auf die wir später im Artikel noch ausführlich eingehen werden. Es gibt auch:
- Geschäftsanforderungen: übergeordnete Geschäftsziele des Unternehmens, das die Softwarelösung erstellt.
- Marktanforderungen: Anforderungen, die die Bedürfnisse des Marktes und der Zielgruppen umreißen.
- Externe Schnittstellenanforderungen: Arten von funktionalen Anforderungen, die beschreiben, wie das Produkt in andere Software integriert wird.
- Anforderungen an die Benutzeroberfläche: Spezifikationen, die beschreiben, wie die Benutzeroberfläche aussehen und sich anfühlen wird. Dies bestimmt die Benutzererfahrung des Produkts.
- Systemfunktionsanforderungen : Diese beschreiben die Funktionen, die für die Funktion des Produkts erforderlich sind.
5. Lassen Sie die Stakeholder die Anforderungen an die Softwareentwicklung genehmigen
Nachdem Sie Ihre Softwareentwicklungsanforderungen in Ihrem SRS-Dokument definiert und dokumentiert haben, besteht der letzte Schritt darin, es zur Überarbeitung und Genehmigung an die Beteiligten zu senden.
Jeder sollte die endgültige Version dieses Dokuments überprüfen – das Entwicklungs- und Designteam, das daran gearbeitet hat, das Unternehmen oder ein Unternehmen, das es in Auftrag gegeben hat, die Sponsoren, die es finanziert haben, sowie eine Zielgruppenprobe, um seine Funktionen und Merkmale zu überprüfen.
Dies ist der letzte Schritt, um sicherzustellen, dass alle auf dem gleichen Stand sind, bevor die Produktion der Lösung beginnt.
Hier können SRS-Reviewer ihre Last-Minute-Vorschläge, Beschwerden und Ideen zur Verbesserung des Prozesses und des fertigen Produkts einreichen.
Was sind die nicht-funktionalen Anforderungen in der Softwareentwicklung?
In der Softwareentwicklung gibt es zwei Arten von Anforderungen: funktionale und nichtfunktionale.
- Funktionale Anforderungen: Dies sind die Produktmerkmale, die das Entwicklungsteam entwerfen, codieren und testen wird. Sie definieren die Funktionalität des Softwareprodukts, die bei der Lösung der Schwachstellen der Benutzer hilft. Diese Anforderungen werden durch „Was“-Fragen definiert wie:
- Was soll das Softwaresystem tun?
- Welche Funktionen oder Funktionalitäten unterstützt das Produkt?
- Welche Informationen oder Daten werden verwaltet?
- Nichtfunktionale Anforderungen: Diese beschreiben, wie sich jedes Feature unter bestimmten Bedingungen verhalten soll und welche Einschränkungen es haben sollte. Sie dienen der Beschreibung der für die Stakeholder wichtigen Funktionen. Diese Anforderungen werden durch „Wie“-Fragen definiert, wie zum Beispiel: „Wie wird das System das tun, wofür es entwickelt wurde?“ Sie setzen Standards für
- Sicherheit
- Entwurf
- Barrierefreiheit
- Leistung
- Zuverlässigkeit
Nichtfunktionale Anforderungen ergänzen funktionale Anforderungen. Erstere sind die Liste der spezifischen Funktionen, während letztere die Funktionalität der Software umreißen.
Zur Veranschaulichung könnte eine funktionale Anforderung die Fähigkeit der Softwarelösung sein, Nachrichten zu senden oder Dateien zu übertragen.
Eine nicht funktionale Anforderung wäre, diese funktionalen Anforderungen in allen gängigen Browsern und Betriebssystemen anzubieten oder im Layout der mobilen Geräte zu unterstützen.
7 Risiken undokumentierter Softwareanforderungen
Ohne festgelegte und dokumentierte Softwareparameter kann nicht festgestellt werden, ob das Softwareprodukt und seine Funktionen richtig entwickelt wurden.
Viele Dinge können schief gehen, wenn die Softwareanforderungen nicht gründlich analysiert und dokumentiert werden.
Das Fehlen offizieller Software-Anforderungsspezifikationen kann auf folgende Weise führen:
- Bugs und Fehler eskalieren im System
- Entwickler müssen die spezifischen Funktionen anhand von gesprochenen Anweisungen erkennen und wie sie sie verstanden haben
- Es gibt keine offizielle, dokumentierte Vereinbarung darüber, was das Endprodukt ausmacht
- Der Kunde weiß nicht, welches Endprodukt er erwarten soll
- Fälle von Missverständnissen treten im gesamten Projekt und in allen seinen Sektoren auf
- Aufgrund von Missverständnissen und schlechter Entwicklung sind Fehlerbehebungen und Überarbeitungen erforderlich
- Die Kosten steigen und es ist sehr schwierig, die Fristen einzuhalten
Erkenntnisse zur Spezifikation der Softwareanforderungen
Wenn es darum geht, die Anforderungen Ihres Softwareprodukts zu skizzieren und zu definieren, ist es von größter Bedeutung:
- Den Zweck des Produkts und den Entwicklungsprozess verstehen
- Definieren Sie die Geschäftsanforderungen
- Entscheiden Sie sich für die Entwicklungsmethodik
- Definieren Sie die funktionalen und nichtfunktionalen Anforderungen
- Erstellen Sie einen umfassenden Zeitplan
- Prioritäten setzen
- Lassen Sie die Stakeholder das Dokument mit den Softwareanforderungen überprüfen