Contenu connexe Similaire à Modelling and code generation in .NET at Icinetic Similaire à Modelling and code generation in .NET at Icinetic (20) Plus de Pedro J. Molina (15) Modelling and code generation in .NET at Icinetic1. 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
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
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
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
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
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
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