Inhalt 1 Der Software-Lebenszyklus 1 I Der Entwurf 2 Artefakte 9 3 Verteilungsdiagramme 11 4 Fallstudie: KV – Überblick 15 5 Fallstudie: KV – Einzelplatz 21 6 Was ist eine Softwarearchitektur? 23 7 7.1 7.2 7.3 7.4 7.5 7.6 Architekturprinzipien 29 Architekturprinzip: Konzeptionelle Integrität 30 Architekturprinzip: Trennung von Zuständigkeiten 31 Architekturprinzip: Ökonomie 32 Architekturprinzip: Symmetrie 33 Architekturprinzip: Sichtbarkeit 34 Architekturprinzip: Selbstorganisation 34 8 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 8.10 Architektur- und Entwurfsmuster 37 Exkurs: Callback 42 Das Schichten-Muster (layers pattern) 46 Das Beobachter-Muster (observer pattern) 54 Das MVC-Muster (model view controller pattern) 63 Das Fassaden-Muster (facade pattern) 69 Das Kommando-Muster (command pattern) 75 Das Proxy-Muster (proxy pattern) 83 Fabrikmethoden-Muster (factory method pattern) 90 Das Strategie-Muster (strategy pattern) 97 Das Brücken-Muster (bridge pattern) 104 9 9.1 9.2 9.3 9.4 9.5 9.6 Nichtfunktionale Anforderungen 109 Wartbarkeit 116 Weiterentwickelbarkeit 119 Betriebssicherheit und Funktionssicherheit 121 Zuverlässigkeit 124 Leistung und Effizienz 128 Benutzbarkeit 130 5 xiii Inhalt 9.7 Portabilität 132 10 Einflussfaktoren auf die Architektur 135 11 11.1 11.2 Globalisierung von Software 143 Globalisierung in Java 145 Fallstudie: KV – Globalisiert 151 12 12.1 12.2 12.3 Authentifizierung und Autorisierung 155 A & A- Entwurfsmuster 158 JAAS 163 Fallstudie: KV – JAAS 169 13 13.1 13.2 13.3 Transaktionen 179 Transaktionsverarbeitung 180 Fallstudie: KV – JTA 182 Transaktionen in .NET 188 14 14.1 14.2 14.3 Verteilte Architekturen 193 Client-Server-Architektur 195 Web-Architektur 198 SOA – Serviceorientierte Architekturen 203 15 15.1 15.1.1 15.1.2 15.1.3 15.2 15.2.1 15.2.2 15.2.3 15.2.4 15.3 15.3.1 15.3.2 15.3.3 15.3.4 15.4 15.4.1 15.5 15.5.1 15.5.2 15.5.3 15.5.4 15.5.5 Arten der Netzkommunikation 209 Sockets 211 TCP-Sockets 212 UDP-Sockets 217 Fallstudie: KV – Sockets 220 RMI 224 »Hello World«mit Java-RMI 225 RMI-Begriffe 233 Stummel-Objekte (stubs) 234 Fallstudie: KV – RMI 240 CORBA 243 Die Architektur von CORBA 246 Die Schnittstellendefinitionssprache IDL 248 Standardisierte CORBA-Dienste 248 Fallstudie: KV – CORBA in Java 250 XML-RPC 256 Fallstudie: KV – XML-RPC 259 SOAP 265 SOAP-Nachrichten, Webservices und WSDL 266 Webservices bereitstellen und nutzen mit JAX-WS 270 Webservices nutzen 277 UDDI 283 Fallstudie: KV – SOAP 286 xiv Inhalt 15.6 15.6.1 15.6.2 15.6.3 15.7 15.8 15.8.1 15.8.2 15.8.3 15.9 REST 289 Die Konzepte von REST 290 Webservices mit JAX-RS 292 Fallstudie: KV – REST 300 Netzkommunikation in .NET 304 Entwurfskonzepte für verteilte Anwendungen 309 Fabrik-Dienst 310 Wert-Objekte 311 Fassaden 315 Vergleich der Konzepte 318 16 16.1 16.2 16.2.1 16.2.2 16.2.3 16.2.4 16.2.5 16.5 Softwaretechnische Infrastrukturen 323 Anforderungen an Unternehmensanwendungen 323 Die Java EE-Plattform 325 Die Java EE-Architektur 325 EJBs 330 JNDI 332 Erstellung und Nutzung einer Session Bean 334 Fallstudie: KV mit Java EE als Client-ServerAnwendung 337 Fallstudie: KV mit Java EE als Web-Anwendung 355 Die .NET-Plattform 364 Eigenschaften des .NET Framework 365 Zur .NET-Architektur 372 Werkzeuge 376 Infrastrukturen für serviceorientierte Architekturen 379 Fallstudie: KV mit Java EE als Webservice 381 17 17.1 17.2 17.3 17.3.1 17.3.2 Architekturen »Eingebetteter Systeme« 403 Anforderungsspezifikation 404 Typische Sichten Eingebetteter Systeme 405 Architekturmuster für Eingebettete Systeme 411 Das PSC-Muster (protected single channel pattern) 413 Das Homogeneous Redundancy-Muster 415 18 18.1 Das Subsystem Applikation 417 Web-Architektur für das Subsystem Applikation 418 19 19.1 19.2 19.3 19.4 19.5 Das Subsystem Persistenz 425 Vom Direktzugriff bis zum JPA 426 Exkurs: ORM – Objektrelationale Abbildung 430 JPA – Java Persistence API 435 Fallstudie: KV – JPA 440 Persistenz in .NET 446 16.2.6 16.3 16.3.1 16.3.2 16.3.3 16.4 xv Inhalt 20 20.1 20.2 20.3 Das Subsystem Benutzungsoberfläche 453 GUI-Entwurfsmuster MVP 461 Fallstudie: Kundenverwaltung – GUI 462 GUIs in der .NET-Plattform 471 21 Der Entwurfsprozess 483 22 Qualitätssicherung der Architektur 489 II Die Implementierung 23 Implementierungsprinzipien 497 24 Schnittstellen, Fabriken und Komposition 505 25 Restrukturieren (refactoring) 513 III Verteilung, Installation, Abnahme und Einführung 521 26 Verteilung und Installation 523 27 Abnahme und Einführung 527 IV Der Betrieb 28 Wartung 535 29 Pflege 539 30 Reverse Engineering 545 31 Reengineering (Teil 1) 553 32 Reengineering (Teil 2) 559 33 Reengineering (Teil 3) 563 Glossar 577 Literatur 585 Sachindex 593 xvi 531 493