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