model driven
Using
Model-Driven Development
& Eclipse Technology
to implement SOA
Tas Frangoullides
model driven
Overview
• What is Model-Driven Development (MDD)
• Challenges of SOA
• Our Solution
• Getting There
• Summary and Tips
• Questions
model driven
What is...
MODEL-DRIVEN DEVELOPMENT?
model driven
Model-Driven Development
Source Code
Model Generators Data Schemas
Presentation
Artefacts
model driven
Benefits of MDD
Raises the level
of abstraction
Can target
multiple
platforms
Reduces
development
times
model driven
Implementing Service-Oriented Architecture
THE CHALLENGES
model driven
Challenges of SOA
• Promoting effective communication of details between
business-IT teams
• Ensuring semantic interoperability between enterprise
services
• Successful adoption of standards and best-practice
• Retaining independence from platforms and vendors
• Maintaining a good degree of architectural agility
• Getting developers up to speed and helping them
adopt technology, best-practice and new platforms
model driven
Applying Model-Driven Development and Eclipse Technology
OUR SOLUTION
model driven
Enterprise Data
Within an Enterprise Application Outside an Enterprise Application
Common
Domain Model Integration
Data Model
Source
EWS
Services
Data
Source
Enterprise Web Service
maps between the two
worlds of data
model driven
Common Integration Model
• Representative of an
Enterprise business domain
Common • Common vocabulary between
Integration
Model
systems and people
EWS • Used to constrain the
structure of data used in
Enterprise Services
• Should be influenced by
multiple business units
• Should not be adopted
internally by systems
model driven
From domain model to service
Describes business entities
and the relationships Domain Global
between them Model Website
Constraint
Describes units of
information which may be Message
XSD Java
+ Bindings
communicated between Model
systems
Use by
reference
Describes SOA service
interfaces in a platform- Service Deployable
independent manner Model Web Service
model driven
Web Service Generation
Eclipse
Service Web Project
Model
WSDL
XML Schemas
Java Binding for XML
Java Interface & Implementation Skeleton
Deployment Descriptor
Ivy Configuration (Dependency Management)
Ant build.xml (for Jumpstart)
model driven
Web Service Generation
Eclipse
Service Web Project
Model
X-Fire Sonic
Project ESB Project
Services
Framework Sonic Process
Configuration
Spring Deployment Manager
Configuration Model Files
model driven
Benefits
• Use of models dramatically improved
communication across the enterprise
• Agile Architecture
• Platform Independence
• Conformance to standard data model
• Development times for new services
significantly improved
model driven
EXAMPLE MODELS
model driven
Domain Model
«Domain Model»
CDM
Institution
Instrument
...
model driven
Domain Model
«Domain Model»
CDM
Institution
Instrument
...
model driven
Message Model
«Message Model»
Market Data
Prices
...
model driven
Service Model
«Service Model»
Pricing Service
Instrument 1
model driven
What do we do with the models?
THE SOA TOOLKIT
model driven
The SOA Toolkit
Information
Architect
Domain Enterprise
Model Modellers
• Analyse & Validate Model
• Manage common data
Messaging types
Team • Publish Web Site
Message (Continuous)
Model Service
Model
• Create derived models • Model Services
• Analyse and synchronise Business • Generate Web Services
changes between domain Analyst • Apply standards and best-
and message model practice
• Generate XML Schemas • Abstract the platform
Developers • Develop Java Code
• Deploy Services
model driven
Getting there
THE STORY
model driven
The Story - Overview
Prototype:
POC: Service Project Issues with
UML to XSD Generator Release 1.0 Release 2.0 Sonic ESB
Project goes live Release 2.1
with generated Sonic ESB
Web Service Introduced
model driven
The proof-of-concept
FROM UML TO XSD
model driven
POC: The Stack
• UML API
• UML Meta-model
• UML to Ecore Conversion
UML to XSD POC
UML2 Eclipse Modeling Framework
• Meta-Modelling Language
EMF • Code Generation
• XML Persistence
Eclipse • XML Schema Generation
• Plug-in Architecture
• UI Framework
model driven
POC: UML to XML Schema
Custom Custom
UML2Ecore Ecore Schema
Converter Builder
Eclipse UML Ecore XML
Model Models Schemas
model driven
POC: UML to XML Schema
• Suppress Ecore annotations
• Customise Data Mapping
• Standardise Namespace
• Experiment with XML Choice
• Reference XML Data Types
model driven
CHOOSING A UML MODELLING TOOL
model driven
The Contenders
Rational
MagicDraw Enterprise Architect
Software Modeler
model driven
Why RSM?
• Eclipse Based
– Extensible
• Plugin Development Environment
– Integrated
• Java Development
• XML Editing
• Version Control
– Developer Friendly
• UML API
• Open-Source Foundations
– EMF
– UML2
– GMF
– TPTP
model driven
More Eclipse Frameworks
WEB SERVICE GENERATION
model driven
Web Service Generation Stack
• Web Projects & Facets
Service Project Generator • WSDL
• Deployment Descriptors
Web Tools • ...
UML2
Platform
• Templates (JET)
EMF • Source Code Merging
JDT
• Classpath Handling
• Java Compiling
Eclipse
• UI Framework
• UML Profiles • Resources Framework
• Builders
model driven
The Generation-Chain Model
USING MDD TO DEVELOP MDD TOOLS
model driven
The Generation Chain
Generate
Expand/Apply Generate Generate Web Platform Retrieve
UML to Ecore Ecore to XSD
Patterns Java Bindings Project Specific Dependencies
Artefacts
model driven
Generation Chain Meta-Model
model driven
Generating an API
Java API
with
XMI Persistance
EMF
UML
Code
Importer
Generator
Eclipse Model
Generation Ecore Model Editor
Chain Model & EMF GenModel
(UML)
model driven
Creating and Synchronizing
MESSAGE MODELS
model driven
Creating a Derived Model
Domain • Palette is constrained by
Model
domain
Constraint • Relationships limited to
those available in Domain
Message
Model Model
model driven
Creating a Derived Model
• Message Palette
• Domain Element Selection Dialog
Message Modeling • Edit Helpers
Rational Software Modeler
Graphical Modeling Framework
• Integrated Platform for modelling
UML2 GMF tools
• Unites GEF and EMF
• Notational Meta-Model
EMF GEF • Model-View Separation
Eclipse
Graphical Editing Framework
• Drawing Canvas
• Palettes & Tools
model driven
Synchronisation Problem
Domain
Model
Constraint
Message
Model
model driven
Synchronisation Problem
Domain • Model elements renamed
Model
• Model elements deleted
Constraint • Types change
Message
• Packages are restructured
Model
• Traces break
model driven
Synchronising Models
• Detect and automatically fix
broken traces
Rational BGI • Report items requiring human
Software Model decision making
Modeler Analysis
TPTP
Test & Performance Tools Platform
• Static Analysis
Eclipse • Reporting
• Quick Fix Support
model driven
Keeping the models pure
THE ‘IDENTIFIABLE’ PROBLEM
model driven
The ‘Identifiable’ Problem
<schema xmlns= "http://www.w3.org/2001/XMLSchema"
targetNamespace= "http://gxml.bglobal.com/Identifiable”>
<complexType name= "Identifier">
<attribute name="type" type="string"/>
<attribute name="value" type="string"/>
</complexType>
</schema>
<Instrument>
...
<Identifier type="SEDOL" value="0263494"/>
<Identifier type="CUSIP" value="037833100"/>
...
</Instrument>
model driven
The ‘Identifiable’ Problem
Just model it?
Pollutes business model with
technical concerns
Identifiable is not a business
concept (in this case)
model driven
The ‘Identifiable’ Problem
Does not change structure of
business model
Downstream Implementation
can change
<schema xmlns= "http://www.w3.org/2001/XMLSchema"
targetNamespace= "http://gxml.bglobal.com/Identifiable”>
<complexType name= "Identifier">
<attribute name="type" type="string"/>
<attribute name="value" type="string"/>
</complexType>
</schema>
«apply»
model driven
Summary and tips
WRAPPING UP
model driven
Benefits of Model-Driven
• Models improve communication
• Agile Architecture
• Platform Independence
• Time-to-market
model driven
Benefits of Eclipse Technology
• Eclipse enables a seamlessly integrated solution
• Modeling Projects provide all the scaffolding for
Model-Driven Development
• Reduces the gap between the generators and
platforms
• UI, Projects, Resources – all taken care of
• Developers are comfortable with Eclipse Plugins
• Keeps getting better
model driven
Thinking of giving this a go?
TOP 10 TIPS
model driven
Tip #1
Take an iterative and incremental approach
model driven
Tip #2
Get buy-in from key stakeholders and groups
model driven
Tip #3
Use what is already out there...
...but be wary of in-the-box
solutions
model driven
Tip #4
Don’t pollute your business models
model driven
Tip #5
Have at least one MDD veteran
model driven
Tip #6
Version your models along with everything else
model driven
Tip #7
Manage your inter-model dependencies and monitor
them for leakages
model driven
Tip #8
Automate where possible
model driven
Tip #9
Work with project teams and reduce their risk...
model driven
Tip #10
and if there is failure..
Share It
model driven
Questions?
Thank You
tas@model-driven.co.uk