SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Ähnlich wie 2010.05.21 introducing sql server modeling

Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScriptSinergia Totale
 
Dynamic Language Programming For The Statically Typed Programmer
Dynamic Language Programming For The Statically Typed ProgrammerDynamic Language Programming For The Statically Typed Programmer
Dynamic Language Programming For The Statically Typed ProgrammerMarco Parenzan
 
Introduzione a GeoServer ed ai servizi OGC
Introduzione a GeoServer ed ai servizi OGCIntroduzione a GeoServer ed ai servizi OGC
Introduzione a GeoServer ed ai servizi OGCGeoSolutions
 
Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in ActionDotNetMarche
 
Gestione Schematico2009
Gestione Schematico2009Gestione Schematico2009
Gestione Schematico2009Diego Faro
 
Gestione Schematico2009
Gestione Schematico2009Gestione Schematico2009
Gestione Schematico2009guest15b813
 
Introduzione Cloud Computing
Introduzione Cloud ComputingIntroduzione Cloud Computing
Introduzione Cloud Computingsteccami
 
B Human Progetti di Stage 2009
B Human Progetti di Stage 2009B Human Progetti di Stage 2009
B Human Progetti di Stage 2009B Human Srl
 
Cloud Computing Motore Dell Innovazione I C T
Cloud Computing Motore Dell Innovazione  I C TCloud Computing Motore Dell Innovazione  I C T
Cloud Computing Motore Dell Innovazione I C TVMEngine
 
Asynchronous Java ME and XML
Asynchronous Java ME and XMLAsynchronous Java ME and XML
Asynchronous Java ME and XMLAndrea Castello
 
Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsIgor Antonacci
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAXTommaso Torti
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptSinergia Totale
 
... thinking about Microformats!
... thinking about Microformats!... thinking about Microformats!
... thinking about Microformats!Stefano Fago
 
Cloud Computing Economia Numeri Mercato
Cloud Computing Economia Numeri MercatoCloud Computing Economia Numeri Mercato
Cloud Computing Economia Numeri MercatoVMEngine
 

Ähnlich wie 2010.05.21 introducing sql server modeling (20)

Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScript
 
Xpages, cosa ci sarà in questa nuova tecnologia
Xpages, cosa ci sarà in questa nuova tecnologiaXpages, cosa ci sarà in questa nuova tecnologia
Xpages, cosa ci sarà in questa nuova tecnologia
 
Dynamic Language Programming For The Statically Typed Programmer
Dynamic Language Programming For The Statically Typed ProgrammerDynamic Language Programming For The Statically Typed Programmer
Dynamic Language Programming For The Statically Typed Programmer
 
Introduzione a GeoServer ed ai servizi OGC
Introduzione a GeoServer ed ai servizi OGCIntroduzione a GeoServer ed ai servizi OGC
Introduzione a GeoServer ed ai servizi OGC
 
DDive11 - Notes Moon Attack
DDive11 - Notes Moon AttackDDive11 - Notes Moon Attack
DDive11 - Notes Moon Attack
 
Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in Action
 
Dominopoint meet the experts 2015 - XPages
Dominopoint   meet the experts 2015 - XPagesDominopoint   meet the experts 2015 - XPages
Dominopoint meet the experts 2015 - XPages
 
Gestione Schematico2009
Gestione Schematico2009Gestione Schematico2009
Gestione Schematico2009
 
Gestione Schematico2009
Gestione Schematico2009Gestione Schematico2009
Gestione Schematico2009
 
Introduzione Cloud Computing
Introduzione Cloud ComputingIntroduzione Cloud Computing
Introduzione Cloud Computing
 
#dd12 Applicazioni a tre voci (Android e Domino)
#dd12 Applicazioni a tre voci (Android e Domino)#dd12 Applicazioni a tre voci (Android e Domino)
#dd12 Applicazioni a tre voci (Android e Domino)
 
B Human Progetti di Stage 2009
B Human Progetti di Stage 2009B Human Progetti di Stage 2009
B Human Progetti di Stage 2009
 
Cloud Computing Motore Dell Innovazione I C T
Cloud Computing Motore Dell Innovazione  I C TCloud Computing Motore Dell Innovazione  I C T
Cloud Computing Motore Dell Innovazione I C T
 
Asynchronous Java ME and XML
Asynchronous Java ME and XMLAsynchronous Java ME and XML
Asynchronous Java ME and XML
 
Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devops
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAX
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
 
ORM - Introduzione
ORM - IntroduzioneORM - Introduzione
ORM - Introduzione
 
... thinking about Microformats!
... thinking about Microformats!... thinking about Microformats!
... thinking about Microformats!
 
Cloud Computing Economia Numeri Mercato
Cloud Computing Economia Numeri MercatoCloud Computing Economia Numeri Mercato
Cloud Computing Economia Numeri Mercato
 

Mehr von Marco Parenzan

Azure IoT Central per lo SCADA engineer
Azure IoT Central per lo SCADA engineerAzure IoT Central per lo SCADA engineer
Azure IoT Central per lo SCADA engineerMarco Parenzan
 
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptxStatic abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptxMarco Parenzan
 
Azure Synapse Analytics for your IoT Solutions
Azure Synapse Analytics for your IoT SolutionsAzure Synapse Analytics for your IoT Solutions
Azure Synapse Analytics for your IoT SolutionsMarco Parenzan
 
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
Power BI Streaming Data Flow e Azure IoT Central Marco Parenzan
 
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralPower BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralMarco Parenzan
 
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralPower BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralMarco Parenzan
 
Developing Actors in Azure with .net
Developing Actors in Azure with .netDeveloping Actors in Azure with .net
Developing Actors in Azure with .netMarco Parenzan
 
Math with .NET for you and Azure
Math with .NET for you and AzureMath with .NET for you and Azure
Math with .NET for you and AzureMarco Parenzan
 
Power BI data flow and Azure IoT Central
Power BI data flow and Azure IoT CentralPower BI data flow and Azure IoT Central
Power BI data flow and Azure IoT CentralMarco Parenzan
 
.net for fun: write a Christmas videogame
.net for fun: write a Christmas videogame.net for fun: write a Christmas videogame
.net for fun: write a Christmas videogameMarco Parenzan
 
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...Marco Parenzan
 
Anomaly Detection with Azure and .NET
Anomaly Detection with Azure and .NETAnomaly Detection with Azure and .NET
Anomaly Detection with Azure and .NETMarco Parenzan
 
Deploy Microsoft Azure Data Solutions
Deploy Microsoft Azure Data SolutionsDeploy Microsoft Azure Data Solutions
Deploy Microsoft Azure Data SolutionsMarco Parenzan
 
Deep Dive Time Series Anomaly Detection in Azure with dotnet
Deep Dive Time Series Anomaly Detection in Azure with dotnetDeep Dive Time Series Anomaly Detection in Azure with dotnet
Deep Dive Time Series Anomaly Detection in Azure with dotnetMarco Parenzan
 
Anomaly Detection with Azure and .net
Anomaly Detection with Azure and .netAnomaly Detection with Azure and .net
Anomaly Detection with Azure and .netMarco Parenzan
 
Code Generation for Azure with .net
Code Generation for Azure with .netCode Generation for Azure with .net
Code Generation for Azure with .netMarco Parenzan
 
Running Kafka and Spark on Raspberry PI with Azure and some .net magic
Running Kafka and Spark on Raspberry PI with Azure and some .net magicRunning Kafka and Spark on Raspberry PI with Azure and some .net magic
Running Kafka and Spark on Raspberry PI with Azure and some .net magicMarco Parenzan
 
Time Series Anomaly Detection with Azure and .NETT
Time Series Anomaly Detection with Azure and .NETTTime Series Anomaly Detection with Azure and .NETT
Time Series Anomaly Detection with Azure and .NETTMarco Parenzan
 

Mehr von Marco Parenzan (20)

Azure IoT Central per lo SCADA engineer
Azure IoT Central per lo SCADA engineerAzure IoT Central per lo SCADA engineer
Azure IoT Central per lo SCADA engineer
 
Azure Hybrid @ Home
Azure Hybrid @ HomeAzure Hybrid @ Home
Azure Hybrid @ Home
 
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptxStatic abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
 
Azure Synapse Analytics for your IoT Solutions
Azure Synapse Analytics for your IoT SolutionsAzure Synapse Analytics for your IoT Solutions
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
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 CentralPower 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
Power BI Streaming Data Flow e Azure IoT CentralPower BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT Central
 
Developing Actors in Azure with .net
Developing Actors in Azure with .netDeveloping Actors in Azure with .net
Developing Actors in Azure with .net
 
Math with .NET for you and Azure
Math with .NET for you and AzureMath with .NET for you and Azure
Math with .NET for you and Azure
 
Power BI data flow and Azure IoT Central
Power BI data flow and Azure IoT CentralPower BI data flow and Azure IoT Central
Power BI data flow and Azure IoT Central
 
.net for fun: write a Christmas videogame
.net for fun: write a Christmas videogame.net for fun: write a Christmas videogame
.net for fun: write a Christmas videogame
 
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...
 
Anomaly Detection with Azure and .NET
Anomaly Detection with Azure and .NETAnomaly Detection with Azure and .NET
Anomaly Detection with Azure and .NET
 
Deploy Microsoft Azure Data Solutions
Deploy Microsoft Azure Data SolutionsDeploy Microsoft Azure Data Solutions
Deploy Microsoft Azure Data Solutions
 
Deep Dive Time Series Anomaly Detection in Azure with dotnet
Deep Dive Time Series Anomaly Detection in Azure with dotnetDeep Dive Time Series Anomaly Detection in Azure with dotnet
Deep Dive Time Series Anomaly Detection in Azure with dotnet
 
Azure IoT Central
Azure IoT CentralAzure IoT Central
Azure IoT Central
 
Anomaly Detection with Azure and .net
Anomaly Detection with Azure and .netAnomaly Detection with Azure and .net
Anomaly Detection with Azure and .net
 
Code Generation for Azure with .net
Code Generation for Azure with .netCode Generation for Azure with .net
Code Generation for Azure with .net
 
Running Kafka and Spark on Raspberry PI with Azure and some .net magic
Running Kafka and Spark on Raspberry PI with Azure and some .net magicRunning Kafka and Spark on Raspberry PI with Azure and some .net magic
Running Kafka and Spark on Raspberry PI with Azure and some .net magic
 
Time Series Anomaly Detection with Azure and .NETT
Time Series Anomaly Detection with Azure and .NETTTime Series Anomaly Detection with Azure and .NETT
Time Series Anomaly Detection with Azure and .NETT
 

Kürzlich hochgeladen

Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 

Kürzlich hochgeladen (9)

Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 

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: 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