450 likes | 640 Views
Komponenten-basierte Anwendungsentwicklung. — Praktischer Entwurf verteilter Infrastrukturen — Dr. Michael Löwe. Inhalt. Der Stand-der-Kunst in der Anwendungsentwicklung Die aktuellen Herausforderungen System = Komponenten in einer Infrastruktur
E N D
Komponenten-basierte Anwendungsentwicklung — Praktischer Entwurf verteilter Infrastrukturen — Dr. Michael Löwe
Inhalt Der Stand-der-Kunst in der Anwendungsentwicklung Die aktuellen Herausforderungen System = Komponenten in einer Infrastruktur Anforderungen an und Leistungsmerkmale von Systeminfrastrukturen Anwendungsinfrastrukturen Nicht-technische Rahmenbedingungen Resümee Michael Löwe: Komponenten-basierte Softwareentwicklung
Architektur klassisch I/O-Steuerung (Standardmasken) Transaktionsmonitor Dialogfolgesteuerung („COBOL TM“) P1 P2 P3 P4 P5 P6 P7 P8 .... Pn Zugriffsschicht („COBOL SQL“) Datenbank Betriebssystem Mainframe Michael Löwe: Komponenten-basierte Softwareentwicklung
Fat Server Einheitliche Systemplattformen Homogene Strukturen Wenig Alternativen und wenig Interoperabilität Zentrale Kontrolle durch Transaktionsmonitor Anwendungsarchitektur: Vorgänge als interagierende Transaktionen Programme als interagierende Funktionen Michael Löwe: Komponenten-basierte Softwareentwicklung
Client Client Client Dialogabläufe Anwendungslogik Dialogabläufe Anwendungslogik Dialogabläufe Anwendungslogik Server Server Datenhaltung Datenhaltung Server Datenhaltung Architektur der Moderne Netz Michael Löwe: Komponenten-basierte Softwareentwicklung
Fat Client Heterogene Systemplattformen Homogene Strukturen (Framework) Viele Alternativen und wenig Interoperabilität Dezentrale Kontrolle durch Klienten Anwendungsarchitektur: Programme als interagierende Komponenten Komponenten als interagierende Objekte Michael Löwe: Komponenten-basierte Softwareentwicklung
Inhalt Der Stand-der-Kunst in der Anwendungsentwicklung Die aktuellen Herausforderungen System = Komponenten in einer Infrastruktur Anforderungen an und Leistungsmerkmale von Systeminfrastrukturen Anwendungsinfrastrukturen Nicht-technische Rahmenbedingungen Resümee Michael Löwe: Komponenten-basierte Softwareentwicklung
„Fat-Client“- Probleme Software-Verteilung Transaktions-/Betriebssicherheit Objekttechnologie Graphische Benutzeroberflächen Wieder-, Mehrfachverwendung Objekte = Einheiten zur Verteilung Kauf-Komponenten Verteilungstechnologien Dienste-Architekturen Skalierbarkeit durch Parallelität Kauf-Komponenten Internet Server-Orientierung / Scripting Probleme der Skalierbarkeit Unternehmensvernetzung/E-Business Bürokommunikation „Elektrifizierung“ aller Nutzer Unternehmensvernetzung Server-Orientierung Workflow-Management Integration sämtlicher Systeme „Elektrifizierung“ der Zusammenarbeit „Fat-Server“-Probleme Alles zuviel für einen Die treibenden Kräfte Michael Löwe: Komponenten-basierte Softwareentwicklung
Architektur „post-modern“ CORBA IIOP Internet DCE UML Standardsoftware Active X Java Beans Transaktionsdienste HTML/DHTML/XML Intranet Design Patterns Workflow Management Systems Bürokommunikation Office-Systeme EJB Internet-Browser OO-Wrapper OLE/DCOM ODBC Rehosting Client/Server MVC Web-Server 3-Tier Komponenten-Software GUI/GUI-fizierung Groupware Verteilung Thin Clients Fat Clients Meta-Directories COTS Legacy Integration Offene Systeme JDBC Frameworks Messaging Applets Extranet Servlets Sicherheit Application Server DAO Objekte und Dienste EDI Scripting Plattformen Michael Löwe: Komponenten-basierte Softwareentwicklung
Distributed Services Diverse Systemplattformen Heterogene Strukturen Viele Alternativen und vermehrt Interoperabilität Noch viel Inkompatibilität Anwendungsarchitektur: „Wenn man sich traut und etwas selber baut“ „Und es trotzdem klappt!“ Michael Löwe: Komponenten-basierte Softwareentwicklung
Client‘ Funktionsklient Message Sending Message Queueing Funktionsdienst OLE-Access OLE Excel Beispiel: Funktionsdienst Client Funktionsklient Message Sending Load Balancing Message Queueing Statistics Message Sending Message Queueing CORBA-ORB Funktionsdienst Interface Repository OLE-Access Name Service OLE Excel Zentraler File Server Michael Löwe: Komponenten-basierte Softwareentwicklung
Client Client‘ Persistenzklient Persistenzklient Message Sending Message Sending Load Balancing Message Queueing Statistics Message Sending Server Message Queueing Message Queueing CORBA-ORB Persistenzdienst Persistenzdienst Interface Repository VA-Persistenz VA-Access VA-Access VA-Persistenz Name Service Schnittstelle(lokal) Schnittstelle(lokal) DB-Server (DDE) DB-Server (DDE) DBMS-Klient Standard Client Standard Client DBMS-Klient Standard Server Beispiel: Persistenzdienst Zentraler DB Server Michael Löwe: Komponenten-basierte Softwareentwicklung
Client Client‘ Textgenerierung Textgenerierung Message Sending Message Sending Load Balancing Message Queueing Statistics Message Sending Message Queueing Message Queueing CORBA-ORB Textkomposition Textkomposition Interface Repository DDE-Access VA-Access VA-Access DDE-Access Persistenzklient Persistenzklient Name Service Schnittstelle(lokal) Schnittstelle(lokal) DDE-Schnittstelle DDE-Schnittstelle MS-Word Standard Client Standard Client MS-Word Standard Server TextbausteineKorrespondenz Beispiel: Textverarbeitung Druck/Versand-Server Michael Löwe: Komponenten-basierte Softwareentwicklung
Sinn der gemeinsamen Architektur Serverfähigkeit von Client-orientierten Systemen Mehrbenutzerfähigkeit von Single-User-Systemen Skalierbarkeit durch Parallelität Dynamische Lastverteilung „Regionalisierung“ von Klient und Server Asynchrone Einbindung synchroner Systeme Wiederverwendung für unterschiedliche Zwecke Technische Homogenität in heterogener Umgebung Michael Löwe: Komponenten-basierte Softwareentwicklung
Inhalt Der Stand-der-Kunst in der Anwendungsentwicklung Die aktuellen Herausforderungen System = Komponenten in Infrastruktur Anforderungen an und Leistungsmerkmale von Systeminfrastrukturen Anwendungsinfrastrukturen Nicht-technische Rahmenbedingungen Resümee Michael Löwe: Komponenten-basierte Softwareentwicklung
Infrastruktur für nutzen Infrastruktur für nutzen Infrastruktur für nutzen Infrastruktur für Was sind Komponenten? Komponenten sind selbständige „Teile“, die interagieren können. Die Interaktion erfolgt über die Mechanismen und Verfahren des „Ganzen“, i. e. der gemeinsamen Infrastruktur. Beispiele: Mainframe-Transaktionen Programmfunktionen Programmiersprachliche Objekte DLLs Corba-Objekte Enterprise Java Beans Anwendungssysteme: Schadenregulierung Anwendungskomponenten: Textverarbeitung, ... Systemkomponenten: Persistenzdienst, ... Basiskomponenten: Messaging, Name Service, ... Michael Löwe: Komponenten-basierte Softwareentwicklung
Provision Vertrag Verteilplan RV-Ordnung Bsp.: Ermittlung von Komponenten Geschäftsprozess „Beitragsabrechnung“: Forderung an Kunden erzeugen und buchen Zahlung an Vermittler erzeugen und buchen Zahlung an Beteiligte erzeugen und buchen Zahlung an Rückversicherer erzeugen und buchen Geschäftsprozess „Schadenzahlung veranlassen“: Zahlung an Kunden erzeugen und buchen Forderung an Vermittler erzeugen und buchen Forderung an Beteiligte erzeugen und buchen Forderung an Rückversicherer erzeugen und buchen Michael Löwe: Komponenten-basierte Softwareentwicklung
Fachliche Interaktion Vertragsverwaltung: Vertrag anlegen Vertrag ändern Vertrag abrechnen Vermittlerverwaltung: Provision definieren: Vertrag Provision ändern: Vertrag Provision abrechnen: Vertrag Konsortienverwaltung: Konsortium definieren: Vertrag Konsortium ändern: Vertrag Konsortium abrechnen: Vertrag realisiert realisiert benutzt Vertrag identifizieren():Vertrag Beitragshistorie (Vertrag): Historie Beitragshistorie geändert (Vertrag) Historie Eigenanteil (Vertrag): Historie Historie Eigenanteil geändert (Vertrag) benutzt Rückraumverwaltung: Ordnung definieren: Vertrag Ordnung ändern: Vertrag Ordnung abrechnen: Vertrag Steuer: Steuersatz zuweisen: Vertrag Steuersatz ändern: Vertrag Steuer abrechnen: Vertrag Zahlweise: Zahlweise festlegen: Vertrag Zahlweise ändern: Vertrag Raten abrechnen: Vertrag Michael Löwe: Komponenten-basierte Softwareentwicklung
Technische Interaktion Vertragsverwaltung (VV): Klient Beitrag abrechnen BeitragBH: Klient Beitrag buchen Vermittler: Klient Provision buchen Beteiligte: Klient Zahlungen buchen RV: Klient ........ VV: Server Bestand aktualisieren Text: Klient B-Abr. erzeugen Text: Klient P-Abr. erzeugen Text: Klient F-Abr. erzeugen Text: .... ........ Text: Server Aktualisieren Versand: Server Dokument versenden B.-BH: Server Aktualisieren V.-BH: Server Aktualisieren F.-BH: Server Aktualisieren Michael Löwe: Komponenten-basierte Softwareentwicklung
Inhalt Der Stand-der-Kunst in der Anwendungsentwicklung Die aktuellen Herausforderungen System = Komponenten in einer Infrastruktur Anforderungen an und Leistungsmerkmale von Systeminfrastrukturen Anwendungsinfrastrukturen Nicht-technische Rahmenbedingungen Resümee Michael Löwe: Komponenten-basierte Softwareentwicklung
Systeminfrastruktur • Objekte/Komponenten, Nachrichten und Ereignisse Transparent für die Anwendungskomponenten: • Persistenz • Transaktionen • Zeitreihen (und Versionen) • Sperren • Benutzer und Rechte • Oberflächendarstellung • Funktionen • Dokumente und Archiv • Prozesse und Arbeitsverteilung • Druck und Versand (Post, Fax, email, DTA, EDI) . . . . . Michael Löwe: Komponenten-basierte Softwareentwicklung
Heterogenität: Objektmodell Präsentation: Browser Visualisiert in HTML/DHTML Benutzerschnittstelle: NT4.0 Benutzerschnittstelle: WWW Linearisiert/Codiert in XML Graphische Visualisierung Klient: Smalltalk Objektmodell der Anwendung: UML + VA Messaging: Individuell Corba-Smalltalk-Mapping: Dictionary Middleware: Corba IDL-Struktur / Linearisiert in IIOP Persistenzdienst: Smalltalk Objektifizierung des Relationalen Models SQL-Kapsel: Individuell Individuelle Linearisierung: objektbasiert DBMS-Klient Informix Informix-Linearisierung DBMS Informix Generisches Relationales Model Michael Löwe: Komponenten-basierte Softwareentwicklung
Objektmodell: Unsere Lösung Generisches Fachliches Objektmodell Generische Abbildung auf alle Medien • Flexibilität der Fachlichkeit • Offen für Evolutionsmechanismen • Objektorientierte Modellierung von Objekten • Performanz Michael Löwe: Komponenten-basierte Softwareentwicklung
Persistenz Komponenten ganz ohne Behandlung der Persistenz • Persistenz ist Sache des Komponentennutzers • Abstrakte Schnittstelle zur Persistenzschicht erforderlich (JDBC, DAO) • Integration auf der Persistenzebene „unstrukturiert“ Komponenten mit eigener Behandlung der Persistenz • Heterogenität der „Persistenzmittel“ (Betrieb?) • Behandlung von Komponenten-übergreifenden Beziehungen Komponenten nutzen generischen Persistenzdienst • Homogenität der Persistenzschicht • Persistenz ist Sache der Infrastruktur • Strukturierte Integration auf der Ebene der Persistenz Michael Löwe: Komponenten-basierte Softwareentwicklung
Objekt-Bus Generischer Persistenzdienst View/Controller Model View/Controller Model Komponenten Beziehung ? Suchen und Finden ? Komponente 1 Komponente 2 Persistenzdienst Persistenzdienst Datenbankmanagementsystem Michael Löwe: Komponenten-basierte Softwareentwicklung
Alternative 1: Direkte Beziehung Globales Schlüsselsystem Getrennte Datenbanken Normalisierte Tabellen Event nur bei Löschen Technisches Proxi Auflösen in fremder Komponente Mengenauflösung als Dienst Schlüssel Proxi Objekt 1 Objekt 2 Objekttabelle 1 Objekttabelle 2 Komponentengrenze Komponentenbeziehung Michael Löwe: Komponenten-basierte Softwareentwicklung
Alternative 2: Beziehung über logische Proxi Globales Schlüsselsystem Getrennte Datenbanken Denormalisierte Tabellen Event bei Änderung Logisches Proxi Lokale Auflösung Lokale Mengenauflösung Einheitlicher Such- und Finde-Mechanismus Objekttabelle 1 Komponentenbeziehung Quell Proxi Suchergebnis Logisches Proxi Objekt 1 Ziel Proxi Objekt 2 Suche Objekttabelle 2 Komponentengrenze Michael Löwe: Komponenten-basierte Softwareentwicklung
Transaktionen Komponenten ganz ohne Transaktionslogik • Transaktionssicherung unmöglich Komponenten mit eigener Transaktionslogik • Zwei-Phasen-Commit (Performanz ?) • Heterogenität der Transaktionsprotokolle • Homogenisierung ist Sache des Komponentenintegrators Komponenten nutzen generischen Dienst für „lange Transaktionen“ • Homogenität der Transaktionsbehandlung • Transaktionen sind Sache der Infrastruktur • Strukturierte Integration von Komponenten in Transaktionen Michael Löwe: Komponenten-basierte Softwareentwicklung
Transaktionen: Unsere Lösung Lange Transaktion Abschließen Verwerfen Method Calls and Events Komponente 1 Komponente 2 Komponente 3 2. Phase: Entfernen der Sperren DB- Trans- aktion DB- Trans- aktion DB- Trans- aktion DB- Trans- aktion DB- Trans- aktion DB- Trans- aktion 1. Phase: Logische Sperren DBMS- Systeme Michael Löwe: Komponenten-basierte Softwareentwicklung
Transaktionen: Unsere Lösung Transaktionsobjekte für „Lange Transaktionen“ Asynchrone Transaktionsabwicklung Sämtliche fachlichen Dienste nur im Rahmen von Transaktionen Alle fachlichen Komponenten unterstützen „Commit“ und „Rollback“ DB-Transaktionen: erste Phase im „Zwei-Phasen-Commit“ (synchron) Komponenten unterstützen logische Sperren für Transaktionen Zweite Phase als Entfernung der logischen Sperren (asynchron) Nicht als Datenbankübergreifendes Zwei-Phasen-Commit Rücknahme der ersten Phase durch Vollständige Historie Replay der zweiten Phase durch Transaktionsobjekte Michael Löwe: Komponenten-basierte Softwareentwicklung
Oberfläche Komponenten ganz ohne Oberflächen • Oberflächengestaltung ist Sache des Komponentennutzers • Abstrakte Schnittstelle zur Oberfläche erforderlich • „unstrukturiert“ Interaktion über die Oberfläche Komponenten mit eigener Oberfläche • Kein einheitliches Look‘n‘Feel • Oberflächenvarianten für verschiedene Plattformen • Abstrakte Schnittstelle zur Oberfläche erforderlich Komponenten nutzen generischen Oberflächendienst • Einheitliches Look‘n‘Feel • Abstrakte Oberfläche gehört zur Infrastruktur • Abbildung auf konkrete Oberfläche ist Sache der Infrastruktur Michael Löwe: Komponenten-basierte Softwareentwicklung
Oberfläche: Unsere Lösung Struktur und Beziehungen zw. Objekten Eigenschaften eines Objekts/ einer Suche DBMS- Transaktionen Zwischen- ablage Lange Transaktionen Michael Löwe: Komponenten-basierte Softwareentwicklung
Inhalt Der Stand-der-Kunst in der Anwendungsentwicklung Die aktuellen Herausforderungen System = Komponenten in einer Infrastruktur Anforderungen an und Leistungsmerkmale von Systeminfrastrukturen Anwendungsinfrastrukturen Nicht-technische Rahmenbedingungen Resümee Michael Löwe: Komponenten-basierte Softwareentwicklung
Produktsteuerung Weit(er)gehende Parametrisierung der Anwendungen Endstufe: Produktmodellierung = OO-Modellierung OO-Modelle zur OO-Modellierung Übernahme von DV-Konzepte Objekte und Klassen Versionen und Evolution Lange Transaktionen ..... Design-Patterns werden Analyse-Patterns Michael Löwe: Komponenten-basierte Softwareentwicklung
DKH Schaden Prozess Statistik Deckung Vertrieb Workflow Class Dialog RV Produkt Browser Buchhaltung Vertrag Tarif SB Object Excel Police Rechnung Kompetenz HBG Word Buchhaltung Directory Model View Beispielarchitektur Michael Löwe: Komponenten-basierte Softwareentwicklung
Model View Komponente Produkt Anbindung Definition Standard-Software Legacy System Objekt vertrag: Produkt steuerung: Anbindung applikation: Definition Model/View: produktgesteuert Michael Löwe: Komponenten-basierte Softwareentwicklung
Model Tarifview Funktionen Produkt Definition der Parameter- und Ergebnis- versorgung Funktions- definition EXCEL Objekt vertrag: Produkt Ermittlung und Übergabe der Werte Funktions- anwendung Beispiel: Tarif Michael Löwe: Komponenten-basierte Softwareentwicklung
Typsystem für Views Typgraph Normalformen Typgraph R1 = (,... ) R2 = (,... ) ... ... R1‘ = (,... ) R2‘ = (,... ) ... ... Klassensystem für Produkte Produktschnittstelle Abbildungsdef. Fremdsystem Normalisierung der Quelle Normalisierung des Ziels Instanzgraph Instanzgraph t1 = R1: ( ... ) t2 = R2: ( ... ) t3 = R2: ( ... ) t4 = R2: ( ... ) ... t1' = R1': ( ... ) t2‘ = R2‘: ( ... ) t3‘ = R2‘: ( ... ) t4‘ = R2‘: ( ... ) ... Verträge als Objekte Objektschnittstelle Abbildung Michael Löwe: Komponenten-basierte Softwareentwicklung
Integration existierender Systeme • Unzureichende Datenformate • Unzureichende Objektmodelle • Unzureichende Ereignismodelle • Unzureichende Schnittstellen • Unzureichende Transaktionskonzepte • Präsupposition bestimmter Architekturen • .... Michael Löwe: Komponenten-basierte Softwareentwicklung
Inhalt Der Stand-der-Kunst in der Anwendungsentwicklung Die aktuellen Herausforderungen System = Komponenten in einer Infrastruktur Anforderungen an und Leistungsmerkmale von Systeminfrastrukturen Anwendungsinfrastrukturen Nicht-technische Rahmenbedingungen Resümee Michael Löwe: Komponenten-basierte Softwareentwicklung
Konkurrenz der Infrastrukturen Monopol • Homogenität und Verläßlichkeit • Zerschlagung wie bei MicroSoft Intensive Konkurrenz • Innovation • Heterogenität und Inkompatibilität Michael Löwe: Komponenten-basierte Softwareentwicklung
Evolution der Infrastrukturen Wer entwickelt die Infrastruktur weiter? • Eine Firma • Eine Entwicklergemeinde Wer hat welchen Einfluß auf die Evolution? Wie sicher ist die Weiterentwicklung? Auf- und Abwärtskompatibilität? Wie fügen sich eigene Erweiterungen ein? Michael Löwe: Komponenten-basierte Softwareentwicklung
Komponentenmarkt Probleme der Anbieter • Marketing • Vergleichbarkeit • Konkurrenz mit und ohne Veränderungen der Schnittstellen • Welche Infrastruktur Probleme der Anwender • Welche Infrastruktur • Wieviele Anbieter • Verläßlichkeit der Anbieter Michael Löwe: Komponenten-basierte Softwareentwicklung
Der Faktor Mensch Das Know-how der Entscheider Better buy than make! But where and what? Die nötigen Investitionen lohnen sich! Aber wo und wann? Das Know-how der Entwickler „Not invented here“ ist gut für mich Komponenten sind eine gute Idee Das Know-how der Anwender Integration aller Funktionen statt Spezialfunktionen Langfristige Evolutionsfähigkeit vor kurzfristiger Erweiterung Michael Löwe: Komponenten-basierte Softwareentwicklung
Resümee Zuerst die Infrastruktur, dann die Komponenten. Komponenten sind Objekte im Großen Zur Infrastruktur gehören Scgnittstellen, Schnittstellenvererbung, Messages und Events Message- und Objektlinearisierung und Übertragung Doch die kommerzielle Anwendungsentwicklung braucht mehr Infrastruktur Kommerziell ist derzeit interessant: Enterprise Java Beans (als offener Standard) COM+ (als die MicroSoft-Alternative) Zu einer guten Theorie gehört Persistenz, Transaktionen und Oberflächen und und und ... Michael Löwe: Komponenten-basierte Softwareentwicklung