Softwaredesign

Entwurfsprozess zur Planung einer Software-Lösung
QS-Informatik
Dieser Artikel wurde wegen inhaltlicher Mängel auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf mit, die inhaltlichen Mängel dieses Artikels zu beseitigen, und beteilige dich an der Diskussion! (+)


Begründung: Der Artikel handelt nur von Modellierungssprachen und nicht vom Softwaredesign allgemein, das ist ein viel weiteres Feld. --S.K. (Diskussion) 07:58, 7. Mai 2012 (CEST)

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.

SoftwareprojektierungBearbeiten

Bei größeren Softwareprojekten: Rahmenbereitstellung: Vorbereitung und Management eines ProjektsBearbeiten

Definition und Anforderungserhebung eines Softwareprojekts, Führen eines PflichtenheftsBearbeiten

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 TeamBearbeiten

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).

SoftwaredesignBearbeiten

Im Nachfolgenden werden diese Vorgehensweisen beschrieben:

Für den schriftlichen und grafischen Niederschrieb der geplanten Programmierweise wurden verschiedene Konventionen und Modellierungssprachen definiert.

Sprachen, Entwurfshilfsmittel, EntwurfBearbeiten

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.

EntwurfsmusterBearbeiten

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.[1]

Siehe auchBearbeiten

LiteraturBearbeiten

  • 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.

WeblinksBearbeiten

EinzelnachweiseBearbeiten

  1. 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.“