Visual Age und Rational Rose Daniel Faensen. 2 Übersicht Integration Rational Rose und VisualAge...

44
Visual Age und Rational Rose Visual Age und Rational Rose Daniel Faensen

Transcript of Visual Age und Rational Rose Daniel Faensen. 2 Übersicht Integration Rational Rose und VisualAge...

Page 1: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

Visual Age und Rational RoseVisual Age und Rational Rose

Daniel Faensen

Page 2: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

2

ÜbersichtÜbersicht

Integration Rational Rose und VisualAge(Forward / Reverse Engineering)

Team-Unterstützung in VisualAge

EJB-Entwicklung mit VisualAge und der WebSphere Testumgebung

Page 3: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

3

Integration Rose/VAJIntegration 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!

Page 4: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

4

Integration Rose/VAJ Integration Rose/VAJ I Klassische I Klassische VarianteVariante

Voraussetzungen (auch für Rose Link): Default language muss Java sein Referenzierte Klassen müssen im

Rose-Classpath stehen

Page 5: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

5

Integration Rose/VAJ Integration Rose/VAJ I Klassische I Klassische VarianteVariante

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

Page 6: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

6

Integration Rose/VAJ Integration Rose/VAJ I Klassische I Klassische VarianteVariante

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

Page 7: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

7

Integration Rose/VAJ Integration Rose/VAJ II Rose II Rose LinkLink

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

Page 8: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

8

Integration Rose/VAJ Integration Rose/VAJ II Rose II Rose LinkLink

In Rose Reverse Engineering Projekt wählen Rose initiiert Export aus VAJ Rose bietet exportierte Klassen zum Import an

Achtung! Speicherplatzprobleme

Page 9: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

9

Integration Rose/VAJ Integration Rose/VAJ ProblembehebungProblembehebung

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”

Page 10: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

10

Integration Rose/VAJ Integration Rose/VAJ III XMI III XMI ToolkitToolkit

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! www.inf.fu-berlin.de/inst/ag-db/software/VAJ_PDF/

xmi.pdf

Rose-Modell UML-XMI Java-XMI JavaForward Engineering

Reverse Engineering

Page 11: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

11

Integration Rose/VAJ Integration Rose/VAJ EJBEJB

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

Page 12: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

12

VAJ Team-UnterstützungVAJ Team-Unterstützung

VAJ Enterprise Edition hat Team-Unterstützung

Benutzer, Rollen, Rechte, Team-Server, Shared Repository

goliath emsvr

Team Repository

lehre.dat

VAJ Clients

Page 13: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

13

VAJ Team-UnterstützungVAJ Team-Unterstützung

Client-Konfiguration:Eintrag in Datei C:\Programme\Ibm\Visual Age for Java\ide\program\ide.ini...[JavaDevelopment]ServerAddress=goliathDefaultName=lehre.datOpenReadOnly=false...

Page 14: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

14

VAJ Team-UnterstützungVAJ 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

Page 15: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

15

VAJ Team-UnterstützungVAJ Team-Unterstützung

Object Role Rights

Project Owner Version, Release

Package OwnerGroup Member

ReleaseVersion

Type OwnerDeveloper

ReleaseVersion

Jeder darf jede Klasse ändern/bearbeiten!

Page 16: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

16

VAJ Team-UnterstützungVAJ Team-Unterstützung

undefined

versioned

version

create

released

open edition

change[ group member ]

version[ developer ]

may change

may change

others may load

release[ owner ]

scratch edition

change[ not group member ]

Zustände von Projekten, Packages, Typen

Page 17: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

17

VAJ Team-UnterstützungVAJ 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ürTeam-Mitglieder

Scratch Edition: Privat, zum Experimentieren

Page 18: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

18

VAJ Team-Unterstützung VAJ Team-Unterstützung BaselinesBaselines

Baseline Editionen im Workspace synchronisieren Baseline update:

Role Baseline ActionClass owner Package add class

release classdelete class

Package owner Project release packagedelete package

Project owner Project ... „ ...add packagerelease resources

Page 19: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

19

VAJ Team-Unterstützung VAJ Team-Unterstützung BaselinesBaselines

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

Page 20: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

20

VAJ Team-UnterstützungVAJ 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“)

Page 21: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

21

VAJ Team-UnterstützungVAJ 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!

Page 22: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

22

VAJ Team-UnterstützungVAJ Team-Unterstützung

Weitere Infos unter http://www.inf.fu-berlin.de/

~ag-db/software/VAJ_PDF/team.pdf

Page 23: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

23

EJB-EntwicklungEJB-Entwicklung

VAJ EE hat EJB-Unterstützung Websphere Test Environment Weblogic VAJ Integration Kit

Vorbereitungen Add Features (File -> Quickstart)

EJB Tool Unterstützt:

Session BeanCMP BeanBMP Bean

Page 24: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

24

EJB-EntwicklungEJB-Entwicklung

Schritte Add EJB Group Add EJBs Add home and remote (business) methods Add custom finders Add CMP fields Set deployment descriptor properties Generate EJB classes Generate access beans Test Export and deploy

Page 25: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

25

EJB-EntwicklungEJB-Entwicklung

Beispiele in EJB Samples: HelloWorld und Increment

Projekt und Package erzeugen Empfehlung: getrennte Projekte für Client und

EJB (-> jar-Dateien) EJB Group: Logische Gruppierung,

z.B. f. Export in JAR-Datei Erzeugen einer neuen EJB Group

EJB -> Add -> EJB Group Projekt wählen EJB Group benennen

Page 26: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

26

EJB-Entwicklung EJB-Entwicklung Session Session BeanBean

Session Bean

Page 27: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

27

EJB-Entwicklung EJB-Entwicklung Session Session BeanBean

Session Bean Felder hinzufügen

Selektiere Bean-Klasse, Add -> Field(incl. getX() und set(X))

Methoden hinzufügen Selektiere Bean-Klasse, Add -> Method Implementiere Methode Add -> Methods-Add To -> EJB RemoteInterface Achtung: Erneutes

Deployment erforderlich

Page 28: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

28

EJB-Entwicklung EJB-Entwicklung DeploymentDeployment

Deployment Deployment descriptor

wizard - Bean level:Select bean, Properties

Methods Select method

EJB Method attributes -> Add control descriptor

Page 29: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

29

EJB-Entwicklung EJB-Entwicklung DeploymentDeployment

EJB Jar-Datei Class-Dateien, Deployment Descriptor,

Manifest Generate Deployed Code erzeugt:

Container-implementierte EJBHome- und EJBObject-Klassen (+ Persistor und Finder für CMP-Beans)

Java ORB, Stubs und Skeletons für RMI Helper und Holder für Home und Remote Interfaces

Page 30: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

30

EJB-Entwicklung EJB-Entwicklung TestingTesting

Add to -> Server configuration

Properties Create database tables

Page 31: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

31

EJB-Entwicklung EJB-Entwicklung TestingTesting

Start EJB Server: Tools -> Websphere Test Environment Start Persistent Name Server Start EJB Server Quelltextänderung,

Debugging ohne Neustart

Page 32: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

32

EJB-Entwicklung EJB-Entwicklung TestingTesting

Test Client Breakpoints, Debugging ... Lookup -> Initialer Naming Context

-> laden desHome Interfaces Selektiere Create Run

Page 33: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

33

EJB-Entwicklung EJB-Entwicklung Testing/DeploymentTesting/Deployment

Configuration für eigene Applikationen Websphere Test Environment muss in Project

Classpath Deployment für andere

Applikationsserver Export -> EJB JAR

Page 34: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

34

EJB-Entwicklung EJB-Entwicklung CMP CMP BeansBeans

Container Managed Persistence Entity Beans Wie Session Bean aber anderer Bean Type Add CMP Fields

Page 35: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

35

EJB-Entwicklung EJB-Entwicklung CMP CMP BeansBeans

Schema und Map: Abbildung zwischen CMP-Feldern und Tabellenspalten

Top Down: CMP-EJB existiert, generiere DB Schema

Bottom Up: EJB für existierende DB(nicht unterstützt)

Meet in the Middle: Importiere Schema Definiere Map

Page 36: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

36

EJB-Entwicklung EJB-Entwicklung CMP CMP BeansBeans

Top Down Add -> Schema and Map Schema browser und Map browser

Generate deployed code Add to -> Server configuration EJB Server Properties: Configuriere DB-Verbindung EJB Server: Create Database Tables Eine Tabelle pro CMP Bean

SQL> DESC SCOTT.Account Name Null? Type ----------------------------------------- -------- ---------------------------- ACCNUMBER NOT NULL NUMBER(10) BALANCE FLOAT(126) OWNER VARCHAR2(30)

Page 37: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

37

EJB-Entwicklung EJB-Entwicklung CMP CMP BeansBeans

Finder-Methoden Beim Home-Interface Add -> Method public java.util.Enumeration findNegativeAccounts() Add Exceptions Ignoriere Probleme

Query String im AccountFinderHelperKopiere Vorlage aus EJSJDBCPersisterAccount.findByKeySqlString nachAccountFinderHelper.findNegativeAccountsSqlString

Generate Deployed Code löst Probleme

Page 38: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

38

EJB-Entwicklung EJB-Entwicklung CMP CMP BeansBeans

Finder-Methoden - Richtlinien Bezeichner für Query String:

methodNameQueryString, z.B.findNegativeAccountsQueryString

Test Starte EJB Server Selektiere Account Run Test Client Selektiere create(int) Setze Parameter auf 1001 Run SQL> SELECT * from SCOTT.Account;

ACCNUMBER BALANCE OWNER---------- ---------- ------------------------------ 1001 0

Spiele mit Test Client und Oracle

Test Client:create()setOwner()...

Oracle:insertdeleteupdate(commit nicht vergessen)

Page 39: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

39

EJB-Entwicklung EJB-Entwicklung BMP BMP BeansBeans

J. Picon, P. Genchi, M. Sahu, M. Weiss, A. Dessureault: Enterprise JavaBeans Development Using VisualAge for Java. IBM Redbook SG24-5429-00, June 1999~faensen/lehre/sg245429_EJB_VAJ.pdf

Beispiel mit XML-Datei als Persistenzmedium

Page 40: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

40

EJB-Entwicklung EJB-Entwicklung Access Access BeansBeans

Access Beans Home-Methoden, die einzelne Instanz liefern -

> Constructor Erst instanziieren, dann aufrufen Copy helper statt wiederholtes get/set String-Konverter (für JSP)

Page 41: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

41

EJB-Entwicklung EJB-Entwicklung AnmerkungenAnmerkungen

Code nur im EJB-Pane bearbeiten Package EJBGroupEJBReserved enthält

Metadaten

Page 42: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

42

EJB-Entwicklung EJB-Entwicklung Session Session BeanBean

Deployment Deployment descriptor

wizard:Select bean, Properties

Methods Select method

EJB Method attributes -> Add control descriptor

Page 43: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

43

Integration Rose/VAJ Integration Rose/VAJ EJBEJB

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

Page 44: Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.

44

QuellenhinweiseQuellenhinweise

Lokale Dokumentation (PDF):http://www.inf.fu-berlin.de/~ag-db/software/VAJ_PDF z.B.: Team-Entwicklung, EJB-Entwicklung, XMI-Toolkit

Visual Age Developer Domainhttp://www7.software.ibm.com/vad.nsf Doku, Downloads, Redbooks, Technical Journal ...

Rose Tools~faensen/rose/ Rose Link: RoseVAJava.exe Putzhilfe für das Après Reverse Engineering:

CleanAssociationsAfterImport.ebs + roseImportConversions.txt XMI Bridge

~faensen/lehre/xmibridge.dat J. Picon, P. Genchi, M. Sahu, M. Weiss, A. Dessureault: Enterprise JavaBeans

Development Using VisualAge for Java. IBM Redbook SG24-5429-00, June 1999~faensen/lehre/sg245429_EJB_VAJ.pdf