Wikipedia · einfach zusammengefasst · Stand
Softwaredesign
Softwaredesign (auch Softwarekonstruktion) ist der Konstruktionsprozess zur Implementierung einer Software-Lösung. Üblicherweise vollzieht sich die …
Inhalt6 Abschnitte
Grundidee und Zweck
Softwaredesign, auch Softwarekonstruktion genannt, ist der Konstruktionsprozess zur Implementierung einer Software-Lösung. Es gehört üblicherweise zu einem Softwareentwicklungsprozess, in den immer wieder schrittweise Verbesserungen einfließen. Im Vergleich zur eigentlichen Programmierarbeit verlangt Softwaredesign abstrakteres Denken auf einer Metaebene.
Softwaredesign ist wichtig, weil viele Computerprogramme komplex sind. Durch Planung und Gestaltung soll diese Komplexität für Programmierer handhabbarer werden. Außerdem hilft Softwaredesign dabei, zielverfehlendes Programmieren zu vermeiden, also Programmierung, die am eigentlichen Bedarf vorbeigeht.
Zentrale Bereiche des Designs
Je nach Aufgabenstellung können beim Softwaredesign verschiedene Themenbereiche eine Rolle spielen. Dazu gehören die objektorientierte Analyse und das objektorientierte Design, bei denen Software aus Objekten, Klassen und ihren Beziehungen heraus geplant wird.
Weitere wichtige Bereiche sind Entwurfsmuster, also bewährte Lösungsansätze für wiederkehrende Probleme, sowie Datenstrukturen, Datenmodellierung und das Entity-Relationship-Modell. Eine Datenstruktur beschreibt, wie Daten organisiert werden; Datenmodellierung plant die Struktur der Daten; ein Entity-Relationship-Modell stellt Datenobjekte und ihre Beziehungen dar. Auch Softwarearchitektur gehört dazu, also die grundlegende Struktur eines Softwaresystems.
Für die schriftliche und grafische Darstellung einer geplanten Programmierweise gibt es verschiedene Konventionen und Modellierungssprachen.
Modellierungssprachen und Hilfsmittel
Im Softwaredesign werden unterschiedliche Modellierungssprachen verwendet. Die Unified Modeling Language (UML) ist eine grafische Modellierungssprache zur Spezifikation, Konstruktion und Dokumentation von Software-Teilen und anderen Systemen. Mit UML lassen sich zum Beispiel Klassendiagramme erstellen, die objektorientierte Strukturen darstellen. Unter Umständen kann aus solchen Darstellungen auch Code generiert werden.
Fundamental Modeling Concepts (FMC) ist eine semi-formale Methodik zur Kommunikation über komplexe Softwaresysteme. Ihr Schwerpunkt liegt weniger auf Codegenerierung, sondern stärker auf Plänen, mit denen komplexe Systeme verständlich besprochen werden können.
IDEF bezeichnet eine Gruppe von Modellierungssprachen aus dem amerikanischen Behördenumfeld. Die genannten Sprachen haben unterschiedliche Schwerpunkte: UML eignet sich besonders zur Darstellung objektorientierter Strukturen, FMC eher zur Kommunikation über komplexe Softwaresysteme.
Entwurfsmuster
Beim Entwurf von Softwarearchitekturen stehen Entwickler häufig vor wiederkehrenden Problemen. Für viele dieser Probleme gibt es bereits bekannte Lösungsansätze, die als Entwurfsmuster bezeichnet werden.
Die Wiederverwendung solcher Entwurfsmuster kann den Entwicklungsprozess einer Software oft beschleunigen. Der Grund ist, dass diese Muster bereits getestet und erprobt sind. Sie dienen damit als bewährte Vorlagen für typische Entwurfsprobleme.
Anforderungen und Pflichtenheft
Vor dem eigentlichen Softwaredesign werden im Allgemeinen die Anforderungen an die zu erstellende Software erhoben. Dabei klären Auftraggeber und Auftragnehmer, welche Anforderungen sich aus Sicht der Stakeholder beziehungsweise des Auftraggebers ergeben. Stakeholder sind Beteiligte oder Betroffene, deren Interessen für das Projekt wichtig sind.
Im Zuge dieser Anforderungserhebung erstellt ein Beteiligter, typischerweise der Auftraggeber, das Lastenheft. Darin werden die Anforderungen aus Auftraggebersicht festgehalten.
Anschließend erarbeitet der Auftragnehmer gemeinsam mit dem Auftraggeber ein Konzept. Darin wird festgelegt, mit welchen Programmstrukturen, Programmiertechniken und Algorithmen die Anforderungen erfüllt und programmiert werden sollen. Die Ergebnisse dieses Konzepts hält der Auftragnehmer im Pflichtenheft fest.
Projektrollen
Die Aufgaben des Softwaredesigns können von einer oder mehreren Personen übernommen werden. Diese Personen können unterschiedliche Rollen im Projektteam haben. Die genaue Benennung solcher Rollen hängt vom jeweiligen Unternehmen ab.
Geläufige Bezeichnungen für beteiligte Mitarbeiter mit Fachkenntnissen in der Softwaremodellierung sind Softwarearchitekt, IT-Consultant oder Softwareentwickler. Für Softwareentwickler werden auch die Bezeichnungen Programmierer oder Softwareingenieur verwendet.