Postmoderne Softwareentwicklung
Methoden und Rezepte
Dr. Thomas Wolff
Vortrag am 2. November 2001
Folien im PDF-Format
Folien im HTML-Format
Erläuterungen zu den Folien
- Folie 1: Übersicht / Themen
- Zum Titel des Vortrags:
Aus der vielfältigen Bedeutung des Begriffs Postmoderne in der Kunst
scheint mir eine Charakterisierung gut auf die heutige Kunst der
Softwareentwicklung zu passen:
- Die anscheinende "Rückbesinnung" auf Geschichte und
Traditionen aber erweist sich als Versuch, die überlieferten
Verfahrensweisen zu einem neuen Ganzen zu collagieren.
Die seit Jahrzehnten andauernde "Softwarekrise" wurde mit etlichen
Rezepten und Vorgehensschemen versucht zu bändigen. Nach dem Boom der
objektorientierten Analyse- und Designmethoden muss man feststellen,
dass diese auch nur einen kleinen Bereich der Softwareentwicklung
nachhaltig verbessert haben, und dass eine wohldosierte Kombination
mehrerer vorteilhafter Ansätze erst zu durchgängigem Erfolg führen kann.
Auch in der Architektur, aus deren Umfeld die nützliche Welt der
Patterns entlehnt worden ist,
wird erst durch die Verbindung der Moderne mit traditionellem
ästhetischen Empfinden wieder eine sowohl funktionale als auch
menschenverträgliche Baukunst erreicht.
- Folie 2: Softwareentwicklungstechniken
-
Eine Klassifikation wichtiger Techniken zur Unterstützung
und Steuerung der Softwareentwicklung.
Hierzu gehören neben sogenannten Entwicklungsmethoden auch
Entwicklungsparadigmen / -philosophien / -strategien,
Entwicklungsumgebungen, und organisierende Entwicklungsprozesse.
- Folie 3: Patterns
-
Mit dem Prinzip der systematischen Sammlung von Patterns soll
der Erfahrungsschatz aus Softwaredesign und -entwicklung zum
generischen Lösungsansatz häufiger Probleme geordnet und leicht
zugänglich gemacht werden.
Die Folie stellt ein Klassifizierungsschema für Patterns (nach Buschmann)
und die schematische Beschreibung von Patterns dar.
- Folie 4: Ein Architektur-Pattern
-
Das schon etwas länger bekannte sogenannte Model-View-Controller-Pattern
dient der funktional entkoppelten Aufgabenteilung bei
interaktiven Anwendungen.
- Folie 5: Ein Programmierkultur-Pattern
(im Vortrag ausgelassen)
-
Auch Programmierstile können als Patterns aufgefasst werden, da sie
(wenn auch weniger problemorientiert) typische Herangehensweisen
für die Programmieraufgabe nahebringen.
Das Pattern des funktionalen Programmierens führt oft zu übersichtlicheren,
kürzeren und leichter verständlichen, also auch besser wartbaren
Programmen und hat im Zeitalter der Objektorientierung nichts von seiner
Bedeutung verloren. (Viele Lehrbücher vernachlässigen das leider und
verbreiten umständliche imperative Lösungen für im Kern funktionale
Probleme.)
- Folie 6: Beispiel Industrieprojekt
-
Zur exemplarischen Demonstration des Einsatzes verschiedener Techniken,
zu denen auch spezifische Patterns gehören,
werden Charakteristika eines Industrieprojekts vorgestellt, das
mit der geforderten Hochverfügbarkeit besondere Anforderungen auch an
die Entwicklungsumgebung stellt.
- Folie 7: Einsatz von Entwicklungstechniken im Industrieprojekt
-
Relevanz und Verwendungsziel verschiedener Techniken für ein
exemplarisches Projekt werden zusammengefasst.
- Folie 8: Beispiel 0 (sequence diagram):
Prozesse und Sessions im Framework
-
An der Komplexität (unter Vernachlässigung der Details) eines
Sequenzdiagramms für Prozesskoordination im hochverfügbaren System
wird das Pattern einer spezifischen Prozessorganisation gezeigt, bei
der die Bearbeitung einer großen Zahl virtueller Nutzerprozesse durch
deutlich weniger tatsächliche Prozesse (Threads) vorgenommen wird.
- Folie 9: Beispiel 1 (sequence diagram):
Komponentenmodell im Framework
-
Im Komponentenmodell ist einiges an expliziter und impliziter
Initialisierung durchzuführen, bevor Komponenten von einander
Dienstleistung in Anspruch nehmen können.
- Folie 10: Beispiel 2 (use case diagram):
Funktionalität einer Komponente XY
-
Für eine abstrahiert dargestellte Komponente wird der Einsatz von
UML-Diagrammen für die Use-Case-Beschreibung gezeigt.
- Folie 11: Beispiel 3 (class diagram):
Implementierung einer Komponente XY
-
Dieses Klassendiagramm sah in der tatsächlichen Designphase der
Komponente noch ganz anders aus. Das zeigt die relative Bedeutung
des Ansatzes "Design-Methode" im dargestellten Beispiel.
- Folie 12: Beispiel 4:
Klassendiagram als Datenmodell-Beschreibung
(im Vortrag ausgelassen)
-
Ein UML-Klassendiagram kann auch als Datenmodell-Beschreibung genutzt
werden. So wird die einheitliche Notation zur Dokumentation eingesetzt.
- Folie 13/14: Programmierbeispiel 1:
Factory für Komponente XY
-
Das Programmierbeispiel Teil 1 zeigt einige Framework-spezifische
Patterns, die in der Factory einer Komponente realisiert werden.
Hierbei ist nicht zuletzt die Framework-eigene Realisierung des
Variablen-Kontextes bemerkenswert; sie wird im Folgebeispiel noch klarer.
Durch diesen Mechanismus wird das Mapping vieler virtueller auf wenige
reale Threads möglich.
- Folie 15: Programmierbeispiel 2:
Framework-Einbettung eines XY-Objekts
-
Hier wird insbesondere dargestellt, wie ein Objekt eines realen Threads
mit Hilfe des Frameworks auf Variablen des virtuellen Threads zugreifen
kann.