Definition „Software Construction“ Was ist ein Software-Entwurf?

Von Gedeon Rauch

In der Entwicklung dient der Software-Entwurf als technischer Plan für eine zu entwickelnde Software, um die Anforderungsanalyse technisch umzusetzen. Der Software-Entwurf kann maßgeblich dabei helfen, die Entwicklung zu rationalisieren.

Anbieter zum Thema

Beim Software-Entwurf geht es um die Benennung und Beziehung von Softwaresystemen und ihrer Komponenten, um das fertige Programm zu umreißen.
Beim Software-Entwurf geht es um die Benennung und Beziehung von Softwaresystemen und ihrer Komponenten, um das fertige Programm zu umreißen.
(Bild: onlineCup / Pixabay )

Bei der gezielten Entwicklung eines Systems oder einer Software müssen unterschiedliche Projektphasen berücksichtigt werden, um unnötige Korrekturen zu minimieren. Fußend auf der Anforderungsanalyse und -definition erfolgt mit dem Software-Entwurf eine Projektphase, die sich gezielt mit der Übersetzung der Anforderung in verschiedene Systemkomponenten beschäftigt.

Diese Planungsphase erfolgt also mit IT-Fachpersonal und überträgt die Anforderungen der Kundenseite in strukturelle Eigenschaften und Komponenten. Es handelt sich hierbei gewissermaßen um einen Lageplan, anhand dessen gezielter programmiert werden kann und der das Gerüst des Codes angibt, mit dessen Hilfe die Anforderungsanalyse erfüllt werden soll.

Wie hilft der Software-Entwurf beim Programmieren?

Ein Software-Entwurf (der einfacheren Lesbarkeit halber hier mit Bindestrich, im Deutschen sonst auch oft Softwareentwurf) ist ein Hilfsmittel für Programmiererinnen und Programmierer. Dabei wird fachspezifisches Wissen angewandt, um einen Grundriss für die Projektarbeit anzugeben.

Während die Anforderungsanalyse etwa auch mit anderen Teilen des Projektteams und in Zusammenarbeit mit externen Stakeholdern erfolgt, ist der Software-Entwurf nur für die Developer wirklich von Belang. Denn hierbei geht es um die Benennung und Beziehung von Softwaresystemen, um das fertige Programm auf Draft-Ebene zu umreißen.

Ein Software-Entwurf besteht dabei aus verschiedenen Teilen, die genau definieren, wie die Programmierung letztlich erfolgt:

  • Programmiersprache: Im Entwurf wird festgelegt, in welcher Sprache programmiert wird. Hierbei spielen die Kompetenzen der beteiligten Programmiererinnen und Programmierer ebenso eine Rolle wie die Wünsche der Beauftragenden, das Pflichten- und Lastenheft und die Kompatibilität der Software. In einem Software-Entwurf wird gegebenenfalls auch zwischen unterschiedlichen Programmiersprachen abgewägt.
  • Entwicklungsumgebung: In welcher Integrated Development Environment soll der Code geschrieben und kompiliert werden? Nutzt das Team stets die gleiche IDE oder bietet sich eine andere Umgebung für die spezifischen Projektanforderungen an?
  • Library: Der Software-Entwurf klärt ebenfalls, ob bestimmte Code-Bausteine aus einer Library für die Software genutzt werden können und sollen oder ob der Quellcode komplett neu geschrieben werden muss. In dieser Phase gibt es natürlich eine Schnittmenge zum Projektmanagement, da Libraries die Arbeitszeit enorm verkürzen können.
  • Application Programming Interfaces: Auch die Frage nach den APIs und der Integration von Code und Front End wird im Software-Entwurf besprochen. Fragen nach Library, Codesprache und API sollten stets in Abhängigkeit zueinander definiert werden und stets die gestellte Anforderungsanalyse berücksichtigen.
  • Software Development Kits: Handelt es sich um Projekte, die in einer festen Umgebung arbeiten sollen, so können auch SDKs genutzt werden. Beispiele hierfür sind Android Studio oder Windows .NET – zwar limitiert dies die Flexibilität der Software, doch erleichtert den Workflow für alle beteiligten Developer. Je nach Anforderungsanalyse kann die Nutzung eines SDK also angebracht sein.

Woraus besteht ein Software-Entwurf?

Zwar ist ein Software-Entwurf in der Summe ein vollständiger Plan der späteren Software, beschreibt jedoch eher die Breite der Software, ohne dabei in die Tiefe zu gehen. Im Entwurf werden alle Systeme und Bausteine (Module, Klassen, Komponenten) beschrieben und die Beziehungen zueinander definiert. Zudem werden die Schnittstellen der Architekturbausteine beschrieben.

Im Ergebnis steht ein möglichst spezifischer Überblick darüber, wie die Anforderungsanalyse technisch erfüllt werden soll, sowie ein kompletter Abriss über das gesamte System. Dass dennoch zu diesem Zeitpunkt keine einzige Zeile Code geschrieben wurde, erleichtert das spätere Programmieren – Änderungen können in der Entwurfsphase noch sehr leicht vorgenommen werden, etwaige Probleme in Umgebungen oder unzureichende Libraries werden hier schnell erkannt und es kann gegengesteuert werden.

Vom Software-Entwurf zum Entwurfsmuster

Ob jede Software und jeder Auftrag wirklich besser mit einem dedizierten Software-Entwurf funktioniert, ist eine nicht unumstrittene Frage. Letztlich hängt die Beantwortung auch von der Komplexität der Software ab und vom Sinn eines Entwurfsmusters.

Bei Entwurfsmustern handelt es sich um vordefinierte Software-Entwürfe, die es Developern leicht machen, sich wiederholenden (aber spezialisierte) Aufträge anhand eines festgelegten Schemas abzuarbeiten. So ist das Entwurfsmuster ein sich wiederholender Software-Entwurf für sich wiederholende Anforderungen, der seine eigenen Vor- und Nachteile mit sich bringt.

Erprobte Konzepte und gut funktionierende Designs erleichtern die Umsetzung einer gewünschten Anforderungsanalyse, lassen jedoch möglicherweise die Innovation durch eine neue Ausarbeitung vermissen. Abhängig ist der potenzielle Einsatz eines Musters natürlich nicht nur von den definierten Anforderungen und dem Know-How der Entwicklerinnen und Entwickler, sondern auch vom gesetzten Zeitrahmen und dem vorhandenen Budget.

Unterschiedliche Vorgehensweisen in unterschiedlichen Modellen

Letztlich sollten Development-Teams auch berücksichtigen, dass Software-Entwürfe in verschiedenen Modellen in unterschiedlichen Phasen zum Einsatz kommen.

Ein sequenzielles Vorgehensmodell etwa setzt auf sehr geschlossen durchgeführte Phasen, aufgeteilt in Analyse, Entwurf, Coding, Testung, Abschluss und Wartung. Ein inkrementelles Entwicklungsmodell mag den Software-Entwurf ganz überspringen, da der Überblick hier der modularen Entwicklung geopfert wird.

Iterative Modelle können ebenfalls komplett auf einen großen Software-Entwurf verzichten, arbeiten aber potenziell in jeder Iteration mit kleineren Entwürfen. Modelle wie der Rational Unified Process hingegen setzen sehr stark auf Software-Entwürfe, auch wenn die Phasen der Konzeption, des Entwurfs, der Konstruktion und der Übergabe sich hier teils überlappen.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

(ID:47945680)