30
Pragmatic Model Driven Development (MDD) using openArchitectureWare Michael Vorburger & Laurent Medioni Odyssey Financial Technologies 1640

Pragmatic Model Driven Development using openArchitectureWare

Embed Size (px)

DESCRIPTION

Presentation given at Jazoon 2007

Citation preview

Page 1: Pragmatic Model Driven Development using openArchitectureWare

Pragmatic Model Driven Development (MDD) using openArchitectureWare

Michael Vorburger & Laurent Medioni

Odyssey Financial Technologies

1640

Page 2: Pragmatic Model Driven Development using openArchitectureWare

2

AGENDA

> Goal of Pragmatic MDD using openArchitectureWare at Odyssey

> Positioning of approach within the larger MDD / MDA picture

> openArchitectureWare, briefly: What? How?

> Our Eclipse-based Designers

> Software Demo

> Q & A

Page 3: Pragmatic Model Driven Development using openArchitectureWare

3

AGENDA

> Goal of Pragmatic MDD using openArchitectureWare at Odyssey

> Positioning of approach within the larger MDD / MDA picture

> openArchitectureWare, briefly: What? How?

> Our Eclipse-based Designers

> Software Demo

> Q & A

Page 4: Pragmatic Model Driven Development using openArchitectureWare

4

> Today

– Complexity of functional developments and inconsistencies due to complex and heterogeneous technical frameworks (due to historical reasons, acquisitions, etc.)

– Customization not always addressed in architecture, requiring strong technical skills

– Difficulty to tackle technological swaps (no big bang upgrades) because functional feature code is highly dependant on technical plumbing

> Tomorrow

– Reduced cost of new in-house functional developments, with higher quality

– Reduced implementation time for customizations, requiring less technical skills

– Suitable level of abstraction, enabling “behind the scene” changes of technical layers

> How?

– Consistent approach to frame all development work (frame-work), internal and for customizations, using code generation tools and high-level visual designers based on comprehensive application models

Goal of Pragmatic MDD using openArchitectureWare at Odyssey

Page 5: Pragmatic Model Driven Development using openArchitectureWare

5

AGENDA

> Goal of Pragmatic MDD using openArchitectureWare at Odyssey

> Positioning of approach within the larger MDD / MDA picture

> openArchitectureWare, briefly: What? How?

> Our Eclipse-based Designers

> Software Demo

> Q & A

Page 6: Pragmatic Model Driven Development using openArchitectureWare

6

Positioning - MDA

> Model Driven Architecture ™– http://en.wikipedia.org/wiki/Model-driven_architecture

– … not entering any philosophical polemic…

– Standards, standards ? (well, XMI, ok…)

– Ready ? A few promising implementations…

> Analysis result: Not suitable for a solution provider context

– High customizability (platform-wide but also surgical customization)

– Migration of legacy artifacts (future “Architecture Driven Modernization” kind but… now !)

– Cohabitation between newly generated and legacy artifacts in the same containers. “Big Bang” not possible, neither internally, nor for customer sites.

Page 7: Pragmatic Model Driven Development using openArchitectureWare

7

Positioning - MDD

> MD Development (or MD Engineering, not OMG™)

– No functional Use Cases (and stratospheric PIM…) design attemptPractical models for technical artifacts (P[I/S]M)

– No overweight models overloaded with meta-dataLocal and tactical models, each one customizable through dedicated tools

– Always use generated code from models when a model existsModels express 100% of what should be manually coded (“framed” use of the frameworks)No manual “custom sections” in generated code, already enough merging issues on models…

– But also recognize that not everything can be modeledOnly most highly customized artifact types

– MDA, the Eclipse way…

Page 8: Pragmatic Model Driven Development using openArchitectureWare

8

> A Domain Specific Language for each artifact type

– A model for the abstract representation (ecore)

– A storage mechanism to persist the abstract representation (EMF does it!)

– A designer for editing the abstract representation using a graphical projection (helped by GMF)

– A generator for translating the abstract representation into an executable representation (oAW)

Positioning - DSL

Abstract representation (ecore)

Storage representation (XMI)

Storage representation (XMI)

Store (EMF)

Generate (oAW)

Executable representation (java, xml, …)

Executable representation (java, xml, …)

Projection (GMF)

Editable representation (GMF editor)

Import (oAW)http://martinfowler.com/articles/languageWorkbench.html

Page 9: Pragmatic Model Driven Development using openArchitectureWare

9

BOM centric

> The Business Object Model contains declaration of:

– Classes and their attributes

– Associations

– Enums, translations, …

> The BOM is used for generating default models (CRUD basic pageflows and pages, validation rules, …) and technical artifacts (persistence, …)

– to propose a default skeleton to the applications (CRUD basic administration)

– to provide reusable bricks for more complex usage

> Nearly all DSLs need to be aware of the BOM

– BO are in and out parameters of services, rules, …

– BO are stored in the various contexts of session scope, pageflows, processes, …

Page 10: Pragmatic Model Driven Development using openArchitectureWare

10

Positioning - Target

Eclipse designers

Technical target

oAW

Import existing artefact Generate artefact

Constraint checking

Model to model transf.

Page 11: Pragmatic Model Driven Development using openArchitectureWare

11

AGENDA

> Goal of Pragmatic MDD using openArchitectureWare at Odyssey

> Positioning of approach within the larger MDD / MDA picture

> openArchitectureWare, briefly: What? How?

> Our Eclipse-based Designers

> Software Demo

> Q & A

Page 12: Pragmatic Model Driven Development using openArchitectureWare

12

openArchitectureWare

> oAW is a Framework & Tools to:– Work with different meta meta models (Ecore, XML, JavaBeans)– Read models (parsing EMF XMI, UML2, UML tools, other XML, …)– Check models for well defined integrity constraint violations, during editing– Transform models into other models via a functional language– Generate textual “code” (Java, XML, ...) from models via templates– Build editors for models: Textual & Graphical (DSLs)

> Specific actual cartridges are not in the core of oAW

> Fully open-source (Eclipse Public License v1.0, EPL), strong community– v4 is part of Eclipse.org’s Generative Modeling Technologies (GMT) project– Formerly on openarchitectureware.org & SourceForge

> Packaged & delivered as flexible & modular Eclipse feature

Page 13: Pragmatic Model Driven Development using openArchitectureWare

13

openArchitectureWare Acronymland

> Workflow Engine: Tying it all together ... run from Eclipse, ant, etc.

> Xpand: Template language & engine, model to text (M2T) transformations(Velocity / FreeMarker / EMF JET –ish, but with an oAW-aware Eclipse editor etc.)

> Xtend: Functional model to model (M2M) transformation language, also used to 'extend' meta types with additional behaviour in a non-invasive manner. (Alt: ATL)

> Check: Model validation with OCL-like declaratively defined constraints (or use Java API for semi-declarative constraint checking, or real OCL with 3 rd-party lib)

> Recipe: Checks and generate hints on manually to-be implemented code

> xText: Cartridge which from a DSL defined in EBNF generates Ecore meta model, parser, and Eclipse editor with syntax highlighting, completion & outline.

> GMF: Eclipse‘s EMF + GEF (Graphical Editing Framework), with oAW checks

> EMF: Eclipse‘s meta model (Ecore) / beans / editors / XML binding framework

Page 14: Pragmatic Model Driven Development using openArchitectureWare

14

openArchitectureWare Overview

http://www.eclipse.org/gmt/oaw/diagram.php

1. Model Verificationusing Constraints

2. Code Generation

3. Integrating gen. codewith hand-written code

4. Model Modification/Completion

5. Model-to-model Transformation

6. Loading/Storing Models

7. Model Editing using UML Tools

8. Model Editing using Textual Editors

9. Model Editing using GMF Editors

Page 15: Pragmatic Model Driven Development using openArchitectureWare

15

openArchitectureWare Screenshots 1/2

Xpand Editor Xpand Syntax Highlighting Content

Outline

Syntax analysis

Code Completion

Error reporting

Page 16: Pragmatic Model Driven Development using openArchitectureWare

16

openArchitectureWare Screenshots 2/2

Textual DSLs with xText

Page 17: Pragmatic Model Driven Development using openArchitectureWare

17

openArchitectureWare growing “Ecosystem”

> oAW is not a “standalone” tool (even before formally being in Eclipse,and since its acceptance into Eclipse.org hopefully increasingly less so)

> Different aspects to this, e.g. specific “cartridges”, model input/output, Model To Text (M2T: Xpand, JET, MTL? Xpand chosen over JET for GMF 2.0) and Model To Model (M2M: Xtend, ATL, QVT) projects on eclipse.org, a shared “model bus” in MDDi, etc.

> For example, the other day, we had this discussion about using SCM branching for “customizing” models, and the problems you would have when re-integrating the next vendor branch in a merge. Manually diff-ing XMI-stored models didn’t really sound too appealing - but oh, look, somebody appears to already be working on that: http://www.eclipse.org/emft/projects/compare/ - Nice.

(In fact, at least two... also http://www.eclipse.org/gmt/amw/usecases/diff/. With oAW becoming integrated into eclipse.org/gmt and maybe later eclipse.org/modeling, hopefully we’ll see more coherence over time?)

Page 18: Pragmatic Model Driven Development using openArchitectureWare

18

openArchitectureWare Wrap-Up

> Sorry we don‘t have time to go more in-depth about oAW itself here!

> If all of this sounds interesting to you, check out:

– http://www.eclipse.org/gmt/oaw

– http://www.openarchitectureware.org

– Other oAW presentations & articles on-line (http://www.eclipse.org/articles/ Article-FromFrontendToCode-MDSDInPractice/article.html good starter!)

> PS: http://www.andromda.org/ is another of several such toolkits. AndroMDA appears to focus more on UML models and specific cartridges, while oAW probably positions itself as a more generic Eclipse-centric MDD platform. (Fornax is a project for building similar cartridges for oAW.)

Page 19: Pragmatic Model Driven Development using openArchitectureWare

19

AGENDA

> Goal of Pragmatic MDD using openArchitectureWare at Odyssey

> Positioning of approach within the larger MDD / MDA picture

> openArchitectureWare, briefly: What? How?

> Our Eclipse-based Designers

> Software Demo

> Q & A

Page 20: Pragmatic Model Driven Development using openArchitectureWare

20

OFS Workbench (Eclipse)

Eclipse-based Workbench, in two “editions”:

> Business Edition: Simplified Eclipse RCP versionOnly proposes what is necessary for non-technical users(models). An OFS feature grouping all designers.

> Developer EditionFull Eclipse IDE + OFS featureAble to support full development projects

Page 21: Pragmatic Model Driven Development using openArchitectureWare

21

Odyssey Financial Studio Eclipse project

> An OFS project is the container for the various types of models

> An OFS explorer has been designed to:

– filter access to models

– hide technical details (model and layout files, 2 in 1)

– encapsulate customization handling(a customized artifact is a copy of the original)

– Eclipse Common Navigator based

> Each type of model is editable through a dedicated designer (backed-up with a DSL)

Page 22: Pragmatic Model Driven Development using openArchitectureWare

22

Pageflow designer

> State diagramWith specific meta-data

Page 23: Pragmatic Model Driven Development using openArchitectureWare

23

Process designer> BPMN-like

In-house engine(for the moment)

Page 24: Pragmatic Model Driven Development using openArchitectureWare

24

Rule designer> Purchased from Innovations AG

Fully compliantWith OFS

Page 25: Pragmatic Model Driven Development using openArchitectureWare

25

BOM designer

Not graphical (yet)

Page 26: Pragmatic Model Driven Development using openArchitectureWare

26

Inter-designer communication

> In a first time, all designers are “vertically” isolated

– No inter-designer communicationEx: The pageflow contains page URIs

– DSL models restricted to what can be expressed in our current target frameworksExcept documentation

> In a second time, designers will be communicating

– DSL models can directly reference other modelsEx: Pages can be drag & dropped in pageflows

– Business model is known to everyoneEx: An entity attribute can be drag & dropped in a page, corresponding visual representation is displayed

– Current frameworks will be extended to reflect model extensionsEx: Define a context for a pageflow, map page events to pageflow transitions, …

– Refactoring to be handled… But fortunately customization is only about adding !

Page 27: Pragmatic Model Driven Development using openArchitectureWare

27

Business sketching

Business analystCustomer requirementsDraft new modelsAlter existing modelsDocumentation

Technical analystFills blanksOptimizationsIntegration

ProductionKPI results New artifact version

Draft model

> Business and Technical analysts work on the same artifact models

> Exchanged models also hold documentationReduce “interpretation” and a convenient way of providing “local” documentation (DITA based)

> Simple customization operations do not even require technical skills, any moreEx: add attributes to entities, move fields in pages, reroute pageflows, …

Page 28: Pragmatic Model Driven Development using openArchitectureWare

28

AGENDA

> Goal of Pragmatic MDD using openArchitectureWare at Odyssey

> Positioning of approach within the larger MDD / MDA picture

> openArchitectureWare, briefly: What? How?

> Our Eclipse-based Designers

> Software Demo

> Q & A

Page 29: Pragmatic Model Driven Development using openArchitectureWare

29

AGENDA

> Goal of Pragmatic MDD using openArchitectureWare at Odyssey

> Positioning of approach within the larger MDD / MDA picture

> openArchitectureWare, briefly: What? How?

> Our Eclipse-based Designers

> Software Demo

> Q & A

Page 30: Pragmatic Model Driven Development using openArchitectureWare

Michael Vorburger [email protected]

Laurent Medioni [email protected]

Odyssey Financial Technologies

http://www.odyssey-group.com