Software Design

Softwaredesign stellt den Prozess dar, der die Architektur, die Komponenten, die Schnittstellen und andere Eigenschaften wie die Datenstrukturen und Algorithmen definiert. Es ist Teil des Softwareentwicklungsprozesses.
Zwei Menschen beratschlagen sich am PC
© Tim Douglas

Was ist Software?

Im Jahr 1958 wird das Kunstwort Software zum ersten Mal von John W. Tukey verwendet und stellt die Gegenkomponente zur Hardware dar. Diese ist starr und unveränderbar. Die Software, ins Deutsche als „weiche Ware“ übersetzt, ist flexibel und lässt sich an die vorherrschenden Anforderungen anpassen.

Eine einheitliche Begriffsdefinition ist für das Wort Software nicht vorhanden. Zumeist wird sie als die Gesamtheit oder die Menge von Programmen definiert, die in einem Computersystem oder auf einem anderen Gerät mit elektronischer Datenverarbeitung zu finden sind. Die von der Software verarbeiteten Daten werden ebenfalls als Software bezeichnet.

Was ist Design?

Begriffsdefinition

Das englische Wort Design steht für Gestaltung und wird als Entwurf oder Formgebung verstanden. Ursprünglich wurde die Form- und Farbgebung eines Objekts als Design bezeichnet. Heute spielen viele weitere Aspekte bei der Definition des Begriffs eine Rolle. Vor allem befasst sich ein Designer gegenwärtig ebenfalls mit der technischen Funktion eines Objekts und mit der Interaktion mit einem Anwender. Innerhalb des Design-Prozesses wird daher auf die Funktion, die Bedienbarkeit und die Lebensdauer eines Objekts geachtet.

Unterschiedliche Bereiche von Design

In der Praxis gibt es verschiedene Disziplinen, die sich auf die genutzten Medien oder Funktionen eines Gegenstands beziehen. Beispielsweise gehören dazu das Produktdesign, das Webdesign, das Grafikdesign, das Interface Design und das Application Design.

  • Produktdesign
    Das Produktdesign wird auch Industriedesign genannt und hat die Aufgabe, serielle oder industrielle Produkte zu entwerfen. Diese Dienstleistung kann in zwei Arbeitsbereiche unterteilt werden und richtet sich nach den Bedürfnissen der jeweiligen Auftraggeber. Zum einen wird an der Gestaltung von Konsumgütern gearbeitet. Zu den Konsumgütern zählen alle Produkte, die auf den persönlichen Gebrauch ausgerichtet sind, wie z. B. Haushaltsgeräte, Fahrzeuge oder Einbauküchen. Zum anderen werden Entwürfe zu Investitionsgüter erstellt, die bspw. Produktionsmaschinen und elektronische Geräte für den industriellen Einsatz abdecken können.
  • Webdesign
    Das Webdesign ist auch als Webgestaltung bekannt und ist ein Teil des Mediendesigns. Es befasst sich mit der visuellen, funktionalen und strukturellen Gestaltung von Webseiten. Es beinhaltet Einflüsse des Grafikdesigns und setzt sich mit anderen Bereichen wie dem Interaction Design (Gestaltung von Mensch-Maschine Schnittstellen) auseinander.
  • Grafikdesign
    Grafikdesign oder auch Kommunikationsdesign wird ausgeübt, wenn Sprache und Gedanken visuell dargestellt werden sollen. Dies geschieht unter Zuhilfenahme von Typographie (gedruckte Schrift), Bildern, Farben und weiteren Materialien. Die Tätigkeitsfelder sind verschieden und können sich auf die Gestaltung von bspw. Printmedien oder elektronischen Medien beziehen.
  • Interface Design
    Das Interface Design steht für die Schnittstellengestaltung und hat die Aufgabe, Benutzerschnittstellen zwischen Mensch und Maschine zu gestalten. Dafür ist es wichtig, die Bedingungen, Ziele und Hindernisse der Interaktion zu kennen und das System an den Menschen anzupassen. Wichtige Begriffe in diesem Zusammenhang sind die User Experience (UX) und das User Interface (UI). Die User Experience definiert alle Eindrücke und Erlebnisse eines Anwenders, welche er bei der Interaktion mit einem Produkt, Dienst oder einer Einrichtung wahrnimmt. Das User Interface beschreibt die Benutzerschnittstelle, die die Kommunikation zwischen Mensch und Maschine ermöglicht.
  • Datenbankdesign
    Datenbanken erstellen und zu konzipieren wird durch das Datenbankdesign realisiert. Es wird auch von einem Datenbank-Entwurf gesprochen. Vor allem bei komplexen Datenbanken ist es wichtig, vor der eigentlichen Entwicklung ein Konzept auszuarbeiten und dabei das sogenannte technische Design einzubeziehen (Datenbank Schema).

Was ist Software Design?

Software Design ist ein Teilbereich des Softwareentwicklungsprozesses. Es stellt den Entwurf dar, der zur Planung einer Softwarelösung benötigt wird. In diesem Entwurf wird festgehalten, welche Softwarearchitektur und welche Komponenten verwendet werden. Außerdem werden die Schnittstellen und andere Eigenschaften (wie Algorithmen und Datenstrukturen) bestimmt. Software Design bestimmt den Bereich, der zum einen für die technische Planung als auch für die visuelle Gestaltung zuständig ist.

Vorgehen Software Design

Im Entwicklungsprozess werden im ersten Schritt die Anforderungen an die Software erhoben, die seitens des Auftraggebers bestehen. Im Anschluss daran wird ein Konzept erarbeitet, in dem geschrieben steht, welche Programmstrukturen, Programmiertechniken und Algorithmen verwendet werden, um die Anforderungen zu erfüllen. Der Auftragnehmer ist für die Umsetzung zuständig und hält die Ergebnisse des Prozesses fest. Um den Prozess zu begleiten, können verschiedene Methodiken eingesetzt werden:

Datenmodellierung

Mit Hilfe der Datenmodellierung ist es möglich, relevante Objekte unter Einbeziehung ihrer Attribute und deren Beziehungen formal abzubilden. Dabei besteht das Ziel, die Objekte, die in einem Informationssystem bestehen, eindeutig anhand ihrer Attribute definieren und spezifizieren zu können. Daraus ergeben sich Datenmodelle, die durch mehrere Modellierungsstufen laufen und am Ende als einsatzfähige Datenbanken verwendet werden können.

Ein Beispiel für ein Datenmodell kann in der Auftragsabwicklung eines Handelsunternehmens gefunden werden. Hier werden die Objekte oder Entitäten „Produkt“, „Kunde“, „Auftrag“ und „Rechnung“ als Realitätsausschnitt abgebildet, um herauszufinden, welche Spezifikationen vorgenommen werden müssen, um die funktionellen Anforderungen zu optimieren.

Softwarearchitektur

Die Softwarearchitektur beschreibt die Komponenten und deren Interaktionen in einem Softwaresystem.

Die Systemkomponenten werden strukturiert und hierarchisch in Form von Modulen angeordnet. Außerdem werden die Beziehungen zwischen den Komponenten beschrieben.

Objektorientieret Analyse und Design

Objektorientierung bedeutet, dass bei der Entwicklung von Software komplexe Systeme vorhanden sind, die Objekte beinhalten. Diese Objekte und deren Zusammenspiel werden beschrieben. Objekte müssen nicht gegenständlich sein. Wichtiger ist es, dass sie sich aufgrund von bestimmten Eigenschaften zuordnen lassen.

Im Entwicklungsprozess eines Softwaresystems können objektorientierte Varianten genutzt werden, um die Anforderungsanalyse durchzuführen und ein Systementwurf zu erstellen.

Die objektorientierten Techniken währen der Analyse und des Designs erleichtern die Implementierung (Umsetzen eines Softwareentwurfs), die in einer objektorientierten Programmiersprache geschrieben wird.

Bei der Analyse werden die Anforderungen an die Software festgehalten. Dafür werden alle Anforderungen in einem Pflichtenheft gesammelt, dargestellt und überprüft. Im Ergebnis liegt ein objektorientiertes Analysemodell vor.

Das objektorientierte Design entwickelt das Modell weiter. Anhand des Modells wird im Anschluss daran ein Systementwurf konzipiert. Die Umformung des Modells in eine konkrete Softwarearchitektur erfolgt. Die Architektur beinhaltet Informationen der technischen Umsetzung und kann als Vorlage für die Implementierung genutzt werden.

Entwurfsmuster

Entwurfsmuster werden auch Design Patterns genannt und definieren Lösungsschablonen, die für immer wiederkehrende Probleme innerhalb der Softwareentwicklung verwendet werden.

Die Anforderungen an ein gutes Muster sind:

  • Problem(e) lösen
  • erprobtes Konzept liefern
  • realen Designs zugrunde liegen
  • hinausgehen über das Offensichtliche
  • den Benutzer einbinden
  • Beziehungen darstellen, die ein System beschreiben

Softwareentwicklungsprozess

Für den Softwareentwicklungsprozess gibt es verschiedene Möglichkeiten, wie das Softwareentwicklungsteam vorgehen kann. Beispiele dafür sind das Wasserfallmodell, das Spiralmodell oder die agile Softwareentwicklung.

Wasserfallmodell

Das Wasserfallmodell ist linear aufgebaut und besteht aus aufeinanderfolgenden Projektphasen. Wie bei einem Wasserfall werden die erarbeitenden Ergebnisse in die nächste Phase geleitet und dort als verbindliche Vorgaben angesehen.

Es gibt fünf Projektphasen:

  1. Anforderungsanalyse
  2. Systemdesign
  3. Programmierung und Tests
  4. Integrations- und Systemtest
  5. Wartung

Spiralmodell

Das Spiralmodell wurde im Jahr 1986 von dem amerikanischen Softwareingenieur Barry W. Boehm entwickelt. Es ist generisch aufgebaut, das heißt, es kann an existierende Vorgehensmodelle anknüpfen. Der Entwicklungsprozess von Software wird im Spiralmodell iterativ verstanden. Durch das mehrfache Wiederholen ähnlicher Handlungen findet die Annäherung an ein Ziel statt. Diese Annäherungen bewegen sich spiralförmig.

Die Aktivitäten werden in Zyklen unterteilt:

  1. Das Festlegen von Zielen, die Identifikation von Alternativen und das Definieren von Rahmenbedingungen.
  2. Das Evaluieren von Alternativen und das Erkennen und Reduzieren von Risiken.
  3. Das Realisieren und Überprüfen des Zwischenstandes.
  4. Das Planen des nächsten Zyklus der Projektfortsetzung.

Agile Softwareentwicklung

Um den Entwicklungsprozess schlanker zu machen, wird die agile Softwareentwicklung verwendet. Das lateinische Wort „agilis“ steht für „flink“. Die agile Softwareentwicklung soll die Transparenz und die Veränderungsgeschwindigkeit erhöhen.

Die agilen Methoden und Prozesse wurden auf der Basis des Manifests für agile Entwicklung herausgearbeitet, welches im Februar 2001 veröffentlicht wurde.

Beispiele für agile Prozesse sind Scrum, Extreme Programming und Kanban.

  • Scrum
    Scrum ist ein Vorgehensmodell und wird im Projekt- und Produktmanagement verwendet. Ursprünglich wurde es für die Softwareentwicklung erstellt, kann aber auch für andere Bereiche genutzt werden.

Um einen Softwareentwicklungsprozess zu verbessern, sind drei Punkte von großer Wichtigkeit:

  • Transparenz
    Alle Erfolge und Misserfolge werden regelmäßig dokumentiert und sind für alle Beteiligten sichtbar.
  • Überprüfung
    Die Ergebnisse des Projekts und die Funktionalitäten werden in einer Regelmäßigkeit bereitgestellt und bewertet.
  • Anpassung
    Anforderungen werden nicht nur einmal festgelegt und sind für den gesamten Prozess gültig, sondern werden an die Veränderungen kontinuierlich angepasst. Scrum strukturiert die Aufgabe in kleinere Zwischenschritte.
  • Extreme Programming
    Extreme Programming (kurz XP) fokussiert sich auf die Lösung einer Programmieraufgabe und stellt das formalisierte Vorgehen in den Hintergrund. Die Vorgehensweise nähert sich den Anforderungen an die Software, die vorab mit dem Kunden definiert wurden, schrittweise an. XP gehört zum Risikomanagement, das bedeutet, dass das Risiko Zuspruch bekommt, darauf eingegangen wird und alle Versuche unternommen werden, es zu minimieren.
  • Kanban
    Bei der Verwendung von Kanban wird die Anzahl der parallel laufenden Arbeiten begrenzt. Das Ziel ist es, kürzere Durchlaufzeiten zu realisieren. Außerdem sollen Probleme schneller sichtbar gemacht werden.

Mitarbeiter Software Design

In einem Softwareentwicklungsteam können unterschiedliche Rollen besetzt werden, um die Aufgaben zu erledigen, die im Rahmen des Software Designs anfallen. Die Bezeichnungen für diese Rollen sind unterschiedlich besetzt. Die geläufigsten Bezeichnungen für Fachkräfte mit Kompetenzen im Bereich der Softwaremodellierung sind:

  • Softwarearchitekt: Er ist für den Aufbau von Softwaresystemen und das Interagieren ihrer unterschiedlichen Komponenten zuständig.
  • IT-Consultant: IT-Consultants zeichnen sich dadurch aus, dass sie Unternehmen oder Gruppen bei der Einführung, Weiterentwicklung und Wartung von IT-Systemen unterstützend beraten.
  • Softwareentwickler: Ein Softwareentwickler ist an der Erstellung einer Software beteiligt und kümmert sich um die Programmierung der entsprechenden Anforderungen. Entweder ist er in einem Unternehmen angestellt oder als Freelancer tätig. Softwareentwickler haben in der Regel eine Ausbildung zum Fachinformatiker absolviert oder ein Studium der Informatik an einer Hochschule oder Universität abgeschlossen.

Aufgaben Software Designer

Ein weiterer gängiger Begriff für einen Mitarbeiter im Tätigkeitsfeld des Software Designs ist der Software Designer. Er ist für das technische Design von Software verantwortlich und kümmert sich um die Implementierung und Pflege dieser. Das technische Design verlangt, dass ein Software Designer auch mit den Gegebenheiten der Hardware vertraut sein muss.

Wichtig ist, dass die jeweiligen Produktanforderungen im Vorfeld gründlich von einem Software Designer analysiert werden. Welche Funktionen soll die Software später erfüllen? Im Anschluss daran kann der Software Designer mit der Festlegung der Softwarearchitektur beginnen und das technische Design festlegen. Die essenziellen Anforderungen werden in die Software implementiert und getestet. Außerdem ist der Software Designer für die Auswahl von Benutzerschnittstellen und die Programmierung zuständig.

TenMedia - Software Design in Berlin

Seit 2011 ist das Software Unternehmen TenMedia in Berlin im Bereich von Software Engineering und Datenbankerstellung tätig und entwickelt mit Hilfe von modernsten Technologien Datenbanken, Apps und individuelle Softwarelösungen. Unsere Entwickler nutzen keinen vorgefertigten Code, sondern hören auf die Kundenwünsche und setzen diese individuell um. Dabei achten sie auf die konkreten Anforderungen der Software und auf ein ansprechendes technisches Design.

Sie haben ein IT-Vorhaben, aber wissen nicht, wie Sie dieses in die Tat umsetzen sollen? Unsere kompetenten Mitarbeiter freuen sich auf eine unverbindliche Kontaktaufnahme und ein erstes Kennenlerngespräch per Telefon oder Mail.