SlideShare a Scribd company logo
Enviar búsqueda
Cargar
Modelling and code generation in .NET at Icinetic
Denunciar
Compartir
Pedro J. Molina
Founder at Metadev en Metadev
Seguir
•
0 recomendaciones
•
924 vistas
1
de
50
Modelling and code generation in .NET at Icinetic
•
0 recomendaciones
•
924 vistas
Denunciar
Compartir
Descargar ahora
Descargar para leer sin conexión
Tecnología
Pedro J. Molina
Founder at Metadev en Metadev
Seguir
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 Java
Eric Malotaux
3.4K vistas
•
24 diapositivas
Multichannel User Interfaces por
Multichannel User Interfaces
Pedro J. Molina
1.4K vistas
•
44 diapositivas
Introducing MDSD por
Introducing MDSD
Pedro J. Molina
10.2K vistas
•
41 diapositivas
CG2010 Introducing MDSD por
CG2010 Introducing MDSD
Pedro J. Molina
1.6K vistas
•
40 diapositivas
Event-driven Model Transformations in Domain-specific Modeling Languages por
Event-driven Model Transformations in Domain-specific Modeling Languages
Istvan Rath
1.4K vistas
•
58 diapositivas
Model-Driven Software Development por
Model-Driven Software Development
elliando dias
1.2K vistas
•
13 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...
Vicente García Díaz
1.4K vistas
•
49 diapositivas
A UML profile for OData Web APIs por
A UML profile for OData Web APIs
Jordi Cabot
2.7K vistas
•
18 diapositivas
Lightweight Model-Driven Engineering por
Lightweight Model-Driven Engineering
Jordi Cabot
3.4K vistas
•
122 diapositivas
Web technologies: Model Driven Engineering por
Web technologies: Model Driven Engineering
Piero Fraternali
5.7K vistas
•
45 diapositivas
Understanding Mda por
Understanding Mda
Alberto Lagna
562 vistas
•
30 diapositivas
Model driven software engineering in practice book - chapter 7 - Developing y... por
Model driven software engineering in practice book - chapter 7 - Developing y...
Marco Brambilla
9.2K vistas
•
123 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...
Vicente García Díaz
•
1.4K vistas
A UML profile for OData Web APIs por Jordi Cabot
A UML profile for OData Web APIs
Jordi Cabot
•
2.7K vistas
Lightweight Model-Driven Engineering por Jordi Cabot
Lightweight Model-Driven Engineering
Jordi Cabot
•
3.4K vistas
Web technologies: Model Driven Engineering por Piero Fraternali
Web technologies: Model Driven Engineering
Piero Fraternali
•
5.7K vistas
Understanding Mda por Alberto Lagna
Understanding Mda
Alberto Lagna
•
562 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...
Marco Brambilla
•
9.2K vistas
Model-Driven Software Engineering in Practice - Chapter 1 - Introduction por Marco Brambilla
Model-Driven Software Engineering in Practice - Chapter 1 - Introduction
Marco Brambilla
•
23.1K vistas
Destacado
Introducción a StackOverflow por
Introducción a StackOverflow
Pedro J. Molina
803 vistas
•
11 diapositivas
TDD+CI con Teamcity por
TDD+CI con Teamcity
Pedro J. Molina
1.4K vistas
•
28 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 Beyond
Pedro J. Molina
706 vistas
•
13 diapositivas
Scaling MDD for production: enabling SoC at model time por
Scaling MDD for production: enabling SoC at model time
Pedro J. Molina
932 vistas
•
45 diapositivas
Hivepod: Casos de uso en OpenData por
Hivepod: Casos de uso en OpenData
Pedro J. Molina
797 vistas
•
10 diapositivas
MDD: Models, frameworks, & code generation por
MDD: Models, frameworks, & code generation
Pedro J. Molina
2.9K vistas
•
73 diapositivas
Destacado
(16)
Introducción a StackOverflow por Pedro J. Molina
Introducción a StackOverflow
Pedro J. Molina
•
803 vistas
TDD+CI con Teamcity por Pedro J. Molina
TDD+CI con Teamcity
Pedro J. Molina
•
1.4K vistas
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 Beyond
Pedro J. Molina
•
706 vistas
Scaling MDD for production: enabling SoC at model time por Pedro J. Molina
Scaling MDD for production: enabling SoC at model time
Pedro J. Molina
•
932 vistas
Hivepod: Casos de uso en OpenData por Pedro J. Molina
Hivepod: Casos de uso en OpenData
Pedro J. Molina
•
797 vistas
MDD: Models, frameworks, & code generation por Pedro J. Molina
MDD: Models, frameworks, & code generation
Pedro J. Molina
•
2.9K vistas
SVQDC 2017 Tecnologías para Microservicios por Pedro J. Molina
SVQDC 2017 Tecnologías para Microservicios
Pedro J. Molina
•
1.1K vistas
Microservicios sobre MEAN Stack por Pedro J. Molina
Microservicios sobre MEAN Stack
Pedro J. Molina
•
1.7K vistas
Modeling on the Web por Pedro J. Molina
Modeling on the Web
Pedro J. Molina
•
1.2K vistas
Tecnologías para microservicios por Pedro J. Molina
Tecnologías para microservicios
Pedro J. Molina
•
3.6K vistas
Modelling the User Interface por Pedro J. Molina
Modelling the User Interface
Pedro J. Molina
•
4.5K vistas
Code Generation for Conceptual User Interface Patterns por Pedro J. Molina
Code Generation for Conceptual User Interface Patterns
Pedro J. Molina
•
2.1K vistas
The PISA Project: a MDD case study por Pedro J. Molina
The PISA Project: a MDD case study
Pedro J. Molina
•
798 vistas
Opensouthcode: Microservicios sobre MEAN Stack por Pedro J. Molina
Opensouthcode: Microservicios sobre MEAN Stack
Pedro J. Molina
•
1.2K vistas
Introducción a Angular por Pedro J. Molina
Introducción a Angular
Pedro J. Molina
•
3.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!)
Jordi Cabot
•
23K vistas
Similar a Modelling and code generation in .NET at Icinetic
MoDisco Eclipse-OMG Symp 2010 por
MoDisco Eclipse-OMG Symp 2010
fmadiot
926 vistas
•
27 diapositivas
Model Driven Architecture (MDA): Motivations, Status & Future por
Model Driven Architecture (MDA): Motivations, Status & Future
elliando dias
3K vistas
•
47 diapositivas
Software Architecture by Reuse, Composition and Customization por
Software Architecture by Reuse, Composition and Customization
Ivano Malavolta
3.2K vistas
•
44 diapositivas
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina por
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
Pedro J. Molina
646 vistas
•
41 diapositivas
Sig A&D - MDA por
Sig A&D - MDA
David Meijers
616 vistas
•
20 diapositivas
Analyze your software assets with Modisco par Frédéric Madiot por
Analyze your software assets with Modisco par Frédéric Madiot
EclipseDayParis
516 vistas
•
26 diapositivas
Similar a Modelling and code generation in .NET at Icinetic
(20)
MoDisco Eclipse-OMG Symp 2010 por fmadiot
MoDisco Eclipse-OMG Symp 2010
fmadiot
•
926 vistas
Model Driven Architecture (MDA): Motivations, Status & Future por elliando dias
Model Driven Architecture (MDA): Motivations, Status & Future
elliando dias
•
3K vistas
Software Architecture by Reuse, Composition and Customization por Ivano Malavolta
Software Architecture by Reuse, Composition and Customization
Ivano Malavolta
•
3.2K vistas
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina por Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
Pedro J. Molina
•
646 vistas
Sig A&D - MDA por David Meijers
Sig A&D - MDA
David Meijers
•
616 vistas
Analyze your software assets with Modisco par Frédéric Madiot por EclipseDayParis
Analyze your software assets with Modisco par Frédéric Madiot
EclipseDayParis
•
516 vistas
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012 por Marc Dutoo
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012
Marc Dutoo
•
1.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...
Marco Brambilla
•
6.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...
Jordi Cabot
•
1.4K vistas
Visualize your architecture and information por Peter Norrhall
Visualize your architecture and information
Peter Norrhall
•
3.8K vistas
Cg 2011 por ClarkTony
Cg 2011
ClarkTony
•
619 vistas
MDD and modeling tools research por Roger Xia
MDD and modeling tools research
Roger Xia
•
1.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...
Hugo Bruneliere
•
12.9K vistas
OpenTravel Advisory Forum 2012 XML Object Suite Lab por OpenTravel Alliance
OpenTravel Advisory Forum 2012 XML Object Suite Lab
OpenTravel Alliance
•
2.9K vistas
OpenTravel Model-Driven Schema at IATA por OpenTravel Alliance
OpenTravel Model-Driven Schema at IATA
OpenTravel Alliance
•
3.8K vistas
UML 2.5: Specification Simplification por Ed Seidewitz
UML 2.5: Specification Simplification
Ed Seidewitz
•
6.8K vistas
Document Classification using DMX in SQL Server Analysis Services por Mark Tabladillo
Document Classification using DMX in SQL Server Analysis Services
Mark Tabladillo
•
1.7K vistas
Spy On Your Models, Standard talk at EclipseCon 2011 por Hugo Bruneliere
Spy On Your Models, Standard talk at EclipseCon 2011
Hugo Bruneliere
•
916 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
Intland Software GmbH
•
1.6K vistas
Model-Driven Software Engineering in Practice - Chapter 2 - MDSE Principles por Marco Brambilla
Model-Driven Software Engineering in Practice - Chapter 2 - MDSE Principles
Marco Brambilla
•
12.1K vistas
Más de Pedro J. Molina
MDE en la industria por
MDE en la industria
Pedro J. Molina
28 vistas
•
55 diapositivas
Terraform por
Terraform
Pedro J. Molina
5 vistas
•
1 diapositiva
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web por
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
Pedro J. Molina
85 vistas
•
20 diapositivas
Infrastructure as Code with Terraform por
Infrastructure as Code with Terraform
Pedro J. Molina
51 vistas
•
34 diapositivas
Are Startups for me? por
Are Startups for me?
Pedro J. Molina
465 vistas
•
18 diapositivas
Meow Demo por
Meow Demo
Pedro J. Molina
228 vistas
•
5 diapositivas
Más de Pedro J. Molina
(15)
MDE en la industria por Pedro J. Molina
MDE en la industria
Pedro J. Molina
•
28 vistas
Terraform por Pedro J. Molina
Terraform
Pedro J. Molina
•
5 vistas
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web por Pedro J. Molina
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
Pedro J. Molina
•
85 vistas
Infrastructure as Code with Terraform por Pedro J. Molina
Infrastructure as Code with Terraform
Pedro J. Molina
•
51 vistas
Are Startups for me? por Pedro J. Molina
Are Startups for me?
Pedro J. Molina
•
465 vistas
Meow Demo por Pedro J. Molina
Meow Demo
Pedro J. Molina
•
228 vistas
Essential as the base for Web DSLs por Pedro J. Molina
Essential as the base for Web DSLs
Pedro J. Molina
•
300 vistas
Esencia de Web Components por Pedro J. Molina
Esencia de Web Components
Pedro J. Molina
•
313 vistas
Esencia de web components por Pedro J. Molina
Esencia de web components
Pedro J. Molina
•
323 vistas
OpenAPI 3.0.2 por Pedro J. Molina
OpenAPI 3.0.2
Pedro J. Molina
•
1.3K vistas
Quid por Pedro J. Molina
Quid
Pedro J. Molina
•
430 vistas
Securizando por construcción mediante MDE por Pedro J. Molina
Securizando por construcción mediante MDE
Pedro J. Molina
•
237 vistas
Building APIs with the OpenApi Spec por Pedro J. Molina
Building APIs with the OpenApi Spec
Pedro J. Molina
•
1K vistas
Micro vs Nano (servicios) por Pedro J. Molina
Micro vs Nano (servicios)
Pedro J. Molina
•
2K vistas
Diseño de APIs con OpenAPI por Pedro J. Molina
Diseño de APIs con OpenAPI
Pedro J. Molina
•
2.3K vistas
Ú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&T
ShapeBlue
112 vistas
•
34 diapositivas
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue por
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
ShapeBlue
93 vistas
•
15 diapositivas
Uni Systems for Power Platform.pptx por
Uni Systems for Power Platform.pptx
Uni Systems S.M.S.A.
61 vistas
•
21 diapositivas
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ por
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
ShapeBlue
88 vistas
•
9 diapositivas
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive por
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Network Automation Forum
50 vistas
•
35 diapositivas
Network Source of Truth and Infrastructure as Code revisited por
Network Source of Truth and Infrastructure as Code revisited
Network Automation Forum
52 vistas
•
45 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&T
ShapeBlue
•
112 vistas
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue por ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
ShapeBlue
•
93 vistas
Uni Systems for Power Platform.pptx por Uni Systems S.M.S.A.
Uni Systems for Power Platform.pptx
Uni Systems S.M.S.A.
•
61 vistas
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ por ShapeBlue
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
ShapeBlue
•
88 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 CiscoLive
Network Automation Forum
•
50 vistas
Network Source of Truth and Infrastructure as Code revisited por Network Automation Forum
Network Source of Truth and Infrastructure as Code revisited
Network Automation Forum
•
52 vistas
Cencora Executive Symposium por marketingcommunicati21
Cencora Executive Symposium
marketingcommunicati21
•
139 vistas
NTGapps NTG LowCode Platform por Mustafa Kuğu
NTGapps NTG LowCode Platform
Mustafa Kuğu
•
365 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...
James Anderson
•
156 vistas
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue por ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
ShapeBlue
•
176 vistas
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f... por TrustArc
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc
•
160 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 Models
Yunyao Li
•
80 vistas
DRBD Deep Dive - Philipp Reisner - LINBIT por ShapeBlue
DRBD Deep Dive - Philipp Reisner - LINBIT
ShapeBlue
•
140 vistas
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ... por ShapeBlue
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
ShapeBlue
•
144 vistas
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates por ShapeBlue
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates
ShapeBlue
•
210 vistas
Data Integrity for Banking and Financial Services por Precisely
Data Integrity for Banking and Financial Services
Precisely
•
78 vistas
Microsoft Power Platform.pptx por Uni Systems S.M.S.A.
Microsoft Power Platform.pptx
Uni Systems S.M.S.A.
•
80 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...
ShapeBlue
•
158 vistas
"Surviving highload with Node.js", Andrii Shumada por Fwdays
"Surviving highload with Node.js", Andrii Shumada
Fwdays
•
53 vistas
The Power of Heat Decarbonisation Plans in the Built Environment por IES VE
The Power of Heat Decarbonisation Plans in the Built Environment
IES VE
•
69 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
47.
Demo © Icinetic 2012
47
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