Modellbasierte Spezifikation und Design
Die Anforderungen an Software werden zunehmend komplexer und die Anzahl der Systeme wächst, die Daten miteinander austauschen müssen.
Entscheidend für ein erfolgreiches Software-Design sind
- eine klare Definition der Anforderungen
- eine genaue Beschreibung des Systemverhaltens und der zu verarbeitenden Daten
- ein gemeinsames Verständnis des zu entwickelnden Systems
Wir setzen dabei auf eine modellgetriebene Entwicklung. Dabei nutzen unsere Softwareentwickler UML (Unified Modeling Language) Modellierungswerkzeuge wie Enterprise Architect, die den gesamten Prozess der Softwareentwicklung unterstützen.
Vorgehen Software-Design, Software-Entwicklung und Software-Implementierung
Bei einem Software-Entwicklungs-/Implementierungs-Projekt gehen wir folgendermaßen vor:
- Geschäftsprozessanalyse: In enger Abstimmung mit den Fachbereichen unserer Auftraggeber bilden wir alle Prozesse und Beteiligten aus Geschäftssicht in Diagrammen ab. Dies geschieht sowohl auf einem hohen Level bis hin zur genauen Beschreibung einzelner Aktivitäten. Dadurch wird sichergestellt, dass alle Anwendungsfälle vollständig und korrekt beschrieben sind, die das System unterstützen muss.
- Systemanalyse: Bei der Systemanalyse werden die Anwendungsfälle, die Prozessbeteiligten und Aktivitäten aus Systemsicht und technisch beschrieben. Es werden logisch getrennte Systembereiche (Domains) gebildet und Verbindungen mit externen Systemen dargestellt.
- Architektur: Maßgeblich für die Systemarchitektur sind die Anforderungen, die in den beiden Schritten zuvor spezifiziert wurden. Unsere Software-Architekten erarbeiten auf dieser Basis ein Systemdesign, das Anwendungsfälle und Prozesse auf funktionalen Einheiten abgebildet, die sogenannten Komponenten. Ganz im Sinne der serviceorientierten Architektur (SOA) kapseln diese Komponenten ihre gesamten Funktionen und bieten diese über plattformübergreifende Standardschnittstellen für andere Komponenten oder auch andere Systeme an.
- Design: Vor der konkreten Software-Entwicklung werden die Masken der Benutzeroberfläche (GUI) definiert. Dabei wird der Ablauf der möglichen Dialoge als auch die konkrete Gestaltung der Masken festgelegt. Um die Daten des Systems objektorientiert ablegen und verwalten zu können, wird ein sogenanntes Klassenmodell erstellt, das die einzelnen Objekte (z.B. Auto) mit deren Attributen (z.B. Motor) abbildet. Das Designmodell ist immer noch unabhängig von der eingesetzten Technologie.
- Implementierung: Die konkrete Entwicklung und damit auch das Festlegen auf eine Technologie finden in der Implementierungsphase statt. Dabei wird das Designmodell in ein Implementierungsmodell überführt, das eng an die gewählte Technologie angelehnt ist. Aus diesem Implementierungsmodell wiederum werden große Teile des eigentlichen Quellcodes generiert. Dieser Schritt sorgt für eine deutliche Reduktion der Entwicklungszeit, da die Schreibarbeit für einfachste Funktionen nicht mehr nötig ist und manuelle Fehlerquellen ausgeschlossen werden. Dieser Schritt wird inkrementell durchgeführt, sollten weitere Funktionen benötigt werden. Diese werden dann im Designmodell modelliert, ins Implementierungsmodell transformiert und von dort wieder in den Quellcode generiert. Auch Schnittstellen können wir so teilautomatisiert erzeugen. Die Softwareentwickler erweitern dann diesen Quellcode mit der Programmlogik.
- Test: Basierend auf den Anwendungsfällen erstellen wir einzelne Tests und umfangreiche Testszenarien, die die Funktionalität des Systems sicherstellen. Die unterschiedlichen Tests werden ebenfalls in den o.g. Modellen hinterlegt und als Testcode generiert.