Westfälische Wilhelms-Universität

&npsb;

Software Engineering

Die Entwicklung von Software besteht aus mehreren Phasen. Das klassische Wasserfallmodell unterscheidet die Phasen Planung, Definition, Entwurf, Implementierung, Testen sowie Einsatz und Wartung. Der Projektplan gibt einen Überblick über Reihenfolgen, geplante Zeiten für einzelne Aktivitäten und sachlogische Zusammenhänge zwischen den zu erledigenden Aufgaben.

Weiterhin werden Dauer, Personalbedarf und Kosten des betrachteten Projekts geschätzt. In der Definitionsphase wird aus Anwendungssicht beschrieben, welche Aufgaben das zu entwickelnde System unterstützen muss. Dies erfolgt typischerweise in Form eines Pflichtenhefts und eines Produktmodells. Ausgehend noch von technischen Fragestellungen wie Modulgestaltung, Programmiersprachen, Datenbankeinsatz, Benutzeroberfläche etc., abstrahieren diese Prozessmodelle und beschreiben das Verhalten des Systems. Sie werden durch Datenmodelle, die die Struktur der Daten definieren, ergänzt. Der Umgang mit solchen Modellen wird an Fallstudien erarbeitet. In der Entwurfs-Phase wird festgelegt, aus welchen Komponenten das angestrebte System bestehen soll und wie diese zusammenarbeiten. Hierbei werden u.a. auch Entscheidungen zur Realisierung der Benutzerschnittstelle, der Datenhaltung, der Verteilung im Netz und der zu verwendenden Middleware und Komponentenarchitektur getroffen.

Weiterhin werden durch die Verwendung bewährter Entwurfsmuster die Flexibilität, Wartbarkeit und Übersichtlichkeit des Systems gesteigert. Nach einer Ausformulierung der Komponenten in der Zielprogrammiersprache werden diese getestet, um die korrekte Funktion des Systems zur belegen. Hierbei wird ausgehend von einzelnen Komponenten über Integrationstests von mehreren Komponenten schließlich das Gesamtsystem in seiner Zielumgebung getestet. Durch geeignete Testtreiber wird die Überprüfung einzelner Testfälle so weit wie möglich automatisiert. Zur Formulierung dieser Fälle gibt es die beiden sich ergänzenden Techniken Glass-Box-Testen und Black-Box-Testen, bei denen die innerer Struktur der Komponenten berücksichtigt bzw. nicht berücksichtigt wird.

Neben dem Softwareentwicklungsprozess werden in diesem Modul aktuelle Trends im Bereich der Softwareentwicklung aufgezeigt und ihre Hintergründe erklärt. Hierzu zählen neben Objektorientierung und der hierfür entwickelten Notation, der Unified Modeling Language (UML), insbesondere agile Vorgehensmodelle für die Software-Entwicklung, wie Extreme Programming und Scrum, sowie Entwurfs- und Architekturmuster. Zu den Grundkonzepten der objektorientierten Software-Entwicklung zählen u.a. Klassen, Objekte und Vererbung. Im Detail wird erläutert, wodurch sich Vorteile für die Wartbarkeit und Wiederverwendbarkeit ergeben. Zu nennen sind hier zunächst die auch aus imperativen Sprachen wie Ada und Modula bekannte Kapselung von Daten und darauf arbeitenden Operationen und die Trennung von Schnittstelle und Implementierung, die Voraussetzung für eine klare Aufgabenverteilung zwischen Teams bzw. Entwicklern ist.

Durch den Einsatz von Vererbung ergibt sich zusätzlich die Möglichkeit, statt wie bei klassischen Bibliotheken Funktionalität einfach verwenden und diese an ggf. leicht unterschiedliche Erfordernisse anpassen zu können. Musterbeispiele hierfür sind sogenannte Frameworks, d.h. adaptierbare Systeme von Klassen, wie z. B. Java AWT und Swing, zwei Frameworks zur Erstellung graphischer Benutzeroberflächen. Die UML bietet für die verschiedenen Aspekte eines Softwaresystems unterschiedliche Diagramme an, die erlauben, den jeweiligen Aspekt zu visualisieren. Zu nennen sind hier u.a. Anwendungsfall-Diagramme (Use Case Diagrams), Klassendiagramme, Interaktionsdiagramme, endliche Automaten und Aktivitätsdiagramme.

Newsletter bestellen
Newsletter bestellen

Einen Newsletter zu unseren Lehrgängen können Sie hier bestellen:

Newsletter bestellen