SlideShare a Scribd company logo
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

More Related Content

ODP
Transforming a 15 year old model-driven application from C++ to Java
PDF
Modelling and code generation in .NET at Icinetic
PDF
Multichannel User Interfaces
PDF
MoDisco Eclipse-OMG Symp 2010
PDF
MoDisco EclipseCon2010
PDF
CG2010 Introducing MDSD
PDF
Analyze your software assets with Modisco par Frédéric Madiot
PPTX
Event-driven Model Transformations in Domain-specific Modeling Languages
Transforming a 15 year old model-driven application from C++ to Java
Modelling and code generation in .NET at Icinetic
Multichannel User Interfaces
MoDisco Eclipse-OMG Symp 2010
MoDisco EclipseCon2010
CG2010 Introducing MDSD
Analyze your software assets with Modisco par Frédéric Madiot
Event-driven Model Transformations in Domain-specific Modeling Languages

What's hot (20)

PDF
You need to extend your models? EMF Facet vs. EMF Profiles
PPTX
Industrial and Academic Experiences with a User Interaction Modeling Language...
PDF
Acceleo Code Generation
PDF
5 - Architetture Software - Metamodelling and the Model Driven Architecture
PDF
Understanding Mda
PDF
Model-Driven Software Development
PDF
MDA Architecture - UML modeling Presentation
PDF
Developing and-benchmarking-native-linux-applications-on-android
PDF
Using Model Driven Development to Easily Manage Variations in Software Define...
PDF
German in 7 Million Shared Objects
PDF
QVT & MTL In Eclipse
PPTX
Introduction to architectures based on models, models and metamodels. model d...
PDF
Extending Titanium with native iOS and Android modules
PPTX
Visualize your architecture and information
PPT
Introduction to OSLC
PPT
Introduction to OSLC and Linked Data
PDF
GLSL Shading with OpenSceneGraph
PPT
Animated Transitions between User Interface Views
PDF
Titanium Mobile: flexibility vs. performance
You need to extend your models? EMF Facet vs. EMF Profiles
Industrial and Academic Experiences with a User Interaction Modeling Language...
Acceleo Code Generation
5 - Architetture Software - Metamodelling and the Model Driven Architecture
Understanding Mda
Model-Driven Software Development
MDA Architecture - UML modeling Presentation
Developing and-benchmarking-native-linux-applications-on-android
Using Model Driven Development to Easily Manage Variations in Software Define...
German in 7 Million Shared Objects
QVT & MTL In Eclipse
Introduction to architectures based on models, models and metamodels. model d...
Extending Titanium with native iOS and Android modules
Visualize your architecture and information
Introduction to OSLC
Introduction to OSLC and Linked Data
GLSL Shading with OpenSceneGraph
Animated Transitions between User Interface Views
Titanium Mobile: flexibility vs. performance
Ad

Viewers also liked (20)

PDF
Mission: Impossible --- Purely declarative User Interface Modeling
PDF
Multichannel User Interfaces
PDF
Modeling on the Web
PPTX
Experiences and requirements for a User Interaction Modeling Language
DOCX
Monografia verdadera.doc
PPTX
Parrilla radial shaddai 101.9 fm
PDF
A1305006 zrii benz_club_info
PPTX
UD. DIDÁCTICA: Mercado Laboral
PPSX
Adivinanzasanimales2 110214095305-phpapp02
PPTX
Presentation for fin cap forums2
PPS
Ilusiones opticas
PDF
Leistungsspektrum Testa Motari
RTF
Recent Updated New ResumeJyoti resume
DOCX
King arthur
PDF
Jibia congelada en españa
PPTX
KIMIA PANGAN - PROTEIN/UNIVERSITAS PASUNDAN
PPTX
Tendances et concentrations de compétences dans les nanotechs en France
PDF
La gallina de los huevos de oro
PPT
Oarsoaldea presentación 2013
PPT
Chapter 7
Mission: Impossible --- Purely declarative User Interface Modeling
Multichannel User Interfaces
Modeling on the Web
Experiences and requirements for a User Interaction Modeling Language
Monografia verdadera.doc
Parrilla radial shaddai 101.9 fm
A1305006 zrii benz_club_info
UD. DIDÁCTICA: Mercado Laboral
Adivinanzasanimales2 110214095305-phpapp02
Presentation for fin cap forums2
Ilusiones opticas
Leistungsspektrum Testa Motari
Recent Updated New ResumeJyoti resume
King arthur
Jibia congelada en españa
KIMIA PANGAN - PROTEIN/UNIVERSITAS PASUNDAN
Tendances et concentrations de compétences dans les nanotechs en France
La gallina de los huevos de oro
Oarsoaldea presentación 2013
Chapter 7
Ad

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

PDF
Introducing MDSD
PDF
Model Driven Architecture (MDA): Motivations, Status & Future
PDF
Software Architecture by Reuse, Composition and Customization
PDF
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
PPS
Sig A&D - MDA
PDF
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012
PDF
Model driven software engineering in practice book - Chapter 9 - Model to tex...
PPT
MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...
PPTX
Cg 2011
DOCX
MDD and modeling tools research
PDF
Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...
PDF
OpenTravel Advisory Forum 2012 XML Object Suite Lab
PDF
OpenTravel Model-Driven Schema at IATA
PPTX
UML 2.5: Specification Simplification
PDF
Document Classification using DMX in SQL Server Analysis Services
PPTX
Spy On Your Models, Standard talk at EclipseCon 2011
PDF
From Requirements Management to Release with Git for Android System
PDF
Model-Driven Software Engineering in Practice - Chapter 2 - MDSE Principles
PPT
Model Driven Architectures
PPT
A Model-Driven Approach to Generate External DSLs from Object-Oriented APIs
Introducing MDSD
Model Driven Architecture (MDA): Motivations, Status & Future
Software Architecture by Reuse, Composition and Customization
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
Sig A&D - MDA
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012
Model driven software engineering in practice book - Chapter 9 - Model to tex...
MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...
Cg 2011
MDD and modeling tools research
Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...
OpenTravel Advisory Forum 2012 XML Object Suite Lab
OpenTravel Model-Driven Schema at IATA
UML 2.5: Specification Simplification
Document Classification using DMX in SQL Server Analysis Services
Spy On Your Models, Standard talk at EclipseCon 2011
From Requirements Management to Release with Git for Android System
Model-Driven Software Engineering in Practice - Chapter 2 - MDSE Principles
Model Driven Architectures
A Model-Driven Approach to Generate External DSLs from Object-Oriented APIs

Recently uploaded (20)

PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPT
Teaching material agriculture food technology
PDF
Machine learning based COVID-19 study performance prediction
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
cuic standard and advanced reporting.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Encapsulation theory and applications.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
20250228 LYD VKU AI Blended-Learning.pptx
Review of recent advances in non-invasive hemoglobin estimation
Teaching material agriculture food technology
Machine learning based COVID-19 study performance prediction
MYSQL Presentation for SQL database connectivity
sap open course for s4hana steps from ECC to s4
Chapter 3 Spatial Domain Image Processing.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Spectral efficient network and resource selection model in 5G networks
MIND Revenue Release Quarter 2 2025 Press Release
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
cuic standard and advanced reporting.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Encapsulation theory and applications.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Network Security Unit 5.pdf for BCA BBA.

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