2. Agenda
» Attenzione!
» Domain Driver e DSL
» Oslo e il linguaggio “M”
» Gli strumenti “Intellipad” e “Quadrant”
» Esempi e Casi di uso
» Conclusioni
21 maggio 2010 www.xedotnet.org 2
3. The bits
» SQL Server Modeling CTP - Nov 2009 Release 3
(formerly “Oslo”)
• .NET 4.0, Visual Studio 2010 RTM
• http://www.microsoft.com/downloads/details.aspx?
FamilyID=29e4ead0-fd81-42ba-862b-
f3589378466a&displaylang=en
» È certo che ci saranno DIVERSE ALTRE CTP...
» ... e saranno tutte diverse...
21 maggio 2010 www.xedotnet.org 3
4. Incubazione
» Il progetto è in uno stato di “sospensione”
• Non verranno rilasciate altre versioni sino alla fine
dell’anno
• Il rilascio finale può arrivare anche anche nel 2012
» Impatto su tanti prodotti Microsoft
» Microsoft deve capire come usare questa
tecnologia
21 maggio 2010 www.xedotnet.org 4
5. From “Oslo” to “SQL Server Modeling”
» “Oslo” è stato rinominato in “SQL Server Modeling”
» “M” è una tecnologia per i dati, e dati, in Microsoft,
significa SQL Server
• Questa è la “scusa ufficiale”
• Il team della Connected System Division è confluita nella
Data Platform
» “M” ha comunque il suo utilizzo generico,
indipendentemente dal repository
• Anzi, la tecnologia per i DSL è quella che maggiormente
è stata recepica dalla Community
• Importante reazione (negativa) da parte della
Community
21 maggio 2010 www.xedotnet.org 5
6. Nomi eccellenti
» Steve Lucco
• Creatore della JVM poi acquisita
da Microsoft e alla base del CLR
• Responsabile della Connected
System Division
» Don Box
• Essential COM
• Essential .NET
• Specifiche SOAP
• Indigo (WCF)
» Kraig Brooksmith
• Inside OLE2
» Chris Sells
• Evangelist
» Chris Anderson
• WPF
» Giovanni Della Libera
• M Compiler
21 maggio 2010 www.xedotnet.org 6
7. Douglas Purdy
» CTO, Data and Modeling in
Microsoft’s Business Platform
Division.
» He is responsible for the
technical strategy of
Microsoft’s data and modeling
development efforts.
» His vision is to broaden the
franchise of people building
applications, allowing non-
professional developers and
end-users to harness the full
power of computing
» “make everyone a
programmer”
21 maggio 2010 www.xedotnet.org 7
8. The Challenge
» Il business ha bisogno di accellerare
l’innovazione
» Il software è il principale veicolo per
l’innovazione
» L’innovazione attraverso il software avviene
nella comunicazione tra esperti di dominio e
programmatori
» L’obiettivo è quello di integrare gli esperti di
dominio nello sviluppo del software
21 maggio 2010 www.xedotnet.org 8
9. Domain Orientation Trends
» Domain Specific Languages (DSL)
» Code Generation
» Generative Programming (GP)
» Domain Specific Modeling (DSM)
» Model Driven Architecture (MDA)
» Model Driven Development (MDD)
» Internal DSL
21 maggio 2010 www.xedotnet.org 9
10. Perchè questa transizione?
• Meglio comprendere la
Trasparenza propria applicazione
• Modifiche più veloci alla
Flessibilità propria applicazione
• Più essenza, meno
Produttività fronzoli
11. Vertical and Horizontal Domains
ISV • Assicurazioni
• Sanità
Vertical • Produzione
Domains • Economia
Microsoft • HTML, XAML (UI)
Horizontal • XSD, WSDL (Web Services)
• EDMX (Data)
Domains
12. Model-driven Platform
DECLARATIVE CONTENT
wpf:ContentControl
wf:StateMachine .NET 3.0
xsd:schema
wsdl:definitions Web Services
app.config
[YourAttributeHere] .NET 1.0
[Transaction]
midl.exe COM (+)
TIME
13. Introducing SQL Server Modeling
Finally OSLO!
In collaborazione con
21 maggio 2010
www.xedotnet.org 13
14. Cos’è OSLO?
La piattaforma per applicazioni “Model-Driven”
“M”
Il linguaggio per creare modelli e DSL
“Quadrant”
Lo strumento per interagire con modelli e DSL
Repository
Il database per memorizzare e condividere modelli
15. Il linguaggio “M”
Domain-specific data models type Point {
X : Integer where X < 100;
Y : Integer?;
}
MSchema
Domain-specific grammars language GPSLanguage {
syntax Main = h:Integer ("," v:Integer)?
=> Point { X { h }, Y { v }};
}
MGrammar
Abstract data model Point { X { 100 }, Y { 200 } }
MGraph
21 maggio 2010 www.xedotnet.org 15
16. Da M al Repository
Da “Oslo” a “SQL Server Modeling”
ModelA.m M.exe MX.exe
Domain Model Domain Model
ModelB.m Compiler Loader
ModelC.m ModelABC.mx
SQL
M M
Framework Framework Server
21 maggio 2010 www.xedotnet.org 16
17. IntelliPad
» Chiamato inizialmente EMACS.NET
» Editor testuale, non ha funzioni visuali
» Buffer interni interagiscono con runtime
• Parsing in tempo reale
• Generazione risultati in finestre side-by-side
21 maggio 2010 www.xedotnet.org 17
18. MGrammar in Intellipad
Input Grammar Output
Text Transform MGraph
Errors
21 maggio 2010 www.xedotnet.org 18
25. Conclusioni
» Pro
• Tecnologia incredibilmente intuitiva
• È una “libreria”!
• È analoga a Xml
» Cons
• É una tecnologia non ancora disponibile
• Non sappiamo come maturerà
• I presupposti sono comunque buoni
21 maggio 2010 www.xedotnet.org 25
26. “M” Language Specifications
» http://msdn.microsoft.com/en-
us/library/dd285282.aspx
» Specifiche rilasciate sotto Open Specification
Promise (OSP)
• Esiste una implementazione di “M” in Javascript
• http://code.google.com/p/jsmeta/
21 maggio 2010 www.xedotnet.org 26
27. Dalla CTP di Novembre 2008 (PDC 2008)
» DSL per i servizi WCF
» È una funzione non più
disponibile nella
corrente CTP
• Verrà probabilmente
introdotta in una futura
CTP
21 maggio 2010 www.xedotnet.org 27
28. Martin Fowler
» Martin Fowler è un autore e speaker
internazionale sullo sviluppo del software,
specializzato in analisi e design OO, UML,
patterns, metodologie agili e XP
» Sta scrivendo (da tre anni) un libro sui DSL
• Speriamo di averlo in mano entro il 2010
21 maggio 2010 www.xedotnet.org 28
29. Alternative...nel frattempo...
» ANTLR
• http://www.antlr.org/
• Scritto da Terence Parr (professore dell’Università di
San Francisco), in Java, ma genera anche il parser in
C# (oltre che Java, Python, Ruby)
• Attualmente il suo autore lo spinge nella direzione
dei DSL
• http://www.pragprog.com/titles/tpdsl/language-
implementation-patterns
30. ANTLR
» Genera codice da inserire nel proprio progetto
» Usa grammatiche EBNF
• L’autore ha scritto lavori che evolvono la teoria dei
linguaggi formali (linguaggi LL(*), sia LL(k) che LR(k))
» Nota. Oslo è un parser LR(k)
• Bottom-Up
• Supporta le ambiguità, risolvendole con una “priorità”
» Più complesso il parser, più semplice la grammatica
• Non bisogna risolvere le ambiguità
21 maggio 2010 www.xedotnet.org 30
31. ANTLRWorks
» Editor grafico di
grammatiche e
debugger
» Evidenzia errori di
sintassi
» Mostra il diagramma
sintattico di una regola
21 maggio 2010 www.xedotnet.org 31
32. Internal DSL vs. External DSL
» Internal DSL
• Pro
• Facile...nessun parser da scrivere
• Supporto degli IDE
• Cons
• Limiti imposti dalla sintassi dei linguaggi Host
» External DSL
• Pro
• Espressività illimitata
• Definire il proprio runtime
• Cons
• Richiede molto più lavoro
• Nessun supporto IDE
21 maggio 2010 www.xedotnet.org 32
33. ActiProSoftware
» http://www.actiprosoftwar
e.com/Products/DotNet/W
PF/SyntaxEditor/Default.asp
x
» Supporto per Oslo (e
ANTLR)
• http://blog.actiprosoftware.c
om/post/2009/06/02/Integra
ting-MGrammar-DSL-parsers-
with-SyntaxEditor-to-
implement-syntax-
highlighting.aspx
• http://blog.actiprosoftware.c
om/post/2009/08/11/Syntax
Editor-for-WPF-to-add-
integration-with-ANTLR-
parsers.aspx
34. DSL e il mercato
» Scrivere un DSL è una attività “affrontabile”
» Le aziende che vendono software possono
rendere “scriptabili” le proprie applicazioni
» La personale esperienza:
• Proposto a qualche azienda (nel pordenonese)
• Risposta positiva
• Esecuzione “lunga” dovuta al momento economico
• Progetto da 200-400 ore
• 6-9 mesi per l’analisi, anche con i clienti/futuri utenti, e
l’implementazione