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

More Related Content

PPTX
State Processes and Cloud - Edition 2014
PPTX
Uno scenario per il Cloud Computing - Edition 2014
PDF
Era hijau 1998 keluaran 2
PDF
Era hijau 2008 keluaran 2 2
PPTX
2011.02.19 Introducing F#
PPTX
Code Generation con i templates T4 in visual studio
PDF
Dynamic Language Programming For The Statically Typed Programmer
PPTX
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
State Processes and Cloud - Edition 2014
Uno scenario per il Cloud Computing - Edition 2014
Era hijau 1998 keluaran 2
Era hijau 2008 keluaran 2 2
2011.02.19 Introducing F#
Code Generation con i templates T4 in visual studio
Dynamic Language Programming For The Statically Typed Programmer
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

Similar to 2010.05.21 introducing sql server modeling (20)

PPTX
.Net 4.0 Preview @ UGIdotNet
PDF
ORM - Introduzione
PPTX
System.AddIn @ Xe.Net
PDF
PPTX
Mobile e Smart Client
PDF
Idiomatic Domain Driven Design
DOCX
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
KEY
Non solo cartoon: l’animazione nei new media, videogames, apps
PDF
Slide Prelaurea. Alessandro Andreosè
PDF
WPF MVVM Toolkit
PPTX
Dot net framework 2
PPTX
Silverlight 4
PPTX
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
PPTX
Silverlight m v-vm @ DotNetteria
PPTX
2010.11.19 iniziare con F#
PPTX
2010.11.19 iniziare con f#
PDF
MonoTouch, un anno dopo
PPTX
Inversion of Control @ CD2008
PPTX
ALM Revolutions - What's new in visual studio ALM 11
PPTX
Il web 2.0
.Net 4.0 Preview @ UGIdotNet
ORM - Introduzione
System.AddIn @ Xe.Net
Mobile e Smart Client
Idiomatic Domain Driven Design
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
Non solo cartoon: l’animazione nei new media, videogames, apps
Slide Prelaurea. Alessandro Andreosè
WPF MVVM Toolkit
Dot net framework 2
Silverlight 4
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Silverlight m v-vm @ DotNetteria
2010.11.19 iniziare con F#
2010.11.19 iniziare con f#
MonoTouch, un anno dopo
Inversion of Control @ CD2008
ALM Revolutions - What's new in visual studio ALM 11
Il web 2.0
Ad

More from Marco Parenzan (20)

PPTX
Azure IoT Central per lo SCADA engineer
PPTX
Azure Hybrid @ Home
PPTX
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
PPTX
Azure Synapse Analytics for your IoT Solutions
PPTX
Power BI Streaming Data Flow e Azure IoT Central
PPTX
Power BI Streaming Data Flow e Azure IoT Central
PPTX
Power BI Streaming Data Flow e Azure IoT Central
PPTX
Developing Actors in Azure with .net
PPTX
Math with .NET for you and Azure
PPTX
Power BI data flow and Azure IoT Central
PPTX
.net for fun: write a Christmas videogame
PPTX
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...
PPTX
Anomaly Detection with Azure and .NET
PPTX
Deploy Microsoft Azure Data Solutions
PPTX
Deep Dive Time Series Anomaly Detection in Azure with dotnet
PPTX
Azure IoT Central
PPTX
Anomaly Detection with Azure and .net
PPTX
Code Generation for Azure with .net
PPTX
Running Kafka and Spark on Raspberry PI with Azure and some .net magic
PPTX
Time Series Anomaly Detection with Azure and .NETT
Azure IoT Central per lo SCADA engineer
Azure Hybrid @ Home
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
Azure Synapse Analytics for your IoT Solutions
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT Central
Developing Actors in Azure with .net
Math with .NET for you and Azure
Power BI data flow and Azure IoT Central
.net for fun: write a Christmas videogame
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...
Anomaly Detection with Azure and .NET
Deploy Microsoft Azure Data Solutions
Deep Dive Time Series Anomaly Detection in Azure with dotnet
Azure IoT Central
Anomaly Detection with Azure and .net
Code Generation for Azure with .net
Running Kafka and Spark on Raspberry PI with Azure and some .net magic
Time Series Anomaly Detection with Azure and .NETT
Ad

2010.05.21 introducing sql server modeling

  • 1. Introducing SQL Server Modeling 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 » 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
  • 19. Introducing SQL Server Modeling Demo In collaborazione con
  • 20. 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
  • 21. MX files » Un file MX ha un formato OPC (Open Packaging Conventions) 21 maggio 2010 www.xedotnet.org 21
  • 22. 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
  • 23. 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
  • 24. Introducing SQL Server Modeling 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 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
  • 35. Introducing SQL Server Modeling Q&A In collaborazione con
  • 36. Link » Marco Parenzan blog: http://blog.codeisvalue.com/ email: [email protected] web: http://www.codeisvalue.com/ twitter: marco_parenzan slideshare: http://www.slideshare.com/marco.parenzan 21 maggio 2010 www.xedotnet.org 36