Softwaredesign (auch Softwarekonstruktion) ist der Konstruktionsprozess zur Implementierung einer Software-Lösung. Üblicherweise vollzieht sich die Erarbeitung und Erstellung von Software in einem Softwareentwicklungsprozess, in den ständig immer wieder graduelle Verbesserungen einfließen. Doch gegenüber dem Softwareentwicklungsprozess erfordert die Konstruktion von Software ein abstrakteres Denken auf einer Metaebene zur Programmierarbeit. Softwaredesign ist in aller Regel erforderlich, um die Komplexität, welche die meisten Computerprogramme aufweisen, für die Programmierer handhabbarer zu machen und um zielverfehlendes Programmieren zu vermeiden.
Softwaredesign
Zur Gestaltung einer Software, die üblicherweise zu Beginn einer Softwareentwicklung an den oder die Entwickler herangetragen wird, können im Softwaredesign, je nach Aufgabenstellung, die folgenden Themenbereiche mehr oder weniger zur Umsetzung der Aufgabe benötigt werden:
- Objektorientierte Analyse und Design
- Entwurfsmuster
- Datenstruktur, Datenmodellierung, Entity-Relationship-Modell
- Softwarearchitektur
Für den schriftlichen und grafischen Niederschrieb einer geplanten Programmierweise stehen verschiedene Konventionen und Modellierungssprachen zur Verfügung.
Sprachen, Entwurfshilfsmittel, Entwurf
Hierbei werden unterschiedliche Modellierungssprachen verwendet. Beispiele sind die Unified Modeling Language (UML) – eine graphische Modellierungssprache zur Spezifikation, Konstruktion und Dokumentation von Software-Teilen und anderen Systemen, die Fundamental Modeling Concepts (FMC) – eine semi-formale Methodik zur Kommunikation über komplexe Softwaresysteme, sowie die IDEF – eine Gruppe von Modellierungssprachen aus dem amerikanischen Behördenumfeld.
Der Fokus beim Design ist verschieden. Während UML beispielsweise mit Klassendiagrammen die Darstellung von objektorientierten Strukturen (siehe auch Objektorientierte Analyse und Design) ermöglicht, aus denen unter Umständen auch Code generiert werden kann, konzentriert sich FMC eher auf die Erstellung von Plänen zur Kommunikation über komplexe Softwaresysteme.
Entwurfsmuster
Während des Entwurfs von Softwarearchitekturen stehen Entwickler häufig vor wiederkehrenden Problemen, zu welchen es bereits bekannte Lösungsansätze gibt. Durch die Wiederverwendung solcher Entwurfsmuster lässt sich der Entwicklungsprozess einer Software oftmals beschleunigen, da die Muster bereits getestet und erprobt sind.
Softwareprojektierung
Bei größeren Softwareprojekten: Rahmenbereitstellung: Vorbereitung und Management eines Projekts
Definition und Anforderungserhebung eines Softwareprojekts, Führen eines Pflichtenhefts
Im Allgemeinen eruieren Auftraggeber und Auftragnehmer im Zuge der Anforderungserhebung vor dem Softwaredesign zunächst die Anforderungen, die sich aus Stakeholder- bzw. Auftraggeber-Sicht an die zu erstellende Software ergeben. Im Zuge dessen erstellt ein Beteiligter – typischerweise der Auftraggeber – das sogenannte Lastenheft.
Anschließend erarbeitet der Auftragnehmer zusammen mit dem Auftraggeber über verschiedene Vorgehensweisen ein Konzept, mit welchen Programmstrukturen, Programmiertechniken und Algorithmen diese Anforderungen erfüllt und programmiert werden sollen. Der Auftragnehmer hält die Ergebnisse dieses Konzepts in dem sogenannten Pflichtenheft fest.
Aufgabenzuweisung an die Projektteammitglieder, Rollen im Team
Die im Rahmen des Softwaredesign anfallenden Aufgaben können eine oder mehrere Personen erledigen, die dabei unterschiedliche Rollen einnehmen können. Diese Rollen sind unternehmensabhängig unterschiedlich benannt. Geläufige Bezeichnungen für die Rollen beteiligter Mitarbeiter mit Fachkenntnissen in der Softwaremodellierung sind Softwarearchitekt, IT-Consultant oder Softwareentwickler (auch „Programmierer“ oder „Softwareingenieur“ genannt).
Siehe auch
Literatur
- Robert C. Martin: Clean architecture: das Praxis-Handbuch für professionelles Softwaredesign: Regeln und Paradigmen für effiziente Softwarestrukturen. mitp-Verl., Frechen 2018, ISBN 978-3-95845-724-9.
- John Ousterhout: Softwaredesign: Prinzipien, Techniken und Best Practices. O’Reilly, Heidelberg 2021, ISBN 978-3-96009-159-2.
- Rebecca Wirfs-Brock, Brian Wilkerson, Lauren Wiener: Objektorientiertes Software-Design. Hanser / Prentice Hall, München / London 1993, ISBN 3-446-16319-0, ISBN 0-13-202664-3.
- Peter Tabeling: Softwaresysteme und ihre Modellierung: Grundlagen, Methoden und Techniken. (eXamen.press) Springer-Verlag, Berlin, Heidelberg 2006, ISBN 978-3-540-25828-5.
Weblinks
- www.uml.org – Offizielle „Unified Modeling Language“ Website
- www.fmc-modeling.org – Offizielle „Fundamental Modeling Concepts“ Website
- IEEE Software Engineering Collection
Einzelnachweise
- ↑ Judith Bishop: C# 3.0 Design Patterns: Use the Power of C# 3.0 to Solve Real-World Problems. C# Books from O'Reilly Media, abgerufen am 15. Mai 2012: „If you want to speed up the development of your .NET applications, you're ready for C# design patterns -- elegant, accepted and proven ways to tackle common programming problems.“