Software aus Komponenten - Systeme, Adaptionen und Probleme

Slides:



Advertisements
Ähnliche Präsentationen
Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
Advertisements

C Sharp (C#) Martin Saternus Senior Student Partner
Programmieren im Großen von Markus Schmidt und Benno Kröger.
C ommon O bject R equest B roker A rchitecture
DI Christian Donner cd (at) donners.com
Datenbankzugriff im WWW (Kommerzielle Systeme)
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Web Services und Workflow-Steuerung
Pascal Busch, WWI00B – Vergleich CORBA vs. Web Services hinsichtlich der Applikationsintegration Web Services vs CORBA Web Services vs CORBA Ein Vergleich.
Java: Objektorientierte Programmierung
DOM (Document Object Model)
Komponentenbasierter Taschenrechner mit CORBA
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
XDoclet ETIS SS05.
Programmieren mit JAVA
JAVA RMI.
Explizite und editierbare Metainformationen für Software Muster.
Introducing the .NET Framework
Strukturänderungen Verteilte Anwendungen Wintersemester 06/07 © Wolfgang Schönfeld.
Remote Methode Invocation (RMI)
M A P K I T Management eines J2EE basierten eCommerce Systems am Beispiel des ATG Dynamo Applikationsservers und BMC Patrol als Managementframework.
UML Begleitdokumentation des Projekts
Werkzeugunterstützte Softwareadaption mit Inject/J
Forschungszentrum Informatik, Karlsruhe Objektorientierte Systeme unter der Lupe Markus Bauer Oliver Ciupke.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Software Architektur III
Die .NET Common Language Runtime
Web Services Die Zukunft netzbasierter Applikationen iternum GmbH Alexanderstraße Frankfurt/Main
ArcGIS als WPS Server Aktueller Stand der Umsetzung
Webservice Grundlagen
Architekturen und Techniken für computergestützte Engineering Workbenches.
Institut für Informatik III, Universität Bonn, c/o 2001, Präsentation Agenten, Objekte, Komponenten - Agenten, Objekte, Komponenten - ein Paradigma-Vergleich.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Welchen Problemen ist man bei heterogener, verteilter Programmierung ausgesetzt? Hardware: nicht einheitliche, inkompatible Systeme, verschiedene Leistungsfähigkeit.
Beschreiben Sie das Szenario wenn ein ORB einen Server aktiviert und eine Objektimplementation aufruft. Activate Server impl_is_ready Activate Object (GetID.
Management- und Web Services- Architekturen
EPROG Tutorium #4 Philipp Effenberger
Arbeitsbereich „Rechnernetze und verteilte Systeme“
Untersuchungen zur Erstellung eines
Parallele Programmierung in Java
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
->Prinzip ->Systeme ->Peer – to – Peer
Vortrag - Diplomarbeiten (HS I)
Microsoft.NET InfoPoint 8. Juni 2005 Stefan Bühler.
Datenbanken im Web 1.
Welcome to Web Services & Grid Computing Jens Mache
MD 4/02 CORBA Static/Dynamic Invocation Interface (SII/DII), Interface Repository.
Web Services als Remote Content Provider in Portalumgebungen Vorstellung und Diskussion des Themas Präsentation des Prototypen Konzeption und prototypische.
Web Services Spezielle Methoden der SWT Liste V – WS 2008/2009 Christian Boryczewski.
ORB – Konzepte Ist – Analyse der betrieblichen Notwendigkeiten, Anforderungsableitung an moderne Lösungskonzepte, alternative ORB – Konzepte mit Zukunft,
Objektorientierte (OO) Programmierung
Objektorientierte Programmierung Was ist das eigentlich ?
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Verteilte Anwendungen: Entwurf Dr. Wolfgang Wörndl
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
Patrick Richterich Lattwein GmbH Web Services Softwareentwicklung mit SOAP.
JAVA - Einführung. © Übersicht Hintergrund und Geschichte Wie sieht ein JAVA Programm aus ? Was ist ein JAVA Programm ? Wie schreibt/übersetzt.
1 Lutz Ullrich SOA – serviceorientierte Architektur SOA – Was ist das?
1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte.
Vergleich verschiedener Kommunikationsinfrastrukturen in Enterprise Information Systems Ben Mainz Seminar am Lehrstuhl für Software Engineering RWTH Aachen.
Webservices SOAP und REST Nicole Fronhofs 1. Betreuer: Prof. Dr. Volker Sander 2. Betreuer: B. Sc. Sebastian Olscher.
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Verteilte Anwendungen: Web Services Dr. Wolfgang Wörndl
WebServices Vortrag zur Diplomarbeit WebServices Analyse und Einsatz von Thomas Graf FH Regensburg
SOAP - WSDL Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. Manfred Thaller AM 2 Hauptseminar: Virtuelle.
Einführung in AspectJ ● Inhalt: 1)Überblick 2)Elemente des crosscuttings in AspectJ 3)„Hello World“ in AspectJ 4)Wie Aspekte in Java verwoben werden 5)Join.
SE: Systementwurf, © Till Hänisch 2003 Systemarchitektur nach Sommerville, Software Engineering, Addison Wesley.
Verteilte Anwendungen: J2EE
 Präsentation transkript:

Software aus Komponenten - Systeme, Adaptionen und Probleme Dr. Welf Löwe und Markus Noga Lehrstuhl Prof. Goos Institut für Programmstrukturen Universität Karlsruhe

Gliederung: Teil I - Grundlagen Einführung Motivation Definition, Konzepte für Komponenten (klassische, kommerzielle, akademische) Industrielle Komponentensysteme der 1. Generation CORBA (D)COM Enterprise JavaBeans Anpassungsprobleme Daten und Funktion Interaktion Kommunikation Synchronisation Protokolle Lebendigkeit

Teil II – Weiterführende Konzepte Lösung der Anpassungsprobleme (aus Teil I, 3.2) durch: Klassische Komponentensysteme XML Technologien Architektursysteme und –sprachen (Darwin, Unicon, Rapide, ACME) Erweiterungen des objekt-orientierten Paradigmas Aspekt-orientiertes Programmieren, Adaptives Programmieren Kalküle für Komponentensysteme Metaprogrammieren und Metaprogrammiersysteme Invasive Komposition

Material & Kontakte Auf der Website zur Vorlesung: http://i44www.unfo.uni-karlsruhe.de/~lehre/ Folien Laufende Veranstaltung (SS 2001) Elke Pulvermüller (WS 2000) Uwe Assmann (SS 1999) Weitere Informationen bei noga|loewe@ipd.info.uni-karlsruhe.de Tel. 608-8351 oder -4762

Literatur C. Szyperski. Component software. Beyond object-oriented computing. Addison-Wesley. Guter Überblick. Software - Tools and Techniques. Special Edition on Componentware, 1998. Springer. Guter Kurzüberblick, insbes. der Artikel von Michael Stal. R. Orfali, D. Harkey: Client/Server Programming with Java and Corba. Wiley & Sons. Leicht zu lesen. F. Griffel. Componentware. dpunkt-Verlag. Umfassendes Material, aber etwas anstrengender zu lesen. CORBA. Communications of the ACM, Oct. 1998. Neue Entwicklungen. Sametinger: Software Reengineering with Reusable Components. Springer 1998. Überblick, aber mehr auf abstraktem Niveau Gamma et al: Entwurfsmuster. Addison-Wesley. Das unentbehrliche Handwerkszeug des Softwareklempners. W. Pree: Metapatterns. ACM Press. Strukturierung von Entwurfsmustern. W. Pree: Softwareentwicklung mit Frameworks. dpunkt-Verlag.

Standards Common Object Request Broker Architecture (CORBA). OMG spec., http://www.omg.org/technology/documents/formal/corbaiiop.htm, 2001. The Component Object Model Specification. Microsoft, http://www.microsoft.com/com/resources/comdocs.asp, 1999. Enterprise JavaBeans. Sun, http://java.sun.com/products/ejb/, 2001. Extensible Markup Language (XML) 1.0. W3C Recommendation, http://www.w3.org/TR/1998/REC-xml-19980210, 1998. Simple Object Access Protocol (SOAP) 1.1. W3C Note, http://www.w3.org/TR/SOAP/, 2000. Web Services Description Language (WSDL) 1.1, W3C Note, http://www.w3.org/TR/wsdl, 2001. Universal Description, Discovery and Integration (UDDI) http://www.uddi.org/specification.html, 2000.

I.1.1 – Warum Entwicklung mit Komponenten? Wiederverwendung von Teillösungen: Lösungsannäherung statt neuer Problemlösung Leichte Konfigurierbarkeit des konstruierten Systems: Varianten, Versionen, Produktfamilien Outsourcing von Teilproblemen Bündelung von Kräften (bei nicht marktdivergierenden Systemeigenschaften) Kostenreduktion Bewährt in anderen Ingenieursdisziplinen Maschinenbau (z.B. DIN 2221), Elektrotechnik, Architektur

Beispiel: Kostenreduktion Größe von Klassenbibliotheken JDK 1.1: circa 1,650 Klassen JDK 1.2: circa 4,000 Klassen Je mächtiger, desto höher die Einarbeitungszeit Quelle: Jones86 p. 155 Entwicklung von Geschäftsanwendungen zur Marktvorhersage für den internen Gebrauch in COBOL. Fall 1: Gutes Design & Strukturierte Programmierung, keine Wiederverwendung Fall 2: Wie oben, zusätzlich Verwendung existierender Bibliotheken Fall 3: Wie oben, Framework statt Bibliotheken

Weitere Ziele Verbesserung der Produktqualität Höhere Effektivität durch Konzentration auf Optimierungen Höhere Verlässlichkeit (Haftungsfrage unklar) Verlängerung der Lebensdauer Flexibilisierung Verbesserungen am Softwareprozess Höhere Produktivität Schneller Prototypenbau Simulation von Architekturen Dokumentation Klare Systemstrukturen

Ursprünge NATO Conference on Software (Garmisch 68) prägte die Begriffe: Software crisis Software engineering McIlroy: Jede reife Industrie basiert auf Komponenten Komponenten erlauben Massenproduktion Systeme werden beherrschbar durch Zusammenbau aus Komponenten Später erfand McIlroy bei Bell Labs UNIX pipes, bis heute das meisteingesetzte Komponentensystem! Wo stehen wir heute?

Reale Komponentensysteme LEGO Hohlblöcke ICs Hardware-Busse Was unterscheidet sie von Methoden der Software-Konstruktion?

Komponenten und Komposition Entwurf von Komponenten nach Geheimnisprinzip (information hiding) Explizite Spezifikation von Schnittstellen Implementierung bleibt verborgen Komposition Zusammensetzen von Komponenten nach lokalen Entwurfsprinzipien, die globale funktionale und nichtfunktionale Eigenschaften zusichern Adaption von Komponenten, wenn nötig Interne Adaption von Komponenten an ihren Wiederverwendungskontext Externe Adaption: Anpassung der Schnittstellen für die Zusammenarbeit

Reale Komponentensysteme Schnittstellen Komposition Adaption LEGO Noppen Stecken - Hohlblöcke Form, Profil Mörtel Behauen ICs und Busse Pins, Signal- Spezifikation Stecken, Löten Wandler, Puffer etc.

I.1.2 – Definition von Komponenten A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. It can be deployed independently and is subject to composition by third parties. Szyperski (ECOOP Workshop WCOP 1997) A reusable software component is a logically cohesive, loosely coupled module that denotes a single abstraction. Booch A software component is a static abstraction with plugs. Nierstrasz/Dami

Weitere Definitionen Software components are defined as prefabricated, pretested, self-contained, reusable software modules - bundles of data and procedures - that perform specific functions. MetaGroup (OpenDoc) Reusable software components are self-contained, clearly identifyable pieces that describe and/or perform specific functions, have clear interfaces, appropriate documentation, and a defined reuse status. Sametinger

Komponenten - Unsere Definition Programmeinheiten mit standardisierter Basiskommunikation Abstrakt (nur Schnittstelle), generisch oder konkret (mit Implementierung) Klassen und Module sind Komponenten, Objekte nicht! Entworfen mit standardisierten Verträgen zur Komposition: Export-Schnittstelle sichert semantische Eigenschaften zu Import-Schnittstelle definiert Voraussetzungen zur ihrer Garantie Explizit oder Implizit (als Parameter von Konstruktoren oder anderen Methoden) Keine implizites Wissen Komponenten sind wiederverwendbar Komponenten können aus Komponenten zusammengesetzt sein

Komposition Instanziieren generischer Komponenten Zusammensetzen von Komponenten laut Verträgen: Über Funktionen und Daten Über Kommunikation, Synchronisation und Protokolle Problem der globalen Lebendigkeit? Wie erreicht man nichtfunktionale Eigenschaften? Mangelnde Passung erfordert Adaption der Komponenten: Externe Adaption durch Wrappercode Interne Adaption: Offenes Einsetzen Invasiver Austausch nicht-funktionaler Aspekte (z.B. Basiskommunikation tauschen, Synchronisation einfügen etc.)

Eigenschaften von Komponenten Können aus Spezifikation generiert werden (generische Komponenten) Unterscheidung funktionaler und nicht-funktionaler Aspekte Funktion und Daten, Kommunikation und Synchronisation, Verteilung, Persistenz, etc. Können dynamisch geladen und ersetzt werden Programme können Komponenten mit Reflektion betrachten und deren Dienste feststellen Ignorieren unbekannter funktionaler Aspekte

Einige Kommunikationsarten Normaler Prozeduraufruf Callbacks und Events Fernaufruf (remote procedure call, remote method invokation) Einpacken der Objekte in Byte-Strom, Verschicken, Auspacken Kann in heterogenen Systemen eingesetzt werden Z.B. Java RMI, CORBA etc. Gemeinsamer Speicher Uni- oder bidirektionale FIFOs (z.B. pipes, sockets) Blackboards, strukturierte Blackboards (Linda Tupelspace) Transaktionsdienste (Datenbank) Migration von Code (z.B. Java Applets) Wichtige Folie, aber nicht hier. Wo besser?

Beispiel: Callbacks und Events Aufrufer übergibt Prozedurvariable oder Verweis auf Objekte (anonymous classes in Java, Callback-Service in Corba) Rückruf durch Rahmenwerk, Bibliothek oder Server Ereignisse (events) zur asynchronen Kommunikation Technisch über Rückruf gelöst Reihenfolge meist nicht zugesichert dynamisch variierbarer Empfänger Ereignisquellen sind meist Dienste Z.B. in Java Beans, Corba Event Service

I.1.3 Klassische Konzepte Betrachtung als Komponentensysteme und Diskussion von Problemen bei: UNIX XML - Lösungen Module Klassen und Vererbung Rahmenwerke (Frameworks)

UNIX Basiskommunikation: Byte-Ströme von Quelle zu Senke Einfach und flexibel In einem Rechner: Pipes In Rechnernetzen: Sockets Komponenten sind eigenständige Programme Schnittstellen: Standardeingabe, Standardausgabe Generierung: durch make etc. Komposition mit Pipes in Shells und Skriptsprachen Adaption: Interne nicht unterstützt Externe durch eigenständige Komponenten, meist programmierbare Filter (awk, cut, grep, sed, etc.)

Probleme Komponenten haben jeweils nur einen Ein- und Ausgang Einschränkung auf Ketten von Filtern (Pipelines) Allgemeinerer Einsatz von Pipes und Sockets möglich. Programme in C/C++ können so außerhalb des Modells agieren. Komposition mit Werkzeugen wie Shells, Skripte dort unmöglich. Einschränkung auf asynchrone Protokolle ohne Rückkanal Adaption schwierig Formale Modellierung der Daten fehlt Standardwerkzeuge beherrschen maximal reguläre Muster Allgemeine Probleme mit Skripten: Schlecht skalierbar Schlecht wartbar

XML Lösungen XML Baum- bzw. Termsprache Leicht zu Parsen Baum und und Graphstrukturen Explizit über Syntax bzw. Namen Komponenten sind weiterhin eigenständige Programme SOAP (Simple Object Access Protokol) als Kommunikationsmethode Meist http basierte Kommunikation XML als Austauschformat, XSLT zur Datenanpassung Pfadsprache zur Musterbeschreibung und regelbasierte Musterersetzung andere Graphersetzungssysteme denkbar, nicht Standard UNIX als Komponentensystem kann subsumiert werden

Module (à la Parnas) Every module hides an important design decision behind a well-defined interface which does not change when the decision changes. David Parnas Eigenschaften Feste Schnittstellen Kapselung, Geheimnisprinzip (information hiding) Statische Bindung: Keine dynamische Erzeugung Durchdringt viele moderne Sprachen (Modula, Ada, Java, C/C++ usw.) Betrachtung als Komponentensystem: Basiskommunikation: Prozeduraufruf Schnittstellen: Prozeduren mit Parametern, globale Variable Generierung: sprachspezifisch für generische Module Adaption explizit und manuell

Probleme Sprachabhängigkeit der Protokolle nicht spezifiziert Basiskommunikation Spezifikation von Daten und Prozeduren Synchronisation Protokolle nicht spezifiziert Fehlende Werkzeuge für Komposition Adaption Verteilung Heterogene, verteilte Lösungen erfordern viel Handarbeit!

Objektorientierte Klassensysteme Klassen sind Module Haben mehrere zur Laufzeit erzeugte Instanzen (Objekte) Objekte haben Zustände (evtl. persistent) Vererbung und Untertypbeziehungen Polymorphie Späte Bindung von Aufrufen Betrachtung als Komponentensystem: Basiskommunikation: Polymorphe Methodenaufrufe, Variable Schnittstellen: Polymorphe Methoden, Objekt- und Klassenvariable Generierung: sprachspezifisch, oft mit generischen Klassen Adaption: durch Vererbung oder Delegation

Generische oder Abstrakte Klassen Generische/abstrakte Klasse Instanz System Implementierung

Probleme Sprachabhängigkeit der Protokolle nicht spezifiziert Basiskommunikation Spezifikation von Daten und Prozeduren Synchronisation Protokolle nicht spezifiziert Adaption durch Spracheigenschaften eingeschränkt (Kontravarianz oder Invarianz bei Vererbung) Fehlende Werkzeuge zur Verteilung Heterogene, verteilte Lösungen erfordern viel Handarbeit!

Rahmenwerke (Frameworks) Rahmenwerke sind Klassensysteme Sie bestimmen Kontrollfluss und Kommunikation einer Anwendung Parametrisierung durch Klassen Rahmenwerke als Komponentensysteme: Basiskommunikation: Methodenaufrufe Schnittstellen: Hot spots - Mengen von polymorphen Methoden Generierung: Instantiierung der Parameterklassen oder Implementierung der abstrakten Klassen gemäß den Einschränkungen des Rahmens Adaption: durch Vererbung oder Delegation

Rahmenwerke Parameterklassen Instanzen System Implementierung

Probleme Oft sprachabhängig Keine Wiederverwendung in fremdem Kontext (Grund: sehr gute Normierung/Standardisierung) Rahmen legt Möglichkeiten im Voraus fest: Adaption Verteilung Heterogene Lösungen

Modellierung mit UML Komponentendiagramm Register.exe Billing.exe Billing System Course.dll People.dll Course User Course Offering Student Professor The Unified Modeling Language Reference Manual. Rumbaugh, Jacobson and Booth, Addison-Wesley, 1999. Hier: p. 33 The Unified Modeling Language User Guide. Booch et al, Addison-Wesley, 1999. Kreis: Dienst Box mit Zacken: Komponente Feste Linie ohne Pfeil: Bietet Dienst an Gestrichelter Pfeil: Benutzt Copyright © 1997 by Rational Software Corporation 40

Probleme Semantik sehr flexibel Nichts ist definiert, also keine Anpassung nötig Problem der Implementierung Probleme je nach Implementierungssprache oder -system

I.1.4 Kommerzielle Komponentensysteme Komponentensystem (Plattform, Rahmenwerk) definiert Standards für Komponenten: Schnittstellen, Protokolle, Kommunikations- und Implementierungsbasis stellt Grundvoraussetzungen für Einsatz der Komponenten sicher reguliert Interaktionen zwischen den Komponenten Beispiele: Corba (D)COM (Enterprise) JavaBeans IBM SOM OpenDoc

(D)COM, CORBA und JavaBeans Basiskommunikation: Normale Prozeduraufrufe an Kommunikationssystem Weiterleitung über normale Aufrufe und Fernaufrufe Standardisierte Schnittstellen set/get Properties, IUnknown (COM), QueryInterface (Corba) Namensdienste etc. Generierung: aus Klassen und Definitionssprachen Nur externe Adaption: Für verteilte Systeme (marshaling) Für gemischtsprachliche Systeme (IDL) Gemeinsamen Oberbegriff finden

Komponenten in kommerziellen Systemen Objekte, die in einen Softwarebus gesteckt werden können Mit dem Bus und einer Menge von standardisierten Schnittstellen bilden sie ein Komponentensystem (Plattform) Softwarebus

CORBA Offener Standard, siehe http://www.corba.org Unabhängig von Sprache und Verteilung Interface definition language IDL Quellcode oder binär Client Java Client C Server C++ IDL Stub IDL Stub IDL skeleton Object adapter Object Request Broker (ORB), Trader, Services

(D)COM Microsoft proprietär, siehe http://www.activex.org Ähnelt CORBA Rein binärer Standard Client C++ Server C++ Client VBasic COM stub COM stub COM skeleton Monikers, Registry

JavaBeans Offener Standard, siehe http://www.javasoft.com Sprachabhängig: nur Java Unabhängig von Verteilung (durch RMI) Quellcode oder Bytecode Java Bean Java Bean Java Bean Bean Container Event InfoBus, RMI

Probleme Unterschiedliche Basiskommunikation der Systeme, z.B. können Corba Komponenten nicht direkt COM Komponenten verwenden Wrapping mit zusätzlicher Indirektion oder Invasive Änderung der Komponente nötig (unmöglich bei Binärlösung) Keine formale Definition von Protokollen Komponenten mit gleichen Schnittstellen i.a. nicht wiederverwendbar Lösung Standardisierung: Schnittstellenidentifikation ist eindeutig (COM) Reflektion

I.1.5 Akademische Konzepte Architektursysteme Aspektorientiertes Programmieren Metaprogrammieren und Invasive Programmadaptation als Technik zur Komposition

Architektursysteme Z.B. Unicon, Darwin Basiskommunikation: Prozeduraufrufe an sog. Tore (communication ports) Art der Kommunikation zwischen Komponenten ist transparent Schnittstellen: Tore, an die Konnektoren angreifen Explizite Anwendung von Konnektoren pro Kommunikation (in objektorientierten Systemen wird Kommunikationen gemeinsam durch Vererbung verändert) Schnittstellen bleiben zur Laufzeit erhalten Interne Adaption: durch Vererbung Externe Adaption: Klebe- oder Wrappercode durch Konnektoren

Architektursysteme Komponente Komponente Komponente Port 1 Komponente Port Komponente Port Port 2 Komponente Konnektoren spalten Kommunikation aus Komponenten ab

Probleme Keine Standardisierung Künstliche Unterscheidung von Konnektoren und Komponenten Keine Wiederverwendung von Konnektoren Schnittstellen von Komponenten und Konnektoren im laufenden Code

Aspekttrennung & Komposition Wasser Trenne die Pläne für verschiedene Aspekte und webe sie zu einem System zusammen Daten Strom Gas Austausch der Aspekte unabhängig voneinander

Aspect-orientierted programming (AOP) Siehe Kiczales et al: Aspect-oriented Programming. LNCS ECOOP 1998 Verallgemeinerung von Architektursystemen: Architektursysteme sind spezielle Aspektsysteme: Ihre beiden Aspekte sind anwendungsspezifische Funktionalität und Kommunikation Weitere Aspekte: Synchronisation, Verteilung, Persistenz etc. Transparenz durch aspektbeschreibende Sprachen Basiskommunikation: ein Aspekt Generierung: Weben aus Aspektspezifikationen Schnittstellen: Join points, an denen Aspekte verwoben werden Adaption: Interne Adaption: Aspekte bilden Teile von Komponenten, d.h. interne Adaption durch Austausch von Aspekten externe Adaption: Weben von Klebecode um Komponenten herum

Aspekte eines Programms (Algorithmus und Animation) /** The black code is the algorithmic aspect */ import java.io.*; public class Hanoi { public Hanoi() { … } protected void compute( int n, String s, String t, String h ) { if(n > 1){ compute( n - 1, s, h, t ); compute( n - 1, h, t, s ); /** The black code is the algorithmic aspect */ /* * The red code is the animation aspect. */ import java.io.*; public class Hanoi extends java.util.Observable implements java.util.Observer { public Hanoi() { addObserver( new PrintObserver() ); } protected void compute( int n, String s, String t, String h ) { if(n > 1){ compute( n - 1, s, h, t ); setChanged(); notifyObservers( new displayPack( s, t ) ); compute( n - 1, h, t, s );

Aspekte als Sichten Aspekt 1 Aspekt 2 Aspekt 3 Abstraktion = Aspekt Konkretisierung = Weben System

Probleme Orthogonale Aspekte Nicht-orthogonale Aspekte Keine Interaktionen zwischen den Aspekten Weben einfach Nicht-orthogonale Aspekte Z.B. Funktionalität und Synchronisation, Funktionalität und Verteilung, Protokolle und Synchronisation etc. Getrennte Spezifikation unmöglich Weben unklar Aspekt als Sicht Abstraktion von Systemeigenschaften Umkehrungsfunktion nicht immer Eindeutig Widerspruchsfrei mit anderen Aspekten

Invasive Komposition Webepunkte sind statisch eindeutig berechenbare Programmstellen Komponenten kapseln Entwurfsentscheidungen hinter Kompositionsschnittstellen mit wohldefinierten Webepunkten Programmtransformatoren (auch Kompositionsoperatoren) erkennen und transformieren Webepunkte einer Kompositionsschnittstelle. Klassifikation: Kein Komponentensystem! Technik zur Komposition von allen Systemen funktioniert.

Invasive Komposition Standard-Webepunkte, z.B. für wrapping: Method.begin und Method.end Method m (){ abc.. cde.. return; } Method m Method.begin Method.begin Method.end Method.end

Transformation eines Webepunktes Wrapping eines Test-Aspekts Method m (){ abc.. cde.. return; } Method m (){ print(„enter m“) abc.. cde.. print(„exit m“) return; } Method.begin Method.begin Method.end Method.end

Mehrfache Bindung eines Webepunktes Method m Method.begin Druckaspekt Method.end Transaktions- aspekt

Deklarierte Webepunkte Z.B. Kommunikationstore: Ansprache von Torobjekten (port objects) Method m (){ portOut.out(d); portIn.in(e); } Method m portOut.out OUT port IN port portIn.in

Transformationen für Tore /*** ports */ e = x(d); } m (){ … portOut.out(d); portIn.in(e); } OUT port IN port m (){ /*** ports */ setChanged(d); notifyObservers(d); listen_to(e); }

Einfache Bindung von Toren Method m Method x portOut.out call portIn.in call

Transformation mit Kompositoren Ein Kompositor ist ein Metaprogramm: Programmtransformator Bindet ungebundene Webepunkte an Code Aufgaben Erkennen von Webepunkten Transformation durch Manipulation von Webepunkten (Binden der Webepunkte, Weben, weaving) Codegenerierung

Vergleich der Komponentensysteme Kommunikation Schnittstellen Generierung Adaption Module Aufrufe Prozeduren Je nach Sprache Frameworks Polymorphe Aufrufe Methoden Generische Klassen Vererbung, Delegation CORBA & Co. RMI Methoden (nach IDL) - Wrapper Architektur-systeme Aufrufe an Tore Tore Konnektoren AOP Aspekt (beliebig) Join points Weben

Historische Ansätze Netscape ONE: IBM Visual Age und ComponentBroker HTML, Java, JavaScript Internet foundation classes (Java Klassen für Netzwerk) Internet inter-ORB protocol (IIOP, Konnektoren basierend auf CORBA) Transport und applikationsspezifischer Protokolle IBM Visual Age und ComponentBroker Entwicklungsumgebung auf VisualAge-Basis CBToolkit (Komponenten auf CORBA IDL basierend) CBConnector (Verknüpfung und Management)

Weitere historische Ansätze IBM System Object Model (SOM) Sprachunabhängiges Binärformat mit Versionen Binäre Aufwärtskompatibilität (“release order”, Erhalt alter Offsets in Komponenten) Unterstützung von Metadaten (Reflexion, Introspektion, Intercession): wie in Smalltalk können Klassen über Klassen nachdenken und Code transformieren Mehrfachvererbung von Code Apple OpenDoc: Aktive strukturierte Dokumente (setzt auf IBM SOM auf) “compound document“, “document parts” Teile: ”native data“ / andere Teile Open Scripting Architecture basierend auf AppleScript Structured files mit Bento (ähnlich zu Microsofts COM/OLE) Dokument-Versionen von Dokumentbäumen mit Deltatechnik Flexibles Speichermodell für Datenströme und Einzeldateien Annotationen für Modifikationen an Dateien Mittlerweile in Corba integriert

Probleme der bisherigen Systeme Fehlen von Standards für Anwendungsbereiche: Verbindungsstandards nicht genug Wie einen Standard erreichen? Marktmacht Microsoft, Corba Facilities, ... Bessere Verträge für höhere Sicherheitsansprüche an Komponenten erweiterte Verträge: Protokolle (Corba IIOP), Spezifikation von nicht-funktionalen Eigenschaften Zeit- und Speicherbedarf Dienstvermittlung: Semantikerkennung unmöglich Standardisierung, aber Versionen zerstören Konsistenz Wasserkopfprobleme (besonders bei Corba deutlich) Technische Probleme Speicherbereinigung (garbage collection) Problem der Syntaktisch Fragilen Basisklassen: bei Versionsänderungen Persistenzprobleme: müssen bereits ausgelieferte Komponenten nachübersetzt werden Austauschformate: Standard oder XML Lösungen Objekt-Mobilität, -Migration: Senden kleiner Objekte statt Referenzen

Probleme des Systementwurfs Bisherige Entwurfskonzepte nicht auf Komponenten-Software übertragbar Top-down Entwurf bei vorgegebenen Komponenten? Verfeinerung auf nicht vollständig spezifizierten Komponenten (Aspekte fehlen, generische Komponenten, Komponenten vor invasiver Kopplung) unabhängige Erweiterungen, viele Quellen Globale Lebendigkeit Managementprobleme Qualitätssicherung bei anzupassenden Komponenten Softwareprozeß Rechtliche Probleme Urheberrecht an Komponenten Haftung bei Fehlern