Entwurf
Der Entwurf einer Software sowie die Planung der Architektur soll die Kosten der Wartung reduzieren, wertvolle Entwicklungszeit sparen und die Qualität einer Software erhöhen. Wie das funktioniert, was die Begriffe bedeuten und wann ein Entwurf überhaupt notwendig ist, erfhährst du in diesem Beitrag.
Das Wichtigste zusammengefasst
- Der Software-Entwurf (engl. Software Design) beschreibt das technische Lösungskonzept einer Software, das auch Architektur genannt wird.
- Die Software-Architektur beschreibt die Struktur einer Software mithilfe von Komponenten (zum Beispiel Oberflächen, Geschäftslogik und Datenbanken) und deren Verbindungen.
- Eine solide Software-Architektur spart Kosten, beschleunigt die Entwicklung und erhöht die Qualität deiner Anwendung.
- Der Software-Entwurf bzw. die Erarbeitung der Architektur ist nicht immer notwendig. In überschaubaren Projekten kann auf eine Entwurfsphase verzichtet werden.
Was ist ein Software-Entwurf?
Beim Entwurf einer Software geht es darum, ein technisches Lösungskonzept für die zu entwickelnde Software zu erschaffen. Ferner wird in der Entwurfsphase das Resultat der Anforderungsanalyse genutzt, um aus den funktionalen Anforderungen, den Qualitätsanforderungen und den Randbedingungen ein technisches Lösungskonzept, auch Architektur genannt, zu entwickeln.
In der englischen Sprache wird der Entwurf einer Software als Software Design betitelt. Dies ist nicht zu verwechseln mit dem UX & UI - Design, welches die Gestaltung und Interaktivität von Oberflächen hervorbringt, sondern bezieht sich auf die technische Gestaltung einer Software.
Was ist eine Software-Architektur?
Die Architektur beschreibt die grundlegende Struktur einer Software. Software besteht dabei aus Komponenten und deren Verbindungen.
- Komponenten sind fein- b is grob granulare Bausteine einer Software. Beispiele für Komponenten sind:
- Die Benutzeroberfläche (auch Frontend genannt) ist das, was der Nutzer sieht.
- Eine Datenbank wird für die Speicherung aller Daten benötigt.
- Die Geschäftslogik führt alle internen Geschäftsprozesse durch, wie zum Beispiel das Erstellen eines neuen Nutzers oder das Senden einer E-Mail.
- Ein externes Bezahlsystem, als grob granularer Baustein, wickelt Zahlungen vollständig ab.
- Ein externes Content-Management-System (CMS), als grob granularer Baustein, dient der Verwaltung von Inhalten.
- Verbindungen schaffen Beziehungen zwischen Komponenten, sodass diese miteinander kommunizieren können. Beispiele für Verbindungen sind:
- Eine Datenbankverbindung sorgt dafür, dass die Geschäftslogik mit der Datenbank kommunizieren kann.
- Eine Schnittstelle (auch API genannt), sorgt dafür, dass die Benutzeroberfläche auf die Geschäftslogik zugreifen kann oder, dass ein externes Bezahlsystem oder Content-Management-System angebunden werden kann.
Weiterhin bildet die Software-Architektur die Grundlage für die nachfolgende Implementierung. Entwickler orientieren sich bei der Implementierung an der Architektur, ähnlich wie es ein Bauleiter mit der Architektur eines Gebäudes tut.
Um eine Architektur erfolgreich an Entwickler zu kommunizieren und weiterzugeben, bedarf es einer Dokumentation. Ein bewährter Ansatz dabei ist die Dokumentation mithilfe der Vorlage arc42 von Dr. Gernot Starke und Dr. Peter Hruschka. Dort wird die Lösung in verschiedenen Sichten beschrieben, wie zum Beispiel in der Bausteinsicht, der Laufzeitsicht oder der Verteilungssicht. Des Weiteren finden sich in einer solchen Dokumentation Kapitel zur Lösungsstrategie, wichtigen Architekturentscheidungen, relevanten Qualitätsanforderungen und Risiken sowie möglichen technischen Schulden.
Vorteile einer guten Software-Architektur
Eine gute Software-Architektur hat klare Vorteile, denn sie reduziert Kosten in der Wartung, spart Zeit bei der Entwicklung und erhöht die Qualität einer Software. Folgende Beispiele zeigen, wie eine gute Software-Architektur diese Vorteile erzielt:
- Durch den modularen Aufbau der Software-Architektur, werden die Kosten reduziert, da die Software wartbarer ist, Fehler strukturierter behoben werden können und Ausfallzeiten geringer sind.
- Durch die Strukturierung in Komponenten und dessen Schnittstellen sowie durch eine vorhandene Dokumentation, wird kostbare Entwicklungszeit gespart, da die Kommunikation und Zusammenarbeit unter den Entwicklern verbessert wird.
- Die Qualität der Software wird erhöht, indem die Software-Architektur auf Qualitätsziele wie Erweiterbarkeit, Skalierbarkeit und Sicherheit achtet.
Drehen wir die Fragestellung an dieser Stelle einmal um: Was passiert, wenn die Architektur einer Software schlecht ist? Die Software-Qualität leidet, die Entwicklungszeit wird in die Länge gezogen und die Kosten für die Wartung steigt. Daher lässt sich festhalten, dass es wichtig ist, der Architektur eine hohe Bedeutung zuzuweisen.
Braucht jede Software einen Entwurf?
Nicht jede Software braucht jedoch eine expliziten Schritt für den Entwurf. Dennoch besteht jede Software aber aus einer Architektur, unabhängig davon, ob es eine Entwurfsphase gab oder nicht. Folgende Auflistung zeigt, wann ein Entwurf notwendig ist und wann nicht:
- Bei überschaubaren Software-Projekten ist in den meisten Fällen kein expliziter Entwurf notwendig, da die Architektur leicht überblickbar ist und bereits in etlichen ähnlichen Projekten erfolgreich umgesetzt wurde.
- Bei größeren Software-Projekten ist der Entwurf unerlässlich. Ohne einen Entwurf einer Architektur sowie dessen Dokumentation ist die Entwicklung in eine Sackgasse oftmals unausweichlich.
Somit steht fest: Einerseits kannst du in überschaubaren Projekten davon profitieren, dass es viele ähnliche Architekturen gibt, musst jedoch in größeren Projekten damit rechnen, dass in der Softwareentwicklung eine Entwurfsphase notwendig und hilfreich ist.
Berechne dein Projekt jetzt kostenfrei & unverbindlich für Webanwendungen & Apps.