Software-Entwicklung

Grundlagen und Prozesse der Software-Entwicklung

Da heute immer mehr Bereiche des täglichen Lebens durch Software mitbestimmt werden, hat sich die Entwicklung von Software immer weiter verfeinert. Da Software in größeren Projekten sehr komplex wird, arbeiten Entwickler nach einem klar strukturierten Plan (Vorgehensmodell). Er unterteilt den Entwicklungsprozess in überschaubare Phasen, beim agilen Prozess oft sogar in tägliche Besprechungen mit dem Auftraggeber. Je nach Projektart sind die Vorgehensweisen sehr unterschiedlich: Sie reichen vom „Wasserfallmodell“ (Phasen werden nacheinander abgearbeitet) über Mischformen bis hin zur heute sehr beliebten agilen Entwicklung.

Die modellbasierte Softwareentwicklung setzt sich zum Ziel, aus formalen Modellen (zumindest teilweise) lauffähige Software zu erzeugen. Dafür nutzt man universelle Modellierungssprachen (UML, SysML etc.) und domänenspezifische Sprachen (DSLs). Durch den höheren Abstraktionsgrad der DSLs werden die Problembeschreibungen wesentlich klarer und die Entwicklung wird beschleunigt.

    Screenshots of Prolaborate

    Reduzierte Komplexität dank modellbasierter Software-Entwicklung

    Der Vorteil dabei ist, dass das Modell eine viel geringere Komplexität aufweist als die zu erstellende Software. So wird es gerade in großen Projekten wesentlich einfacher, immer die Übersicht zu behalten und gleichzeitig den Entwicklungsprozess nachprüfbar zu dokumentieren.

    Zusätzlich vereinfacht wird die Entwicklung auch durch die Trennung der technischen Abbildung und der fachlichen Modelle. Damit lassen sich Testfälle rascher durchführen, da man nicht mehr Code testet, sondern auf funktionaler Ebene das Systemverhalten prüft.

    Bei den Modellierungswerkzeugen unterscheidet man grafische und textuelle bzw. Transformatoren. Werkzeuge wie Enterprise Architect zählen zu den integrierten MDD-Werkzeugen, da sie Modellierung, Modelltransformation und Codegenerierung umfassen. Dadurch wird die Synchronisation zwischen fachlichem und technischem Modell und dem Code unterstützt.

    Die modellbasierte Softwareentwicklung bietet zahlreiche Vorteile gegenüber herkömmlichen Entwicklungsansätzen. Diese Vorteile erstrecken sich auf verschiedene Aspekte der Entwicklung, angefangen bei der Anforderungsanalyse über Entwurf, Implementierung, Test bis hin zur Wartung.

    Hier sind einige der wichtigsten Vorteile für eine schnellere Markteinführung, qualitativ hochwertigere Produkte und größere Kundenzufriedenheit:

    R

    Anforderungsverständnis und –management: Die visuelle Darstellung erleichtert das Verständnis und die Kommunikation mit allen Beteiligten. Im Modell sind die Zusammenhänge nachvollziehbar abgebildet und Änderungen lassen sich damit rascher umsetzen.

    R

    Design und Architektur: Die Abstraktion macht gerade auch komplexe Softwarearchitekturen verständlich und erleichtert die Fehleranalyse. Einmal erstellte Architekturen oder Komponenten lassen sich jederzeit wiederverwenden.

    R

    Automatisierung und Codegenerierung: Im Modell sind verschiedene Abläufe leicht automatisierbar (Codegenerierung, Testabwicklung etc.), was die Effizienz in der Entwicklung deutlich erhöht. Das Modell als zentrale Datenquelle sichert Konsistenz von der Anforderung bis zur Implementierung.

    R

    Test und Verifikation: Modelle können simuliert werden, um das Systemverhalten zu überprüfen, sie dienen auch als Grundlage für Testfälle, und erleichtern die Validierung anhand der Benutzeranforderungen.

    R

    Kollaboration und Kommunikation: Modelle erleichtern die Kommunikation aller Beteiligten sowie deren Zusammenarbeit. Gleichzeitig sind sie eine lebendige Dokumentation, in der Entscheidungen und Abhängigkeiten festgehalten werden.

    R

    Anpassungsfähigkeit und Wartbarkeit: Modelle bieten einen Plan für die weitere Entwicklung und unterstützen gleichzeitig die Integration von Altsystemen in moderne Architekturen

    R

    Erleichterte Innovation und Transformation: Durch modellbasierte Experimente im Bezug auf neue Technologien und Geschäftsmodelle

    Hier finden Sie praktische Anwendungsfälle unserer Kunden:

    Gobas GmbH entwickelt übersichtliche Diagramme für SAP ABAP OO Entwicklungen

    t

    FAQs zu Softwareentwicklung

    Welche Unterschiede gibt es zwischen klassischer Softwareentwicklung und modellbasierter Softwareentwicklung?

    Die Entwicklung von Software hat sich im Laufe der Zeit immer mehr verfeinert und ausdifferenziert. Von den Anfängen in den 1950er Jahren bis heute wurde allerdings deutlich, dass Software immer komplexer wird und es daher sehr ausgefeilter Methoden bedarf, um in der Entwicklung weiterhin den Überblick zu bewahren.

    In der klassischen Softwareentwicklung schreibt man weiterhin in der gewählten Programmiersprache direkt den Code, allerdings nach einem strukturierten Plan (Vorgehensmodell). Darüber hinaus bespricht man sich sehr häufig (teilweise täglich) mit dem Auftraggeber, um immer am richtigen Weg zu bleiben.

    Die modellbasierte Softwareentwicklung hat sich im Gegensatz dazu entschlossen, durch die Abbildung in Modellen die Komplexität zu vereinfachen. Ausgehend von der objektorientierten Programmierung entwickelte man dafür universelle (UML, SysML etc.) und domänenspezifische Sprachen. Durch den höheren Abstraktionsgrad lassen sich so die zu lösenden Aufgabenstellungen klarer und leichter verständlich beschreiben und die Entwicklung wird beschleunigt. Zusätzlich wird die Entwicklung durch die Trennung von technischen und fachlichen Modellen erleichtert.

    Was sind die Vorteile der modellbasierten Softwareentwicklung?

    Die Vorteile der modellbasierten Softwareentwicklung umfassen verschiedene Aspekte von der Anforderungsanalyse über Entwurf, Implementierung, Test bis hin zur Wartung.

    Hier nun einige Beispiele:

    • Kommunikation: Die visuelle Darstellung erleichtert das Verständnis und die Kommunikation mit allen Beteiligten.
    • Nachvollziehbarkeit: Im Modell werden Zusammenhänge nachvollziehbar dargestellt und Änderungen sind rascher umzusetzen
    • Verständlichkeit: Die Abstraktion im Modell macht komplexe Softwarearchitekturen verständlich und erleichtert gleichzeitig die Fehleranalyse.
    • Wiederverwendbarkeit: Einmal erstellte Architekturen oder Komponenten sind wiederverwendbar
    • Automatisierung: Die genaue Festschreibung Im Modell macht Abläufe leicht automatisierbar (Codegenerierung, Testabwicklung etc.)
    • Nur eine Datenquelle: Das Modell als zentrale Datenquelle garantiert Konsistenz über Entwicklung und Implementierung

    Was ist das Ziel der modellbasierten Softwareentwicklung?

    Das erklärte Ziel der modellbasierten Softwareentwicklung besteht darin, die Effizienz, Qualität und Flexibilität der Entstehung von Software zu verbessern. Dafür werden Modelle als zentrale Artefakte genutzt, die es durch ihre höhere Abstraktion ermöglichen, die Entwicklung stärker zu automatisieren und zu standardisieren.

    Hier nun einige Ziele:

    • Abstraktion: Entwickler können sich dank höherer Abstraktion auf die Geschäftslogik und das Design konzentrieren und werden nicht von den Details der Implementierung abgelenkt
    • Konsistenz: Modelle lassen sich formalen Prüfungen unterziehen, um ihre Konsistenz und Korrektheit zu zeigen
    • Kommunikation: Die visuelle Darstellung der Software im Modell erleichtert die Zusammenarbeit mit allen Beteiligten
    • Flexibilität: Modelle sind leicht erweiterbar, was die Flexibilität bei der Entwicklung und Wartung erhöht
    • Dokumentation: Modelle sind gleichzeitig eine umfassende und verständliche Dokumentation
    • Integration: Modelle unterstützen die Integration verschiedener Systeme und Technologien