SlideShare a Scribd company logo
1 of 20
Download to read offline
Model Driven Architecture
► Conceived and sponsored by the OMG
► It's about a IT discipline to use models to automate the
  construction of applications (freely rephrased from the MDA
  User Guide)
► Yes, but what is a model?

► Definition: “a simplified
  representation of a system
  or phenomenon,”




                                                 MDA/EA Forum 2009
The Code is a Model
► It represents high level logical structure
   ► “Repeat until” or “JNE x00ef, x003F” ?


► It hides irrelevant details
   ► Which processors is there beneath?


► Code has always about abstraction:
   ► Machine code -> Assembly -> 3GL -> OO -> Java ->

      WSDL->UML->RuleML->XBRL.. and still proceeding




                                           MDA/EA Forum 2009
A Model is a Code
► Services can be represented by a model
   ► WSDL, language classes..


► Applications can be represented by models
   ► UI, services, components, data model, object model,

     deployment...
► A Model can be run now
   ► Action semantics, BPMN, OCL

   ► OCL is code .. or is it a model?

   ► There are many commercial tools outside there (and

     here too) which this capability
► Models can be checked and transformed … as code
► Models can be tested and debugged … as code
                                              MDA/EA Forum 2009
Models in Electronics
► Models in electronics
  ► Testable before built

  ► Decoupled from electronic

    components
  ► Store the solution as an asset


        • Assets beyond technology
   ►   The value or repeatable tasks
   ►   Reusable across different
       technologies
   ►   Scale across technology generations
                                             Nathalie Moreno and Antonio VallecilloUniversidad
                                             de Málaga




                                                           MDA/EA Forum 2009
Code vs Model, state machine




                          MDA/EA Forum 2009
Code vs Model

[omissis]

try{

if (System.getSecurityManager() == null) {

        System.setSecurityManager(new RMISecurityManager());
                                                        sd Class Model
        }

} catch {/*tech Error handling*/}                          ReqT ype:M yRequester              S ervice:PowerService


try {

PowerService service = (PowerService) Naming.lookup("rmi://" + serverIp+ "/PowerService");

} catch {/*tech Error handling*/}
                                                                          doSom ething(context, 123)
try {

        System.transactionMon(IN, context);

        context=service.doSomething(contex, 123);

        System.transactionMon(OUT, context);

} catch {/* tech and behavioral error handling*/}

[omissis]




                                                                                             MDA/EA Forum 2009
Demystifying modelling approach
► Models do not execute                  ► No MDA projects are in
   ►   False, many solutions exists        productions
► Models generate slow code
                                            ►   False: there are many, check
                                                the OMG web page, ask here
   ►   False: depends only on quality
                                                around
       of the transformations
                                         ► No MDA development tools are
► It's a heavy weight approach
                                           available:
   ►   False, it depends on the             ►   False: check OMG web page
       development process: adopt
                                                or ask here around
       shorter cycles
                                         ► MDA is only for embedded
   ►   False: ”Divide et impera”
                                           systems:
       vertically (functional
       components), horizontally
                                            ►   False: check the OMG web
       (tiers), cross cutting concerns          site for success stories
► The generated code is messy and        ► UML is very large:
  hard to be read                           ►   True: but there is no need to
   ►   Meaningless: there is no                 use all of it's semantics. There
       need to look at the code                 are other languages Forum 2009
                                                                  MDA/EA
Why this general scepticism?
► It due to the mindset of IT software practitioners, it's a matter of:
   ►   Different Viewpoint on the development
   ►   Different Habits
   ►   Late Maturity
   ►   No Confidentiality
   ► Not enough Experience
► Q: "If I do not see a code I feel uncomfortable"
   ►  A: “Have you ever seen the ASM generated by the C++
      compiler? No, right? But you still feel comfortable, and you don't
      debate the quality of the generated code, how comes?
► There shall be no difference if the generated application has not
  introduced any bug and it's adequately fast


                                                           MDA/EA Forum 2009
Agility
► Adjective: “quick and well-coordinated in movement”
   ► Quick: be light, do not have unnecessary load

   ► Well-coordinated: well connected and in-sync


► [..close collaboration between the programmer team and
  business experts; face-to-face communication (as more
  efficient than written documentation); frequent delivery
  of new deployable business value..]
► Quick, assumes the iteration process to be short and lite
► Coordinated: assumes parts are well connected and in
  sync
► How to be agile depends on local capabilities and skills,
  it's a relative term
                                                MDA/EA Forum 2009
Agility in Modelling
► Focus on capturing and fulfilling the functional specifications
  as a runnable application
   ► In MDA, technicalities can be tuned afterwards


► Do not search for the optimal technical architecture right
  from the beginning, accept compromises "the optimum is the
  killer of good"
► Short deployment cycles
   ► Feedbacks have be incorporated back into models quickly

   ► Three weeks for an iteration

   ► New requirement are welcome, but trace them


► Avoid round-trip code<->model, it jeopardizes the agility
► Go for a consistent and integrated MDA tool, avoid spaghetti
  frameworks
                                                     MDA/EA Forum 2009
What to keep in mind
► Model life cycle management
   ►   Models has to drive the development
   ►From requirement to execution in a traced continuum
► What can be done with code has to be, and CAN be done with
  models as well
   ►   Debugging
   ►   Testing
   ►   Validation
   ►   Execution
   ►   Versioning
   ►Deployment
► Models are your assets
   ► Take good care of them
► There is a price to pay...                        MDA/EA Forum 2009
Hurdles
► DO NOT UNDERSTIMATE THE IMPORTANCE OF A
  SOUND FUNCTIONAL MODEL
   ► If a model is a code ...

   ► ...be careful in defining your functional reference

     model, you could soon fall under a messy functional
     model: aka “Spaghetti Model”
► 100% models interoperability across MDA tools is yet to
  be a "default"
   ► An old story: as for C++ compilers


► Re-think the organization of the software re-factory:
   ► People, Processes, Tools


► Bootstrapping the software factory...
                                               MDA/EA Forum 2009
Agile Modelling Architecture
Agile Modelling Architecture

More Related Content

Similar to Agile Modelling Architecture

Advanced MVVM in Windows 8
Advanced MVVM in Windows 8Advanced MVVM in Windows 8
Advanced MVVM in Windows 8
Gill Cleeren
 
Journey from Monolith to a Modularized Application - Approach and Key Learnin...
Journey from Monolith to a Modularized Application - Approach and Key Learnin...Journey from Monolith to a Modularized Application - Approach and Key Learnin...
Journey from Monolith to a Modularized Application - Approach and Key Learnin...
mfrancis
 

Similar to Agile Modelling Architecture (20)

Craftsmanship in Computational Work
Craftsmanship in Computational WorkCraftsmanship in Computational Work
Craftsmanship in Computational Work
 
Code generation
Code generationCode generation
Code generation
 
MDE in Practice
MDE in PracticeMDE in Practice
MDE in Practice
 
Advanced MVVM in Windows 8
Advanced MVVM in Windows 8Advanced MVVM in Windows 8
Advanced MVVM in Windows 8
 
Strata CA 2019: From Jupyter to Production Manu Mukerji
Strata CA 2019: From Jupyter to Production Manu MukerjiStrata CA 2019: From Jupyter to Production Manu Mukerji
Strata CA 2019: From Jupyter to Production Manu Mukerji
 
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
 
Journey from Monolith to a Modularized Application - Approach and Key Learnin...
Journey from Monolith to a Modularized Application - Approach and Key Learnin...Journey from Monolith to a Modularized Application - Approach and Key Learnin...
Journey from Monolith to a Modularized Application - Approach and Key Learnin...
 
Managing xp
Managing xpManaging xp
Managing xp
 
Azure Machine Learning tutorial
Azure Machine Learning tutorialAzure Machine Learning tutorial
Azure Machine Learning tutorial
 
Clone Clone Make: a better way to build
Clone Clone Make: a better way to buildClone Clone Make: a better way to build
Clone Clone Make: a better way to build
 
Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"
 
Dojo 1.0: Great Experiences For Everyone
Dojo 1.0: Great Experiences For EveryoneDojo 1.0: Great Experiences For Everyone
Dojo 1.0: Great Experiences For Everyone
 
Why haven't we stamped out SQL injection and XSS yet
Why haven't we stamped out SQL injection and XSS yetWhy haven't we stamped out SQL injection and XSS yet
Why haven't we stamped out SQL injection and XSS yet
 
Migrate to Microservices Judiciously!
Migrate to Microservices Judiciously!Migrate to Microservices Judiciously!
Migrate to Microservices Judiciously!
 
Making Strongly-typed NETCONF Usable
Making Strongly-typed NETCONF UsableMaking Strongly-typed NETCONF Usable
Making Strongly-typed NETCONF Usable
 
Production Debugging at Code Camp Philly
Production Debugging at Code Camp PhillyProduction Debugging at Code Camp Philly
Production Debugging at Code Camp Philly
 
Project report
Project reportProject report
Project report
 
Pitfalls of machine learning in production
Pitfalls of machine learning in productionPitfalls of machine learning in production
Pitfalls of machine learning in production
 
Asp.Net Mvc Dev Days09
Asp.Net Mvc Dev Days09Asp.Net Mvc Dev Days09
Asp.Net Mvc Dev Days09
 
Aspects of modern APM solutions
Aspects of modern APM solutionsAspects of modern APM solutions
Aspects of modern APM solutions
 

More from pierino23

More from pierino23 (8)

Organizzazione di progetti BPM risks and counter-measures (IT)
Organizzazione di progetti BPM risks and counter-measures (IT)Organizzazione di progetti BPM risks and counter-measures (IT)
Organizzazione di progetti BPM risks and counter-measures (IT)
 
Business and IT alignment, how to escape from the sand-trap
Business and IT alignment, how to escape from the sand-trapBusiness and IT alignment, how to escape from the sand-trap
Business and IT alignment, how to escape from the sand-trap
 
Quando le Architetture di Enterprise arrivano alle Architetture Applicative
Quando le Architetture di Enterprise arrivano alle Architetture ApplicativeQuando le Architetture di Enterprise arrivano alle Architetture Applicative
Quando le Architetture di Enterprise arrivano alle Architetture Applicative
 
Softwaree l\'Ingegneria Civile
Softwaree l\'Ingegneria CivileSoftwaree l\'Ingegneria Civile
Softwaree l\'Ingegneria Civile
 
One Dsl4negotiations Presented
One Dsl4negotiations PresentedOne Dsl4negotiations Presented
One Dsl4negotiations Presented
 
Ferronato Finnegan One Digibiz Long
Ferronato Finnegan One Digibiz LongFerronato Finnegan One Digibiz Long
Ferronato Finnegan One Digibiz Long
 
A model based platform for eProcurements
A model based platform for eProcurementsA model based platform for eProcurements
A model based platform for eProcurements
 
Beyond Service Oriente Architecture
Beyond Service Oriente ArchitectureBeyond Service Oriente Architecture
Beyond Service Oriente Architecture
 

Agile Modelling Architecture

  • 1.
  • 2. Model Driven Architecture ► Conceived and sponsored by the OMG ► It's about a IT discipline to use models to automate the construction of applications (freely rephrased from the MDA User Guide) ► Yes, but what is a model? ► Definition: “a simplified representation of a system or phenomenon,” MDA/EA Forum 2009
  • 3. The Code is a Model ► It represents high level logical structure ► “Repeat until” or “JNE x00ef, x003F” ? ► It hides irrelevant details ► Which processors is there beneath? ► Code has always about abstraction: ► Machine code -> Assembly -> 3GL -> OO -> Java -> WSDL->UML->RuleML->XBRL.. and still proceeding MDA/EA Forum 2009
  • 4. A Model is a Code ► Services can be represented by a model ► WSDL, language classes.. ► Applications can be represented by models ► UI, services, components, data model, object model, deployment... ► A Model can be run now ► Action semantics, BPMN, OCL ► OCL is code .. or is it a model? ► There are many commercial tools outside there (and here too) which this capability ► Models can be checked and transformed … as code ► Models can be tested and debugged … as code MDA/EA Forum 2009
  • 5. Models in Electronics ► Models in electronics ► Testable before built ► Decoupled from electronic components ► Store the solution as an asset • Assets beyond technology ► The value or repeatable tasks ► Reusable across different technologies ► Scale across technology generations Nathalie Moreno and Antonio VallecilloUniversidad de Málaga MDA/EA Forum 2009
  • 6. Code vs Model, state machine MDA/EA Forum 2009
  • 7. Code vs Model [omissis] try{ if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); sd Class Model } } catch {/*tech Error handling*/} ReqT ype:M yRequester S ervice:PowerService try { PowerService service = (PowerService) Naming.lookup("rmi://" + serverIp+ "/PowerService"); } catch {/*tech Error handling*/} doSom ething(context, 123) try { System.transactionMon(IN, context); context=service.doSomething(contex, 123); System.transactionMon(OUT, context); } catch {/* tech and behavioral error handling*/} [omissis] MDA/EA Forum 2009
  • 8. Demystifying modelling approach ► Models do not execute ► No MDA projects are in ► False, many solutions exists productions ► Models generate slow code ► False: there are many, check the OMG web page, ask here ► False: depends only on quality around of the transformations ► No MDA development tools are ► It's a heavy weight approach available: ► False, it depends on the ► False: check OMG web page development process: adopt or ask here around shorter cycles ► MDA is only for embedded ► False: ”Divide et impera” systems: vertically (functional components), horizontally ► False: check the OMG web (tiers), cross cutting concerns site for success stories ► The generated code is messy and ► UML is very large: hard to be read ► True: but there is no need to ► Meaningless: there is no use all of it's semantics. There need to look at the code are other languages Forum 2009 MDA/EA
  • 9. Why this general scepticism? ► It due to the mindset of IT software practitioners, it's a matter of: ► Different Viewpoint on the development ► Different Habits ► Late Maturity ► No Confidentiality ► Not enough Experience ► Q: "If I do not see a code I feel uncomfortable" ► A: “Have you ever seen the ASM generated by the C++ compiler? No, right? But you still feel comfortable, and you don't debate the quality of the generated code, how comes? ► There shall be no difference if the generated application has not introduced any bug and it's adequately fast MDA/EA Forum 2009
  • 10.
  • 11.
  • 12. Agility ► Adjective: “quick and well-coordinated in movement” ► Quick: be light, do not have unnecessary load ► Well-coordinated: well connected and in-sync ► [..close collaboration between the programmer team and business experts; face-to-face communication (as more efficient than written documentation); frequent delivery of new deployable business value..] ► Quick, assumes the iteration process to be short and lite ► Coordinated: assumes parts are well connected and in sync ► How to be agile depends on local capabilities and skills, it's a relative term MDA/EA Forum 2009
  • 13. Agility in Modelling ► Focus on capturing and fulfilling the functional specifications as a runnable application ► In MDA, technicalities can be tuned afterwards ► Do not search for the optimal technical architecture right from the beginning, accept compromises "the optimum is the killer of good" ► Short deployment cycles ► Feedbacks have be incorporated back into models quickly ► Three weeks for an iteration ► New requirement are welcome, but trace them ► Avoid round-trip code<->model, it jeopardizes the agility ► Go for a consistent and integrated MDA tool, avoid spaghetti frameworks MDA/EA Forum 2009
  • 14. What to keep in mind ► Model life cycle management ► Models has to drive the development ►From requirement to execution in a traced continuum ► What can be done with code has to be, and CAN be done with models as well ► Debugging ► Testing ► Validation ► Execution ► Versioning ►Deployment ► Models are your assets ► Take good care of them ► There is a price to pay... MDA/EA Forum 2009
  • 15.
  • 16.
  • 17.
  • 18. Hurdles ► DO NOT UNDERSTIMATE THE IMPORTANCE OF A SOUND FUNCTIONAL MODEL ► If a model is a code ... ► ...be careful in defining your functional reference model, you could soon fall under a messy functional model: aka “Spaghetti Model” ► 100% models interoperability across MDA tools is yet to be a "default" ► An old story: as for C++ compilers ► Re-think the organization of the software re-factory: ► People, Processes, Tools ► Bootstrapping the software factory... MDA/EA Forum 2009