SlideShare a Scribd company logo
1 of 40
Introducing
  Model-Driven
  Software
Development
                   Pedro J. Molina, PhD.
                               Software Engineer
                 Capgemini Spain | Valencia
                              pjmolina@gmail.com
                    http://pjmolina.com/metalevel
Contents

             Objective
             What’s MDSD?
             Why are we doing it?
             How we can apply it?
             CG2010 Program review
             Advices



© MMX Pedro J. Molina, PhD.      2
Objective
     What to expect from CG2010?
            The Europe leading conf. about Code
            Generation
            Focused in practical tools and industrial
            experiences
            A place to find and discuss with the Tool
            Makers
            Probably one of the best places for learn
            and share knowledge about Code
            Generation

     My objective with this session
            Provide an overview to Code Generation
            Provide clues to newcomers to select
            your own path in the conference


 © MMX Pedro J. Molina, PhD.                       3
Professional programmers needed!
The impossible equation (Jean Bézivin)
1.   Slow increase of professionals
        Same trend in next 25 years


2.   Rapid increase of SW to be developed

3.   No way to cope with it

4.   End User Programming
        Example: Visical, Excel
        By DSL, abstraction
        Custom languages


http://mymodelingblog.blogspot.com/2009/08/impossible-equation.html


                            © MMX Pedro J. Molina, PhD.               4
Abstraction Levels
                                                              The entire history of software engineering is
               Application                                    one of rising levels of abstraction (abstraction
                Domain                                        is the primary way we as humans deal with
                                                              complexity).
                                                                                                Grady Booch


                             Models / Specs
Semantic Gap




                                              4GL




                                                                                                          Abstraction level
                                              COBOL / C / Basic / Java


                                                                             Assembler


                                                                                Machine Code


                                               © MMX Pedro J. Molina, PhD.                               5
What’s a Domain?
      Real Time                                             Management
       Systems                                               Systems


    Air Traffic             Luggage
                                                                Insurance
     Control                Tracking
                                                                 Systems
     Systems                Systems



Focused in strict time                                  Focused in structure, data
constrains and tracking                                 and transactions




                          © MMX Pedro J. Molina, PhD.                                6
What’s a Language?
                                                               Declarative
       ∂C(x)        ∂        h2         2C(x)
    ih       = –
        ∂t       2m ∂ x2
  a>b && c==d              John cookies            24          green
                           Phil      fish         32           blue

<CallRecord>
 <caller><number>07713248</number>


Textual                                                          Employee
                                                                   Name
                                                                                    Position
                                                                                   Description    Graphical
                                                                  Address   0..*
                                                                                     Salary
                                                                  Promote            Assign


class Invoice: Document                                                                          Record       Cost min.

{                                                                                                                     ×
    public void Bill()                                                                                     Duration

                                                               Imperative                 Call        DB




                                            © MMX Pedro J. Molina, PhD.                                          7
What is a model?
A model allows
  the description of a family of problems for a domain
  Having the abstraction level carefully selected to:
      Discard irrelevant details (reduce complexity)
                                                                         Source
      Discard constant details (reduce complexity)
      Explicit important details (variables part)            Class                 Relation

                                                                 Properties          Cardinality
What’s a meta-model?                                                      Target
  A model describing model.

                                               Customer                             Credit Card
                                                             1                *




                               © MMX Pedro J. Molina, PhD.                                    8
Some Acronyms
MD* (MDD = MDE = MDSD ⊃ MDA)                         MDSD
MDSD = Model-Driven Software
Development
                                                   MDA   DSLs
MDD = Model Driven Development
MDE = Model Driven Engineering
MDA = Model Driven Architecture
OMG = Object Management Group

DSL = Domain Specific Language
AST = Abstract Syntactic Tree


                     © MMX Pedro J. Molina, PhD.                9
MDD
   Model Driven Development

Definition:
   The usage of Models as the main artefacts
   to Drive the software Development.




                © MMX Pedro J. Molina, PhD.    10
Code Generation
                         Model                  Code      Assets
                                              Generator




Definition:
The automated synthesis of SW assets like
source code, documentation or models using
models as input.




                © MMX Pedro J. Molina, PhD.                        11
Novak’s rule
“Automatic Programming is defined as the
  synthesis of a program from an specification.

  If automatic programming is to be useful, the
  specification must be smaller and easier to
  write than the program would be if written in
  a conventional programming language.”

                                                 G.S. Novak

                   © MMX Pedro J. Molina, PhD.            12
Commonality / Variability
Family of programs
(D. Parnas)

  Common part
    Standard, Fixed.
    Implementable in common & shared base libraries

  Variable part
    Specify in the model
    Can be generated


                    © MMX Pedro J. Molina, PhD.       13
Separation of Concerns (SoC)
Know-How captured in two separated buckets:
What                                        How
 Business Know-How:                           Technological Know-How:
  captured in form of models                      captured & encapsulated in form of
  (specifications): isolated from                 best practices, frameworks,
  technological issues                            templates & code patterns in code
                                                  generators & interpreters.




                               © MMX Pedro J. Molina, PhD.                        14
ROI

Economies of Scale
Economies of Scope
Economics of MDSD

Development Life Cycle Impact
Quality



© MMX Pedro J. Molina, PhD.   15
Economies of Scale
Economies of Scale
   The condition where few inputs, as effort and time, are needed to
   produce big quantities of a unique output. [Wit96]




                                                              But: Can’t be applied to SW!
                                                              Once the SW is produced
                                                              Copy cost is = 0 £!




              Japanese Cookie Factory. Production Line.



                                © MMX Pedro J. Molina, PhD.                              16
© MMX Pedro J. Molina, PhD.   17
Economies of Scope
Economies of Scope
  The condition where few inputs, as effort and time, are
  needed to produce a great variety of outputs. It is
  produced more added value producing in the same line
  different outputs. To produce each output independently
  creates an overcost in the common parts.

  Economy of Scope occurs when the cost of combining two
  or more products in a unique product line is lower than
  producing them independently. [Wit96]




                    © MMX Pedro J. Molina, PhD.             18
MDSD: Economic Model
                                                 Investment
  Domain Engineering


                                                         Feedback:
                                                                 Clients suggestions
Application Development                                          Improvements for the
      Environment                                                development environment




 Application Engineering




      Applications                        ROI (development cost saving)



                           © MMX Pedro J. Molina, PhD.                               19
MDSD: Economic Model
                    Traditional Cost =      N * CT
                    MDD cost         = Inv + N * CF
                                                                                        Saving AF = CT - CF

                    5 CT

                    4 CT
Accumulated costs




                    3 CT


                    2 CT
                                 Inv

                      CT


                                        1         2            3        4           5
                                                               Family members
                                                      © MMX Pedro J. Molina, PhD.                   20
SW Life cycle Impact
More time in analysis and
design tasks
Less time in coding

Less defect, more Quality
Improved productivity
  Order of magnitude

Continuous Integration
Agile development cycles
Less cost

                       © MMX Pedro J. Molina, PhD.   21
Defects Cost and Distribution
                           Traditional life cycle
                           MDD life cycle                        Exponential cost
% Defects                                                   8€
                                                                 of defects




                                                     4€



                           2€

                  1€



               Analysis   Design                 Coding   Maintenance

                           Snow ball effect

                           © MMX Pedro J. Molina, PhD.                     22
Models: some Cases of Use
1. Validation   2. Interpretation               3. Code Generation

  Model             Model                                Model




  Model                                               Code
                 Interpreter
 Checker                                            Generation

                    Runtime                                           Code
                 interpretation
                                                                     Metadata

                                                     Generated          Doc
  Report
                                                       Code             Config.
                                                                         Tests
                                                                             ...

                           © MMX Pedro J. Molina, PhD.                             23
Conceptual Map for Code Generation
Types




                Metamodel                                     Templates
                               Transformations

                              Code Generator
Instances




                      Model                                     Code



             Higher              Abstraction Level                        Lower



                                © MMX Pedro J. Molina, PhD.                       24
Code Generation: Demo
Types




               Metamodel                                     Templates
                              Transformations

                             Code Generator
Instances




                     Model                                     Code



            Higher              Abstraction Level                        Lower



                               © MMX Pedro J. Molina, PhD.                       25
UML/MDA
UML: Unified Modelling Language
  Origins: unified notation (from three
  sources, The Three Amigos)
  OCL: constraint language
  Great acceptation, common language
  for software engineering

MDA: Model Driven Architecture
  MDA = MDSD with UML
  Proposed by OMG
  Profiles
  PIM/PSM
  MOF/XMI


                     © MMX Pedro J. Molina, PhD.   26
Code Generation with UML tools
Types




                      Metamodel                                  Templates
                                  Transformations
Instances




                        Model                                      Code



             Higher                 Abstraction Level                        Lower



                                   © MMX Pedro J. Molina, PhD.                       27
Code Generation with UML/MDA
Usage of UML Models
Extension mechanism:                                      «persistent»
                                                           Customer
  Stereotypes
  Profiles for specialized domains                  «pk» string Id
                                                    «derived» double Balance

Good enough for:
  Structure: class and properties
  State transition diagrams
  (frequent in embedded systems)


                      © MMX Pedro J. Molina, PhD.                              28
Code Generation with UML/MDA
As rich/poor enough as you can express and maintain in UML
“Only a 20% of UML is generally needed for SW development.” Ivar Jacobson
   But: What percent of my problem can such 20% of UML solve?

Metamodel is highly closed
   Only extensible at certain points

Shortcomings
   Symbol and concept overloading
   Not clear Semantics
   Action Language
   Domains not cover by UML: e.g. User Interfaces
   Abuse of profiles Forces models and semantics (One size doesn’t fit
   all)
   Tools: many dialects of XMI Babel’s Tower


                                  © MMX Pedro J. Molina, PhD.         29
DSL
A DSL approach to MDSD give you
full control on the development of
your metamodel
  Powerful
  Better well suited to your needs
  Do it yourself approach


Tools to be built
  Metamodels, editors, model checkers,
  compilers, code generators

   © MMX Pedro J. Molina, PhD.       30
DSL
Internal DSL: Sample LINQ
 var studentPassList = from student in students
                       where student.Score > 500
                       select student;



External DSL: Sample SQL

 SELECT Name, Surname FROM STUDENT
        WHERE Score > 500;



                   © MMX Pedro J. Molina, PhD.     31
Code Generation with EMF
Types




               EMF Metamodel                                    Templates
                                 Transformations
Instances




                     EMF Model                                    Code



            Higher                 Abstraction Level                        Lower



                                  © MMX Pedro J. Molina, PhD.                       32
Code Generation with MS DSL Tools
Types




                DSL Metamodel                                    T4 Templates
                                                      Transformations
Instances




                      DSL Model                                         Code



             Higher                Abstraction Level                            Lower



                                  © MMX Pedro J. Molina, PhD.                           33
Code generation techniques
1. Parse model                                               Input Model



2. In-memory representation
                                                                  Template
   AST / Object Model                              AST



3. Output building
   Free text concatenation
   XSL-T (ouch!)
   Text Template based
                                                         Output code

                     © MMX Pedro J. Molina, PhD.                       34
Tools matters
                           Metamodel(s)
                                                                Reverse
Textual Model Editor
                                                              Engineering
                                                                 Tools
Visual Model Editor
                                  Model(s)
  Model Checker

        IDE


                         Model Transformation

                         M2M                         M2T



                                                   Code
                         Model
                                                  Doc, etc.
                           © MMX Pedro J. Molina, PhD.                35
Who are working in the area?
Eclipse EMF/GMF                               Microsoft
  IBM                                                 DSL Tools
                                                      OSLO (rebranded to Microsoft
  SAP                                                 SQL Server Modeling)

OpenArchitectureware                          MetaCase
  XText                                               MetaEdit+
  Itemis                                      Language workbenches
                                                      Jetbrains MPS
xUML / MDA                                            Spoofax
  Kennedy Carter
                                                      Intentional Workbench
  Blue Age
  Artisan                                             Code Fluent
  AndroMDA                                            Many more
  Olivanova Model Execution                           …
                                                                    Presenting at CG2010

                        © MMX Pedro J. Molina, PhD.                                    36
Programme Review
                 Experience reports
                        Lesson from real MDSD applications


                 Tool tutorials and Hand on Labs
                        Learn to use them


                 Panels and Think Tanks
                        Promote debate and participation
                        about a reference topic


                 Birds of a Feather
                        Informal interest groups on the fly
    © MMX Pedro J. Molina, PhD.                           37
CG2010 Advices
Choose your path
   Parallel tracks
   Split your team
   Check for slides of missing session on the
   conference web

Interact!
   Ask whenever something is not clear to you
   Ask for each dark acronym you found
   Introduce yourself and involve in the
   community
   Do not miss the punting trip!
   Continue the discussion on the community
   site: http://modeldrivensoftware.net/

                         © MMX Pedro J. Molina, PhD.   38
Conclusions
A change in SW development it is needed

MDSD can:
  Provide leverage points to reach new levels of productivity

  Offer a clear path for making real engineering in Computer
  Science




                      © MMX Pedro J. Molina, PhD.          39
Thank you!




Questions?
   © MMX Pedro J. Molina, PhD.   40

More Related Content

What's hot

Industrial and Academic Experiences with a User Interaction Modeling Language...
Industrial and Academic Experiences with a User Interaction Modeling Language...Industrial and Academic Experiences with a User Interaction Modeling Language...
Industrial and Academic Experiences with a User Interaction Modeling Language...Marco Brambilla
 
Model-Driven Software Engineering in Practice - Chapter 1 - Introduction
Model-Driven Software Engineering in Practice - Chapter 1 - IntroductionModel-Driven Software Engineering in Practice - Chapter 1 - Introduction
Model-Driven Software Engineering in Practice - Chapter 1 - IntroductionMarco Brambilla
 
Modelling and code generation in .NET at Icinetic
Modelling and code generation in .NET at IcineticModelling and code generation in .NET at Icinetic
Modelling and code generation in .NET at IcineticPedro J. Molina
 
Event-driven Model Transformations in Domain-specific Modeling Languages
Event-driven Model Transformations in Domain-specific Modeling LanguagesEvent-driven Model Transformations in Domain-specific Modeling Languages
Event-driven Model Transformations in Domain-specific Modeling LanguagesIstvan Rath
 
Real world DSL - making technical and business people speaking the same language
Real world DSL - making technical and business people speaking the same languageReal world DSL - making technical and business people speaking the same language
Real world DSL - making technical and business people speaking the same languageMario Fusco
 
Model-Driven Software Engineering in Practice - Chapter 4 - Model-Driven Arch...
Model-Driven Software Engineering in Practice - Chapter 4 - Model-Driven Arch...Model-Driven Software Engineering in Practice - Chapter 4 - Model-Driven Arch...
Model-Driven Software Engineering in Practice - Chapter 4 - Model-Driven Arch...Jordi Cabot
 
MoDisco EclipseCon2010
MoDisco EclipseCon2010MoDisco EclipseCon2010
MoDisco EclipseCon2010fmadiot
 
Introduction to architectures based on models, models and metamodels. model d...
Introduction to architectures based on models, models and metamodels. model d...Introduction to architectures based on models, models and metamodels. model d...
Introduction to architectures based on models, models and metamodels. model d...Vicente García Díaz
 
Model driven software engineering in practice book - Chapter 9 - Model to tex...
Model driven software engineering in practice book - Chapter 9 - Model to tex...Model driven software engineering in practice book - Chapter 9 - Model to tex...
Model driven software engineering in practice book - Chapter 9 - Model to tex...Marco Brambilla
 
Requirements Engineering - Werkcollege 2012: 04-Documentation
Requirements Engineering - Werkcollege 2012: 04-DocumentationRequirements Engineering - Werkcollege 2012: 04-Documentation
Requirements Engineering - Werkcollege 2012: 04-DocumentationOpenLearningLab
 
Model-Driven Software Engineering in Practice - Chapter 8 - Model-to-model tr...
Model-Driven Software Engineering in Practice - Chapter 8 - Model-to-model tr...Model-Driven Software Engineering in Practice - Chapter 8 - Model-to-model tr...
Model-Driven Software Engineering in Practice - Chapter 8 - Model-to-model tr...Jordi Cabot
 
Animated transitions across UI views
Animated transitions across UI viewsAnimated transitions across UI views
Animated transitions across UI viewsVivian Motti
 
Explicating and Reasoning with Model Uncertainty by Marsha Chechik (ECMFA'14 ...
Explicating and Reasoning with Model Uncertainty by Marsha Chechik (ECMFA'14 ...Explicating and Reasoning with Model Uncertainty by Marsha Chechik (ECMFA'14 ...
Explicating and Reasoning with Model Uncertainty by Marsha Chechik (ECMFA'14 ...Jordi Cabot
 
MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...
MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...
MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...Jordi Cabot
 
Good code-isnt-enough
Good code-isnt-enoughGood code-isnt-enough
Good code-isnt-enoughSkills Matter
 
Extension and Evolution
Extension and EvolutionExtension and Evolution
Extension and EvolutionEelco Visser
 
Model-Driven Software Engineering in Practice - Chapter 10 - Managing models
Model-Driven Software Engineering in Practice - Chapter 10 - Managing modelsModel-Driven Software Engineering in Practice - Chapter 10 - Managing models
Model-Driven Software Engineering in Practice - Chapter 10 - Managing modelsJordi Cabot
 
Software Design Patterns - Selecting the right design pattern
Software Design Patterns - Selecting the right design patternSoftware Design Patterns - Selecting the right design pattern
Software Design Patterns - Selecting the right design patternJoao Pereira
 

What's hot (20)

Industrial and Academic Experiences with a User Interaction Modeling Language...
Industrial and Academic Experiences with a User Interaction Modeling Language...Industrial and Academic Experiences with a User Interaction Modeling Language...
Industrial and Academic Experiences with a User Interaction Modeling Language...
 
Model-Driven Software Engineering in Practice - Chapter 1 - Introduction
Model-Driven Software Engineering in Practice - Chapter 1 - IntroductionModel-Driven Software Engineering in Practice - Chapter 1 - Introduction
Model-Driven Software Engineering in Practice - Chapter 1 - Introduction
 
Modelling and code generation in .NET at Icinetic
Modelling and code generation in .NET at IcineticModelling and code generation in .NET at Icinetic
Modelling and code generation in .NET at Icinetic
 
Event-driven Model Transformations in Domain-specific Modeling Languages
Event-driven Model Transformations in Domain-specific Modeling LanguagesEvent-driven Model Transformations in Domain-specific Modeling Languages
Event-driven Model Transformations in Domain-specific Modeling Languages
 
Real world DSL - making technical and business people speaking the same language
Real world DSL - making technical and business people speaking the same languageReal world DSL - making technical and business people speaking the same language
Real world DSL - making technical and business people speaking the same language
 
Model-Driven Software Engineering in Practice - Chapter 4 - Model-Driven Arch...
Model-Driven Software Engineering in Practice - Chapter 4 - Model-Driven Arch...Model-Driven Software Engineering in Practice - Chapter 4 - Model-Driven Arch...
Model-Driven Software Engineering in Practice - Chapter 4 - Model-Driven Arch...
 
MoDisco EclipseCon2010
MoDisco EclipseCon2010MoDisco EclipseCon2010
MoDisco EclipseCon2010
 
Introduction to architectures based on models, models and metamodels. model d...
Introduction to architectures based on models, models and metamodels. model d...Introduction to architectures based on models, models and metamodels. model d...
Introduction to architectures based on models, models and metamodels. model d...
 
Model driven software engineering in practice book - Chapter 9 - Model to tex...
Model driven software engineering in practice book - Chapter 9 - Model to tex...Model driven software engineering in practice book - Chapter 9 - Model to tex...
Model driven software engineering in practice book - Chapter 9 - Model to tex...
 
Outplacement
OutplacementOutplacement
Outplacement
 
01 mde principles
01 mde principles01 mde principles
01 mde principles
 
Requirements Engineering - Werkcollege 2012: 04-Documentation
Requirements Engineering - Werkcollege 2012: 04-DocumentationRequirements Engineering - Werkcollege 2012: 04-Documentation
Requirements Engineering - Werkcollege 2012: 04-Documentation
 
Model-Driven Software Engineering in Practice - Chapter 8 - Model-to-model tr...
Model-Driven Software Engineering in Practice - Chapter 8 - Model-to-model tr...Model-Driven Software Engineering in Practice - Chapter 8 - Model-to-model tr...
Model-Driven Software Engineering in Practice - Chapter 8 - Model-to-model tr...
 
Animated transitions across UI views
Animated transitions across UI viewsAnimated transitions across UI views
Animated transitions across UI views
 
Explicating and Reasoning with Model Uncertainty by Marsha Chechik (ECMFA'14 ...
Explicating and Reasoning with Model Uncertainty by Marsha Chechik (ECMFA'14 ...Explicating and Reasoning with Model Uncertainty by Marsha Chechik (ECMFA'14 ...
Explicating and Reasoning with Model Uncertainty by Marsha Chechik (ECMFA'14 ...
 
MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...
MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...
MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...
 
Good code-isnt-enough
Good code-isnt-enoughGood code-isnt-enough
Good code-isnt-enough
 
Extension and Evolution
Extension and EvolutionExtension and Evolution
Extension and Evolution
 
Model-Driven Software Engineering in Practice - Chapter 10 - Managing models
Model-Driven Software Engineering in Practice - Chapter 10 - Managing modelsModel-Driven Software Engineering in Practice - Chapter 10 - Managing models
Model-Driven Software Engineering in Practice - Chapter 10 - Managing models
 
Software Design Patterns - Selecting the right design pattern
Software Design Patterns - Selecting the right design patternSoftware Design Patterns - Selecting the right design pattern
Software Design Patterns - Selecting the right design pattern
 

Viewers also liked

Agile MDD
Agile MDDAgile MDD
Agile MDDfntnhd
 
Model-Driven Software Development - Introduction & Overview
Model-Driven Software Development - Introduction & OverviewModel-Driven Software Development - Introduction & Overview
Model-Driven Software Development - Introduction & OverviewEelco Visser
 
Hivepod: Casos de uso en OpenData
Hivepod: Casos de uso en OpenDataHivepod: Casos de uso en OpenData
Hivepod: Casos de uso en OpenDataPedro J. Molina
 
Scaling MDD for production: enabling SoC at model time
Scaling MDD for production: enabling SoC at model timeScaling MDD for production: enabling SoC at model time
Scaling MDD for production: enabling SoC at model timePedro J. Molina
 
Multichannel User Interfaces
Multichannel User InterfacesMultichannel User Interfaces
Multichannel User InterfacesPedro J. Molina
 
Modeling and Code Generation in the Cloud for Citizen Developers and Beyond
Modeling and Code Generation in the Cloud for Citizen Developers and BeyondModeling and Code Generation in the Cloud for Citizen Developers and Beyond
Modeling and Code Generation in the Cloud for Citizen Developers and BeyondPedro J. Molina
 
Introducción a StackOverflow
Introducción a StackOverflowIntroducción a StackOverflow
Introducción a StackOverflowPedro J. Molina
 
MDD: Models, frameworks, & code generation
MDD: Models, frameworks, & code generationMDD: Models, frameworks, & code generation
MDD: Models, frameworks, & code generationPedro J. Molina
 
SVQDC 2017 Tecnologías para Microservicios
SVQDC 2017 Tecnologías para MicroserviciosSVQDC 2017 Tecnologías para Microservicios
SVQDC 2017 Tecnologías para MicroserviciosPedro J. Molina
 
Microservicios sobre MEAN Stack
Microservicios sobre MEAN StackMicroservicios sobre MEAN Stack
Microservicios sobre MEAN StackPedro J. Molina
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microserviciosPedro J. Molina
 
Modelling the User Interface
Modelling the User InterfaceModelling the User Interface
Modelling the User InterfacePedro J. Molina
 
Code Generation for Conceptual User Interface Patterns
Code Generation for Conceptual User Interface PatternsCode Generation for Conceptual User Interface Patterns
Code Generation for Conceptual User Interface PatternsPedro J. Molina
 
The PISA Project: a MDD case study
The PISA Project: a MDD case studyThe PISA Project: a MDD case study
The PISA Project: a MDD case studyPedro J. Molina
 
Opensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackPedro J. Molina
 
MDSD with Eclipse @ JUG Hamburg
MDSD with Eclipse @ JUG HamburgMDSD with Eclipse @ JUG Hamburg
MDSD with Eclipse @ JUG HamburgSebastian Zarnekow
 
Model-Driven Software Development 2.0
Model-Driven Software Development 2.0Model-Driven Software Development 2.0
Model-Driven Software Development 2.0Etienne Juliot
 

Viewers also liked (20)

Agile MDD
Agile MDDAgile MDD
Agile MDD
 
Model-Driven Software Development - Introduction & Overview
Model-Driven Software Development - Introduction & OverviewModel-Driven Software Development - Introduction & Overview
Model-Driven Software Development - Introduction & Overview
 
Hivepod: Casos de uso en OpenData
Hivepod: Casos de uso en OpenDataHivepod: Casos de uso en OpenData
Hivepod: Casos de uso en OpenData
 
Scaling MDD for production: enabling SoC at model time
Scaling MDD for production: enabling SoC at model timeScaling MDD for production: enabling SoC at model time
Scaling MDD for production: enabling SoC at model time
 
Multichannel User Interfaces
Multichannel User InterfacesMultichannel User Interfaces
Multichannel User Interfaces
 
TDD+CI con Teamcity
TDD+CI con TeamcityTDD+CI con Teamcity
TDD+CI con Teamcity
 
Modeling and Code Generation in the Cloud for Citizen Developers and Beyond
Modeling and Code Generation in the Cloud for Citizen Developers and BeyondModeling and Code Generation in the Cloud for Citizen Developers and Beyond
Modeling and Code Generation in the Cloud for Citizen Developers and Beyond
 
Introducción a StackOverflow
Introducción a StackOverflowIntroducción a StackOverflow
Introducción a StackOverflow
 
MDD: Models, frameworks, & code generation
MDD: Models, frameworks, & code generationMDD: Models, frameworks, & code generation
MDD: Models, frameworks, & code generation
 
SVQDC 2017 Tecnologías para Microservicios
SVQDC 2017 Tecnologías para MicroserviciosSVQDC 2017 Tecnologías para Microservicios
SVQDC 2017 Tecnologías para Microservicios
 
Microservicios sobre MEAN Stack
Microservicios sobre MEAN StackMicroservicios sobre MEAN Stack
Microservicios sobre MEAN Stack
 
Modeling on the Web
Modeling on the WebModeling on the Web
Modeling on the Web
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microservicios
 
Modelling the User Interface
Modelling the User InterfaceModelling the User Interface
Modelling the User Interface
 
Code Generation for Conceptual User Interface Patterns
Code Generation for Conceptual User Interface PatternsCode Generation for Conceptual User Interface Patterns
Code Generation for Conceptual User Interface Patterns
 
The PISA Project: a MDD case study
The PISA Project: a MDD case studyThe PISA Project: a MDD case study
The PISA Project: a MDD case study
 
Opensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN Stack
 
MDSD with Eclipse @ JUG Hamburg
MDSD with Eclipse @ JUG HamburgMDSD with Eclipse @ JUG Hamburg
MDSD with Eclipse @ JUG Hamburg
 
Introducción a Angular
Introducción a AngularIntroducción a Angular
Introducción a Angular
 
Model-Driven Software Development 2.0
Model-Driven Software Development 2.0Model-Driven Software Development 2.0
Model-Driven Software Development 2.0
 

Similar to CG2010 Introducing MDSD

Modelling and code generation in .NET at Icinetic
Modelling and code generation in .NET at IcineticModelling and code generation in .NET at Icinetic
Modelling and code generation in .NET at IcineticIcinetic
 
Close encounters in MDD: when Models meet Code
Close encounters in MDD: when Models meet CodeClose encounters in MDD: when Models meet Code
Close encounters in MDD: when Models meet Codelbergmans
 
Close Encounters in MDD: when models meet code
Close Encounters in MDD: when models meet codeClose Encounters in MDD: when models meet code
Close Encounters in MDD: when models meet codelbergmans
 
Lucid IT & UXC Consulting: The Cloud Opportunity: Building on Your Investment...
Lucid IT & UXC Consulting: The Cloud Opportunity: Building on Your Investment...Lucid IT & UXC Consulting: The Cloud Opportunity: Building on Your Investment...
Lucid IT & UXC Consulting: The Cloud Opportunity: Building on Your Investment...j_white
 
MoDisco Eclipse-OMG Symp 2010
MoDisco Eclipse-OMG Symp 2010MoDisco Eclipse-OMG Symp 2010
MoDisco Eclipse-OMG Symp 2010fmadiot
 
Dorado Hybrid Cloud Use Case
Dorado Hybrid Cloud Use CaseDorado Hybrid Cloud Use Case
Dorado Hybrid Cloud Use CaseSVForum Cloud SIG
 
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"GlobalLogic Ukraine
 
Lucid IT & UXC Consulting: The Cloud Opportunity: Building on Your Investment...
Lucid IT & UXC Consulting: The Cloud Opportunity: Building on Your Investment...Lucid IT & UXC Consulting: The Cloud Opportunity: Building on Your Investment...
Lucid IT & UXC Consulting: The Cloud Opportunity: Building on Your Investment...j_white
 
"Domain-Driven Design" Balm on "Legacy" Wound (How DDD helps us to refactor l...
"Domain-Driven Design" Balm on "Legacy" Wound (How DDD helps us to refactor l..."Domain-Driven Design" Balm on "Legacy" Wound (How DDD helps us to refactor l...
"Domain-Driven Design" Balm on "Legacy" Wound (How DDD helps us to refactor l...Ruhollah Delpak
 
"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran
"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran
"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, IranIranian Domain-Driven Design Community
 
20090410 J Spring Pragmatic Model Driven Development In Java Using Smart
20090410   J Spring Pragmatic Model Driven Development In Java Using Smart20090410   J Spring Pragmatic Model Driven Development In Java Using Smart
20090410 J Spring Pragmatic Model Driven Development In Java Using SmartSander Hoogendoorn
 
Databaseconcepts
DatabaseconceptsDatabaseconcepts
Databaseconceptskissumadanu
 
Ectel nods v2
Ectel nods v2Ectel nods v2
Ectel nods v2nodenot
 
NCOIC SCOPE Executive Overview
NCOIC SCOPE Executive OverviewNCOIC SCOPE Executive Overview
NCOIC SCOPE Executive OverviewGovCloud Network
 
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. MolinaACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. MolinaPedro J. Molina
 
Web 2.0 And The End Of DITA
Web 2.0 And The End Of DITAWeb 2.0 And The End Of DITA
Web 2.0 And The End Of DITAJoe Gollner
 
Model-Driven Software Engineering in Practice - Chapter 2 - MDSE Principles
Model-Driven Software Engineering in Practice - Chapter 2 - MDSE PrinciplesModel-Driven Software Engineering in Practice - Chapter 2 - MDSE Principles
Model-Driven Software Engineering in Practice - Chapter 2 - MDSE PrinciplesMarco Brambilla
 
Innovation in model driven software
Innovation in model driven softwareInnovation in model driven software
Innovation in model driven softwareSagi Schliesser
 

Similar to CG2010 Introducing MDSD (20)

Modelling and code generation in .NET at Icinetic
Modelling and code generation in .NET at IcineticModelling and code generation in .NET at Icinetic
Modelling and code generation in .NET at Icinetic
 
Close encounters in MDD: when Models meet Code
Close encounters in MDD: when Models meet CodeClose encounters in MDD: when Models meet Code
Close encounters in MDD: when Models meet Code
 
Close Encounters in MDD: when models meet code
Close Encounters in MDD: when models meet codeClose Encounters in MDD: when models meet code
Close Encounters in MDD: when models meet code
 
Lucid IT & UXC Consulting: The Cloud Opportunity: Building on Your Investment...
Lucid IT & UXC Consulting: The Cloud Opportunity: Building on Your Investment...Lucid IT & UXC Consulting: The Cloud Opportunity: Building on Your Investment...
Lucid IT & UXC Consulting: The Cloud Opportunity: Building on Your Investment...
 
2009-dec-10 Architectuur en HL7
2009-dec-10 Architectuur en HL72009-dec-10 Architectuur en HL7
2009-dec-10 Architectuur en HL7
 
MoDisco Eclipse-OMG Symp 2010
MoDisco Eclipse-OMG Symp 2010MoDisco Eclipse-OMG Symp 2010
MoDisco Eclipse-OMG Symp 2010
 
Dorado Hybrid Cloud Use Case
Dorado Hybrid Cloud Use CaseDorado Hybrid Cloud Use Case
Dorado Hybrid Cloud Use Case
 
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
 
Lucid IT & UXC Consulting: The Cloud Opportunity: Building on Your Investment...
Lucid IT & UXC Consulting: The Cloud Opportunity: Building on Your Investment...Lucid IT & UXC Consulting: The Cloud Opportunity: Building on Your Investment...
Lucid IT & UXC Consulting: The Cloud Opportunity: Building on Your Investment...
 
"Domain-Driven Design" Balm on "Legacy" Wound (How DDD helps us to refactor l...
"Domain-Driven Design" Balm on "Legacy" Wound (How DDD helps us to refactor l..."Domain-Driven Design" Balm on "Legacy" Wound (How DDD helps us to refactor l...
"Domain-Driven Design" Balm on "Legacy" Wound (How DDD helps us to refactor l...
 
"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran
"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran
"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran
 
20090410 J Spring Pragmatic Model Driven Development In Java Using Smart
20090410   J Spring Pragmatic Model Driven Development In Java Using Smart20090410   J Spring Pragmatic Model Driven Development In Java Using Smart
20090410 J Spring Pragmatic Model Driven Development In Java Using Smart
 
Databaseconcepts
DatabaseconceptsDatabaseconcepts
Databaseconcepts
 
Understanding Mda
Understanding MdaUnderstanding Mda
Understanding Mda
 
Ectel nods v2
Ectel nods v2Ectel nods v2
Ectel nods v2
 
NCOIC SCOPE Executive Overview
NCOIC SCOPE Executive OverviewNCOIC SCOPE Executive Overview
NCOIC SCOPE Executive Overview
 
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. MolinaACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
 
Web 2.0 And The End Of DITA
Web 2.0 And The End Of DITAWeb 2.0 And The End Of DITA
Web 2.0 And The End Of DITA
 
Model-Driven Software Engineering in Practice - Chapter 2 - MDSE Principles
Model-Driven Software Engineering in Practice - Chapter 2 - MDSE PrinciplesModel-Driven Software Engineering in Practice - Chapter 2 - MDSE Principles
Model-Driven Software Engineering in Practice - Chapter 2 - MDSE Principles
 
Innovation in model driven software
Innovation in model driven softwareInnovation in model driven software
Innovation in model driven software
 

More from Pedro J. Molina

dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
dotnetMalaga-2020 Gestión de la configuración en aplicaciones WebdotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
dotnetMalaga-2020 Gestión de la configuración en aplicaciones WebPedro J. Molina
 
Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with TerraformPedro J. Molina
 
Essential as the base for Web DSLs
Essential as the base for Web DSLsEssential as the base for Web DSLs
Essential as the base for Web DSLsPedro J. Molina
 
Esencia de Web Components
Esencia de Web ComponentsEsencia de Web Components
Esencia de Web ComponentsPedro J. Molina
 
Esencia de web components
Esencia de web componentsEsencia de web components
Esencia de web componentsPedro J. Molina
 
Securizando por construcción mediante MDE
Securizando por construcción mediante MDESecurizando por construcción mediante MDE
Securizando por construcción mediante MDEPedro J. Molina
 
Building APIs with the OpenApi Spec
Building APIs with the OpenApi SpecBuilding APIs with the OpenApi Spec
Building APIs with the OpenApi SpecPedro J. Molina
 
Micro vs Nano (servicios)
Micro vs Nano (servicios)Micro vs Nano (servicios)
Micro vs Nano (servicios)Pedro J. Molina
 
Diseño de APIs con OpenAPI
Diseño de APIs con OpenAPIDiseño de APIs con OpenAPI
Diseño de APIs con OpenAPIPedro J. Molina
 

More from Pedro J. Molina (15)

MDE en la industria
MDE en la industriaMDE en la industria
MDE en la industria
 
Terraform
TerraformTerraform
Terraform
 
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
dotnetMalaga-2020 Gestión de la configuración en aplicaciones WebdotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
 
Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with Terraform
 
Are Startups for me?
Are Startups for me?Are Startups for me?
Are Startups for me?
 
Meow Demo
Meow DemoMeow Demo
Meow Demo
 
Essential as the base for Web DSLs
Essential as the base for Web DSLsEssential as the base for Web DSLs
Essential as the base for Web DSLs
 
Esencia de Web Components
Esencia de Web ComponentsEsencia de Web Components
Esencia de Web Components
 
Esencia de web components
Esencia de web componentsEsencia de web components
Esencia de web components
 
OpenAPI 3.0.2
OpenAPI 3.0.2OpenAPI 3.0.2
OpenAPI 3.0.2
 
Quid
QuidQuid
Quid
 
Securizando por construcción mediante MDE
Securizando por construcción mediante MDESecurizando por construcción mediante MDE
Securizando por construcción mediante MDE
 
Building APIs with the OpenApi Spec
Building APIs with the OpenApi SpecBuilding APIs with the OpenApi Spec
Building APIs with the OpenApi Spec
 
Micro vs Nano (servicios)
Micro vs Nano (servicios)Micro vs Nano (servicios)
Micro vs Nano (servicios)
 
Diseño de APIs con OpenAPI
Diseño de APIs con OpenAPIDiseño de APIs con OpenAPI
Diseño de APIs con OpenAPI
 

Recently uploaded

SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTSIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTxtailishbaloch
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechProduct School
 
How to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxHow to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxKaustubhBhavsar6
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...DianaGray10
 
March Patch Tuesday
March Patch TuesdayMarch Patch Tuesday
March Patch TuesdayIvanti
 
Planetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kitJamie (Taka) Wang
 
How to release an Open Source Dataweave Library
How to release an Open Source Dataweave LibraryHow to release an Open Source Dataweave Library
How to release an Open Source Dataweave Libraryshyamraj55
 
3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud Data3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud DataEric D. Schabell
 
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxEmil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxNeo4j
 
Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsDianaGray10
 
2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdfThe Good Food Institute
 
From the origin to the future of Open Source model and business
From the origin to the future of  Open Source model and businessFrom the origin to the future of  Open Source model and business
From the origin to the future of Open Source model and businessFrancesco Corti
 
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInOutage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInThousandEyes
 
UiPath Studio Web workshop series - Day 1
UiPath Studio Web workshop series  - Day 1UiPath Studio Web workshop series  - Day 1
UiPath Studio Web workshop series - Day 1DianaGray10
 
UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3DianaGray10
 
Scenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosScenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosErol GIRAUDY
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationKnoldus Inc.
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox
 

Recently uploaded (20)

SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTSIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
 
How to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxHow to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptx
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...
 
March Patch Tuesday
March Patch TuesdayMarch Patch Tuesday
March Patch Tuesday
 
Planetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile Brochure
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kit
 
How to release an Open Source Dataweave Library
How to release an Open Source Dataweave LibraryHow to release an Open Source Dataweave Library
How to release an Open Source Dataweave Library
 
3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud Data3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud Data
 
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxEmil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
 
Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projects
 
2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf
 
From the origin to the future of Open Source model and business
From the origin to the future of  Open Source model and businessFrom the origin to the future of  Open Source model and business
From the origin to the future of Open Source model and business
 
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInOutage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
 
UiPath Studio Web workshop series - Day 1
UiPath Studio Web workshop series  - Day 1UiPath Studio Web workshop series  - Day 1
UiPath Studio Web workshop series - Day 1
 
UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3
 
Scenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosScenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenarios
 
SheDev 2024
SheDev 2024SheDev 2024
SheDev 2024
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its application
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
 

CG2010 Introducing MDSD

  • 1. Introducing Model-Driven Software Development Pedro J. Molina, PhD. Software Engineer Capgemini Spain | Valencia pjmolina@gmail.com http://pjmolina.com/metalevel
  • 2. Contents Objective What’s MDSD? Why are we doing it? How we can apply it? CG2010 Program review Advices © MMX Pedro J. Molina, PhD. 2
  • 3. Objective What to expect from CG2010? The Europe leading conf. about Code Generation Focused in practical tools and industrial experiences A place to find and discuss with the Tool Makers Probably one of the best places for learn and share knowledge about Code Generation My objective with this session Provide an overview to Code Generation Provide clues to newcomers to select your own path in the conference © MMX Pedro J. Molina, PhD. 3
  • 4. Professional programmers needed! The impossible equation (Jean Bézivin) 1. Slow increase of professionals Same trend in next 25 years 2. Rapid increase of SW to be developed 3. No way to cope with it 4. End User Programming Example: Visical, Excel By DSL, abstraction Custom languages http://mymodelingblog.blogspot.com/2009/08/impossible-equation.html © MMX Pedro J. Molina, PhD. 4
  • 5. Abstraction Levels The entire history of software engineering is Application one of rising levels of abstraction (abstraction Domain is the primary way we as humans deal with complexity). Grady Booch Models / Specs Semantic Gap 4GL Abstraction level COBOL / C / Basic / Java Assembler Machine Code © MMX Pedro J. Molina, PhD. 5
  • 6. What’s a Domain? Real Time Management Systems Systems Air Traffic Luggage Insurance Control Tracking Systems Systems Systems Focused in strict time Focused in structure, data constrains and tracking and transactions © MMX Pedro J. Molina, PhD. 6
  • 7. What’s a Language? Declarative ∂C(x) ∂ h2 2C(x) ih = – ∂t 2m ∂ x2 a>b && c==d John cookies 24 green Phil fish 32 blue <CallRecord> <caller><number>07713248</number> Textual Employee Name Position Description Graphical Address 0..* Salary Promote Assign class Invoice: Document Record Cost min. { × public void Bill() Duration Imperative Call DB © MMX Pedro J. Molina, PhD. 7
  • 8. What is a model? A model allows the description of a family of problems for a domain Having the abstraction level carefully selected to: Discard irrelevant details (reduce complexity) Source Discard constant details (reduce complexity) Explicit important details (variables part) Class Relation Properties Cardinality What’s a meta-model? Target A model describing model. Customer Credit Card 1 * © MMX Pedro J. Molina, PhD. 8
  • 9. Some Acronyms MD* (MDD = MDE = MDSD ⊃ MDA) MDSD MDSD = Model-Driven Software Development MDA DSLs MDD = Model Driven Development MDE = Model Driven Engineering MDA = Model Driven Architecture OMG = Object Management Group DSL = Domain Specific Language AST = Abstract Syntactic Tree © MMX Pedro J. Molina, PhD. 9
  • 10. MDD Model Driven Development Definition: The usage of Models as the main artefacts to Drive the software Development. © MMX Pedro J. Molina, PhD. 10
  • 11. Code Generation Model Code Assets Generator Definition: The automated synthesis of SW assets like source code, documentation or models using models as input. © MMX Pedro J. Molina, PhD. 11
  • 12. Novak’s rule “Automatic Programming is defined as the synthesis of a program from an specification. If automatic programming is to be useful, the specification must be smaller and easier to write than the program would be if written in a conventional programming language.” G.S. Novak © MMX Pedro J. Molina, PhD. 12
  • 13. Commonality / Variability Family of programs (D. Parnas) Common part Standard, Fixed. Implementable in common & shared base libraries Variable part Specify in the model Can be generated © MMX Pedro J. Molina, PhD. 13
  • 14. Separation of Concerns (SoC) Know-How captured in two separated buckets: What How Business Know-How: Technological Know-How: captured in form of models captured & encapsulated in form of (specifications): isolated from best practices, frameworks, technological issues templates & code patterns in code generators & interpreters. © MMX Pedro J. Molina, PhD. 14
  • 15. ROI Economies of Scale Economies of Scope Economics of MDSD Development Life Cycle Impact Quality © MMX Pedro J. Molina, PhD. 15
  • 16. Economies of Scale Economies of Scale The condition where few inputs, as effort and time, are needed to produce big quantities of a unique output. [Wit96] But: Can’t be applied to SW! Once the SW is produced Copy cost is = 0 £! Japanese Cookie Factory. Production Line. © MMX Pedro J. Molina, PhD. 16
  • 17. © MMX Pedro J. Molina, PhD. 17
  • 18. Economies of Scope Economies of Scope The condition where few inputs, as effort and time, are needed to produce a great variety of outputs. It is produced more added value producing in the same line different outputs. To produce each output independently creates an overcost in the common parts. Economy of Scope occurs when the cost of combining two or more products in a unique product line is lower than producing them independently. [Wit96] © MMX Pedro J. Molina, PhD. 18
  • 19. MDSD: Economic Model Investment Domain Engineering Feedback: Clients suggestions Application Development Improvements for the Environment development environment Application Engineering Applications ROI (development cost saving) © MMX Pedro J. Molina, PhD. 19
  • 20. MDSD: Economic Model Traditional Cost = N * CT MDD cost = Inv + N * CF Saving AF = CT - CF 5 CT 4 CT Accumulated costs 3 CT 2 CT Inv CT 1 2 3 4 5 Family members © MMX Pedro J. Molina, PhD. 20
  • 21. SW Life cycle Impact More time in analysis and design tasks Less time in coding Less defect, more Quality Improved productivity Order of magnitude Continuous Integration Agile development cycles Less cost © MMX Pedro J. Molina, PhD. 21
  • 22. Defects Cost and Distribution Traditional life cycle MDD life cycle Exponential cost % Defects 8€ of defects 4€ 2€ 1€ Analysis Design Coding Maintenance Snow ball effect © MMX Pedro J. Molina, PhD. 22
  • 23. Models: some Cases of Use 1. Validation 2. Interpretation 3. Code Generation Model Model Model Model Code Interpreter Checker Generation Runtime Code interpretation Metadata Generated Doc Report Code Config. Tests ... © MMX Pedro J. Molina, PhD. 23
  • 24. Conceptual Map for Code Generation Types Metamodel Templates Transformations Code Generator Instances Model Code Higher Abstraction Level Lower © MMX Pedro J. Molina, PhD. 24
  • 25. Code Generation: Demo Types Metamodel Templates Transformations Code Generator Instances Model Code Higher Abstraction Level Lower © MMX Pedro J. Molina, PhD. 25
  • 26. UML/MDA UML: Unified Modelling Language Origins: unified notation (from three sources, The Three Amigos) OCL: constraint language Great acceptation, common language for software engineering MDA: Model Driven Architecture MDA = MDSD with UML Proposed by OMG Profiles PIM/PSM MOF/XMI © MMX Pedro J. Molina, PhD. 26
  • 27. Code Generation with UML tools Types Metamodel Templates Transformations Instances Model Code Higher Abstraction Level Lower © MMX Pedro J. Molina, PhD. 27
  • 28. Code Generation with UML/MDA Usage of UML Models Extension mechanism: «persistent» Customer Stereotypes Profiles for specialized domains «pk» string Id «derived» double Balance Good enough for: Structure: class and properties State transition diagrams (frequent in embedded systems) © MMX Pedro J. Molina, PhD. 28
  • 29. Code Generation with UML/MDA As rich/poor enough as you can express and maintain in UML “Only a 20% of UML is generally needed for SW development.” Ivar Jacobson But: What percent of my problem can such 20% of UML solve? Metamodel is highly closed Only extensible at certain points Shortcomings Symbol and concept overloading Not clear Semantics Action Language Domains not cover by UML: e.g. User Interfaces Abuse of profiles Forces models and semantics (One size doesn’t fit all) Tools: many dialects of XMI Babel’s Tower © MMX Pedro J. Molina, PhD. 29
  • 30. DSL A DSL approach to MDSD give you full control on the development of your metamodel Powerful Better well suited to your needs Do it yourself approach Tools to be built Metamodels, editors, model checkers, compilers, code generators © MMX Pedro J. Molina, PhD. 30
  • 31. DSL Internal DSL: Sample LINQ var studentPassList = from student in students where student.Score > 500 select student; External DSL: Sample SQL SELECT Name, Surname FROM STUDENT WHERE Score > 500; © MMX Pedro J. Molina, PhD. 31
  • 32. Code Generation with EMF Types EMF Metamodel Templates Transformations Instances EMF Model Code Higher Abstraction Level Lower © MMX Pedro J. Molina, PhD. 32
  • 33. Code Generation with MS DSL Tools Types DSL Metamodel T4 Templates Transformations Instances DSL Model Code Higher Abstraction Level Lower © MMX Pedro J. Molina, PhD. 33
  • 34. Code generation techniques 1. Parse model Input Model 2. In-memory representation Template AST / Object Model AST 3. Output building Free text concatenation XSL-T (ouch!) Text Template based Output code © MMX Pedro J. Molina, PhD. 34
  • 35. Tools matters Metamodel(s) Reverse Textual Model Editor Engineering Tools Visual Model Editor Model(s) Model Checker IDE Model Transformation M2M M2T Code Model Doc, etc. © MMX Pedro J. Molina, PhD. 35
  • 36. Who are working in the area? Eclipse EMF/GMF Microsoft IBM DSL Tools OSLO (rebranded to Microsoft SAP SQL Server Modeling) OpenArchitectureware MetaCase XText MetaEdit+ Itemis Language workbenches Jetbrains MPS xUML / MDA Spoofax Kennedy Carter Intentional Workbench Blue Age Artisan Code Fluent AndroMDA Many more Olivanova Model Execution … Presenting at CG2010 © MMX Pedro J. Molina, PhD. 36
  • 37. Programme Review Experience reports Lesson from real MDSD applications Tool tutorials and Hand on Labs Learn to use them Panels and Think Tanks Promote debate and participation about a reference topic Birds of a Feather Informal interest groups on the fly © MMX Pedro J. Molina, PhD. 37
  • 38. CG2010 Advices Choose your path Parallel tracks Split your team Check for slides of missing session on the conference web Interact! Ask whenever something is not clear to you Ask for each dark acronym you found Introduce yourself and involve in the community Do not miss the punting trip! Continue the discussion on the community site: http://modeldrivensoftware.net/ © MMX Pedro J. Molina, PhD. 38
  • 39. Conclusions A change in SW development it is needed MDSD can: Provide leverage points to reach new levels of productivity Offer a clear path for making real engineering in Computer Science © MMX Pedro J. Molina, PhD. 39
  • 40. Thank you! Questions? © MMX Pedro J. Molina, PhD. 40