Visual Age und Rational Rose Daniel Faensen Übersicht Integration Rational Rose und VisualAge (Forward / Reverse Engineering) Team-Unterstützung in VisualAge EJB-Entwicklung mit VisualAge und der WebSphere Testumgebung 2 Integration Rose/VAJ Problem: Konsistenz von Modell und Code Abgrenzung: Nur statisches Strukturmodell (Klassendiagramm) Lösung I: “Low Level” CASE-Tool Lösung II: Forward und Reverse Engineering Drei Alternativen für Rose und VAJ: Klassische Variante Rose Link XMI Toolkit Frage: Wie oft synchronisieren? - Eher selten! 3 Integration Rose/VAJ I Klassische Variante Voraussetzungen (auch für Rose Link): Default language muss Java sein Referenzierte Klassen müssen im Rose-Classpath stehen 4 Integration Rose/VAJ I Klassische Variante Forward Engineering = Code Generation Tools -> Java -> Generate Java oder Kontextmenü -> Java -> Gerenate Java Viel Freude beim Suchen des generierten Codes! VAJ starten Java-Dateien importieren File -> Import -> Directory Code bearbeiten 5 Integration Rose/VAJ I Klassische Variante Reverse Engineering VAJ starten Java-Dateien exportieren File -> Export -> Directory Rose starten, Modell laden Tools -> Java -> Reverse Engineer Java oder Kontextmenü Klassen auswählen und Import starten Modell bearbeiten 6 Integration Rose/VAJ II Rose Link Rationals Tool zur Integration von Rose und VAJ Frei zum Download (bzw. ~faensen/rose/RoseVAJava.exe) Rose und VAJ müssen aktiv sein Als JVM muss IBM gewählt sein In VAJ RoseLink starten File -> QuickStart -> Basic -> Rose Link Plugin In Rose Code generieren Projekt wählen Code wird generiert und automatisch in VAJ importiert 7 Integration Rose/VAJ II Rose Link In Rose Reverse Engineering Projekt wählen Rose initiiert Export aus VAJ Rose bietet exportierte Klassen zum Import an Achtung! Speicherplatzprobleme 8 Integration Rose/VAJ Problembehebung Probleme beim Import: Vor dem Export aus VAJ alle Java-Dateien löschen (Backup!) Modell nach dem Reverse Engineering aufräumen Assoziationen in Attribute umwandeln (~faensen/rose/CleanAssociationsAfterImport.ebs + ~faensen/rose/roseImportConversions.txt) Für überfüllte Klassen: “Show All {Attributes,Operations}” abstellen, “Select Compartment Items” 9 Integration Rose/VAJ III XMI Toolkit XMI Toolkit IBMs Tool zur Integration von Rose und VAJ Mitgeliefert mit VAJ EE Liest Rose .mdl-Datei -> Rose wird nicht benötigt Austausch über XMI (XML Interchange (?)) Problem: Arbeitsspeicher! ~faensen/hermes/docs/software/visualage/xmi.pdf Forward Engineering Rose-Modell UML-XMI Java-XMI Java Reverse Engineering 10 Integration Rose/VAJ EJB Spezielle Enterprise Java Beans Unterstützung XMI Toolkit + XMI Bridge (~faensen/lehre/xmibridge.dat) Modelliere in Rose Markiere Primärschlüsselattribute mit dem Stereotyp <<OID>> In VAJ: EJB -> Add -> Import from Rose or XMI 11 VAJ Team-Unterstützung VAJ Enterprise Edition hat Team-Unterstützung Benutzer, Rollen, Rechte, Team-Server, Shared Repository VAJ Clients goliath emsvr lehre.dat Team Repository 12 VAJ Team-Unterstützung Client-Konfiguration: Eintrag in Datei C:\Programme\Ibm\Visual Age for Java\ ide\program\ide.ini ... [JavaDevelopment] ServerAddress=goliath DefaultName=lehre.dat OpenReadOnly=false ... 13 VAJ Team-Unterstützung Repository Benutzerverwaltung Speicherung der Objekte (Projekte, Packages, Klassen) Versionsverwaltung (Source Control Management, SCM) Workspace Jeweils eine Version/Edition aus dem Repository Workspace Owner Auf der lokalen Platte des Clients Problem: Synchronisation 14 VAJ Team-Unterstützung Object Role Rights Project Owner Version, Release Package Owner Group Member Release Version Type Owner Developer Release Version Jeder darf jede Klasse ändern/bearbeiten! 15 VAJ Team-Unterstützung Zustände eines Typs (Klasse, Interface) create undefined may change version others may load versioned release[ owner ] released change[ group member ] change[ not group member ] version[ developer ] open edition may change scratch edition 16 VAJ Team-Unterstützung Zustände eines Typs (Klasse, Interface) Open Edition: „Work in progress“ Im Repository können viele Open Editions vorliegen Versioned Edition: Kann nicht geändert werden. Zweck: Checkpoint, Freigabe, neue Baseline Released: Freigegeben für Team-Mitglieder Scratch Edition: Privat, zum Experimentieren 17 VAJ Team-Unterstützung Baselines Baseline Editionen im Workspace synchronisieren Baseline update: Role Class owner Baseline Package Package owner Project Project owner Project Action add class release class delete class release package delete package ... „ ... add package release resources 18 VAJ Team-Unterstützung Baselines Synchronisieren Projekt bzw. Package in den Workspace laden oder Replace with -> Released contents Lädt die zuletzt freigegebenen Klassen-Editionen dieser Edition Erfolglos, wenn es eine neue Version gibt! Hilfreich: Management Query 19 VAJ Team-Unterstützung Offline arbeiten Repositories sind (VAJ-)versionsunabhängig Vorgehen: Versioniere Packages Exportiere in lokales Repository (home.dat) Kopiere home.dat auf Offline-Rechner Starte VAJ Importiere aus Repository home.dat Lade Packages in Workspace („Add -> Package“ oder „Replace with -> Another Edition“) 20 VAJ Team-Unterstützung Anmerkungen Auch Ressourcen versionierbar (ab V 3.5) Kein Super-User Workspace owner != NT User Es gibt kein check out (kein locking) Check in nicht nötig Jeder kann auf alles zugreifen Owner nimmt Änderungen an (release) Team-Kommunikation wird einem nicht abgenommen! 21 VAJ Team-Unterstützung Weitere Infos unter ~faensen/lehre/team.pdf 22 EJB-Entwicklung VAJ hat EJB-Unterstützung 23