SlideShare une entreprise Scribd logo
1  sur  19
Renovating a 15-year old Model-Driven
Application
Eric Jan Malotaux
Software Development Automation 2013, Amsterdam, The Netherlands
2013-05-29
1
Overview
3
OVERVIEW
●
Who I Am
●
The Assignment
●
The Strategy
●
Lessons Learned
●
Remaining opportunities
4
WHO I AM
● Eric Jan Malotaux
● Software Architect with Ordina
● Trained as a musician and musicologist
● 28 years experience in software development
● Email: emalotau@gmail.com
● Twitter: @EricJanMalotaux
● LinkedIn: ericjanmalotaux
● Blog: http://emalotau.blogspot.nl/
The Assignment
Transforming a 15 year old model-driven application from C++ to Java
6
● A very succesful mortgage application
● 185 screens
● 100 users
● Quarterly releases
● Sizeable model: 200,000 lines (10Mb) of XMI
● Interfaces to external systems using queues
● Native Windows DLL's for calculations
FMA
model
Load
(C++)
FAST
“Class Tree”
(C++)
FMA
source
(C++)
FMA
executable
FMA
data
External
(MQ) classes
(C++)
FAST
framework
(C++)
FMA
generator
(C++)
given
generated
manual
tools
Legenda
FAST
Modeler
(MS-Access)
FMA
DLL
(SQL)
Borland
C++
compiler
Question:
Will MDD live up to its promise?
“... These platform-independent models document the
business functionality and behavior of an application
separate from the technology-specific code that
implements it, insulating the core of the application from
technology and its relentless churn cycle while enabling
interoperability both within and across platform
boundaries. ...”
– http://www.omg.org/mda/
The Strategy
Requirements
FAST
model
(database)
C++
implementation
Goals
Mod4J
mogram
(textual DSL)
Java
implementation
C++ extractor
Xpand
generator
Legacy application Renovated application
C++ generator C++ generator
FAST
model
(xmi)
C++
extractor
Xtend2
generator
FAST
model
(xmi)
C++
extractor
Xtend2
generator
Requirements
Goals
Specifications
Strategy
Migrating the (meta)models
SQL
FAST
metamodel
(schema)
FMA
model
(database)
FMA
user data
expressed in
expressed in
Abstract
Syntax
“Class Tree”
C++
Model
object
graph
expressed in
expressed in
load
FMA
export
(C++)
UML
FAST
metamodel
expressed in
EA C++
import
Ecore
FAST
metamodel
(ecore)
expressed in
EA ecore
export
FMA
model
(xmi)
expressed in
FMA
application
Export
generator
(xtend2)
FMA
generators
(xtend2)
Old
M2
M1
M0
M3
NewIntermediate
(Enterprise Architect)
FMA
generators
(C++)
FAST
metamodel
FMA
model
Load
FAST
“Class Tree”
Enterprise
Architect
FAST
metamodel
(ecore)
FMA
model
(XMI)
EMF
FAST
model
Java API
FAST
tree editor
FMA
(Java)
JNA
adapters
(Java)
FAST
framework
(Java)
External
(MQ) classes
(Java)
maven/
javac/
build
FMA
(JWS/jar)
FMA
data
FMA
example
(Java)
External
(MQ) classes
(C++)
FAST
framework
(C++)
Extractor
generator
(xtend2)
FMA
generator
(xtend2)
given
generated
manual
tools
Legenda
Modeler
(MS-Access)
Old
Temporary
New
Extract
Lessons Learned&Remaining Opportunities
16
LESSONS LEARNED
The value of an explicit metamodel
●
Help in understanding the model
●
Lots of automated support:
●
Generated export program
●
Generated tree editor
●
Generated model API
●
Model was not so platform-independent as we thought
17
Remaining opportunities
Maintaining the migrated model
●
Maintain the (just once) generated Java application
●
Order of magnitude larger than model → more expensive
●
No more migrations
●
Model is lost forever
●
Keep maintaining the model
●
Can generate other styles of application
●
Use the EMF-generated tree editor
– already as good as, or better than, the Access application
●
Derive an Xtext grammar from the metamodel
– Manual adjustments
– Have a textual DSL almost for free
– Familiar concepts: the metamodel (language) was not changed.
FAST
metamodel
(ecore)
FMA
model
(XMI)
EMF
generator
FAST
model
Java API
FAST
tree-editor
FMA
(Java)
JNA
adapters
(Java)
FAST
framework
(Java)
External
(MQ) classes
(Java)
maven/
javac/
build
FMA
(JWS/jar)
FMA
data
FMA
generator
(xtend2)
given
generated
manual
tools
Legenda
FMA
model
(XMI)
FAST
DSL
(xtext)
FMA
model
(text)
Question:
Will MDD live up to its promise?
Answer:
Although the model was not as platform-independent as
we thought, still much easier that plain C++ → Java.
20
www.ordina.nl

Contenu connexe

Similaire à Renovating a 15-year old Model-Driven Application

Model Driven Architecture and eXecutable UML
Model Driven Architecture and eXecutable UMLModel Driven Architecture and eXecutable UML
Model Driven Architecture and eXecutable UML
elliando dias
 
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep diveITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp
 
smalltalk numbercrunching
smalltalk numbercrunchingsmalltalk numbercrunching
smalltalk numbercrunching
Daniel Poon
 

Similaire à Renovating a 15-year old Model-Driven Application (20)

A Taxonomy for Program Metamodels in Program Reverse Engineering
A Taxonomy for Program Metamodels in Program Reverse EngineeringA Taxonomy for Program Metamodels in Program Reverse Engineering
A Taxonomy for Program Metamodels in Program Reverse Engineering
 
Deep learning and streaming in Apache Spark 2.2 by Matei Zaharia
Deep learning and streaming in Apache Spark 2.2 by Matei ZahariaDeep learning and streaming in Apache Spark 2.2 by Matei Zaharia
Deep learning and streaming in Apache Spark 2.2 by Matei Zaharia
 
Final Jspring2009 Mda Slimmer Ontwikkelen Van Java Ee Applicaties
Final Jspring2009 Mda Slimmer Ontwikkelen Van Java Ee ApplicatiesFinal Jspring2009 Mda Slimmer Ontwikkelen Van Java Ee Applicaties
Final Jspring2009 Mda Slimmer Ontwikkelen Van Java Ee Applicaties
 
Model driven engineering for big data management systems
Model driven engineering for big data management systemsModel driven engineering for big data management systems
Model driven engineering for big data management systems
 
Automatic generation of hardware memory architectures for HPC
Automatic generation of hardware memory architectures for HPCAutomatic generation of hardware memory architectures for HPC
Automatic generation of hardware memory architectures for HPC
 
Qiang Yu CV
Qiang Yu CVQiang Yu CV
Qiang Yu CV
 
Oleksandr Smoktal "Parallel Seismic Data Processing Using OpenMP"
Oleksandr Smoktal "Parallel Seismic Data Processing Using OpenMP"Oleksandr Smoktal "Parallel Seismic Data Processing Using OpenMP"
Oleksandr Smoktal "Parallel Seismic Data Processing Using OpenMP"
 
D3ML Session
D3ML SessionD3ML Session
D3ML Session
 
PMML - Predictive Model Markup Language
PMML - Predictive Model Markup LanguagePMML - Predictive Model Markup Language
PMML - Predictive Model Markup Language
 
Ladc presentation
Ladc presentationLadc presentation
Ladc presentation
 
Model Driven Architecture and eXecutable UML
Model Driven Architecture and eXecutable UMLModel Driven Architecture and eXecutable UML
Model Driven Architecture and eXecutable UML
 
pythonOCC PDE2009 presentation
pythonOCC PDE2009 presentationpythonOCC PDE2009 presentation
pythonOCC PDE2009 presentation
 
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep diveITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
 
Get together on getting more out of typescript & angular 2
Get together on getting more out of typescript & angular 2Get together on getting more out of typescript & angular 2
Get together on getting more out of typescript & angular 2
 
Near real-time anomaly detection at Lyft
Near real-time anomaly detection at LyftNear real-time anomaly detection at Lyft
Near real-time anomaly detection at Lyft
 
Eranea's solution and technology for mainframe migration / transformation : d...
Eranea's solution and technology for mainframe migration / transformation : d...Eranea's solution and technology for mainframe migration / transformation : d...
Eranea's solution and technology for mainframe migration / transformation : d...
 
B08 139 081012 Diapo Masselot En
B08 139 081012 Diapo Masselot EnB08 139 081012 Diapo Masselot En
B08 139 081012 Diapo Masselot En
 
Eclipse Modellng Forums: Looking at the Data
Eclipse Modellng Forums: Looking at the DataEclipse Modellng Forums: Looking at the Data
Eclipse Modellng Forums: Looking at the Data
 
smalltalk numbercrunching
smalltalk numbercrunchingsmalltalk numbercrunching
smalltalk numbercrunching
 
Practical Experiences Migrating Unified Modeling Language Models to IBM® Rati...
PracticalExperiences Migrating Unified Modeling Language Models to IBM® Rati...PracticalExperiences Migrating Unified Modeling Language Models to IBM® Rati...
Practical Experiences Migrating Unified Modeling Language Models to IBM® Rati...
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Dernier (20)

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

Renovating a 15-year old Model-Driven Application

Notes de l'éditeur

  1. This presentation is tcase study about “Transforming a 15 year old model-driven application from C++ to Java”
  2. Let me first give an overview of my presentation.
  3. First I will introduce myself. Then I will describe the assignment that this presentation is about Since the assignment was essentially a renovation of an existing application, I will describe how renovation of old applications is done in general. Next I will describe how we applied different strategies in succession as we learned on the job. Finally I will try to draw some lessons from the experience and mention a number of problems that we did not yet find a good solution for.
  4. What I learned in those 27 years: - Automated procedures as important as programming skills or architecture - Automated build - Version management - Automated deployment - (Automatic unit testing) - Communication and trust within team Specialties: - Software factories 25+ years - used to be new but now more common - Model-driven code generation 10+ years - Agile Development - eXtreme Programming 10+ years - Scrum 3+ years
  5. What was our assignment?
  6. A very succesful mortgage application - 185 screens (or parts of screens) - 100 users - regular quarterly releases - sizeable model: 200.000 lines, 10Mb of XMI Using a proprietary model-driven C++ generator written in C++ Several interfaces to external systems, queues Several native Windows DLL's for complicated calculations
  7. Scarce expertise - model-driven techniques in general - this particular modeler/generator in particular - C++ Dependent on outdated C++ compiler and libraries Modeler/generator maintained but not further developed: dead end Difficult to offshore Wanted: a regular Java webapplication No code generator - dependency on proprietary tool - Current developers where quite happy with the tool and productive
  8. But in our case we had specification in the form of an executable (therefore correct) model. 1) Write a new C++ generator to generate Java - Problem: large conceptual gap to bridge: - C++ to Java (fluency in both needed) - Different architecture - On top of model driven skills 2) Use Mod4J as intermediate model - Smaller conceptual gap - Built-in Java architecture - Based on written reference architecture 3) Migrate model to EMF for productivity - Better tools - Better software factory 4) Mod4J incompatibly architecture - fat client ↔ layering - COOL language everywhere - lazy loading
  9. Want to use EMF - Need an ecore metamodel - Derive from “Class Tree” - Via Enterprise Architect im/export - Generate an export program - Generate our new application - Loading time: 1,5 second - But initially 25 seconds (!) - Need a HashMap for id's
  10. How to maintain the migrated model: - Use EMF tree editor - already quite good - Derive an Xtext grammar from the metamodel - beautify - DSL for “free” - The language is still the same - Familiar for the maintainers