SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
steX bv
About me

                Research                               Industry

¨    software composition           ¨    Independent consultant
                                           (1994-1997, 2008-)
      ¤  objects & aspects                ¤  teach & mentor SE
      ¤  Language engineering             ¤  software architecture
      ¤  (architecture) design            ¤  Scalable design
      ¤  Models                     ¨    e.g. Philips Medical
                                           Systems, Ernst & Young
¨    Industry-as-a-laboratory             MC, Ordina Panfox
      ¤  ASML,   Oce, Siemens, ..   ¨    Ericsson Mobile
                                           Communications (Lund)
Scientific background: ufology
¨    ‘Close encounters’ (Hynek, 1972):
              n    Observations within 500 feet
      1.    Sighting of UFO
      2.    Observation including physical effects of UFO
      3.    Observation of animate beings
      4.    Abduction by UFO (occupants)
      5.    Bilateral contacts
      6.    UFO causes harm (≈2.)
      7.    Mating that produces a
            ‘human-alien hybridisation’
Why Model Driven Development
1.    work at higher abstraction levels
2.    static reasoning about models
3.    generation of repeating code
1. Work at higher abstraction levels
¨    This is better because:
      ¤  Able to express solutions in a form that is closer to
          problem domain
      ¤  Able to ignore (low-level) details

¨    However:
      ¤  This   requires abstracting from some details!
         n  E.g.   platform specifics, implementation details
¨    Works best:
      ¤  For    models that are optimized for a small domain
2. Static reasoning about models
¨    This is better because:
      ¤  Get   better, more precise, feedback early in the process
          n  E.g.   on inconsistencies, deadlocks, resource usage (scheduling)
¨    However:
      ¤  It
           only works for domain-specific models with limited
         expressiveness.
¨    Works best:
      ¤  For   models that represent a particular concern
3. Generation of repeating code
¨    This is better because:
      ¤  ‘boilerplate   code’ is still error-prone and maintenance-
          intensive.
      ¤  Encapsulate domain knowledge in a code generator

¨    However:
      ¤  Transformation-based   approaches have shortcomings
      ¤  Maintaining code generators can be critical (key
          differentiator) but cumbersome.
¨    Works best:
      ¤  Platform-& domain-specifics; common solution patterns
      ¤  when easy to parameterize for specific application
An MDD Example
Physical models for Oce printer Sw.
                     20Sim
                      20Sim
                       20Sim
                  Specification
                   Specification                                     Analysis
                    Specification
                                                                      Report
                     References



                      xADL
                                                     Dependency     Consistency
                                       Transform
                Component Model                        Graph          Check
                    (MO2)



                    Implement/                                       Optimization
                                                      Generate
                     Generate                                         Algorithm




                                                     Optimization
                    C(++)/Java          Weave
                                                     Component
                  Implementation       Monitors
                                                         Impl.



Work by Arjan de Roo                 MOO Control
et.al., for the ESI project         Implementation
Octopus (with Océ)                     Simulink
                                    Hardware Model
Manage complexity in (adaptive)
control software
¨     Make physical models explicit
      ¤    à clean up control software from crosscutting concerns
      ¤    Use domain-specific models (20sim) for expressing these
¨     MO2 architecture description language for combining
       software and physical models
      ¤    Can perform design-time consistency checks (for the
            integrated model)
      ¤    Can generate (multi-objective) optimizer
      ¤    Can weave in monitoring and control ‘hooks’ in the control
            software automatically.
Risks of transformation-based MDD
How to make the model and the code meet
From model to code – 1
¨    Generate all code from
      the model
      ¤  Model  the complete
          system (?)
      ¤  Requires models that can     Transform
          scale                        model to
                                       code
        n  Decompose   into modules
¨    Requires expressive
      (meta-)models
      ¤  Can
            we keep MDD
        advantages?
From model to code – 2

¨    If the meta-model has limited
      expressiveness:
¨    Option 1:
      ¤    Add code fragments to model
            elements
      ¤    ‘weave’ these in to the
            generated code
      ¤    Issues:
            n    what language/formalism
            n    Model-code dependencies
            n    Support for managing the code
            n    May invalidate static reasoning
From model to code – 3
¨    If the meta-model has limited
      expressiveness:
¨    Option 2:
      ¤    Combine generated and
            manual code.
      ¤  Issues:
            n  Granularity
            n  Dependencies
            n  Co-evolution
            n  Inconsistencies
            n  Mayinvalidate static
              reasoning
From model to code – 4




¨    Combine different (meta-)models
      ¤    Each optimized for a domain
¨    Issues:
      ¤    Expressing interfaces
      ¤    How to compose these
            n    Can we add new meta-models?
From model to code – 5




¨    Combine generated code with:
      ¤    Legacy code
      ¤    Custom libraries
¨    Issues:
      ¤    Expressing interfaces
      ¤    How to compose generated
            with other code
Composing generated code
¨  The models that define a single system are never
    independent!
¨  Without a common base:

      ¤  Mutual  dependencies (potentially) among all models
      ¤  These rise exponentially with # of models

¨    Model interference example:
      ¤  Model  I generates some code “increment(logCnt)” for
          every occurrence of “trace()”
      ¤  Model II generates some code “trace(..)” for every
          occurrence of “increment()”.
Bottom-up Model-driven Development
A compositional approach
‘Bottom-up MDD’
¨  Focus on domain-specific abstractions
¨  Separation of concerns

      ¤  E.g.   platform-specific and -independent software
¨    But: in a code-centric approach!
      ¤  The design & code are the models
      ¤  Code is continually refactored to be accurate
          representation of the model (s)
¨    Cf: Agile MDD [Ambler], Domain-Driven design [Evans]

      [goal] à the code is the design is the model
Enabling technology: composition
¨    Ability to separate models and compose them:
      ¤  Various,
                 connected and interleaving, pieces of code
          generated from models
      ¤  Separately designed models, expressed in code


¨    At UT we developed Co-op:
      ¤  a generic composition technology
      ¤  Enables clean separation of concerns
      ¤  Also usable as a target for generating composable
          code from multiple models
Industrial	
  experience	
  (ASML/Ideals)	
  
21	
  


           ¤  4	
  concepts	
  
                              crosscut 	
  the	
  system	
  (-­‐30%	
  of	
  code)	
  
           ¤  error-­‐prone,	
  hard	
  to	
  maintain,	
  ...	
  	
  
                                                         int get_kng(KNG_struct* KNG_ptr)
                                                         {
                                                            const char* func_name = "get_kng";
                                                            int result = OK;

                                                             timing_handle timing_hdl = NULL;

                                                             TIMING_IN;

                                                             trace_in(mod_data.tr_handle, func_name);

                                                             if (result == OK)
                                                             {
                                                                                            primary	
  	
  
                                                                                        funcConality	
  
                                                               /* Retrieve current KNG */
                                                               *KNG_ptr = mod_data.KNG;
                                                             }
                                                             HE(result, "GET_KNG FAILED");

                                                             trace_out(mod_data.tr_handle, func_name, result);

                                                             TIMING_OUT;                              error	
  	
  
                                                                                                      handling	
  
                                                             return result;
                                                         }
Industrial	
  case:	
  approach	
  
22	
  


         ¨    capture	
  the	
  essence	
  of	
  	
  the	
  4	
  concepts	
  
               ¤  separate	
  these	
  into	
  independent	
  abstracCons	
  

               ¤  Use	
  domain-­‐specific	
  specs	
  to	
  describe	
  abstracCons	
  

                                                                    KNG_struct get_kng()
                                                                    {
                                                                        return ( mod_data.KNG);
                                                                    }



                                                                   note:	
  ASML	
  focused	
  first	
  on	
  only	
  one	
  aspect	
  




                                                                      Work carried out by Dürr, Nagy,
                                                                      van Engelen, for the ESI/Senter
                                                                      project Ideals (with ASML)
Limitations of bottom-up approach
¨    static analysis may not be available
      ¤  à perhaps adopt traditional MDD in such a case
      ¤  May be resolved by adding metadata (annotations) to
          the code
         n  But   this requires discipline...
¨  Separation of concerns may be difficult to
    implement
¨  No graphical/visualization of model available

      ¤  &   no domain-specific syntax (but Embedded DSLs can)
Conclusion
Close encounters between code and models

1.    Sighting of UFO
        n       models available before coding à at least core architecture
2.    Observation including physical effects of UFO
         n    code is an implementation of a design model à or: throw-away design
3.    Observation of animate beings
         n    code implemented after models have been analyzed and/or simulated.
4.    Abduction by UFO (occupants)
        n       (partial) code generation from models à reduces maintenance
5.    Bilateral contacts
        n       round-trip engineering à mostly in UML context
6.    UFO causes harm
         n    analysis paralysis
         n    generated code does not work (resources
7.    Mating that produces a human-alien hybridization’
         n    the code *is* the model (and vice versa) à avoid gap
Wrapping up..
¨    MDD can have substantial benefits
      ¤  Butnot always easy to realize
      ¤  Key issues:
         n  partial
                   code generation
         n  combinations of models

¨    Bottom-up MDD: avoid gap between models & code
      ¤  Interesting   alternative unless static model analysis
        available
¨    Composition is an enabling technology
Questions? Comments?

Contenu connexe

Tendances

03 iec t1_s1_oo_ps_session_04
03 iec t1_s1_oo_ps_session_0403 iec t1_s1_oo_ps_session_04
03 iec t1_s1_oo_ps_session_04Niit Care
 
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...Coen De Roover
 
05 iec t1_s1_oo_ps_session_07
05 iec t1_s1_oo_ps_session_0705 iec t1_s1_oo_ps_session_07
05 iec t1_s1_oo_ps_session_07Niit Care
 
Incremental pattern matching in the VIATRA2 model transformation framework
Incremental pattern matching in the VIATRA2 model transformation frameworkIncremental pattern matching in the VIATRA2 model transformation framework
Incremental pattern matching in the VIATRA2 model transformation frameworkIstvan Rath
 
Java Graphics Programming
Java Graphics ProgrammingJava Graphics Programming
Java Graphics ProgrammingRiccardo Cardin
 
07 iec t1_s1_oo_ps_session_10
07 iec t1_s1_oo_ps_session_1007 iec t1_s1_oo_ps_session_10
07 iec t1_s1_oo_ps_session_10Niit Care
 
06 iec t1_s1_oo_ps_session_08
06 iec t1_s1_oo_ps_session_0806 iec t1_s1_oo_ps_session_08
06 iec t1_s1_oo_ps_session_08Niit Care
 
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
 
10 iec t1_s1_oo_ps_session_14
10 iec t1_s1_oo_ps_session_1410 iec t1_s1_oo_ps_session_14
10 iec t1_s1_oo_ps_session_14Niit Care
 
Collaborative modeling and co simulation with destecs - a pilot study
Collaborative modeling and co simulation with destecs - a pilot studyCollaborative modeling and co simulation with destecs - a pilot study
Collaborative modeling and co simulation with destecs - a pilot studyDaniele Gianni
 
Binary code obfuscation through c++ template meta programming
Binary code obfuscation through c++ template meta programmingBinary code obfuscation through c++ template meta programming
Binary code obfuscation through c++ template meta programmingnong_dan
 
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
 
Multiple Choice Questions on JAVA (object oriented programming) bank 7 -- abs...
Multiple Choice Questions on JAVA (object oriented programming) bank 7 -- abs...Multiple Choice Questions on JAVA (object oriented programming) bank 7 -- abs...
Multiple Choice Questions on JAVA (object oriented programming) bank 7 -- abs...Kuntal Bhowmick
 
Multiple Choice Questions on JAVA (object oriented programming) bank 2 -- bas...
Multiple Choice Questions on JAVA (object oriented programming) bank 2 -- bas...Multiple Choice Questions on JAVA (object oriented programming) bank 2 -- bas...
Multiple Choice Questions on JAVA (object oriented programming) bank 2 -- bas...Kuntal Bhowmick
 
Multiple Choice Questions on JAVA (object oriented programming) bank 5 -- mem...
Multiple Choice Questions on JAVA (object oriented programming) bank 5 -- mem...Multiple Choice Questions on JAVA (object oriented programming) bank 5 -- mem...
Multiple Choice Questions on JAVA (object oriented programming) bank 5 -- mem...Kuntal Bhowmick
 
Multiple Choice Questions on JAVA (object oriented programming) bank 4 -- loops
Multiple Choice Questions on JAVA (object oriented programming) bank 4 -- loopsMultiple Choice Questions on JAVA (object oriented programming) bank 4 -- loops
Multiple Choice Questions on JAVA (object oriented programming) bank 4 -- loopsKuntal Bhowmick
 

Tendances (20)

03 iec t1_s1_oo_ps_session_04
03 iec t1_s1_oo_ps_session_0403 iec t1_s1_oo_ps_session_04
03 iec t1_s1_oo_ps_session_04
 
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
 
05 iec t1_s1_oo_ps_session_07
05 iec t1_s1_oo_ps_session_0705 iec t1_s1_oo_ps_session_07
05 iec t1_s1_oo_ps_session_07
 
Incremental pattern matching in the VIATRA2 model transformation framework
Incremental pattern matching in the VIATRA2 model transformation frameworkIncremental pattern matching in the VIATRA2 model transformation framework
Incremental pattern matching in the VIATRA2 model transformation framework
 
Java Graphics Programming
Java Graphics ProgrammingJava Graphics Programming
Java Graphics Programming
 
07 iec t1_s1_oo_ps_session_10
07 iec t1_s1_oo_ps_session_1007 iec t1_s1_oo_ps_session_10
07 iec t1_s1_oo_ps_session_10
 
06 iec t1_s1_oo_ps_session_08
06 iec t1_s1_oo_ps_session_0806 iec t1_s1_oo_ps_session_08
06 iec t1_s1_oo_ps_session_08
 
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
 
10 iec t1_s1_oo_ps_session_14
10 iec t1_s1_oo_ps_session_1410 iec t1_s1_oo_ps_session_14
10 iec t1_s1_oo_ps_session_14
 
SED-ML Presentation
SED-ML PresentationSED-ML Presentation
SED-ML Presentation
 
Collaborative modeling and co simulation with destecs - a pilot study
Collaborative modeling and co simulation with destecs - a pilot studyCollaborative modeling and co simulation with destecs - a pilot study
Collaborative modeling and co simulation with destecs - a pilot study
 
Binary code obfuscation through c++ template meta programming
Binary code obfuscation through c++ template meta programmingBinary code obfuscation through c++ template meta programming
Binary code obfuscation through c++ template meta programming
 
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
 
Extending and scripting PDT
Extending and scripting PDTExtending and scripting PDT
Extending and scripting PDT
 
Multiple Choice Questions on JAVA (object oriented programming) bank 7 -- abs...
Multiple Choice Questions on JAVA (object oriented programming) bank 7 -- abs...Multiple Choice Questions on JAVA (object oriented programming) bank 7 -- abs...
Multiple Choice Questions on JAVA (object oriented programming) bank 7 -- abs...
 
Multiple Choice Questions on JAVA (object oriented programming) bank 2 -- bas...
Multiple Choice Questions on JAVA (object oriented programming) bank 2 -- bas...Multiple Choice Questions on JAVA (object oriented programming) bank 2 -- bas...
Multiple Choice Questions on JAVA (object oriented programming) bank 2 -- bas...
 
Multiple Choice Questions on JAVA (object oriented programming) bank 5 -- mem...
Multiple Choice Questions on JAVA (object oriented programming) bank 5 -- mem...Multiple Choice Questions on JAVA (object oriented programming) bank 5 -- mem...
Multiple Choice Questions on JAVA (object oriented programming) bank 5 -- mem...
 
Multiple Choice Questions on JAVA (object oriented programming) bank 4 -- loops
Multiple Choice Questions on JAVA (object oriented programming) bank 4 -- loopsMultiple Choice Questions on JAVA (object oriented programming) bank 4 -- loops
Multiple Choice Questions on JAVA (object oriented programming) bank 4 -- loops
 
Introduction to VHDL
Introduction to VHDLIntroduction to VHDL
Introduction to VHDL
 
Metaprogramming
MetaprogrammingMetaprogramming
Metaprogramming
 

En vedette

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
 
Software development effort reduction with Co-op
Software development effort reduction with Co-opSoftware development effort reduction with Co-op
Software development effort reduction with Co-oplbergmans
 
Hpl2011.pptx
Hpl2011.pptxHpl2011.pptx
Hpl2011.pptxlbergmans
 
Managing Complexity and Change with Scalable Software Design
Managing Complexity and Change with Scalable Software DesignManaging Complexity and Change with Scalable Software Design
Managing Complexity and Change with Scalable Software Designlbergmans
 
6 basic steps of software development process
6 basic steps of software development process6 basic steps of software development process
6 basic steps of software development processRiant Soft
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your BusinessBarry Feldman
 

En vedette (7)

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
 
Software development effort reduction with Co-op
Software development effort reduction with Co-opSoftware development effort reduction with Co-op
Software development effort reduction with Co-op
 
Hpl2011.pptx
Hpl2011.pptxHpl2011.pptx
Hpl2011.pptx
 
Managing Complexity and Change with Scalable Software Design
Managing Complexity and Change with Scalable Software DesignManaging Complexity and Change with Scalable Software Design
Managing Complexity and Change with Scalable Software Design
 
Unit i software design principles 9
Unit i software design principles 9Unit i software design principles 9
Unit i software design principles 9
 
6 basic steps of software development process
6 basic steps of software development process6 basic steps of software development process
6 basic steps of software development process
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
 

Similaire à Close encounters in MDD: when Models meet Code

C++ Data-flow Parallelism sounds great! But how practical is it? Let’s see ho...
C++ Data-flow Parallelism sounds great! But how practical is it? Let’s see ho...C++ Data-flow Parallelism sounds great! But how practical is it? Let’s see ho...
C++ Data-flow Parallelism sounds great! But how practical is it? Let’s see ho...Jason Hearne-McGuiness
 
Directive-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous ComputingDirective-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous ComputingRuymán Reyes
 
Pragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWarePragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWareMichael Vorburger
 
Code Difference Visualization by a Call Tree
Code Difference Visualization by a Call TreeCode Difference Visualization by a Call Tree
Code Difference Visualization by a Call TreeKamiya Toshihiro
 
Generation of Random EMF Models for Benchmarks
Generation of Random EMF Models for BenchmarksGeneration of Random EMF Models for Benchmarks
Generation of Random EMF Models for BenchmarksMarkus Scheidgen
 
Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"
Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"
Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"Fwdays
 
Extension and Evolution
Extension and EvolutionExtension and Evolution
Extension and EvolutionEelco Visser
 
Agile Modelling Architecture
Agile Modelling ArchitectureAgile Modelling Architecture
Agile Modelling Architecturepierino23
 
Model-based Testing Principles
Model-based Testing PrinciplesModel-based Testing Principles
Model-based Testing PrinciplesHenry Muccini
 
Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)
Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)
Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)Benoit Combemale
 
Fase 2015 - Map-based Transparent Persistence for Very Large Models
Fase 2015 - Map-based Transparent Persistence for Very Large ModelsFase 2015 - Map-based Transparent Persistence for Very Large Models
Fase 2015 - Map-based Transparent Persistence for Very Large Modelsabgolla
 
Dot Net Fundamentals
Dot Net FundamentalsDot Net Fundamentals
Dot Net FundamentalsLiquidHub
 
MODEL-DRIVEN ENGINEERING (MDE) in Practice
MODEL-DRIVEN ENGINEERING (MDE) in PracticeMODEL-DRIVEN ENGINEERING (MDE) in Practice
MODEL-DRIVEN ENGINEERING (MDE) in PracticeHussein Alshkhir
 
Accelerating Spark MLlib and DataFrame with Vector Processor “SX-Aurora TSUBASA”
Accelerating Spark MLlib and DataFrame with Vector Processor “SX-Aurora TSUBASA”Accelerating Spark MLlib and DataFrame with Vector Processor “SX-Aurora TSUBASA”
Accelerating Spark MLlib and DataFrame with Vector Processor “SX-Aurora TSUBASA”Databricks
 
EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!melbats
 
Craftsmanship in Computational Work
Craftsmanship in Computational WorkCraftsmanship in Computational Work
Craftsmanship in Computational WorkYung-Yu Chen
 

Similaire à Close encounters in MDD: when Models meet Code (20)

C++ Data-flow Parallelism sounds great! But how practical is it? Let’s see ho...
C++ Data-flow Parallelism sounds great! But how practical is it? Let’s see ho...C++ Data-flow Parallelism sounds great! But how practical is it? Let’s see ho...
C++ Data-flow Parallelism sounds great! But how practical is it? Let’s see ho...
 
Directive-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous ComputingDirective-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous Computing
 
Pragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWarePragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWare
 
Code Difference Visualization by a Call Tree
Code Difference Visualization by a Call TreeCode Difference Visualization by a Call Tree
Code Difference Visualization by a Call Tree
 
Generation of Random EMF Models for Benchmarks
Generation of Random EMF Models for BenchmarksGeneration of Random EMF Models for Benchmarks
Generation of Random EMF Models for Benchmarks
 
Code generation
Code generationCode generation
Code generation
 
Introducing MDSD
Introducing MDSDIntroducing MDSD
Introducing MDSD
 
Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"
Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"
Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"
 
Extension and Evolution
Extension and EvolutionExtension and Evolution
Extension and Evolution
 
Agile Modelling Architecture
Agile Modelling ArchitectureAgile Modelling Architecture
Agile Modelling Architecture
 
Model-based Testing Principles
Model-based Testing PrinciplesModel-based Testing Principles
Model-based Testing Principles
 
Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)
Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)
Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)
 
IN4308 1
IN4308 1IN4308 1
IN4308 1
 
Fase 2015 - Map-based Transparent Persistence for Very Large Models
Fase 2015 - Map-based Transparent Persistence for Very Large ModelsFase 2015 - Map-based Transparent Persistence for Very Large Models
Fase 2015 - Map-based Transparent Persistence for Very Large Models
 
Dot Net Fundamentals
Dot Net FundamentalsDot Net Fundamentals
Dot Net Fundamentals
 
MODEL-DRIVEN ENGINEERING (MDE) in Practice
MODEL-DRIVEN ENGINEERING (MDE) in PracticeMODEL-DRIVEN ENGINEERING (MDE) in Practice
MODEL-DRIVEN ENGINEERING (MDE) in Practice
 
Accelerating Spark MLlib and DataFrame with Vector Processor “SX-Aurora TSUBASA”
Accelerating Spark MLlib and DataFrame with Vector Processor “SX-Aurora TSUBASA”Accelerating Spark MLlib and DataFrame with Vector Processor “SX-Aurora TSUBASA”
Accelerating Spark MLlib and DataFrame with Vector Processor “SX-Aurora TSUBASA”
 
EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!
 
Craftsmanship in Computational Work
Craftsmanship in Computational WorkCraftsmanship in Computational Work
Craftsmanship in Computational Work
 
MDE in Practice
MDE in PracticeMDE in Practice
MDE in Practice
 

Dernier

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 

Dernier (20)

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 

Close encounters in MDD: when Models meet Code

  • 2. About me Research Industry ¨  software composition ¨  Independent consultant (1994-1997, 2008-) ¤  objects & aspects ¤  teach & mentor SE ¤  Language engineering ¤  software architecture ¤  (architecture) design ¤  Scalable design ¤  Models ¨  e.g. Philips Medical Systems, Ernst & Young ¨  Industry-as-a-laboratory MC, Ordina Panfox ¤  ASML, Oce, Siemens, .. ¨  Ericsson Mobile Communications (Lund)
  • 3. Scientific background: ufology ¨  ‘Close encounters’ (Hynek, 1972): n  Observations within 500 feet 1.  Sighting of UFO 2.  Observation including physical effects of UFO 3.  Observation of animate beings 4.  Abduction by UFO (occupants) 5.  Bilateral contacts 6.  UFO causes harm (≈2.) 7.  Mating that produces a ‘human-alien hybridisation’
  • 4. Why Model Driven Development 1.  work at higher abstraction levels 2.  static reasoning about models 3.  generation of repeating code
  • 5. 1. Work at higher abstraction levels ¨  This is better because: ¤  Able to express solutions in a form that is closer to problem domain ¤  Able to ignore (low-level) details ¨  However: ¤  This requires abstracting from some details! n  E.g. platform specifics, implementation details ¨  Works best: ¤  For models that are optimized for a small domain
  • 6. 2. Static reasoning about models ¨  This is better because: ¤  Get better, more precise, feedback early in the process n  E.g. on inconsistencies, deadlocks, resource usage (scheduling) ¨  However: ¤  It only works for domain-specific models with limited expressiveness. ¨  Works best: ¤  For models that represent a particular concern
  • 7. 3. Generation of repeating code ¨  This is better because: ¤  ‘boilerplate code’ is still error-prone and maintenance- intensive. ¤  Encapsulate domain knowledge in a code generator ¨  However: ¤  Transformation-based approaches have shortcomings ¤  Maintaining code generators can be critical (key differentiator) but cumbersome. ¨  Works best: ¤  Platform-& domain-specifics; common solution patterns ¤  when easy to parameterize for specific application
  • 9. Physical models for Oce printer Sw. 20Sim 20Sim 20Sim Specification Specification Analysis Specification Report References xADL Dependency Consistency Transform Component Model Graph Check (MO2) Implement/ Optimization Generate Generate Algorithm Optimization C(++)/Java Weave Component Implementation Monitors Impl. Work by Arjan de Roo MOO Control et.al., for the ESI project Implementation Octopus (with Océ) Simulink Hardware Model
  • 10. Manage complexity in (adaptive) control software ¨  Make physical models explicit ¤  à clean up control software from crosscutting concerns ¤  Use domain-specific models (20sim) for expressing these ¨  MO2 architecture description language for combining software and physical models ¤  Can perform design-time consistency checks (for the integrated model) ¤  Can generate (multi-objective) optimizer ¤  Can weave in monitoring and control ‘hooks’ in the control software automatically.
  • 11. Risks of transformation-based MDD How to make the model and the code meet
  • 12. From model to code – 1 ¨  Generate all code from the model ¤  Model the complete system (?) ¤  Requires models that can Transform scale model to code n  Decompose into modules ¨  Requires expressive (meta-)models ¤  Can we keep MDD advantages?
  • 13. From model to code – 2 ¨  If the meta-model has limited expressiveness: ¨  Option 1: ¤  Add code fragments to model elements ¤  ‘weave’ these in to the generated code ¤  Issues: n  what language/formalism n  Model-code dependencies n  Support for managing the code n  May invalidate static reasoning
  • 14. From model to code – 3 ¨  If the meta-model has limited expressiveness: ¨  Option 2: ¤  Combine generated and manual code. ¤  Issues: n  Granularity n  Dependencies n  Co-evolution n  Inconsistencies n  Mayinvalidate static reasoning
  • 15. From model to code – 4 ¨  Combine different (meta-)models ¤  Each optimized for a domain ¨  Issues: ¤  Expressing interfaces ¤  How to compose these n  Can we add new meta-models?
  • 16. From model to code – 5 ¨  Combine generated code with: ¤  Legacy code ¤  Custom libraries ¨  Issues: ¤  Expressing interfaces ¤  How to compose generated with other code
  • 17. Composing generated code ¨  The models that define a single system are never independent! ¨  Without a common base: ¤  Mutual dependencies (potentially) among all models ¤  These rise exponentially with # of models ¨  Model interference example: ¤  Model I generates some code “increment(logCnt)” for every occurrence of “trace()” ¤  Model II generates some code “trace(..)” for every occurrence of “increment()”.
  • 18. Bottom-up Model-driven Development A compositional approach
  • 19. ‘Bottom-up MDD’ ¨  Focus on domain-specific abstractions ¨  Separation of concerns ¤  E.g. platform-specific and -independent software ¨  But: in a code-centric approach! ¤  The design & code are the models ¤  Code is continually refactored to be accurate representation of the model (s) ¨  Cf: Agile MDD [Ambler], Domain-Driven design [Evans] [goal] à the code is the design is the model
  • 20. Enabling technology: composition ¨  Ability to separate models and compose them: ¤  Various, connected and interleaving, pieces of code generated from models ¤  Separately designed models, expressed in code ¨  At UT we developed Co-op: ¤  a generic composition technology ¤  Enables clean separation of concerns ¤  Also usable as a target for generating composable code from multiple models
  • 21. Industrial  experience  (ASML/Ideals)   21   ¤  4  concepts   crosscut  the  system  (-­‐30%  of  code)   ¤  error-­‐prone,  hard  to  maintain,  ...     int get_kng(KNG_struct* KNG_ptr) { const char* func_name = "get_kng"; int result = OK; timing_handle timing_hdl = NULL; TIMING_IN; trace_in(mod_data.tr_handle, func_name); if (result == OK) { primary     funcConality   /* Retrieve current KNG */ *KNG_ptr = mod_data.KNG; } HE(result, "GET_KNG FAILED"); trace_out(mod_data.tr_handle, func_name, result); TIMING_OUT; error     handling   return result; }
  • 22. Industrial  case:  approach   22   ¨  capture  the  essence  of    the  4  concepts   ¤  separate  these  into  independent  abstracCons   ¤  Use  domain-­‐specific  specs  to  describe  abstracCons   KNG_struct get_kng() { return ( mod_data.KNG); } note:  ASML  focused  first  on  only  one  aspect   Work carried out by Dürr, Nagy, van Engelen, for the ESI/Senter project Ideals (with ASML)
  • 23. Limitations of bottom-up approach ¨  static analysis may not be available ¤  à perhaps adopt traditional MDD in such a case ¤  May be resolved by adding metadata (annotations) to the code n  But this requires discipline... ¨  Separation of concerns may be difficult to implement ¨  No graphical/visualization of model available ¤  & no domain-specific syntax (but Embedded DSLs can)
  • 25. Close encounters between code and models 1.  Sighting of UFO n  models available before coding à at least core architecture 2.  Observation including physical effects of UFO n  code is an implementation of a design model à or: throw-away design 3.  Observation of animate beings n  code implemented after models have been analyzed and/or simulated. 4.  Abduction by UFO (occupants) n  (partial) code generation from models à reduces maintenance 5.  Bilateral contacts n  round-trip engineering à mostly in UML context 6.  UFO causes harm n  analysis paralysis n  generated code does not work (resources 7.  Mating that produces a human-alien hybridization’ n  the code *is* the model (and vice versa) à avoid gap
  • 26. Wrapping up.. ¨  MDD can have substantial benefits ¤  Butnot always easy to realize ¤  Key issues: n  partial code generation n  combinations of models ¨  Bottom-up MDD: avoid gap between models & code ¤  Interesting alternative unless static model analysis available ¨  Composition is an enabling technology