Softwaredesign

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Softwaremodellierung)
Wechseln zu: Navigation, Suche
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 Softwareentwurf) ist der Entwurfsprozess zur Planung einer Software-Lösung und Teil des gesamten Softwareentwicklungsprozesses. Softwaredesign ist in aller Regel erforderlich um die Komplexität, welche die meisten Computerprogramme aufweisen, für die Programmierer handhabbar zu machen und das Risiko von Fehlentwicklungen zu verringern.

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.

Im Nachfolgenden werden diese Vorgehensweisen beschrieben:

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

Rollen[Bearbeiten | Quelltext bearbeiten]

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

Sprachen und Hilfsmittel[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

Hauptartikel: Entwurfsmuster

Während des Entwurfs von Softwarearchitekturen stehen Entwickler häufig vor wiederkehrende 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 auch[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

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