Title: Component%20Based%20Engineering%20in%20MDA%20MDA%20and%20CCM
1Component Based Engineering in MDAMDA and CCM
- Dr. Philippe Merle
- CR1 INRIA Futurs Lille / LIFL USTL
- President of the ObjectWeb College of Architects
- Chair of the OMG Components 1.1 RTF
- Leader of the OpenCCM project
- Summer school MDA for Embedded System
Development, - Brest, Brittany in France, September 17th, 2002
2Contents
- From Software Components to MDA
- Components, component models, distributed object
and component middleware to MDA - The CORBA Component Model (CCM)
- A quick guided tour
- New Component Models with MDA and CCM
- New PIM and transformation to CCM
- How building MDA to CCM transformation platforms
with OpenCCM - Conclusion
- MDA and CCM at OMG (current RFP and proposals)
3From Software Componentsto MDA
4Why Software Components?
- Time to market
- Improved application productivity
- Reduced complexity
- Reuse of existing code
- Programming by assembly (manufacturing) rather
than development (engineering) - Reduced skills requirements
- Focus expertise on domain problems
- Improving software quality
- Key benefit with client-side server-side
development
5Why Software Component Models?
- Deal with recurrent technical requirements
- e.g. CORBA communication between distributed
objects - Provide means to abstract technical requirements
- e.g. OMG IDL interfaces and operations of
distributed objects - gt Abstraction instead of technical skills
- e.g. OMG IDL versus socket API
- Product software components automatically
- e.g. stubs and skeletons for CORBA communication
- gt Improve software productivity and quality
- gt Reduce development costs
6Why Software Component Models?
- Implementation neutral
- e.g. multi transport layers TCP/IP, ATM, shared
memory, - e.g. multi programming languages C, Java,
IDLscript, - e.g. multi OS Windows, Unix, Cray, PDA, RTOS,
- gt Portability and interoperability
- Could be also efficient than ad hoc solutions!
- e.g. Real-Time ORBs like TAO, omniORB, Orbix/E,
- Requirements for tools and platforms in order to
be really useable!
7From Distributed Objects
- Distributed Object Computing (DOC) Middleware
- e.g. CORBA DCOM - Java RMI
- Rationalize software processes for defining,
developing and executing distributed applications - Strongly used in industrial applications
- No architectural vision of applications
- Object bindings are hidden in code
- Often not declared or configurable
- No separation between functional / non functional
aspects - All application aspects are programmed
explicitly! - Complexity for business domain experts
- No packaging and deployment facilities
- Only ad hoc solutions!
8... To Distributed Components
- DOC middleware evolution
- e.g. CCM - .NET - EJB
- Cover software processes for packaging,
assembling and deploying distributed applications - Some architectural notions
- Bindings are declared and configurable
- e.g. JavaBeans and ports in CCM
- Better separation of functional / non functional
aspects - Components / containers
- Described instead of programmed (e.g. XML
descriptors) - Packaging for automatic deployment
- Standard format for binary archives
- API to control distributed deployment
9But No Universal Component Middleware!
for MDA?
Distributed Software Components
Major Challenge!
CORBA
EJB
.NET
. . .
10Challenges With Component Middleware
- A lot of standard component middleware
- SUN Java RMI, EJB, JMS, J2EE, Jini
- Microsoft OLE -gt COM -gt DCOM -gt COM -gt .NET
- W3C HTTP -gt XML -gt SOAP -gt Web services
- New ones appear, e.g. CCM, .NET, Web services,
- When old ones disappear, e.g. COM, DCE,
- What is the best one?
- What is the Next Best Thing?
- How building software for the long term?
- How moving between component middleware?
- How preserving business application logic
designs? - How addressing the recurrent gap between business
requirements and component middleware artifacts?
11Model Driven Architecture
- New orientation for OMG activities
- New step beyond the Object Management
Architecture (OMA) - Models are centric!
- Target middleware is not important!
- Focus on Platform Independent Models (PIM)
- Without middleware details
- Abstract Platform Specific Models (PSM)
- Including all middleware details
- Define PIM to PSM transformations
- Preserving PIM when new middleware appears!
12Current MDA Technologies
- Meta Object Facility (MOF)
- Unified Modeling Language (UML)
- XML Model Interchange (XMI)
- Common Warehouse Meta-model (CWM)
- Software Process Engineering Meta-model (SPEM)
- Action Semantics Language (ASL)
- Various UML profiles
- . . .
13All are (Meta-)Models in MDA
14PIM, PSM, and Transformations in MDA
TRANSFORMATION RULES
15PIM to PSM TransformationExamples with MOF/XMI
16Transformation Models in MDA
UML4EJB
UML
UML.Net
UML
17Could Transformation Models be Considered as
MDA-oriented?
TRANSFORMATION RULES
- PIM Abstract Model for Model Transformation
- PSM Concrete Transformation Technologies
18Could OMG IDL be Considered asMDA-oriented?
MAPPING RULES
- PIM Abstract Interface Definition Language
- PSM Concrete Programming Languages
19Could OMG IDL be Considered asMDA-oriented?
MAPPING RULES
- PIM Abstract Interface Definition Language
- PSM Concrete Network Transport Syntaxes
20Could GIOP be Considered asMDA-oriented?
MAPPING RULES
- PIM Abstract Network Transfer Syntax
- PSM Concrete Network Transport Layers
21MDA Applied To Component Middleware
TRANSFORMATION RULES
- PIM Abstract Component Model for enterprise
computing - PSM Concrete Standard Component Middleware
22The CORBA Component Model (CCM)
23TO BE COMPLETED
24New Component Modelswith MDA and CCM
25Why New Component Models?
- Often application designers want to use concepts
not present in PSM - e.g. CCM has no active JavaBeans properties
- 1) Creating a new PSM but also requires to
develop the associated middleware - Very expensive and time consuming!!!
- 2) Creating a new PIM and defining PIM to PSM
transformation rules
26The Message Filtering Example
- A filter has
- 1 input for receiving messages to filter
- Configurable filtering properties
- 1 filtering function
- 1 output for accepted messages
- 1 output for rejected messages
Filter
P1 V1 P2 V2 F M.C1 P1 or M.C2 gt P2
27Application Assembling Filters
28The Message Filtering Example With CCM
- eventtype Message
- . . . Message fields . . .
-
- component Filter
- consumes Message input
- publishes Message accepted
- publishes Message rejected
- . . . Configurable filtering properties . . .
-
- home FilterHome manages Filter
- factory create_filter(. . .)
-
29Problems
- All must be done manually!
- Defining OMG IDL for message eventtypes, filter
component and home types - Implementing CCM eventtypes, components and homes
- Writing CCM XML descriptors
- Extremely verbose, time consuming and error
prone!!! - How improving productivity and quality?
- How dealing with thousand messages and filters?
- How dealing with other Message Oriented
Middleware (MOM)? - Like EJB 2.0 message beans
30The Message Filtering Example With MDA
- Capturing the essence through a meta model
- Structure of messages, i.e. message fields
- Filtering properties and function
- Using XMI to obtain a XML DTD or Schema
- Syntax for serializing instances of the meta
model - Providing a UML profile for end users
- Defining transformation to MOM PSMs
- Generating message filtering components
automatically - gt Improve productivity and quality
- gt Reduce development costs
- gt Preserve PIM when new MOM appears
31The Message Filtering Meta-Model
32The Message Filtering XML DTD
- lt!ELEM MFL (message, filter)gt
- lt!ELEM message (field)gt
- lt!ATTRLIST message id IDgt
- lt!ELEM field EMPTYgt
- lt!ATTRLIST field name CDATA type CDATAgt
- lt!ELEM filter (property)gt
- lt!ATTRLIST filter id ID appliedOn IDREF
function CDATAgt - lt!ELEM property EMPTYgt
- lt!ATTRLIST property name CDATA type CDATAgt
- (The XMI generated DTD is very similar)
33A Message Filtering XML Descriptor
- ltMFLgt
- ltmessage idEmailgt
- ltfield nameto typestring\gt
- ltfield namefrom typestring\gt
- ltfield nametitle typestring\gt
- ltfield namecontents typestring\gt
- lt/messagegt
- ltfilter idFromFilter
- appliedOnEmail
- functione.from fromgt
- ltproperty namefrom typestring\gt
- lt/filtergt
- lt/MFLgt
34Using the Message Filtering UML Profile
to string from string title string contents
string
message Email
from string f(e Email) boolean e.from
from
filter FromFilter
AppliedOn
- This UML Profile reuses UML concepts to map the
Message Filtering Meta-Model concepts when they
are adequate and UML user-friendly
35Message Filtering PIM to MOM PSMs Transformation
TRANSFORMATION RULES
- PIM Abstract Message Filter Component Model
- PSM Concrete Message Oriented Middleware
36The Message Filtering PIM to CCM Transformation
- eventtype Email
- public string from, to, title
- public sequenceltstringgt contents
-
- component EmailFilterBase
- consumes Email input
- publishes Email accepted
- publishes Email rejected
-
- component FromFilter EmailFilterBase
- attribute string from
-
- home FromFilterHome manages FromFilter
- factory create_filter(in string from)
37Next Step on the Message Filtering Meta-Model
- Only allow definition of message and filter types
- Only generate OMG IDL types, implementations, and
CCM XML packaging descriptors - Complete the meta model to describe filter
instances and connections between them - Then allow generation of CCM XML assembling
descriptors for automatic deployment
38Drawback around MDA-oriented Tools
- Few MOF compliant tools to experiment the
creation of new component meta models! - Developing UML profiles are time and money
consuming - UML Profile Builders are still expensive and
proprietary - No portability of developed UML profiles between
UML Tools!!! - Few formalisms to express MDA transformation
- OMG RFP under work
- Few PSM meta models for
- Programming languages like Java, C,
- Component standard middleware
39How Building MDA to CCM Transformation
PlatformsWith OpenCCM
40OpenCCM
- An ObjectWeb project
- http//www.objectweb.org/openccm
- Open source under LGPL
- The first available implementation of the CORBA
Component Model - A flexible and open platform to design, develop,
package, assemble, deploy and administrate CCM
applications - Allow us to build MDA to CCM transformation
platforms
41The OpenCCM Platform
- A compiler for OMG IDL, PSDL, and CIDL files
- An Abstract Syntax Tree for IDL, PSDL, and CIDL
- An Interface Repository
- Generators to IDL, PSDL, CIDL, IDL2, CIF for Java
files - A graphical user interface for CCM XML packaging
and assembling files - An Abstract Tree for packaging and assembling XML
DTDs - A deployment tool
- A runtime application server
- An administration console
- Runs on top of Unix, Windows, Win/CE for PDA
42The OpenCCMs Compilation Chain forIDL, PSDL,
and CIDL Files
Compiler
IDL/PSDL/CIDL
Abstract Syntax Tree for IDL/PSDL/CIDL
Interface Repository
Generators
IDL/PSDL/CIDL
CIF for Java
OMG IDL2
43The OpenCCMs Tool Chain forXML Packaging and
Assembling Files
XML parser
CCM XML
CCM XML
Software components
CCM XML
CCM XML
Abstract Tree for CCM XML
Java Swing GUI
Application package
44The OpenCCMs Deployment Chain
Abstract Tree for CCM XML
Deployment Tool Component distribution,
installation, instantiation, configuration and
execution
45Generic Meta Tools for XML DTD
- OpenCCM code for managing CCM XML DTD is
automatically generated - The Abstract Tree for packaging and assembling
XML DTDs - The packaging and assembling GUI
- Using generic meta tools for XML DTD
- The Zeus DTD2Java meta tool
- Generator of XML to Java binders
- i.e. Java objects representing XML elements
- The OpenCCM DTD2GUI meta tool
- Generator of Java Swing GUI from XML DTD
46DTD2Java and DTD2GUI Meta Tools
XML DTD
GUI Parametrization
Zeus DTD2Java
OpenCCM DTD2GUI
Java Tree
Java Swing GUI
Observer Design Pattern
47Zeus DTD2Java Generation Example
- For the following XML DTD
- lt!ELEMENT persons persongt
- lt!ELEMENT person EMPTYgt
- lt!ATTRLIST person name CDATAgt
- Zeus DTD2Java generates
- interface Persons
- void addPerson(Person p)
- void removePerson(Person p)
- List getPersonList()
-
- class PersonsImpl implements Persons . . .
- interface Person
- String getName()
- void setName(String v)
-
- class PersonImpl implements Person . . .
48OpenCCM DTD2GUI Generation Example
49Applying DTD2Java and DTD2GUI in MDA
- Could be used on any XML DTD
- Even those generated by XMI DTD
- To parse, manipulate, and view
- Any MOF meta model
- Any UML model
- Any PIM PSM model
- Any instance of any PIM
- Any instance of any PSM
- Any instance of any component model
50Building MDA to CCM Transformation Platforms With
OpenCCM
MOF2DTD
aCCM XML DTD
OpenCCM DTD2GUI
Zeus DTD2Java
51Building MDA to CCM Transformation Platforms With
OpenCCM
Transformation Java IDLscript scripts
Transformation scripts
Transformation scripts
Transformation scripts
Transformation engine
Abstract Tree for CCM XML
Generated IDL/PSDL/CIDL
CCM XML descriptors
Generated Java Implementation
CCM XML descriptors
Generated CCM XML descriptors
52Building MDA to CCM Transformation Platforms With
OpenCCM
aCCM XML DTD
Transformation Java IDLscript scripts
Transformation scripts
Transformation scripts
Transformation scripts
Transformation engine
OpenCCM API
Generated CCM Compliant Files
Transformation scripts
Transformation scripts
Transformation scripts
53Transformation Script Examplefor the Message
Concept
Java4aCMM
- eventto.declareEvent(from.getId())
- ctx.addMapping("event_type", event)
- ctx.visit(from.getFieldList(), event)
- filterto.declareComponent(
- from.getId()"FilterBase")
- ctx.addMapping("filter_base", filter)
- inputfilter.startConsumes("input")
- input.setEvent(event)
- ctx.addMapping("input", input)
- acceptedfilter.startPublishes("accepted")
- accepted.setEvent(event)
- ctx.addMapping("accepted", accepted)
- rejectedfilter.startPublishes("rejected")
- rejected.setEvent(event)
from
Transformation engine
ctx
OpenCCM API
to
54Transformation Script Examplefor the Field
Concept
Java4aCMM
- memberto.startValueMember(
- from.getName())
- member.setPublic()
- member.setType(ctx.findType(from.getType()))
- ctx.addMapping("member", member)
from
Transformation engine
ctx
OpenCCM API
to
55Transformation Script Examplefor the Filter
Concept
Java4aCMM
- cto.declareComponent(from.getId())
- c.setBaseComponent(
- ctx.getMapping(from.getAppliedOn(),
- "filter_base") )
- ctx.addMapping("component_type", c)
- ctx.visit(from.getPropertyList(), c)
- hto.startHome(from.getId()"Home")
- h.setManagedComponent(c)
- ctx.addMapping("home_type", h)
from
Transformation engine
ctx
OpenCCM API
to
56Transformation Script Examplefor the Property
Concept
Java4aCMM
- ato.startAttribute(from.getName())
- a.setReadwrite()
- a.setType(ctx.findType(from.getType()))
- ctx.addMapping("attribute", a)
from
Transformation engine
ctx
OpenCCM API
to
57Benefits for Building MDA to CCM Transformation
Platforms with OpenCCM
- UML tool neutral
- At design time, only XMI generation required
- At runtime, no UML tool presence
- Allow production of Open Source MDA to CCM
transformation platforms - All used tools are Open Source
- Only require to write scripts for transformation
- To do
- Improve the transformation engine features
- Simplify how transformation scripts are written
- Express transformations in XML and generate
scripts - Implement the MOF2DTD tool as a MDA transformation
58Conclusion
59Summary
- Evolution from software components to MDA
- Software component models are PSM
- CCM should be the major PSM at OMG
- New component models could be designed with MDA
and mapped to CCM - MDA to CCM Transformation Platforms can be built
with OpenCCM
60CCM and MDA at OMG
- Fraunhofer FOKUS/IK submission to MOF 2.0 IDL
RFP - MOF repositories should be CORBA Components
- RFP OMG TC Document ad/01-11-07
- Subm. OMG TC Document ad/02-05-06
- Deployment and Configuration RFP
- OMG TC Doc orbos/2002-01-19
- Components 1.1 Revision Task Force
- Chartered at the Yokohama meeting (April 26th
2002) - UML Profile for CCM RFP
- OMG TC Doc telecom/2002-09-02
- Revision of the UML Profile for CORBA
forincluding IDL 3.0 extension, PSDL, and CIDL - Presented at the next Helsinki OMG meeting
- EDOC to CCM Mapping should be prepared!
61Open Source CCM Implementations
- OpenCCM from LIFL ObjectWeb
- Java on ORBacus 4.1 OpenORB 1.2.1 BES 5.x
- http//www.objectweb.org/openccm/
- MicoCCM from FPX Alcatel
- C on MICO
- http//www.fpx.de/MicoCCM/
- CIF from Humboldt University
- C on ORBacus 4.1
- http//sourceforge.net/projects/cif
62Other CCM Implementations
- Qedo from Fraunhofer FOKUS
- C on MICO ORBacus 4.1
- http//qedo.berlios.de
- EJCCM from CPI Inc.
- Java on OpenORB 1.3.x
- http//www.ejccm.org
- K2 from ICMP
- C on various ORBs
- http//www.icmgworld.com
63More Information
- OMG MDA Web Page
- http//www.omg.org/mda
- CORBA Components Specification
- OMG TC Document formal/2002-06-65
- CORBA Component Model Tutorial
- OMG TC Document ccm/2002-06-01
- The CCM Page, Diego Sevilla Ruiz
- http//www.ditec.um.es/dsevilla/ccm/
- IST COACH Project
- http//www.ist-coach.org
- OpenCCM
- http//www.objectweb.org/openccm/
64Your Questions?