2010.05.21 introducing sql server modeling
-
Upload
marco-parenzan -
Category
Technology
-
view
644 -
download
3
Transcript of 2010.05.21 introducing sql server modeling
In collaborazione con
Introducing SQL Server Modeling
» Marco Parenzan
AgendaAgenda
21 maggio 2010 www.xedotnet.org 2
» 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 3
» 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...
The bits
21 maggio 2010 www.xedotnet.org 4
» 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
Incubazione
21 maggio 2010 www.xedotnet.org 5
» “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
From “Oslo” to “SQL Server Modeling”
21 maggio 2010 www.xedotnet.org 6
» 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
Nomi eccellenti
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
21 maggio 2010 www.xedotnet.org 8
» 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
The Challenge
21 maggio 2010 www.xedotnet.org 9
» Domain Specific Languages (DSL)
» Code Generation
» Generative Programming (GP)
» Domain Specific Modeling (DSM)
» Model Driven Architecture (MDA)
» Model Driven Development (MDD)
» Internal DSL
Domain Orientation Trends
Perchè questa transizione?
•Meglio comprendere la propria applicazione
Trasparenza
•Modifiche più veloci alla propria applicazione
Flessibilità
•Più essenza, meno fronzoli
Produttività
Vertical and Horizontal Domains
• Assicurazioni
• Sanità
• Produzione
• Economia
ISVVertical
Domains
• HTML, XAML (UI)
• XSD, WSDL (Web Services)
• EDMX (Data)
MicrosoftHorizontal Domains
Model-driven Platform
COM (+)midl.exe
[Transaction]
DECLARATIVE CONTENT
TIME
.NET 1.0[YourAttributeHere]
app.config
Web Serviceswsdl:definitions
xsd:schema
.NET 3.0wf:StateMachine
wpf:ContentControl
In collaborazione con
Introducing SQL Server Modeling
Finally OSLO!
21 maggio 2010www.xedotnet.org 13
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
RepositoryIl database per memorizzare e condividere modelli
Il linguaggio “M”
Domain-specific grammars
Abstract data model
Domain-specific data models
language GPSLanguage {
syntax Main = h:Integer ("," v:Integer)?
=> Point { X { h }, Y { v }};
}
type Point {X : Integer where X < 100;Y : Integer?;
}
Point { X { 100 }, Y { 200 } }
MSchema
MGrammar
MGraph
21 maggio 2010 www.xedotnet.org 15
Da M al RepositoryDa “Oslo” a “SQL Server Modeling”
M.exeDomain Model
Compiler
MX.exeDomain Model
Loader
ModelA.m
ModelB.m
ModelC.m ModelABC.mx
SQLServer
M Framework
M Framework
21 maggio 2010 www.xedotnet.org 16
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
MGrammar in Intellipad
21 maggio 2010 www.xedotnet.org 18
Input Grammar Output
Errors
TransformText MGraph
In collaborazione con
Introducing SQL Server Modeling
Demo
Step 1: Definire il Repository
» module XeDotNet
» {
» type CurrencyExchange
» {
» From: Text;
» To: Text;
» Value: Double;
» }
»
» CurrencyExchanges: { CurrencyExchange* };
» }
» m CurrencyExchanges.m
» mx CurrencyExchanges.mx
» mx install CurrencyExchanges.mx /server:.\SQL2008 /d:Repository /trustedConnection:SSPI
21 maggio 2010 www.xedotnet.org 20
CurrencyExchanges.m
MX files
» Un file MX ha un formato OPC (Open Packaging Conventions)
21 maggio 2010 www.xedotnet.org 21
Step 2: Impostare i valori
» module XeDotNet
» {
» CurrencyExchanges
» {
» {
» From => "EUR",
» To => "USD",
» Value => 1.25
» },
» {
» From => "USD",
» To => "EUR",
» Value => 0.80
» }
» }
» }
» m CurrencyExchangesValues.m -r:CurrencyExchanges.mx
» mx install CurrencyExchangesValues.mx /server:.\SQL2008 /d:Repository /trustedConnection:SSPI
21 maggio 2010 www.xedotnet.org 22
CurrencyExchangesValues.m
Step 3: Definire una grammatica
» From USD to EUR is 2
» From EUR to USD is 3
» m XeDotNet.ExchangeConvs.mg
» c:mgx CurrExchanges.ce -r:XeDotNet. ExchangeConvs.mx
» m CurrencyExch.m -r:CurrencyExchanges.mx
» mx install CurrencyExchanges.mx /server:.\SQL2008 /d:Repository /trustedConnection:SSPI
21 maggio 2010 www.xedotnet.org 23
» module XeDotNet
» {
» language ExchangeConvs
» {
» syntax Main = s:Statement* => CurrencyExchanges {valuesof(s)};
» syntax Statement =
» "From" from:CurrencyCode "to" to:CurrencyCode "is" value:Double => { From => from, To => to, Value => value };
»
» token CurrencyCode = ('A'..'Z')+;
» token Double = double:('0'..'9')+ => double;
»
» interleave WhiteSpaces =
» (" "|"\t"|"\r"|"\n")+;
» }
» }
CurrExch.ce XeDotNet.ExchangeConvs.mg
In collaborazione con
Introducing SQL Server Modeling
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
Conclusioni
21 maggio 2010 www.xedotnet.org 25
» 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/
“M” Language Specifications
21 maggio 2010 www.xedotnet.org 26
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
21 maggio 2010 www.xedotnet.org 28
» 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
Martin Fowler
» 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
Alternative...nel frattempo...
21 maggio 2010 www.xedotnet.org 30
» 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à
ANTLR
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
21 maggio 2010 www.xedotnet.org 32
» 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
Internal DSL vs. External DSL
ActiProSoftware
» http://www.actiprosoftware.com/Products/DotNet/WPF/SyntaxEditor/Default.aspx
» Supporto per Oslo (e ANTLR)• http://blog.actiprosoftware.c
om/post/2009/06/02/Integrating-MGrammar-DSL-parsers-with-SyntaxEditor-to-implement-syntax-highlighting.aspx
• http://blog.actiprosoftware.com/post/2009/08/11/SyntaxEditor-for-WPF-to-add-integration-with-ANTLR-parsers.aspx
» 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
DSL e il mercato
In collaborazione con
Introducing SQL Server Modeling
Q&A
blog:
email:
web:
twitter:
slideshare:
Link
21 maggio 2010 www.xedotnet.org 36
» Marco Parenzan
http://blog.codeisvalue.com/
http://www.codeisvalue.com/
marco_parenzan
http://www.slideshare.com/marco.parenzan