compuware corporation mda and pattern how to do more with less andreas herzig java solutions manager...
TRANSCRIPT
C ompuwareCorporation
MDA and Pattern how to do more with lessAndreas HerzigJava Solutions Manager Central Europe
CompuwareCorporation
Agenda
Produktivität und Komplexität bei der J2EE Entwicklung
Die Model Driven Architecture (MDA) der OMG
Pattern – Definition und Bedeutung
Eine J2EE Anwendung in drei Schritten
Der Pattern basierte Generator
Deployment der Anwendung
CompuwareCorporation
Entwicklerproduktivität Problem: Komplexität
Pro
du
ktiv
ität
Zeit
4GL
JavaCOBOL
C/C++
70’s
J2EE Komplexität
• mehrsprachig• Multi-tier• Web-basiert• Skalierbarkeit
80’s 90’s 00’s
CompuwareCorporation
Technologie im WandelSchritt halten mit dem Tempo von J2EE
• Sun SDK 1.2, 1.3, 1.3.1, 1.4
• J2EE 1.2, 1.3
• JSP 1.1, 2.0
• Java Servlet 2.2, 2.3, 2.4
• EJB 1.0, 1.1, 2.0
• JDBC 1.2.1, 1.3.1, 2.0, 2.1, 3.0
• JNDI 1.1.2, 1.2. 1.2.1
• JCA 1.0
• JTA 1.0.1, JTS 1.0
• JMS 1.0.2b, 1.1
• HTML
• XML 1.0, 1.1
• UML 1.0, 1.1, 1.2, 1.3, 1.4, 1.5
• WebSphere, WebLogic, Sun AS, Oracle 9i AS
• Neu……
CompuwareCorporation
Aus der Praxis:eine fachliche Anforderung
CompuwareCorporation
Die Realisierung mit EJB2.0:
CompuwareCorporation
Model Driven Architectur (MDA)Object Management Group (OMG)
Finanzwesen
E-Commerce
Gesundheitswesen
Andere..
Transportwesen
Raumfahrt
Produktion
Telekommunikation
• Was steckt dahinter?
– Plattform-unabhängiges Modell (PIM)
– Plattform-spezifisches Modell (PSM)
– Implementierung/Code-Modell
• Worin liegt die Bedeutung?
– Fokus auf Anwendung vs. Implementierung
– Entkopplung von Technologieänderungen
– Automatische Wiederverwendbarkeit der Komponenten
– Automatischer Knowhow-Transfer
– Kohärente Architektur der Anwendung
CompuwareCorporation
Implementation Model
Ableitung
Platform Specific Model
Ableitung
Komponenten Entwicklung mit der MDA
PIM
CORBAModel
XML/SOAPModel
OtherModel
CORBA XML/SOAP Other
Java/EJBModel
Java/EJB
CompuwareCorporation
Model-basierte EntwicklungModel-driven Architecture (MDA)
OptimalJ implementiert den Standard der Model- driven Architecture (MDA) der Object Management Group (OMG)
Klare Trennung zwischen den Modellen und der Implementierung
– Platform Independent Model (PIM)
– Platform Specific Model (PSM)
– Code Model
Änderungen im Geschäft und der Technologie
– Konstante Veränderung der Umgebungen im heutigen Markt
– Das Geschäftsmodell (PIM) bleibt stabil
Entscheidend für den ROI
CodeModel
PlatformSpecificModel
PlatformIndependent
Model
CompuwareCorporation
Wie bildet OptimalJ die MDA ab?
Plattform-unabhängiges
Modell
Plattform-spezifisches
Modell
CodeModell
MDA OptimalJ
DomainModel
DomainService
DomainClass
ApplicationModel
DevelopmentModel
WEB, EJB, Database
IntegrationModel
CodeModel
SQLDDL
JavaServerPages
Web ServicesStubs &
Skeletons
EntitySessionMessage
Beans
CompuwareCorporation
Was sind Pattern ?
Ein Pattern ist eine allgemeine Lösung für ein allgemeines Problem in einem gegebenen Zusammenhang.
(A pattern is a common solution to a common problem in a given context.)Booch, Grady u.a., Unified Modelling Language User Guide, The Addison-Wesley Object Technology Series, (New York: Addison-Wesley), 1998.
Ein Pattern ist also eine Lösungsvorschrift
CompuwareCorporation
OptimalJ: MDA und Pattern
Transformation Patterns– Verringern die Komplexität– Überführen Modelle der
oberen Ebenen automatisch in die darunterliegende Ebene
Technologie Pattern Implementierungs Pattern
Functional Patterns– Beschleunigen die
Entwicklung– Wiederverwenden von “Best
Practices” oder Implementierung von Standards
Domain Patterns Application Patterns Code Patterns (GoF)
Domain Model
CodeModel
Application Model
TransformationPatterns
FunctionalPatterns
ImplementationPatterns
ImplementationPatterns
TechnologyPatterns
TechnologyPatterns
Domain Patterns
Domain Patterns
ApplicationPatterns
ApplicationPatterns
Code Patterns
Code Patterns
CompuwareCorporation
Model- basierte Entwicklung Erster Schritt: das OptimalJ Domain Model
Plattform unabhängiges Modell In UML beschrieben
– Struktur– Verhalten
Auf einen höheren Abstraktions Niveau entwickeln
– Nicht von technischen Details gestört– Zentriert auf das Geschäft– Fokus auf der Funktionalität– Deklarative Entwicklung
Definitionen im Modell werden automatisch widerverwendet Änderungen erfolgen schnell im Modell Import bestehender Modelle
– Datenbank Definitionen– UML/XMI Import
Export der Modelle
CompuwareCorporation
Beschleunigen die Modellierung und verringern Fehler
Eine Domain model library aufbauen
– Wiederverwendung des Modells
Einfrieren und vererben
Wizard-gestütztes ‘Pattern-weaving’
– Assoziationen
– Attribute
Austausch der Domain Pattern
Domain Model
CodeModel
Application Model
FunctionalPatterns
Domain Patterns
Domain Patterns
ApplicationPatterns
ApplicationPatterns
Code Patterns
Code Patterns
Model- basierte Entwicklung Domain Patterns
CompuwareCorporation
Model-basierte Entwicklung Domain Services
Modell der Arbeitsschritte / Transaktionen
Arbeitet mit Untermengen des Domain Klassen Modells
Generiert automatisch Komponenten Definitionen für Web und Geschäftslogik im Application Model
Generiert automatisch JavaServer Pages und Session Bean Code Code
Model
ApplicationModel
BusinessRules
DBMSModel
DomainModel
SQLEntityBeans
DomainService
DomainClass
SessionBeans
JavaServerPages
Business LogicModel
WebModel
CompuwareCorporation
Model-basierte Entwicklung Zweiter Schritt: das OptimalJ Application Model
Plattform spezifisches Modell
Automatische Transformation des PSM aus dem PIM
– Konsistenz
– Qualität
Presentation Model (Web)– Data schemas, Web Komponenten,
etc.
Business Logic Model (EJB)– Data schemas, key classes, Entity
Komponenten, Session Komponenten, etc.
Daten Modell (DBMS)– Relationales Datenmodell
– Tabellen, Spalten, Schlüssel, etc.
FunctionalPatterns
Domain Model
CodeModel
Application Model
TransformationPatterns
TechnologyPatternsTechnology
Patterns
ImplementationPatternsImplementation
Patterns
CompuwareCorporation
Model-basierte Entwicklung OptimalJ Application Model - Message-Driven Beans
Die Struktur der Nachricht wird modelliert
Mit Nachrichten arbeiten
– Wizard gestützes Modellieren der Nachricht basierten Komponenten
Auswahl der Themen bei Publish/Subscribe
Spezifizieren der Queue und der Filter
– Code generieren
– Code anpassen
CompuwareCorporation
Model-basierte Entwicklung OptimalJ Application Model – Data Access Objects
Die Performance der EJBs ist ein Engpass beim Lesen der Daten
OptimalJ geht zwei Wege
– Schnelles Lesen mit Hilfe der Data Access Objects (DAO’s)
Schnell und einfach
– Sicheres Schreiben mit Hilfe der EJB’s
Transaktionen werden unterstützt
Skalierbar
BrowserHTML/Java
Web serverJSP’s/Servlets
Database server
Applicationserver
EJB’s
Readfast
Writesecure
CompuwareCorporation
Model-basierte Entwicklung OptimalJ Integration Model
CodeModel
ApplicationModel
DomainModel
DomainServices
Integration Model
EJBModel
WebModel
Session Beans, Web Servicessignatures, stubs, proxy &
helper
Java Server Pages
WebServices
CORBAKomponenten
CICSCobol
JavaKomponenten
• Web Services (WSDL)• CORBA (IDL)• CICS (Copybook/ Commarea)• Java signature
CompuwareCorporation
JCA 1.0 Unterstützung für CICS
Unterstützung der ECI Resource Adapter für IBM’s CICS Transaction Gateway
Import der CICS Schnittstellen mit Hilfe OptimalJ‘s Cobol import facility
— Cobol copybook
— Cobol Commarea
OptimalJ generiert automatisch:
Connector Code basierend auf dem installierten Resource Adapter
Session Bean (wrapper)
Deployment Descriptoren
Model-basierte EntwicklungOptimalJ Integration Model - Legacy Integration
CompuwareCorporation
Import der WSDL Datei mit OptimalJ’s WSDL import facility
OptimalJ generiert automatisch den Connector Code aus den WSDL Definitionen
Generieren der OptimalJ Anwendung – Modelle und Code
Session Bean (wrapper)
Deployment Descriptor
Präsentations Komponente um den Web Service zu testen
Model- basierte Entwicklung OptimalJ Integration Model - Web Services Integration
CompuwareCorporation
Web Services werden auf Domain Services Ebene modelliert
Die OptimalJ Anwendung generieren – Modelle und Code
Session Beans
Deployment Descriptoren
Die generierten Session Beans als Web Services bereitstellen
WSDL Datei
Deployment Descriptor mit SOAP Unterstützung
Model- basierte Entwicklung Web Services definieren
CompuwareCorporation
Automatisiert die Integration bestehender Java Anwendungen
– Die benötige .JAR Datei auswählen– Die Java Klassen und Methoden untersuchen– Die benötigte Methode identifizieren– Die Signatur importieren– Den Code für die Integration dieser Java Methode
generieren
Analyse von Java Anwendungen mit OptimalJ’s Package Structure Analysis tool
– Visualisiert Abhängigkeiten zwischen Packages und Klassen
– Macht Vorschläge welche Abhängigkeiten entfernt werden sollten um die Struktur zu verbessern
– Stellt sofort die Auswirkungen des Source Code Refactoring grafisch dar
– Verifiziert den Source Code gegen das Design Modell
BEFORE
AFTER
Model-basierte Entwicklung OptimalJ Integration Model - Legacy Java Integration
CompuwareCorporation
Model-basierte Entwicklung Dritter Schritt: OptimalJ Code Model
Automatische Transformation des PSM in Code
– Produktivität– Qualität– Konsistenz
Darstellungsschicht– Model View Controller framework
(MVC) – Java Server Pages (JSP), Servlets
EJB Schicht– Remote, bean class, home, primary
key classes etc.– Entsprechend der EJB Spezifikation
DBMS Schicht– SQL Scripte
Deployment Descriptoren– Für die Ziel Application Server
Domain Model
CodeModel
Application Model
TransformationPatterns
ImplementationPatternsImplementation
Patterns
TechnologyPatternsTechnology
Patterns
CompuwareCorporation
Model-basierte Entwicklung Code Generation
• Code für die DBMS Schicht– Create und Drop Table SQL Scripts
– SQL Scripts um Testdaten zu erzeugen
• Code für die EJB Schicht– EJB 1.1 oder EJB 2.0
– Home interfaces, Remote/Local Interface
– Entity beans und Session beans, Message driven beans
– Primary key Klassen und Finder Klassen
– Helper Klassen für Update Objekte und Daten Objekte
– Deployment Descriptoren für den EJB Server
• Code für die Darstellungsschicht– Action Klassen – führen Funktionen wie Suche, Anlegen,... aus
– Form Bean - Set und Get Methoden für die Attribute in der JSP
– JSP – für die HTML Kommunikation
– Struts-config.xml – definiert das Action Mapping
– webResources.properties - für Mehrsprachigkeit der Anwendung
CompuwareCorporation
Domain Model Diagramm– Klasses, Beziehungen,
Vererbungsstrukturen
Application Model Diagramme– Bessere Navigation durch die Anwendung– Besserer Überblick und besseres
Verständniss– Auswirkungen eine Änderung leicht zu
analysieren
Code Model Diagramm– Mit den Java Sourcen verbunden– Navigation durch die Packages– Diagramm Export und JavaDoc
Thumbnail view
“Free block” Navigation
Domain Model
CodeModel
Application Model
Diagrams &Editors
Domain Diagram
Web, EJB and DBMS
Diagrams
Java ClassDiagram
Model-basierte Entwicklung Visualisierung und Navigation
CompuwareCorporation
Geschäftsregeln Erweitern das Domain Modell Operationen werden im Domain
Modell deklariert Methoden
– Das Interface wird automatisch generiert
– Implementierung in ‘Free Blocks’– Leichte Navigation in die ‘Free
Blocks’ Regel wird in der Expression
Library implementiert – Nur an einer Stelle wird gewartet
Statische Regeln – Zentrale Stelle um Regeln zu
ändern– Neues Compilieren und
Deployment nötig Dynamische Regeln
– Können zur Laufzeit geändert werden
– Regeln werden dynamisch gebunden
– Kein Compilieren und Deployment
CompuwareCorporation
Transformation Patterns
Verringern die Komplexität
Transformieren die Modelle höherer Ebenen automatisch in Modelle niedrigerer Ebenen
Functional Patterns
Beschleunigen die Entwicklung
Benutzen Best Practices und implementieren Standards
Domain Model
CodeModel
Application Model
TransformationPatterns
FunctionalPatterns
ImplementationPatterns
ImplementationPatterns
TechnologyPatterns
TechnologyPatterns
Domain Patterns
Domain Patterns
ApplicationPatterns
ApplicationPatterns
Code Patterns
Code Patterns
Pattern-basiertert GeneratorOptimalJ Modelle & Patterns
CompuwareCorporation
Pattern examples
• Design patterns• Composite
• Singleton
• Factory
• Decorator
• Observer
• Chain of Responsibility
• Sun J2EE patterns• Front Controller
• Value Object
• Form Bean
• Session Façade
• Aggregate Entity
• Business Delegate
• Page Iterator
• Fast Lane Reader
• Persistency tier patterns• Create
• Delete
• Init
• SQL Workbench
• Business tier patterns• Single class EB
• Single aggregation EB
• Multi aggregation EB
• Single association SB
• Multi association SB
• Create
• Read
• Update
• Delete
• Presentation tier patterns
• Model View Controller
• Action
• Create
• Read
• Update
• Delete
• HTML
• WML
Pattern-basierter GeneratorVerwenden der Best Practices
Viele Pattern Typen
Mapping
– OO zu Relational
– Domain zum Sub-Modell
Anwendung
– Funktional
– Architektur
Implementierung
– Design
– Coding
– Schichtenspezifisch
CompuwareCorporation
Request
Controller
ActionJavaBean
BusinessFaçade
Data
DataData
Update Object
JavaServerPage
Servlet
ServletHTML
Pattern-basierter GeneratorVerwendung von Frameworks
Model-View-Controller Konzept
– Auf Basis des Struts Framework implementiert
– Erweiterungen für Dreamweaver
JSP-basierte Benutzerschnitt-stellen generieren
– HTML, WML, XML
– Macromedia Dreamweaverfür Anpassungen
Servlet-basierte Action JavaBeans generieren
Business Façade
– Fine grain in der Web und EJB Schicht
– Coarse grain zwischen den Schichten
XML conf.
CompuwareCorporation
Pattern-basierter GeneratorAnpassen und Warten der Pattern
Ermöglicht es interne Codierungs Standards zu implemenierten
Stellt ihr Expertenwissen automatisch den Designern und Entwicklern zu Verfügung
Stellt sicher das Standards benutzt werden
Volle Kontrolle über den generierten Code
Erfahrene J2EE Architekten schreiben, ändern und löschen die Pattern
Domain Model
CodeModel
Application Model
TransformationPatterns
ImplementationPatterns
ImplementationPatterns
TechnologyPatterns
TechnologyPatterns
CompuwareCorporation
Pattern-basierter Generator Template Pattern Language
Pattern Sprache um Logik zu realisieren und die richtigen Pattern zu nutzen
Zugriff auf das Meta Object Facility (MOF) Repository
Kleine Sprache die in Java Code übersetzt wird
PATTERN IMPORT FILE TEMPLATETYPE TEMPLATE GUARD FREE IF DO LET FOR FILE JOINPOINT
CompuwareCorporation
Pattern-basierter Generator „Modulare“ Pattern Architektur
OptimalJ’s modulare Pattern Architektur
– Zum Beispiel das Upgrade von EJB 1.1 auf EJB 2.0
– Installation der EJB 2.0 Pattern von OptimalJ
– Die Anwendung neu generieren
EJB 2.0 Funktionalitäten werden automatisch genutzt
– EJB 2.0 Attribut Deklarationen
– Container Manager Relationships (CMR)
– EJB Query Language (EQL) für die Finder Methoden
– Deployment Descriptoren
– Eigener Code bleibt bestehen
CompuwareCorporation
Pattern-basierter Generator Anpassung der Pattern
Baseline Pattern
Joinpoint A
Joinpoint B
My 1st Pattern
My 2nd Pattern
Frei zugängliche Pattern Sourcen Kunden haben größte Flexibilität
Kunden können nicht von neuen Versionen profitieren
Hooks in den Pattern erlauben es die Funktion des Patterns zu überschreiben und zu ergänzen Voll ausreichende Flexibilität
Upgrades werden genutzt
CompuwareCorporation
Active SynchronizationSchnelle Antworten auf Änderungen
Modelle und Code werden automatisch synchronisiert– Modell zentrierter Ansatz
Jede Änderung im Domain Model wird sofort in die unteren Modelle und den Source Code propagiert– Keine Differenz zwischen den
Modellen und dem Code Generierter Code in ‘geschützen
Blöcken’– Wird bei Generierungen
geändert– Kann nicht geändert werden
Erweiterungen in ‘Freien Blöcken’– Bleibt bei der Generierung
erhalten– Volle Kontrolle
Web Model
EJB Model
DataModel
Domain Model
CodeModel
Application Model
Domain Class
-attribute:int-attribute:int
Domain Class
-attribute:int-attribute:int
Domain Class
-attribute:int-attribute:int
Domain Class
-attribute:int-attribute:int
BusinessRulesEditor
IDE JSP EJB SQL
Synch
roniz
e
CompuwareCorporation
Active Synchronization Integrierte IDE – Netbeans IDE
OptimalJ basiert auf NetBeans 3.3
– MDI Entwicklung NetBeans IDE
– Source code Editor
– Syntax sensitiv
– Code Ergänzung Unterstützung von Projekten Remote Debugging Form Editor Compiler JAR packager
CompuwareCorporation
JBuilder kann als IDE verwendet werden
Anpassung des von OptimalJ generierten Codes
Erkennt ‘Freie’ und ‘Geschützte Blöcke’– Anpassungen in ‘Freien Blöcken’– Bleiben beim Generieren erhalten
JBuilder Integration– OptimalJ SQL Workbench– Tomcat Webserver– JBoss Application Server– Solid Datenbank– Anpassung der Konfiguration– OptimalJ Assembly Workbench um
EAR‘s zu erzeugen
Active Synchronization Integrierte IDE – Borland JBuilder
CompuwareCorporation
Integriertes DeploymentVerringert die Komplexität
Package Builder um J2EE Anwendungen schnell in Betrieb zu nehmen
Deployment Descriptoren werden automatisch erzeugt
Test- und Produktions Server sind integriert
– Voll automatisches Deployment für funktionales Testen
Assembly Workbench um Enterprise Archives (.EAR) zu erzeugen
Test Production
TomcatJOnASJBossSolid
IBM WebSphere, BEA WebLogic,Sun ONE, Oracle 9iAS, JBoss,
Compuware OptimalServer
JSP EJB SQL
.WAR .JAR .DAR
.EAR
DeploymentDescriptors
DeploymentDescriptors
CompuwareCorporation
Integriertes DeploymentIntegrierte Profiling Umgebung
DevPartner for Java Edition 3.0
DevPartner for Java Edition erhöht die Zuverlässigkeit und Qualität des selbstgeschriebenen Codes
Performance Profiler identifiziert und löst Performance Engpässe
Memory Analyzer identifiziert und löst Speicherprobleme
Code Coverage analyzer hilft die Zuverlässigkeit des Codes zu verbessern
CompuwareCorporation
OptimalJ Platform Support
Entwicklungs Plattformen
– Windows - NT/2000/XP
– Linux-Intel - Red Hat 7.3
– Solaris 8
Deployment Plattformen
– Application Server IBM WebSphere 4.0.1
BEA WebLogic Server 6.1/7
Sun One Application Server 6.5
Compuware OptimalServer 6.5
Oracle 9iAS release 3
JOnAs 2.4
JBoss 2.4/3.0
Datenbanken JDBC 2.x-compliant
CompuwareCorporation
OptimalJ Developer Portalhttp://javacentral.compuware.com
OptimalJ Community Home– News
– White papers
– Dokumentation
– FAQ
– Foren
– Support Center
– Java Links
CompuwareCorporation
Zusammenfassung
OptimalJ ist eine integrierte Modell basierte Entwicklungsumgebung– Implementiert die Model Driven Architecture (MDA) der
OMG vollständig
– Kombiniert mehrere Modell-Ebenen und mehrere Pattern-Ebenen
Die Entwicklung mit OptimalJ basiert auf– Grafischen Modellen
– Pattern-basierter Generierung
– Best Practices
– J2EE Spezifikationen
CompuwareCorporation
People and software for business applications sm