So unterteilen Sie das Softwaredesign in umsetzbare Schritte
Softwaredesign besteht aus mehreren Schritten und es ist wichtig, diese nicht im Schnellverfahren zu erledigen. Sie sollten im Vorfeld als Team Zeit und Mühe investieren, um Ihren Softwaredesignprozess abzuschließen, bevor Sie mit der Entwicklungsphase Ihres Projekts beginnen.
Wahrscheinlich haben Sie bereits einen Projektplan, bevor Sie Ihr Softwaredesign zusammenstellen, und wissen daher, mit welchem Budget, welchen Ressourcen, wie viel Zeit und mit welchen anderen Parametern Sie arbeiten werden. Aufgrund der Planung der Softwarearchitektur verfügen Sie außerdem über Informationen zu den funktionalen und nicht funktionalen Anforderungen an Ihre Software, den Erwartungen der Stakeholder und den bereits getroffenen Entscheidungen, die sich auf Ihre gesamte Softwarearchitektur beziehen.
Ihr Softwaredesignprozess basiert auf Ihrer bisherigen Arbeit und erstellt eine Roadmap für die Softwareprogrammierung und -implementierung. Denken Sie bei der Durchführung dieses Prozesses daran, dass gutes Softwaredesign auf den folgenden Grundprinzipien beruht:
-
Einfachheit: Komplexität um der Komplexität willen ist nicht hilfreich, sondern erhöht nur den Ressourcenverbrauch, den Instandhaltungsaufwand und die Herausforderungen in Verbindung mit Ihrer Software. Jede Aufgabe sollte angepasst und unabhängig mit einem eigenen Modul verwendet werden, damit Ihr Code einfach zu verwenden ist. Und wenn es einen einfacheren Weg gibt, um etwas zu erreichen (unter sonst gleichen Bedingungen), sollten Sie den einfachen Weg wählen.
-
Modularität: Wenn Sie Ihr Projekt in einzelne Teile gliedern, ist es einfacher, Ihre Ziele zu erreichen. Dies wird als Modularität bezeichnet und ist auch ein verbreitetes Konzept in den agilen Methoden. Es ermöglicht Ihnen, Sprints zu verwenden, um bestimmte Funktionen oder Aufgaben nacheinander fertigzustellen.
-
Vollständigkeit und Hinlänglichkeit: Ihre Software sollte vollständig sein. Sie sollte so gestaltet sein, dass sie zweckentsprechend ist und die Anforderungen Ihres Projekts erfüllt.
-
Antizipation von Veränderungen: Wann und wo immer es möglich ist, sollten Sie bei der Entwicklung Ihrer Software auf Veränderungen vorbereitet sein und Anforderungen vorhersehen, die sich von den heutigen unterscheiden. Auch wenn es unmöglich ist, die Zukunft vollständig vorherzusagen, so blicken die besten Softwaredesigns doch in die Zukunft und bereiten sich auf die kommenden Entwicklungen vor.
-
Abstraktion: Softwaredesign sollte in der Lage sein, einen Plan zu erstellen, der relevante Informationen enthält und Informationen, die nicht unmittelbar relevant sind, weglässt. Ihr Plan wird also wahrscheinlich nicht alle Details genau beschreiben, sondern auf Abstraktion zurückgreifen.
-
Kopplung: Wenn möglich, sollte Ihr Softwaredesign eine geringe Kopplung aufweisen und es Ihrem Team ermöglichen, Änderungen an einem Modul vorzunehmen, ohne dass sich dies signifikant auf andere Module Ihrer Software auswirkt.
Beginn des Softwaredesignprozesses
Denken Sie daran, dass der Softwaredesigner erst dann beginnen kann, wenn Sie die Vorbereitungen abgeschlossen haben. Zunächst müssen die Anforderungen, die Risikoanalyse und die Domänenanalyse abgeschlossen sein, damit Sie Ihr Projekt in einzelne Schritte unterteilen können.
-
Anforderungen: Die Anforderungen an Ihre Software umfassen funktionale und nicht funktionale Erwartungen, die die Geschäfts- und Benutzeranforderungen beschreiben. Dies sind die Merkmale und Eigenschaften, die Ihre Software haben muss.
-
Risikoanalyse: Bevor Sie mit dem Design beginnen, sollten Sie die potenziellen Risiken dieses Projekts untersuchen und so weit wie möglich vorhersehen, wie sie sich auf die gesamte Softwareentwicklung auswirken könnten. Abgesehen von den allgemeinen Projektmanagementrisiken, wie beispielsweise der Überschreitung des Budgets oder der Unfähigkeit, die benötigten Arbeitskräfte zu finden – welche technischen Risiken gibt es?
-
Domänenanalyse: In diesem Schritt sollten Sie mehr über den betreffenden Bereich herausfinden, um die Probleme und Herausforderungen besser zu verstehen und Gemeinsamkeiten zwischen verwandten Softwaresystemen zu finden.
Ausarbeitung eines Anforderungsspezifikationsdokuments
Als Nächstes ist es an der Zeit, die Erwartungen an das Softwaredesign festzulegen und in Softwaredesigndokumenten (Software Design Documents, SDD) zusammenzufassen. Ein SDD hilft Ihnen, während des Programmierprozesses auf Kurs zu bleiben und die Wahrscheinlichkeit zu verringern, dass Code verschwendet wird oder von vorne begonnen werden muss. In einem zentralen Dokument halten Sie Abhängigkeiten, Funktionen und andere wertvolle Dokumentationsinhalte fest.
Ein SDD umfasst in der Regel Folgendes:
-
Titel, Autoren und Prüfer: Grundlegende Informationen über das Projekt, einschließlich einer Liste der Stakeholder und der Namen des Entwicklungsteams.
-
Details zu funktionalen Angaben: Was die Software tut sowie weitere Details wie Inbetriebnahmeverfahren, Fehlerbehandlung, Benutzergrenzen usw.
-
Benutzeroberfläche: Informationen und Diagramme, die die Benutzer über das System und seine Verwendung informieren.
-
Meilensteine und Ziele: Wichtige Meilensteine für das Entwicklungsteam und Ziele, um den Fortschritt zu verfolgen.
-
Priorisierungsmatrix: Funktionen und User Storys nach ihrer Priorität geordnet.
-
Abschnitt „Lösungen“: Eine Beschreibung der User Story hinter Ihrer Software.
-
Nicht technischer Zeitstrahl: Ein Zeitstrahl für Personen, die keine Entwickler sind und die Meilensteine und Abläufe Ihres Projekts besser verstehen möchten.