MTFLOW - Informatik 5
Transcription
MTFLOW - Informatik 5
MTFLOW – Ein System für workflow-basierte Ausführung von Modelltransformationen Mohamed Amine Chatti chatti@informatik.uni-kl.de 19. Mai 2004 Motivation Ziel der Arbeit ¾ Den Ansatz der workflow-basierten Modelltransformationen analysieren und empirisch bewerten ¾ MTFLOW (Model Transformation workFLOWs ): Eine PrototypImplementierung MTFLOW – Überblick ¾ Schnelle Spezifikation von Software-Systemen in einer Produktlinie mit Hilfe der Sprachen UML und OAL ¾ Die Spezifikation entsteht durch die aufeinanderfolgende Anwendung von Modelltransformationen, ausgeführt mit Hilfe der Sprache XMI ¾ Die Reihenfolge der angewendeten Transformationen wird mit einem Workflow-Modell überwacht 19.05.2004 MTFLOW 2 Gliederung Produktlinienansatz und generative Programmierung Modelltransformationen Metamodell für MTFLOW-Workflow-Modelle Versionierungssysteme als Anwendungsbeispiel Empirische Untersuchungen Zusammenfassung und Ausblick 19.05.2004 MTFLOW 3 Generative Programmierung Beziehung zu dem Produktlinienansatz bzw. der generativen Programmierung ¾ SW-Produktlinie Analogie Softwareentwicklung-Industrie ¾ Meilensteine der … …Industrialisierung 1826 Einsatz austauschbarer Teile 1901 erstes Fließband 1981 Einsatz von Robotern Produktion mit Wiederverwendung Massenproduktion Automatisierte Produktion 1970er 1980er 2000 Objektorientierung SoftwareSystemfamilien GenerativeProgrammierung …Software-Entwicklung 19.05.2004 MTFLOW 4 Generative Programmierung Ziele der generativen Programmierung ¾ ¾ Die Entwicklung von SW-Systemen vereinfachen, verbessern und beschleunigen Automatisierte Produktion der Systeme in einer SW-Systemfamilie Phasen der Produktlinienentwicklung Domänen-Engineering Domänenwissen DomänenAnalyse Applikations-Engineering neue Anforderungen Kundenanforderungen AnforderungsAnalyse Domänenmodell Produktmerkmale DomänenEntwurf Architektur und Produktionsplan DomänenImplementierung ProduktKonfiguration Komponenten, DSLs, Generatoren, Infrastruktur Produktkonfiguration Integration und Test Produkt 19.05.2004 MTFLOW 5 Gliederung Produktlinienansatz und generative Programmierung Modelltransformationen Metamodell für MTFLOW-Workflow-Modelle Versionierungssysteme als Anwendungsbeispiel Empirische Untersuchungen Zusammenfassung und Ausblick 19.05.2004 MTFLOW 6 Modelltransformationen in MDA MDA (Model Driven Architecture) ¾ Trennung der Definition der Funktionalität eines Systems von der Definition der Implementierung dieser Funktionalität für eine bestimmte Plattform ¾ Modelle in MDA • • ¾ PIM (Platform-Independent Model) PSM (Platform-Specific Model) Abbildung zwischen Modellen • • • • PIM zu PIM PIM zu PSM PSM zu PSM PSM zu PIM 19.05.2004 MTFLOW 7 Modelltransformationen in MDA Verfeinerung PIM Anwendungsspezifisches Metamodell (z.B. Enterprise Computing) (UML-Profil) definiert auf Customer Name : String ReverseEngineering optional Transformation Verfeinerung PSM Plattform-Metamodell (z.B. Enterprise JavaBeans) (UML-Profil) <<EJBRemoteInterface>> Customer definiert auf <<EJBRemoteMethod>> getName() <<EJBRemoteMethod>> setName() Generierung Verfeinerung Code Implementierungssprache (z.B. Java) 19.05.2004 definiert auf public interface Customer { public String getName(); public void setName(String name); } MTFLOW 8 Modelltransformation mit XMI XMI (XML Metadata Interchange) ¾ XMI ist ein textbasiertes Austauschformat für Modelle xmi.id, xmi.uuid idref, href XMI.difference, XMI.add, XMI.delete, XMI.replace Model Merging ¾ ¾ ¾ ¾ 19.05.2004 MTFLOW 9 Project Offer customer : String price : float delete Project replace New Offer customer : String add Task name : String description : String 19.05.2004 <XMI.content> <UML:Package xmi.id=„p1“ name=„Project“> <UML:Class xmi.id=„c1“ name=„Offer“> <UML:Classifier.feature> <UML:Attribute xmi.id=„a1“ name=„customer“> <UML:StructuralFeature.type> <UML:DataType xmi.idref=„s“> </UML:DataType> </UML:StructuralFeature.type> </UML:Attribute> <UML:Attribute xmi.id=„a2“ name=„price“> <UML:StructuralFeature.type> <UML:DataType xmi.idref=„f“> </UML:DataType> </UML:StructuralFeature.type> </UML:Attribute> </UML:Classifier.feature> </UML:Class> </UML:Package> original.xmi </XMI.content> <XMI.content> <UML:Package xmi.id=„p1“ name=„Project“> <UML:Class xmi.id=„c1“ name=„New Offer“> <UML:Classifier.feature> <UML:Attribute xmi.id=„a1“ name=„customer“> <UML:StructuralFeature.type> <UML:DataType xmi.idref=„s“> </UML:DataType> </UML:StructuralFeature.type> </UML:Attribute> </UML:Classifier.feature> </UML:Class> <UML:Class xmi.id=„c2“ name=„Task“> <UML:Classifier.feature> <UML:Attribute xmi.id=„a3“ name=„name“> <UML:StructuralFeature.type> <UML:DataType xmi.idref=„s“> </UML:DataType> </UML:StructuralFeature.type> </UML:Attribute> <UML:Attribute xmi.id=„a4“ name=„description“> <UML:StructuralFeature.type> <UML:DataType xmi.idref=„s“> </UML:DataType> </UML:StructuralFeature.type> </UML:Attribute> </UML:Classifier.feature> </UML:Class> </UML:Package> new.xmi </XMI.content> MTFLOW <XMI.content> <XMI.difference> <XMI.add href=„original.xmi | p1“ > <UML:Class xmi.id=„c2“ name=„Task“> <UML:Classifier.feature> <UML:Attribute xmi.id=„a3“ name=„name“> <UML:StructuralFeature.type> <UML:DataType xmi.idref=„s“> </UML:DataType> </UML:StructuralFeature.type> </UML:Attribute> <UML:Attribute xmi.id=„a4“ name=„description“> <UML:StructuralFeature.type> <UML:DataType xmi.idref=„s“> </UML:DataType> </UML:StructuralFeature.type> </UML:Attribute> </UML:Classifier.feature> </UML:Class> </XMI.add> <XMI.delete href=„original.xmi | a2“/> <XMI.replace href=„original.xmi | c1“> <UML:Class xmi.id=„c1“ name=„New Offer“/> </XMI.replace> </XMI.difference> difference.xmi </XMI.content> 10 Modelltransformation mit XMI Erweiterung der XMI-Spezifikation Ablauf der Modelltransformation in MTFLOW Spezifikationsbaum (bi) Velocity-Prozessor A B Kontext (ki) (als Hashtabelle) C Schlüssel A A als Java-Objekt Schlüssel B B als Java-Objekt Schlüssel C C als Java-Objekt VTLVorlage (vi) … Merge (Velocity) generiertes XMI-Differenz-Dokument (di) XMI-Model-Dokument (mi) Merge (XMI) XMI-Model-Dokument (mi-1) 19.05.2004 MTFLOW 11 Gliederung Produktlinienansatz und generative Programmierung Modelltransformationen Metamodell für MTFLOW-Workflow-Modelle Versionierungssysteme als Anwendungsbeispiel Empirische Untersuchungen Zusammenfassung und Ausblick 19.05.2004 MTFLOW 12 Metamodell für MTFLOW-Workflow-Modelle WorkflowModel R2 +supercategory 1 R9 name : String R14 +workflow model 1 +root name : String 0..n index : int category sub- minOccurence : int 1 category maxOccurence : int R1 1..n 0..n ConfStep +source name : String 1 isEntry : boolean 1 +sink +variable 0..n ConfVariable i dentifie r : String i ndex : int type : String minOccurence : String maxOccurence : String getsN ewMId : Boolean getsMId FromD omain : Boolean +value 0..n selection R8 +template 1 R6 R7 R5 R4 19.05.2004 +step +category R3 1 1 +step +step 1 +category filename : String +template +steps ConfCategory Template 1 0..n +functio n +evaluates +evaluates Function display transition identifier : String condition value body : String 0..1 1 returnType : String +outgoi ng 0..1 transition +incoming Transi tion transition name : String 0..1 +transition R11 1 1 +transition R 12 +connector +connector 0..n 0..n 0..n +evaluates ControlConnector template R10 values name : String +transfered values 0..n +evaluates 1 transfered values DataFlow 0..n 0..1 name : String +data flow +va lue dom ain MTFLOW R15 R13 13 Gliederung Produktlinienansatz und generative Programmierung Modelltransformationen Metamodell für MTFLOW-Workflow-Modelle Versionierungssysteme als Anwendungsbeispiel Empirische Untersuchungen Zusammenfassung und Ausblick 19.05.2004 MTFLOW 14 Versionierungssysteme ¾ ¾ ¾ ■ ■ ■ Speicherung versionierter und nicht versionierter Objekte Attribute Operationen auf Objekten Beziehungen zwischen Objekten Gleitende Beziehungsende (floating relationship ends) Kandidatenmenge (candidate version collection) Zugriffsmöglichkeiten: Vorauswahl von Objektversionen (pinning), regelbasierte Auswahl, gesamte CVC Propagierung von Operationen Arbeitskontexte Informationsmodell 19.05.2004 MTFLOW 15 Informationsmodell VersionedVSObjectType Offer customer : String description : String price : float validUntil : String isPart 1..* 0..* contains 1 Task name : String description : String startDate : String dueDate : String 0..* causedBy ratedCosts 0..* 1 Cost wages : float travelExpences : float materialExpenses : float validUntil : String 0..* attaches 0..* Project VSWorkspaceType 19.05.2004 MTFLOW 16 Versionierungssysteme Viele Variationsmöglichkeiten ¾ Angaben über versioniert und unversioniert zu speichernde Objekttypen Beziehungen Arbeitskontexte Propagierung von Operationen über Beziehungen ¾ ¾ ¾ Versionierungssysteme als Produktlinie ■ Workflow-Modell für Versionierungssysteme ¾ Modellieren von Workflow-Prozessen mit Petri-Netzen oder Statecharts und Activitycharts Schrittweise Verfeinerung der Modelle ist mit Statecharts und Activitycharts möglich ¾ 19.05.2004 MTFLOW 17 Versioning System_AC ObjectTypes (OTs) ObjectTypes (OTs), RelationshipTypes (RTs) ObjectTypes (OTs) Define_ObjectType_A Make_ObjectType_ Versionable_A Define_ RelationshipType_A Define_ WorkspaceType_A ObjectTypes (OTs) ObjectTypes (OTs), versionable ObjectTypes (verOTs) @Versioning System_SC Versioning System_SC new WT/ st! (Define_ WorkspaceType_A) new OT/ st! (Define_ ObjectType_A) new RT/ st! (Define_ RelationshipType_A) Define_ObjectType_S new OT 19.05.2004 new verOT Make_ObjectType_ Versionable_S new verOT/ st! (Make_ObjectType_ Versionable_A) new RT Define_ RelationshipType_S new RT/ st! (Define_ RelationshipType_A) MTFLOW new WT Define_ WorkspaceType_S new WT/ st! (Define_ WorkspaceType_A) 18 Beispiel Konfigurationsschritt A Define ObjectType 19.05.2004 MTFLOW 19 Beispiel Konfigurationsschritt B Make ObjectType versionable … … 19.05.2004 … … … … MTFLOW 20 Beispiel Konfigurationsschritt C Define RelationshipType … … … … 19.05.2004 MTFLOW 21 Beispiel Konfigurationsschritt D Define WorkspaceType … … … … … … 19.05.2004 MTFLOW 22 Gliederung Produktlinienansatz und generative Programmierung Modelltransformationen Metamodell für MTFLOW-Workflow-Modelle Versionierungssysteme als Anwendungsbeispiel Empirische Untersuchungen Zusammenfassung und Ausblick 19.05.2004 MTFLOW 23 Empirische Untersuchungen durchgeführte Untersuchungen ¾ ¾ Analyse der Transformationsvorlagen Analyse der Transformationsergebnisse ■ verwendete Metriken ¾ Anzahl der Anweisungen zyklomatische Komplexität Halstead-Aufwand MTFLOW-spezifische Metriken ¾ ¾ ¾ 19.05.2004 MTFLOW 24 Analyse der Transformationsvorlagen ¾ ¾ ¾ Vorlage C hat die höchste Komplexität Konstantes Verhältnis zwischen Umfang und Komplexität der Vorlagen Anzahl der Anweisungen, Referenzen, Fallunterscheidungen und XMI-Elemente steigen mit der Größe der Vorlagen an 19.05.2004 MTFLOW 25 Analyse der Transformationsergebnisse ¾ ¾ verschiedene Modelle als Informationsmodelle: UML Core Package, CWM Relational Package, MOF Model Package Ermittlung der Anzahl der verschiedenen generierten XMI-Elemente in jedem Konfigurationsschritt 19.05.2004 MTFLOW 26 Analyse der Transformationsergebnisse ¾ Anzahl der UML:Class-, UML:Association- und OAL:Method-Elemente ¾ Anzahl der generierten XMI-Elemente im Vergleich mit der Anzahl der in den Vorlagen enthaltenen XMI-Elemente 19.05.2004 MTFLOW 27 Analyse der Transformationsergebnisse ¾ Anzahl der generierten XMI-Elemente im Vergleich mit dem Aufwand der Spezifikation eines SW-Systems 19.05.2004 MTFLOW 28 Gliederung Produktlinienansatz und generative Programmierung Modelltransformationen Metamodell für MTFLOW-Workflow-Modelle Versionierungssysteme als Anwendungsbeispiel Empirische Untersuchungen Zusammenfassung und Ausblick 19.05.2004 MTFLOW 29 Zusammenfassung und Ausblick ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ Ein domänenspezifisches Workflow-Modell und eine Menge von domänenspezifischen Vorlagen können bei der Spezifikation eine DSL ersetzen OAL als geeignete Sprache zum Modellieren der Semantik konstantes Verhältnis zwischen Umfang und Komplexität der Vorlagen Vorlage C zu komplex (hoher Halstead-Aufwand) Aufteilung der Vorlage C sinnvoll Aufwand der Entwicklung der Vorlagen zahlt sich aus lineare Abhängigkeit zwischen Anzahl der generierten XMIElemente und Aufwand der Spezifikation (Faktor 20) Bewertung verschiedener Produktlinien 19.05.2004 MTFLOW 30 Fragen? 19.05.2004 MTFLOW 31