Geleitwort | 7 |
Vorwort | 8 |
Kurzfassung | 11 |
Abstract | 13 |
Inhaltsverzeichnis | 15 |
Abbildungsverzeichnis | 18 |
Tabellenverzeichnis | 22 |
1 Einleitung | 23 |
1.1 Problemdarstellung und Motivation | 23 |
1.2 Inhalt und Beitrag | 27 |
Teil IGrundlagen | 32 |
2 Überblick | 33 |
3 Komponentenbasierte Softwareentwicklung | 35 |
3.1 Begriffsdefinition | 35 |
3.1.1 Komponente | 36 |
3.1.2 Komponentenbasierte Systeme | 37 |
3.1.3 Komponentenbasierte Software-Systementwicklung | 38 |
3.2 Komponentenspezifikation | 39 |
3.3 Komponentenmodelle | 41 |
3.3.1 Die Common Object Request Broker Architecture (CORBA) | 42 |
3.3.1.1 Object Management Architecture (OMA) | 43 |
3.3.1.2 Interface Definition Language (IDL) | 46 |
3.3.1.3 CORBA Component Model (CCM) | 46 |
3.3.2 Java Platform Enterprise Edition (Java EE) | 47 |
3.3.2.1 Java EE-Architektur | 48 |
3.3.2.2 Java EE Dienste | 50 |
3.3.2.3 Java EE Komponenten | 51 |
3.3.3 Microsoft .NET | 55 |
3.3.3.1 Component Object Model (COM) / Distributed Component Object Model (DCOM) | 58 |
3.3.4 Komponentenmodelle in der Forschung | 59 |
3.4 Software-Konfigurationsmanagement | 61 |
3.5 Qualität komponentenbasierter Systeme | 62 |
3.5.1 Verlässlichkeit | 63 |
3.5.2 Verfügbarkeit | 64 |
3.5.3 Leistungsfähigkeit und Reaktionsfähigkeit | 65 |
3.5.4 Erreichbarkeit | 66 |
4 Software-Architekturbeschreibung | 68 |
4.1 Der ANSI/IEEE-Standard zur Software-Architekturbeschreibung | 68 |
4.2 Standpunkt-basierte Modelle zur Software-Architekturbeschreibung | 71 |
4.2.1 Das Standpunktmodell von Clements et al. | 71 |
4.2.2 Das „4+1“-Standpunktmodell von Kruchten | 71 |
4.2.3 Das Standpunktmodell von Hofmeister, Nord und Soni | 72 |
4.2.4 Zusammenfassung | 72 |
4.3 Architekturbeschreibungssprachen | 73 |
4.3.1 Darwin | 73 |
4.3.2 MetaH/ControlH | 75 |
4.3.3 Rapide | 76 |
4.3.4 Wright | 76 |
4.3.5 Acme | 77 |
4.3.6 xADL | 78 |
4.4 Unified Modeling Language (UML) | 79 |
4.4.1 Statischer Standpunkt | 79 |
4.4.2 Dynamischer Standpunkt | 80 |
4.4.3 Deployment-Standpunkt | 81 |
4.4.4 Modellierung von komponentenbasierten Systemen | 81 |
4.5 Graphentheoretische Konzepte zur Architekturbeschreibung | 83 |
5 Rekonfiguration komponentenbasierter Softwaresysteme | 92 |
5.1 Der Begriff Rekonfiguration | 92 |
5.2 Typen von Rekonfiguration | 94 |
5.2.1 Statische Rekonfiguration | 95 |
5.2.2 Laufzeit-Rekonfiguration | 95 |
5.3 Laufzeit-Rekonfiguration | 96 |
5.3.1 Konsistenz | 97 |
5.3.2 Redeployment | 98 |
5.3.2.1 Hot Deployment | 99 |
5.3.2.2 Dynamic Reloading | 99 |
5.3.2.3 Side-by-Side Deployment | 99 |
Teil II ErreichbarkeitsoptimierteRekonfiguration zur Laufzeit | 101 |
6 Überblick | 102 |
7 System-Architekturbeschreibung: Anwendungsmodell | 106 |
7.1 Aktueller Stand der Software-Architekturbeschreibung | 107 |
7.2 Anforderungen an eine System-Architekturbeschreibung | 108 |
7.3 Unser Sichtenmodell | 111 |
7.4 Unser Component-Connector-Container (C3) Meta-Modell | 112 |
7.5 Anwendungsbeispiel | 114 |
7.6 Statische Sicht | 115 |
7.6.1 Komponentenbeschreibung | 116 |
7.6.2 Hierarchische Struktur eines Systems | 117 |
7.6.3 Statische Abhängigkeiten zwischen Komponenten / Abhängigkeitsgraphen | 118 |
7.7 Dynamische Sicht | 123 |
7.7.1 Modellierung von Laufzeitverhalten auf Komponentenebene | 123 |
7.7.2 Modellierung von Laufzeitverhalten auf Systemebene | 124 |
7.7.3 Benutzungsmodell eines Systems | 127 |
7.7.4 Laufzeitabhängigkeiten zwischen Instanzen von Komponenten | 130 |
8 Optimierung der Erreichbarkeit: Optimierungs-und Analysemodell | 134 |
8.1 Optimierungsmodell | 135 |
8.2 Analyse des Rekonfigurationsauftrags | 138 |
8.3 Analyse des Benutzungsmodells eines Systems | 141 |
8.4 Analyse des internen Laufzeitverhaltens des Systems | 143 |
8.5 Analyse der Benutzungsintensität des Systems | 146 |
8.6 Szenariobasierte Bestimmung der minimalen Laufzeit-Abhängigkeitsgraphen | 148 |
8.7 Zuordnung der Laufzeit-Abhängigkeitsgraphen zu den System-Laufzeitzuständen | 152 |
8.8 Dienstbezogene Erreichbarkeit | 154 |
8.9 Berücksichtigung der Dringlichkeit und Dauer der Rekonfiguration | 156 |
8.10 Wiedererkennung des optimalen Zustandsraums zur Laufzeit | 157 |
8.11 Approximativer Algorithmus zur Optimierung der Erreichbarkeit | 159 |
8.12 Optimierte vs. nicht-optimierte Rekonfiguration | 166 |
8.12.1 Statische Rekonfiguration | 167 |
8.12.2 Gängige Ansätze zur Laufzeit-Rekonfiguration | 167 |
8.12.3 Eigener Ansatz zur Laufzeit-Rekonfiguration | 170 |
9 Transaktionale Laufzeit-Rekonfiguration: Rekonfigurationsmodell | 172 |
9.1 Lebenszyklusprotokoll auf Komponentenebene | 173 |
9.2 Laufzeitprotokoll auf Systemebene | 179 |
9.3 Rekonfiguration als Transaktion | 182 |
9.4 Transaktionales Redeployment zur Laufzeit | 185 |
9.4.1 Aktueller Stand | 185 |
9.4.2 Eigenes Konzept | 187 |
9.4.3 Formalisierung mittels Computation Tree Logic | 189 |
9.4.3.1 Bildung eines endlichen Automaten | 190 |
9.4.3.2 Überführung in eine Kripke-Struktur | 194 |
9.4.3.3 Definition von Fehlerzuständen | 194 |
9.5 Plattformunabhängiger Rekonfigurationsmanager – PIRMA: Systemarchitektur | 196 |
Teil IIIEvaluation | 201 |
Überblick | 202 |
10 Java EE-basierte Realisierung von PIRMA | 203 |
10.1 Darstellung und Analyse der Rekonfigurationsaufträge | 203 |
10.1.1 Entwurf | 205 |
10.1.1.1 Erstellung eines Rekonfigurationsauftrags | 207 |
10.1.1.2 Generierung der Konfigurationsdaten zum Rekonfgurationsauftrag | 209 |
10.2 Durchführung der Rekonfiguration | 210 |
10.2.1 Implementierung der J2EE Deployment API | 211 |
10.2.2 Das Redeployment-System | 218 |
Konsistenzbedingungen im Kontext der EJB-Komponenten | 218 |
Syntaktische Konsistenz | 219 |
Semantische Konsistenz | 219 |
Redeployment Beispielszenario | 222 |
Verwaltung der Abhängigkeiten | 223 |
Redeployment-Punkte | 224 |
Redeployment-Menge | 224 |
JBoss-Redeployment | 225 |
Deployment-Tool-Plug-In-Architektur | 226 |
Serverseitige Architektur | 228 |
Deployment-Kontrollarchitektur | 231 |
Austauschen der Module | 231 |
10.2.3 Portierung des Redeployment-Systems | 233 |
Beschreibung neuer Deployer-Methoden in XML-Datei | 235 |
Java Autorization for Containers (JACC) | 235 |
Schnittstellenanpassung | 236 |
Erweiterung der Log-Ausgaben beim Redeployment | 236 |
Probleme und Einschränkungen bei der Portierung | 237 |
10.3 Zusammenfassung | 238 |
11 Java EE-basierte Evaluation der Laufzeit-Rekonfiguration | 239 |
11.1 Auswertung typischer Rekonfigurationsszenarien | 239 |
11.1.1 Analyse und Auswahl der Java EE Entwurfsmuster | 240 |
11.1.2 Festlegung und Beschreibung der relevanten Rekonfigurationsszenarien | 243 |
Stateless Session Bean | 244 |
Stateful Session Bean | 245 |
Entity Bean | 245 |
Message Driven Bean | 246 |
11.1.3 Architektur des Testsystems | 246 |
11.1.4 Auswertung der Testergebnisse | 249 |
JBoss Server | 249 |
WebLogic Server | 251 |
Auswirkungen auf die Entwurfsmuster | 251 |
11.1.5 Zusammenfassung | 252 |
11.2 Experimenteller Einsatz und Evaluation des Redeployment-Systems | 252 |
11.2.1 Einfache Redeployment-Tests | 253 |
11.2.2 Tests mit der Duke’s Bank Application | 258 |
11.2.2.1 Aufbau der Testumgebung | 260 |
11.2.2.2 Lastgenerierung: Markov-Kette für die Evaluation | 260 |
11.2.2.3 Evaluation der Ziele | 262 |
11.2.2.4 Auswertung der Ergebnisse | 263 |
11.2.3 Zusammenfassung | 265 |
12 Evaluation der Optimierung der Erreichbarkeit | 268 |
12.1 Eingesetzte Tools | 269 |
12.1.1 Lastgenerierung und Simulation von Benutzungsverhalten | 269 |
12.1.2 Monitoring und Analyse von Monitoringdaten | 269 |
12.2 Testsystem | 272 |
12.3 Entwurf und Implementierung | 274 |
12.3.1 Bestimmung und Darstellung minimaler Laufzeit-Abhängigkeitsgraphen | 274 |
12.3.2 Wiedererkennung der minimalen Laufzeit-Abhängigkeitsgraphen zur Laufzeit | 279 |
12.4 Ziele der Evaluation | 284 |
12.5 Versuchsaufbau | 285 |
12.6 Ergebnisse der Evaluation | 286 |
12.6.1 Versuch 1: 1 Benutzer | 288 |
12.6.2 Versuch 2: 10 Benutzer | 291 |
12.6.3 Versuch 3: 20 Benutzer | 293 |
12.6.4 Erkennung von geeigneten Anwendungsfällen | 295 |
Experiment in der Arbeit von Stöver | 296 |
Experiment in der Arbeit von Grüssing | 298 |
12.7 Zusammenfassung | 299 |
13 Verwandte Ansätze | 302 |
13.1 Komponentenbasierte Rekonfiguration zur Laufzeit | 303 |
13.1.1 Laufzeit-Rekonfiguration verteilter Systeme | 304 |
13.1.2 Transaktionales Redeployment | 304 |
13.1.3 Protokollbasierte Laufzeit-Rekonfiguration | 305 |
13.2 Architekturbasierte Rekonfiguration zur Laufzeit | 305 |
13.2.1 Graphtransformationsbasierte Rekonfiguration | 306 |
13.2.2 Dynamische Software-Architekturen | 306 |
13.3 Zusammenfassung | 307 |
Teil IVZusammenfassung und Ausblick | 308 |
14 Zusammenfassung | 309 |
14.1 Wissenschaftlicher Beitrag | 309 |
14.1.1 System-Architekturbeschreibung – Das Anwendungsmodell | 309 |
14.1.2 Optimierung der Erreichbarkeit – Das Optimierungsmodell | 310 |
14.1.3 Analyse zur Optimierung der Erreichbarkeit – Das Analysemodell | 311 |
14.1.4 Transaktionale Rekonfiguration zur Laufzeit – Das Rekonfigurationsmodell | 312 |
14.2 Praktische Einsetzbarkeit | 312 |
15 Ausblick | 315 |
15.1 Bestimmung / Vorhersage von Antwortzeiten | 315 |
15.2 Hypergraphen zur Verbesserung der Analyse | 315 |
15.3 Live Sequence Charts (LSCs) zur Bestimmung und Wiedererkennung von optimalen Laufzeitzuständen | 316 |
15.4 Analyse der Laufzeitabhängigkeiten auf der Ebene der Anwendungslogik | 316 |
15.5 Model Checking zur Verifikation des Redeployment-Systems | 316 |
15.6 Optimierung des Redeployment Konzepts | 317 |
Anhang | 318 |
Überblick | 319 |
Anhang A: Enterprise JavaBeans Komponentenmodell | 319 |
Anhang B: Java EE Deployment API | 319 |
Anhang C: Auswertung typischer Rekonfigurationsszenarien | 319 |
Anhang D: Evaluation minimaler Laufzeitabhängigkeiten | 319 |
Literaturverzeichnis | 320 |