Introducing SQL Server Modeling


                   In collaborazione con




» Marco Parenzan
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
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
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
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
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
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
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
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
Perchè questa transizione?




            • Meglio comprendere la
Trasparenza propria applicazione

               • Modifiche più veloci alla
Flessibilità     propria applicazione

             • Più essenza, meno
Produttività fronzoli
Vertical and Horizontal Domains




  ISV        • Assicurazioni
             • Sanità
Vertical     • Produzione
Domains      • Economia



Microsoft    • HTML, XAML (UI)
Horizontal   • XSD, WSDL (Web Services)
             • EDMX (Data)
Domains
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
Introducing SQL Server Modeling
                                                           Finally OSLO!

                                   In collaborazione con




21 maggio 2010
           www.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


                 Repository
                 Il database per memorizzare e condividere modelli
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
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
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




 Input           Grammar   Output


   Text          Transform MGraph



 Errors




21 maggio 2010                      www.xedotnet.org                   18
Introducing SQL Server Modeling
                             Demo

     In collaborazione con
Step 1: Definire il Repository

CurrencyExchanges.m
»   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
MX files




      » Un file MX ha un
        formato OPC (Open
        Packaging Conventions)




21 maggio 2010             www.xedotnet.org          21
Step 2: Impostare i valori

CurrencyExchangesValues.m
»   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
Step 3: Definire una grammatica

CurrExch.ce                         XeDotNet.ExchangeConvs.mg
»   From USD to EUR is 2            »    module XeDotNet
»   From EUR to USD is 3            »    {
                                    »      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")+;
                                    »        }
                                    »    }


»   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
Introducing SQL Server Modeling
                             Conclusioni

     In collaborazione con
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
“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
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
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
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
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
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
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
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
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
Introducing SQL Server Modeling
                             Q&A

     In collaborazione con
Link


       » Marco Parenzan

                      blog:    http://blog.codeisvalue.com/

                     email:    marco.parenzan@libero.it

                      web:     http://www.codeisvalue.com/

                    twitter:   marco_parenzan

                 slideshare:   http://www.slideshare.com/marco.parenzan




21 maggio 2010                            www.xedotnet.org                36

2010.05.21 introducing sql server modeling

  • 1.
    Introducing SQL ServerModeling In collaborazione con » Marco Parenzan
  • 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 » SQLServer 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 » SteveLucco • 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 » Ilbusiness 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 HorizontalDomains 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 ServerModeling Finally OSLO! In collaborazione con 21 maggio 2010 www.xedotnet.org 13
  • 14.
    Cos’è OSLO? La piattaformaper 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 alRepository 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
  • 19.
    Introducing SQL ServerModeling Demo In collaborazione con
  • 20.
    Step 1: Definireil Repository CurrencyExchanges.m » 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
  • 21.
    MX files » Un file MX ha un formato OPC (Open Packaging Conventions) 21 maggio 2010 www.xedotnet.org 21
  • 22.
    Step 2: Impostarei valori CurrencyExchangesValues.m » 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
  • 23.
    Step 3: Definireuna grammatica CurrExch.ce XeDotNet.ExchangeConvs.mg » From USD to EUR is 2 » module XeDotNet » From EUR to USD is 3 » { » 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")+; » } » } » 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
  • 24.
    Introducing SQL ServerModeling Conclusioni In collaborazione con
  • 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 diNovembre 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 » MartinFowler è 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 codiceda 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 ilmercato » 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
  • 35.
    Introducing SQL ServerModeling Q&A In collaborazione con
  • 36.
    Link » Marco Parenzan blog: http://blog.codeisvalue.com/ email: marco.parenzan@libero.it web: http://www.codeisvalue.com/ twitter: marco_parenzan slideshare: http://www.slideshare.com/marco.parenzan 21 maggio 2010 www.xedotnet.org 36