Modelling and code generation in .NET at Icinetic

Pedro J. Molina
Pedro J. MolinaFounder at Metadev en Metadev
Modelling and Code Generation
on the .NET Platform
       @
           Rubén Jiménez          rjimenez@icinetic.com
                                  @rubenjmarrufo

           Pedro J. Molina, PhD   pjmolina@icinetic.com
                                  @pmolinam
Contents
   Introduction
   History of Microsoft Modeling
   MDSD: Approaches
   MDSD: Reference Framework
   MDSD: Tour of features
   Demos



                       © Icinetic 2012   2
Introduction



 We do MDSD Tools for developers
 Focused on .NET technologies &
  Architecture Services
 HQ in Seville, Spain


                      © Icinetic 2012   3
History of Microsoft Modeling
      2005: First release of MS DSL Tools

      2007: First details about its plans for the “Oslo” project

      2008: First Microsoft “Oslo” CTP

      2009: Visual Studio 2010 V&M SDK Beta

      2010: Microsoft “Oslo” is obliterated

      2010: Visual Studio LightSwitch

      2011: Visual Studio 11 V&M SDK Beta

                  © Icinetic 2012                           4
.NET & MDSD
  Ready to dive?




    © Icinetic 2012   5
MDSD: Choose your path
                                 MDA/UML:
                                  Metamodel is highly closed
      MDSD                        Symbol and concept overloading
                                  Not clear Semantics
                                  Action Language
MDA          DSLs                 Domains not cover by UML
                                  Abuse of profiles
                                  Tools: many dialects of XMI


                                 DSLs:
                                  Cost of DSLs and tools required
                                 to develop with it.



               © Icinetic 2012                                 6
MDSD Reference FWK
                        Metamodel(s)

Textual Model Editor
                                                        Reverse
                                                      Engineering
Visual Model Editor
                               Model(s)
  Model Checker
                                                        Model
                                                      repository
        IDE

                       Model Transformation

                       M2M                 M2T


                                           Code
                       Model
                                          Doc, etc.

                        © Icinetic 2012                        7
Metamodeling
 The analysis, construction and development of the frames, rules,
  constraints, models and theories applicable and useful for
  modeling a predefined class of problems (Wikipedia)
                                                         Source
 Based in CARs
                                               Class             Relation
    Classes / Entities / Objects
                                                Properties         Cardinality
    Attributes / Properties
    Relationships
                                                          Target


 At Icinetic:
                                  Customer                        Credit Card
    MS DSL Tools
                                              1               *
    Essential Meta

                                 © Icinetic 2012                                 8
                                                                                     8
Metamodeling: MS DSL Tools
 Visual Studio Visualization & Modeling SDK.
 Features:
       Graphical meta-modeling.
       Build graphical designers.
       M2T: T4.
       Model validations.
       IDE: Visual Studio.

 Benefits:
     Agile
     Visual

 Drawbacks:
     Generated designers performance:
          “Magnify diagrams and multiply it”: Pascal Recchia.


                                        © Icinetic 2012          9
Metamodeling: Essential
namespace Meta
{
    class MailMessage
    {
         Person From;
         List<Person> To;

         string Subject;
         string Message;
    }

    class Person
    {
        string FullName;
        string Email;
    }
}


                            © Icinetic 2012   10
Metamodeling: Essential META
Essential META                2009     XCore                           2012
namespace org.example.library           package org.example.library
{
  class Book                            class Book
  {                                     {
     string title;
                                            String title
     int pages;
                                            int pages
     List<Writer> authors opposite
books;                                      refers Writer[] authors opposite
  }                                     books
                                        }
    enum BookCategory
    {                                   enum BookCategory
        Mistery,                        {
        ScienceFiction,                     Mistery
        Biography                           ScienceFiction
    }                                       Biography
}
                                        }

                                     © Icinetic 2012                          11
MDSD: Models
                           Metamodel(s)

Textual Model Editor
                                                             Reverse
Visual Model Editor                                        Engineering
                                  Model(s)
  Model Checker
                                                             Model
        IDE                                                repository


                          Model Transformation

                          M2M                       M2T


                                                Code
                          Model
                                               Doc, etc.

                                  © Icinetic 2012                  12
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
                                                                            ...
                             © Icinetic 2012                                      13
Models: 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 (No thanks!)
   Text Template based
                                                 Output code

                         © Icinetic 2012                       14
Models: Parsers
Parsers       License   Url          Grammar Parsing    IDE Strengths
                                     notation algorithm

ANTLR         BSD       www.antlr    EBNF           LL     Yes   Mature & widely
                        .org/
                                                                 used
Irony.Net     MIT       irony.code   BNF            LALR   Yes   Interpreted
                        plex.com/


Gold parser   FW        goldparse    BNF            LALR   No    Supported
                        r.org/
                                                                 languages: more
                                                                 than any other
                                                                 parsing system
Grammatica    GNU       grammati     EBNF           LL     No    Readable generated
                        ca.percede
                        rberg.net/                               parse code


                                      © Icinetic 2012                                 15
MDSD: Editors
                           Metamodel(s)

Textual Model Editor
                                                             Reverse
Visual Model Editor                                        Engineering
                                  Model(s)
  Model Checker                                              Model
                                                           repository
        IDE

                          Model Transformation

                          M2M                       M2T


                                                Code
                          Model
                                               Doc, etc.

                                  © Icinetic 2012                  16
Textual Model Editors
 DDD Textual DSL            Essential Text Editor




                    © Icinetic 2012                   17
Graphical Model Editors
 MS DSL Tools
    WinForms
    WPF


 Custom:
    WinForms
    WPF


 Third party
  tools: Visio,
  EA, etc.

                    © Icinetic 2012   18
Graphical Model Editors
 MS DSL Tools
    WinForms
    WPF


 Custom:
    WinForms
    WPF


 Third party
  tools: Visio,
  EA, etc.

                    © Icinetic 2012   19
Graphical Model Editors
 MS DSL Tools
    WinForms
    WPF


 Custom:
    WinForms
    WPF


 Third party
  tools: Visio,
  EA, etc.

                    © Icinetic 2012   20
Graphical Model Editors
 MS DSL Tools
    WinForms
    WPF


 Custom:
    WinForms
    WPF


 Third party
  tools: Visio,
  EA, etc.

                    © Icinetic 2012   21
Other Model Editors
 Tables




 Trees




           © Icinetic 2012   22
MDSD: Reverse engineering
                        Metamodel(s)

Textual Model Editor
                                                          Reverse
Visual Model Editor                                     Engineering
                               Model(s)
  Model Checker                                           Model
                                                        repository
        IDE

                       Model Transformation

                       M2M                       M2T


                                             Code
                       Model
                                            Doc, etc.

                               © Icinetic 2012                  23
Reverse Engineering
 External assets to model
 Sources:
   Databases
      EDMX Database importer
   Services
      Custom parsers
   Legacy code
      Custom parsers


                        © Icinetic 2012   24
MDSD: Model Checkers
                        Metamodel(s)

Textual Model Editor
                                                          Reverse
Visual Model Editor                                     Engineering
                               Model(s)
  Model Checker
                                                          Model
                                                        repository
        IDE

                       Model Transformation

                       M2M                       M2T


                                             Code
                       Model
                                            Doc, etc.

                               © Icinetic 2012                  25
Model Checkers: Validation Engine

 MS DSL Tools
   AOP
   IDE integration
   Hollywood
    Principle




                      © Icinetic 2012   26
Models Checkers: Validation Engine
 Essential
      AST + Visitor
      Two phase checking
      Syntax check
      Model Merge
      Reference resolver
      Semantic check
      Validation FWK
         Extensible



                            © Icinetic 2012   27
MDSD: Model Repositories
                        Metamodel(s)

Textual Model Editor
                                                          Reverse
Visual Model Editor                                     Engineering
                               Model(s)
  Model Checker
                                                          Model
                                                        repository
        IDE

                       Model Transformation

                       M2M                       M2T


                                             Code
                       Model
                                            Doc, etc.

                               © Icinetic 2012                  28
Model Repositories
 XML serialization to file

 Text serialization to file

 Relational DBMS

 Documental DB / NoSQL




                               © Icinetic 2012   29
Model Repositories
 XML serialization to file

 Text serialization to file

 Relational DBMS

 Documental DB / NoSQL




                               © Icinetic 2012   30
Model Repositories
 XML serialization to file

 Text serialization to file

 Relational DBMS

 Documental DB / NoSQL




                               © Icinetic 2012   31
Model Repositories
 XML serialization to file

 Text serialization to file

 Relational DBMS

 Documental DB / NoSQL




                               © Icinetic 2012   32
MDSD: Transformations
                        Metamodel(s)

Textual Model Editor
                                                          Reverse
Visual Model Editor                                     Engineering
                               Model(s)
  Model Checker                                           Model
                                                        repository
        IDE

                       Model Transformation

                       M2M                       M2T


                                             Code
                       Model
                                            Doc, etc.

                               © Icinetic 2012                  33
Transformations
 M2T
   Free text concatenation
   XSL-T (No thanks!)
   Text Template based
      T4
      StringTemplate
 M2M
   Imperative
   Declarative

                        © Icinetic 2012   34
MDSD: M2T
                          Metamodel(s)

Textual Model Editor
                                                            Reverse
Visual Model Editor                                       Engineering
                                 Model(s)
  Model Checker                                             Model
                                                          repository
        IDE

                         Model Transformation

                         M2M                       M2T


                                               Code
                         Model
                                              Doc, etc.

                                 © Icinetic 2012                  35
M2T: T4 Templates
 Text Template Transformation Toolkit
 Released in 2005 by Microsoft
 Syntax:
    Directives
    Text blocks
    Control blocks
 Usages:
    Standard
    Precompiled: webResponseText=template.TransformText();

                           © Icinetic 2012.                   36
M2T: StringTemplate
 Terrence Parr’s templates                group Templates;

 Dynamic templates                        genMail(msg) ::= <<
                                           From: $msg.From:genRecipient()$
 Strong separation of                     To:   $msg.To:genRecipient();
                                           separator=", "$
  concerns: Model, View
  and Control                              Subject: $msg.Subject$
                                           MESSAGE:
                                           ------------------------------
                                           $msg.Message$
 Good maintanability                      ------------------------------
                                           >>

                                           genRecipient()::= <<
                                           $it.FullName$ <$it.Email$>
                                           >>


                        © Icinetic 2012.                                37
M2T: Template Engines
                          Time to generate 5000 files of 5 Kb of average
                   40

                   35
 T4               30


 StringTemplate
                   25
                                                                            Write File
                   20
                                                                            Generation
 Precompiled T4   15
                                                                            Load/compile
                   10

                    5

                    0
                                T4          StringTemplate T4 Precompiled

                           T4               StringTemplate       Precompiled T4
 Total time (ms)         392.935                 56.483              48.894
 Time(ms)/file           78,587                   11,297              9,779
 Time(ms)/MB            4.066,142               876,654              505,961
 Improvement/T4            base                       x7                 x8

                          © Icinetic 2012                                         38
MDSD: M2M
                          Metamodel(s)

Textual Model Editor
                                                            Reverse
Visual Model Editor                                       Engineering
                                 Model(s)
  Model Checker                                             Model
                                                          repository
        IDE

                         Model Transformation

                         M2M                       M2T


                                               Code
                         Model
                                              Doc, etc.

                                 © Icinetic 2012                  39
M2M: Imperative




     © Icinetic 2012   40
M2M: Imperative




     © Icinetic 2012   41
M2M: Declarative
 Essential TRX
   Rule-based language
   Interpreted




                      © Icinetic 2012   42
MDSD: IDE Integration
                        Metamodel(s)

Textual Model Editor
                                                          Reverse
Visual Model Editor                                     Engineering
                               Model(s)
  Model Checker                                           Model
                                                        repository
        IDE

                       Model Transformation

                       M2M                       M2T


                                             Code
                       Model
                                            Doc, etc.

                               © Icinetic 2012                  43
IDE Integration

1. Model Editors
                                                   VS packages
                            Folders & Projects


2. Model checkers
                           Generated & custom    Errors validation
                            code coexistence


3. Model to Text
                                                 Generated assets
                                                    tracking



                    © Icinetic 2012                                  44
Making sense of it all
 Radarc
   Plug-in on the top of Visual Studio
   Modelling environment and code generation
    packetized by architectures




                      © Icinetic 2012           45
Radarc Formulas
 A Formula is a code                          Formulas available
  generator including:
                                                    ASP.NET WebForms
      Models / DSLs                                ASP.NET MVC
      Editors                                      MVC + Azure
      Traceability rules                           Windows Phone 7
      Best practices                               DDD N-Layered
      Templates

                                                  … and growing

                            © Icinetic 2012                             46
Demo




© Icinetic 2012   47
Conclusions
 Modelling and code generation
  technologies have matured a lot
  in the latest years
 The .NET platform has a strong
  base of tools to make MDSD
  approaches feasible.
 MDSD is not more a luxury, is a
  precision tool. Take profit!

                     © Icinetic 2012   48
Questions &        (might be)   Anwers




        © Icinetic 2012                  49
www.radarc.net
    @RadarcNet


pjmolina.com/essential
                         50
1 de 50

Recomendados

Transforming a 15 year old model-driven application from C++ to Java por
Transforming a 15 year old model-driven application from C++ to JavaTransforming a 15 year old model-driven application from C++ to Java
Transforming a 15 year old model-driven application from C++ to JavaEric Malotaux
3.4K vistas24 diapositivas
Multichannel User Interfaces por
Multichannel User InterfacesMultichannel User Interfaces
Multichannel User InterfacesPedro J. Molina
1.4K vistas44 diapositivas
Introducing MDSD por
Introducing MDSDIntroducing MDSD
Introducing MDSDPedro J. Molina
10.2K vistas41 diapositivas
CG2010 Introducing MDSD por
CG2010 Introducing MDSDCG2010 Introducing MDSD
CG2010 Introducing MDSDPedro J. Molina
1.6K vistas40 diapositivas
Event-driven Model Transformations in Domain-specific Modeling Languages por
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
1.4K vistas58 diapositivas
Model-Driven Software Development por
Model-Driven Software DevelopmentModel-Driven Software Development
Model-Driven Software Developmentelliando dias
1.2K vistas13 diapositivas

Más contenido relacionado

La actualidad más candente

Introduction to architectures based on models, models and metamodels. model d... por
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
1.4K vistas49 diapositivas
A UML profile for OData Web APIs por
A UML profile for OData Web APIsA UML profile for OData Web APIs
A UML profile for OData Web APIsJordi Cabot
2.7K vistas18 diapositivas
Lightweight Model-Driven Engineering por
Lightweight Model-Driven EngineeringLightweight Model-Driven Engineering
Lightweight Model-Driven EngineeringJordi Cabot
3.4K vistas122 diapositivas
Web technologies: Model Driven Engineering por
Web technologies: Model Driven EngineeringWeb technologies: Model Driven Engineering
Web technologies: Model Driven EngineeringPiero Fraternali
5.7K vistas45 diapositivas
Understanding Mda por
Understanding MdaUnderstanding Mda
Understanding MdaAlberto Lagna
562 vistas30 diapositivas
Model driven software engineering in practice book - chapter 7 - Developing y... por
Model driven software engineering in practice book - chapter 7 - Developing y...Model driven software engineering in practice book - chapter 7 - Developing y...
Model driven software engineering in practice book - chapter 7 - Developing y...Marco Brambilla
9.2K vistas123 diapositivas

La actualidad más candente(7)

Introduction to architectures based on models, models and metamodels. model d... por Vicente García Díaz
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íaz1.4K vistas
A UML profile for OData Web APIs por Jordi Cabot
A UML profile for OData Web APIsA UML profile for OData Web APIs
A UML profile for OData Web APIs
Jordi Cabot2.7K vistas
Lightweight Model-Driven Engineering por Jordi Cabot
Lightweight Model-Driven EngineeringLightweight Model-Driven Engineering
Lightweight Model-Driven Engineering
Jordi Cabot3.4K vistas
Web technologies: Model Driven Engineering por Piero Fraternali
Web technologies: Model Driven EngineeringWeb technologies: Model Driven Engineering
Web technologies: Model Driven Engineering
Piero Fraternali5.7K vistas
Model driven software engineering in practice book - chapter 7 - Developing y... por Marco Brambilla
Model driven software engineering in practice book - chapter 7 - Developing y...Model driven software engineering in practice book - chapter 7 - Developing y...
Model driven software engineering in practice book - chapter 7 - Developing y...
Marco Brambilla9.2K vistas
Model-Driven Software Engineering in Practice - Chapter 1 - Introduction por Marco Brambilla
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
Marco Brambilla23.1K vistas

Destacado

Introducción a StackOverflow por
Introducción a StackOverflowIntroducción a StackOverflow
Introducción a StackOverflowPedro J. Molina
803 vistas11 diapositivas
TDD+CI con Teamcity por
TDD+CI con TeamcityTDD+CI con Teamcity
TDD+CI con TeamcityPedro J. Molina
1.4K vistas28 diapositivas
Modeling and Code Generation in the Cloud for Citizen Developers and Beyond por
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
706 vistas13 diapositivas
Scaling MDD for production: enabling SoC at model time por
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
932 vistas45 diapositivas
Hivepod: Casos de uso en OpenData por
Hivepod: Casos de uso en OpenDataHivepod: Casos de uso en OpenData
Hivepod: Casos de uso en OpenDataPedro J. Molina
797 vistas10 diapositivas
MDD: Models, frameworks, & code generation por
MDD: Models, frameworks, & code generationMDD: Models, frameworks, & code generation
MDD: Models, frameworks, & code generationPedro J. Molina
2.9K vistas73 diapositivas

Destacado(16)

Modeling and Code Generation in the Cloud for Citizen Developers and Beyond por Pedro J. Molina
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
Pedro J. Molina706 vistas
Scaling MDD for production: enabling SoC at model time por Pedro J. Molina
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
Pedro J. Molina932 vistas
Hivepod: Casos de uso en OpenData por Pedro J. Molina
Hivepod: Casos de uso en OpenDataHivepod: Casos de uso en OpenData
Hivepod: Casos de uso en OpenData
Pedro J. Molina797 vistas
MDD: Models, frameworks, & code generation por Pedro J. Molina
MDD: Models, frameworks, & code generationMDD: Models, frameworks, & code generation
MDD: Models, frameworks, & code generation
Pedro J. Molina2.9K vistas
SVQDC 2017 Tecnologías para Microservicios por Pedro J. Molina
SVQDC 2017 Tecnologías para MicroserviciosSVQDC 2017 Tecnologías para Microservicios
SVQDC 2017 Tecnologías para Microservicios
Pedro J. Molina1.1K vistas
Microservicios sobre MEAN Stack por Pedro J. Molina
Microservicios sobre MEAN StackMicroservicios sobre MEAN Stack
Microservicios sobre MEAN Stack
Pedro J. Molina1.7K vistas
Tecnologías para microservicios por Pedro J. Molina
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microservicios
Pedro J. Molina3.6K vistas
Modelling the User Interface por Pedro J. Molina
Modelling the User InterfaceModelling the User Interface
Modelling the User Interface
Pedro J. Molina4.5K vistas
Code Generation for Conceptual User Interface Patterns por Pedro J. Molina
Code Generation for Conceptual User Interface PatternsCode Generation for Conceptual User Interface Patterns
Code Generation for Conceptual User Interface Patterns
Pedro J. Molina2.1K vistas
The PISA Project: a MDD case study por Pedro J. Molina
The PISA Project: a MDD case studyThe PISA Project: a MDD case study
The PISA Project: a MDD case study
Pedro J. Molina798 vistas
Opensouthcode: Microservicios sobre MEAN Stack por Pedro J. Molina
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN Stack
Pedro J. Molina1.2K vistas
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!) por Jordi Cabot
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
Jordi Cabot23K vistas

Similar a Modelling and code generation in .NET at Icinetic

MoDisco Eclipse-OMG Symp 2010 por
MoDisco Eclipse-OMG Symp 2010MoDisco Eclipse-OMG Symp 2010
MoDisco Eclipse-OMG Symp 2010fmadiot
926 vistas27 diapositivas
Model Driven Architecture (MDA): Motivations, Status & Future por
Model Driven Architecture (MDA): Motivations, Status & FutureModel Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & Futureelliando dias
3K vistas47 diapositivas
Software Architecture by Reuse, Composition and Customization por
Software Architecture by Reuse, Composition and Customization  Software Architecture by Reuse, Composition and Customization
Software Architecture by Reuse, Composition and Customization Ivano Malavolta
3.2K vistas44 diapositivas
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina por
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
646 vistas41 diapositivas
Sig A&D - MDA por
Sig A&D - MDASig A&D - MDA
Sig A&D - MDADavid Meijers
616 vistas20 diapositivas
Analyze your software assets with Modisco par Frédéric Madiot por
Analyze your software assets with Modisco par Frédéric MadiotAnalyze your software assets with Modisco par Frédéric Madiot
Analyze your software assets with Modisco par Frédéric MadiotEclipseDayParis
516 vistas26 diapositivas

Similar a Modelling and code generation in .NET at Icinetic(20)

MoDisco Eclipse-OMG Symp 2010 por fmadiot
MoDisco Eclipse-OMG Symp 2010MoDisco Eclipse-OMG Symp 2010
MoDisco Eclipse-OMG Symp 2010
fmadiot926 vistas
Model Driven Architecture (MDA): Motivations, Status & Future por elliando dias
Model Driven Architecture (MDA): Motivations, Status & FutureModel Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & Future
elliando dias3K vistas
Software Architecture by Reuse, Composition and Customization por Ivano Malavolta
Software Architecture by Reuse, Composition and Customization  Software Architecture by Reuse, Composition and Customization
Software Architecture by Reuse, Composition and Customization
Ivano Malavolta3.2K vistas
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina por 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
Pedro J. Molina646 vistas
Analyze your software assets with Modisco par Frédéric Madiot por EclipseDayParis
Analyze your software assets with Modisco par Frédéric MadiotAnalyze your software assets with Modisco par Frédéric Madiot
Analyze your software assets with Modisco par Frédéric Madiot
EclipseDayParis516 vistas
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012 por Marc Dutoo
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012
Marc Dutoo1.6K vistas
Model driven software engineering in practice book - Chapter 9 - Model to tex... por Marco Brambilla
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 Brambilla6.2K vistas
MDE 2.0.: pragmatic model verification and other stories - Habilitation publi... por 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...
Jordi Cabot1.4K vistas
Visualize your architecture and information por Peter Norrhall
Visualize your architecture and informationVisualize your architecture and information
Visualize your architecture and information
Peter Norrhall3.8K vistas
Cg 2011 por ClarkTony
Cg 2011Cg 2011
Cg 2011
ClarkTony619 vistas
MDD and modeling tools research por Roger Xia
MDD and modeling tools researchMDD and modeling tools research
MDD and modeling tools research
Roger Xia1.2K vistas
Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R... por Hugo Bruneliere
Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...
Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...
Hugo Bruneliere12.9K vistas
OpenTravel Advisory Forum 2012 XML Object Suite Lab por OpenTravel Alliance
OpenTravel Advisory Forum 2012 XML Object Suite LabOpenTravel Advisory Forum 2012 XML Object Suite Lab
OpenTravel Advisory Forum 2012 XML Object Suite Lab
OpenTravel Alliance2.9K vistas
UML 2.5: Specification Simplification por Ed Seidewitz
UML 2.5: Specification SimplificationUML 2.5: Specification Simplification
UML 2.5: Specification Simplification
Ed Seidewitz6.8K vistas
Document Classification using DMX in SQL Server Analysis Services por Mark Tabladillo
Document Classification using DMX in SQL Server Analysis ServicesDocument Classification using DMX in SQL Server Analysis Services
Document Classification using DMX in SQL Server Analysis Services
Mark Tabladillo1.7K vistas
Spy On Your Models, Standard talk at EclipseCon 2011 por Hugo Bruneliere
Spy On Your Models, Standard talk at EclipseCon 2011Spy On Your Models, Standard talk at EclipseCon 2011
Spy On Your Models, Standard talk at EclipseCon 2011
Hugo Bruneliere916 vistas
From Requirements Management to Release with Git for Android System por Intland Software GmbH
From Requirements Management to Release with Git for Android System From Requirements Management to Release with Git for Android System
From Requirements Management to Release with Git for Android System
Model-Driven Software Engineering in Practice - Chapter 2 - MDSE Principles por Marco Brambilla
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
Marco Brambilla12.1K vistas

Más de Pedro J. Molina

MDE en la industria por
MDE en la industriaMDE en la industria
MDE en la industriaPedro J. Molina
28 vistas55 diapositivas
Terraform por
TerraformTerraform
TerraformPedro J. Molina
5 vistas1 diapositiva
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web por
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
85 vistas20 diapositivas
Infrastructure as Code with Terraform por
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with TerraformPedro J. Molina
51 vistas34 diapositivas
Are Startups for me? por
Are Startups for me?Are Startups for me?
Are Startups for me?Pedro J. Molina
465 vistas18 diapositivas
Meow Demo por
Meow DemoMeow Demo
Meow DemoPedro J. Molina
228 vistas5 diapositivas

Más de Pedro J. Molina(15)

Último

CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T por
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&TCloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&TShapeBlue
112 vistas34 diapositivas
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue por
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlueCloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlueShapeBlue
93 vistas15 diapositivas
Uni Systems for Power Platform.pptx por
Uni Systems for Power Platform.pptxUni Systems for Power Platform.pptx
Uni Systems for Power Platform.pptxUni Systems S.M.S.A.
61 vistas21 diapositivas
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ por
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericConfidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericShapeBlue
88 vistas9 diapositivas
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive por
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLiveAutomating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLiveNetwork Automation Forum
50 vistas35 diapositivas
Network Source of Truth and Infrastructure as Code revisited por
Network Source of Truth and Infrastructure as Code revisitedNetwork Source of Truth and Infrastructure as Code revisited
Network Source of Truth and Infrastructure as Code revisitedNetwork Automation Forum
52 vistas45 diapositivas

Último(20)

CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T por ShapeBlue
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&TCloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
ShapeBlue112 vistas
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue por ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlueCloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
ShapeBlue93 vistas
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ por ShapeBlue
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericConfidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
ShapeBlue88 vistas
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive por Network Automation Forum
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLiveAutomating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive
NTGapps NTG LowCode Platform por Mustafa Kuğu
NTGapps NTG LowCode Platform NTGapps NTG LowCode Platform
NTGapps NTG LowCode Platform
Mustafa Kuğu365 vistas
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N... por James Anderson
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
James Anderson156 vistas
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue por ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlueMigrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
ShapeBlue176 vistas
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f... por TrustArc
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc160 vistas
The Role of Patterns in the Era of Large Language Models por Yunyao Li
The Role of Patterns in the Era of Large Language ModelsThe Role of Patterns in the Era of Large Language Models
The Role of Patterns in the Era of Large Language Models
Yunyao Li80 vistas
DRBD Deep Dive - Philipp Reisner - LINBIT por ShapeBlue
DRBD Deep Dive - Philipp Reisner - LINBITDRBD Deep Dive - Philipp Reisner - LINBIT
DRBD Deep Dive - Philipp Reisner - LINBIT
ShapeBlue140 vistas
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ... por ShapeBlue
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
ShapeBlue144 vistas
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates por ShapeBlue
Keynote Talk: Open Source is Not Dead - Charles Schulz - VatesKeynote Talk: Open Source is Not Dead - Charles Schulz - Vates
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates
ShapeBlue210 vistas
Data Integrity for Banking and Financial Services por Precisely
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial Services
Precisely78 vistas
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... por ShapeBlue
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
ShapeBlue158 vistas
"Surviving highload with Node.js", Andrii Shumada por Fwdays
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada
Fwdays53 vistas
The Power of Heat Decarbonisation Plans in the Built Environment por IES VE
The Power of Heat Decarbonisation Plans in the Built EnvironmentThe Power of Heat Decarbonisation Plans in the Built Environment
The Power of Heat Decarbonisation Plans in the Built Environment
IES VE69 vistas

Modelling and code generation in .NET at Icinetic

  • 1. Modelling and Code Generation on the .NET Platform @ Rubén Jiménez rjimenez@icinetic.com @rubenjmarrufo Pedro J. Molina, PhD pjmolina@icinetic.com @pmolinam
  • 2. Contents  Introduction  History of Microsoft Modeling  MDSD: Approaches  MDSD: Reference Framework  MDSD: Tour of features  Demos © Icinetic 2012 2
  • 3. Introduction  We do MDSD Tools for developers  Focused on .NET technologies & Architecture Services  HQ in Seville, Spain © Icinetic 2012 3
  • 4. History of Microsoft Modeling 2005: First release of MS DSL Tools 2007: First details about its plans for the “Oslo” project 2008: First Microsoft “Oslo” CTP 2009: Visual Studio 2010 V&M SDK Beta 2010: Microsoft “Oslo” is obliterated 2010: Visual Studio LightSwitch 2011: Visual Studio 11 V&M SDK Beta © Icinetic 2012 4
  • 5. .NET & MDSD Ready to dive? © Icinetic 2012 5
  • 6. MDSD: Choose your path MDA/UML:  Metamodel is highly closed MDSD  Symbol and concept overloading  Not clear Semantics  Action Language MDA DSLs  Domains not cover by UML  Abuse of profiles  Tools: many dialects of XMI DSLs:  Cost of DSLs and tools required to develop with it. © Icinetic 2012 6
  • 7. MDSD Reference FWK Metamodel(s) Textual Model Editor Reverse Engineering Visual Model Editor Model(s) Model Checker Model repository IDE Model Transformation M2M M2T Code Model Doc, etc. © Icinetic 2012 7
  • 8. Metamodeling  The analysis, construction and development of the frames, rules, constraints, models and theories applicable and useful for modeling a predefined class of problems (Wikipedia) Source  Based in CARs Class Relation  Classes / Entities / Objects Properties Cardinality  Attributes / Properties  Relationships Target  At Icinetic: Customer Credit Card  MS DSL Tools 1 *  Essential Meta © Icinetic 2012 8 8
  • 9. Metamodeling: MS DSL Tools  Visual Studio Visualization & Modeling SDK.  Features:  Graphical meta-modeling.  Build graphical designers.  M2T: T4.  Model validations.  IDE: Visual Studio.  Benefits:  Agile  Visual  Drawbacks:  Generated designers performance:  “Magnify diagrams and multiply it”: Pascal Recchia. © Icinetic 2012 9
  • 10. Metamodeling: Essential namespace Meta { class MailMessage { Person From; List<Person> To; string Subject; string Message; } class Person { string FullName; string Email; } } © Icinetic 2012 10
  • 11. Metamodeling: Essential META Essential META 2009 XCore 2012 namespace org.example.library package org.example.library { class Book class Book { { string title; String title int pages; int pages List<Writer> authors opposite books; refers Writer[] authors opposite } books } enum BookCategory { enum BookCategory Mistery, { ScienceFiction, Mistery Biography ScienceFiction } Biography } } © Icinetic 2012 11
  • 12. MDSD: Models Metamodel(s) Textual Model Editor Reverse Visual Model Editor Engineering Model(s) Model Checker Model IDE repository Model Transformation M2M M2T Code Model Doc, etc. © Icinetic 2012 12
  • 13. 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 ... © Icinetic 2012 13
  • 14. Models: 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 (No thanks!)  Text Template based Output code © Icinetic 2012 14
  • 15. Models: Parsers Parsers License Url Grammar Parsing IDE Strengths notation algorithm ANTLR BSD www.antlr EBNF LL Yes Mature & widely .org/ used Irony.Net MIT irony.code BNF LALR Yes Interpreted plex.com/ Gold parser FW goldparse BNF LALR No Supported r.org/ languages: more than any other parsing system Grammatica GNU grammati EBNF LL No Readable generated ca.percede rberg.net/ parse code © Icinetic 2012 15
  • 16. MDSD: Editors Metamodel(s) Textual Model Editor Reverse Visual Model Editor Engineering Model(s) Model Checker Model repository IDE Model Transformation M2M M2T Code Model Doc, etc. © Icinetic 2012 16
  • 17. Textual Model Editors  DDD Textual DSL  Essential Text Editor © Icinetic 2012 17
  • 18. Graphical Model Editors  MS DSL Tools  WinForms  WPF  Custom:  WinForms  WPF  Third party tools: Visio, EA, etc. © Icinetic 2012 18
  • 19. Graphical Model Editors  MS DSL Tools  WinForms  WPF  Custom:  WinForms  WPF  Third party tools: Visio, EA, etc. © Icinetic 2012 19
  • 20. Graphical Model Editors  MS DSL Tools  WinForms  WPF  Custom:  WinForms  WPF  Third party tools: Visio, EA, etc. © Icinetic 2012 20
  • 21. Graphical Model Editors  MS DSL Tools  WinForms  WPF  Custom:  WinForms  WPF  Third party tools: Visio, EA, etc. © Icinetic 2012 21
  • 22. Other Model Editors  Tables  Trees © Icinetic 2012 22
  • 23. MDSD: Reverse engineering Metamodel(s) Textual Model Editor Reverse Visual Model Editor Engineering Model(s) Model Checker Model repository IDE Model Transformation M2M M2T Code Model Doc, etc. © Icinetic 2012 23
  • 24. Reverse Engineering  External assets to model  Sources:  Databases  EDMX Database importer  Services  Custom parsers  Legacy code  Custom parsers © Icinetic 2012 24
  • 25. MDSD: Model Checkers Metamodel(s) Textual Model Editor Reverse Visual Model Editor Engineering Model(s) Model Checker Model repository IDE Model Transformation M2M M2T Code Model Doc, etc. © Icinetic 2012 25
  • 26. Model Checkers: Validation Engine  MS DSL Tools  AOP  IDE integration  Hollywood Principle © Icinetic 2012 26
  • 27. Models Checkers: Validation Engine  Essential  AST + Visitor  Two phase checking  Syntax check  Model Merge  Reference resolver  Semantic check  Validation FWK  Extensible © Icinetic 2012 27
  • 28. MDSD: Model Repositories Metamodel(s) Textual Model Editor Reverse Visual Model Editor Engineering Model(s) Model Checker Model repository IDE Model Transformation M2M M2T Code Model Doc, etc. © Icinetic 2012 28
  • 29. Model Repositories  XML serialization to file  Text serialization to file  Relational DBMS  Documental DB / NoSQL © Icinetic 2012 29
  • 30. Model Repositories  XML serialization to file  Text serialization to file  Relational DBMS  Documental DB / NoSQL © Icinetic 2012 30
  • 31. Model Repositories  XML serialization to file  Text serialization to file  Relational DBMS  Documental DB / NoSQL © Icinetic 2012 31
  • 32. Model Repositories  XML serialization to file  Text serialization to file  Relational DBMS  Documental DB / NoSQL © Icinetic 2012 32
  • 33. MDSD: Transformations Metamodel(s) Textual Model Editor Reverse Visual Model Editor Engineering Model(s) Model Checker Model repository IDE Model Transformation M2M M2T Code Model Doc, etc. © Icinetic 2012 33
  • 34. Transformations  M2T  Free text concatenation  XSL-T (No thanks!)  Text Template based  T4  StringTemplate  M2M  Imperative  Declarative © Icinetic 2012 34
  • 35. MDSD: M2T Metamodel(s) Textual Model Editor Reverse Visual Model Editor Engineering Model(s) Model Checker Model repository IDE Model Transformation M2M M2T Code Model Doc, etc. © Icinetic 2012 35
  • 36. M2T: T4 Templates  Text Template Transformation Toolkit  Released in 2005 by Microsoft  Syntax:  Directives  Text blocks  Control blocks  Usages:  Standard  Precompiled: webResponseText=template.TransformText(); © Icinetic 2012. 36
  • 37. M2T: StringTemplate  Terrence Parr’s templates group Templates;  Dynamic templates genMail(msg) ::= << From: $msg.From:genRecipient()$  Strong separation of To: $msg.To:genRecipient(); separator=", "$ concerns: Model, View and Control Subject: $msg.Subject$ MESSAGE: ------------------------------ $msg.Message$  Good maintanability ------------------------------ >> genRecipient()::= << $it.FullName$ <$it.Email$> >> © Icinetic 2012. 37
  • 38. M2T: Template Engines Time to generate 5000 files of 5 Kb of average 40 35  T4 30  StringTemplate 25 Write File 20 Generation  Precompiled T4 15 Load/compile 10 5 0 T4 StringTemplate T4 Precompiled T4 StringTemplate Precompiled T4 Total time (ms) 392.935 56.483 48.894 Time(ms)/file 78,587 11,297 9,779 Time(ms)/MB 4.066,142 876,654 505,961 Improvement/T4 base x7 x8 © Icinetic 2012 38
  • 39. MDSD: M2M Metamodel(s) Textual Model Editor Reverse Visual Model Editor Engineering Model(s) Model Checker Model repository IDE Model Transformation M2M M2T Code Model Doc, etc. © Icinetic 2012 39
  • 40. M2M: Imperative © Icinetic 2012 40
  • 41. M2M: Imperative © Icinetic 2012 41
  • 42. M2M: Declarative  Essential TRX  Rule-based language  Interpreted © Icinetic 2012 42
  • 43. MDSD: IDE Integration Metamodel(s) Textual Model Editor Reverse Visual Model Editor Engineering Model(s) Model Checker Model repository IDE Model Transformation M2M M2T Code Model Doc, etc. © Icinetic 2012 43
  • 44. IDE Integration 1. Model Editors VS packages Folders & Projects 2. Model checkers Generated & custom Errors validation code coexistence 3. Model to Text Generated assets tracking © Icinetic 2012 44
  • 45. Making sense of it all  Radarc  Plug-in on the top of Visual Studio  Modelling environment and code generation packetized by architectures © Icinetic 2012 45
  • 46. Radarc Formulas  A Formula is a code  Formulas available generator including:  ASP.NET WebForms  Models / DSLs  ASP.NET MVC  Editors  MVC + Azure  Traceability rules  Windows Phone 7  Best practices  DDD N-Layered  Templates  … and growing © Icinetic 2012 46
  • 48. Conclusions  Modelling and code generation technologies have matured a lot in the latest years  The .NET platform has a strong base of tools to make MDSD approaches feasible.  MDSD is not more a luxury, is a precision tool. Take profit! © Icinetic 2012 48
  • 49. Questions & (might be) Anwers © Icinetic 2012 49
  • 50. www.radarc.net @RadarcNet pjmolina.com/essential 50