SlideShare une entreprise Scribd logo
1  sur  14
An Evening of DSLs: ‘Oslo’ James Lynch
Whatis Microsoft ‘Oslo’? Difficult to define Connecting Visual and TextualDSLs and SQL Server on the stack Questionablemerits/benefits An immature technology – ‘nascent’ (3rd CTP)
An ‘Oslo’ Use Case:<plug>bdUnit</plug>
Whatis Microsoft ‘Oslo’? Create a new language, parser and compiler… BDD Style DSL with C# Unit Tests output WPF IDE Agnostic Unit Tests -> Structure Map to the Rescue!
bdUnit IDE Demo
The Parser: MGrammar
MGrammar and Intellipad Intellipad Tokens and Syntaxes Language Projection(verb, noun, adjective...?) Syntax Delegation Functional Expressions
IntellipadDemo
LowLevel Projection When a @User(Chris) ~Username is "chriscanal"          and a @Post(DSLs) ~Title is "An Evening of DSLs"         and @Blog(ScotAltNet) ~Author is Chris         and @User(Chris) #Publish a @Post(DSLs) 	@Blog(ScotAltNet) should have more than0~Entries 	and @Blog(ScotAltNet) ~Entriesshould contain a @Post with DSLs ~Title 	and @Post(DSLs) ~PublicationDateshould belater than@Blog(ScotAltNet) ~CreatedDate 	and @User(Chris) ~PostCountshould be equal to1 Object/Entity Token Property Token Method Token Constraint Token Operator Syntax Value Syntax
Projection at a HigherLevel When a @User(Chris) ~Username is "chriscanal"   and a @Post(DSLs) ~Title is "An Evening of DSLs" and @Blog(ScotAltNet) ~Author is Chris and @User(Chris) #Publish a @Post(DSLs) @Blog(ScotAltNet) should have more than 0 ~Entries and @Blog(ScotAltNet) ~Entries should contain a @Post with DSLs ~Title and @Post(DSLs) ~PublicationDate should be later than @Blog(ScotAltNet) ~CreatedDate and @User(Chris) ~PostCount should be equal to 1 WhenStatement Syntax TargetList Syntax Constraint Syntax
Textual DSL Pipeline
‘Oslo’ DSL Pipeline    ‘M’ Language Framework and Tooling You’re on your own!
bdUnit Project: 	http://assembla.com/spaces/bdunit Blog: 			http://lynchjames.co.uk Email: 		lynchjames@gmail.com Twitter: 		lynchjames

Contenu connexe

En vedette

Códigos de identificación
Códigos de identificaciónCódigos de identificación
Códigos de identificaciónNicoZ14
 
Vhdl semineri
Vhdl semineriVhdl semineri
Vhdl seminerisersld80
 
Desain interior
Desain interiorDesain interior
Desain interiormeaarrayan
 
Hizli ogrenme-egitim
Hizli ogrenme-egitimHizli ogrenme-egitim
Hizli ogrenme-egitimzeynep_zyn41
 
tchernobil
tchernobiltchernobil
tchernobilhome
 
Taller De Disfresses
Taller De DisfressesTaller De Disfresses
Taller De Disfressescpnapenyal
 
Descobrint el reciclatge
Descobrint el reciclatgeDescobrint el reciclatge
Descobrint el reciclatgeEdprimaria2013
 
Unidad iv -_seguridad
Unidad iv -_seguridadUnidad iv -_seguridad
Unidad iv -_seguridadWhaleejaa Wha
 
Tema 2: El planeta Terra
Tema 2: El planeta TerraTema 2: El planeta Terra
Tema 2: El planeta Terraadaura
 
Knowledge Management (NALAS, 11-09-14)
Knowledge Management (NALAS, 11-09-14)Knowledge Management (NALAS, 11-09-14)
Knowledge Management (NALAS, 11-09-14)Wiebke Herding
 
The Path to Engagement is Paved with Purpose
The Path to Engagement is Paved with PurposeThe Path to Engagement is Paved with Purpose
The Path to Engagement is Paved with PurposeFusionspark Media, Inc.
 
What people think: explaining urban cycling
What people think: explaining urban cyclingWhat people think: explaining urban cycling
What people think: explaining urban cyclingRobin Lovelace
 
Ud 3 Els recursos de la natura
Ud 3 Els recursos de la naturaUd 3 Els recursos de la natura
Ud 3 Els recursos de la naturamarcapmany
 

En vedette (17)

Códigos de identificación
Códigos de identificaciónCódigos de identificación
Códigos de identificación
 
Vhdl semineri
Vhdl semineriVhdl semineri
Vhdl semineri
 
Dossier Pirates a la vista!
Dossier Pirates a la vista!Dossier Pirates a la vista!
Dossier Pirates a la vista!
 
Desain interior
Desain interiorDesain interior
Desain interior
 
Narinan
NarinanNarinan
Narinan
 
Psiae 11 12
Psiae 11 12Psiae 11 12
Psiae 11 12
 
naturals-10
naturals-10naturals-10
naturals-10
 
Hizli ogrenme-egitim
Hizli ogrenme-egitimHizli ogrenme-egitim
Hizli ogrenme-egitim
 
tchernobil
tchernobiltchernobil
tchernobil
 
Taller De Disfresses
Taller De DisfressesTaller De Disfresses
Taller De Disfresses
 
Descobrint el reciclatge
Descobrint el reciclatgeDescobrint el reciclatge
Descobrint el reciclatge
 
Unidad iv -_seguridad
Unidad iv -_seguridadUnidad iv -_seguridad
Unidad iv -_seguridad
 
Tema 2: El planeta Terra
Tema 2: El planeta TerraTema 2: El planeta Terra
Tema 2: El planeta Terra
 
Knowledge Management (NALAS, 11-09-14)
Knowledge Management (NALAS, 11-09-14)Knowledge Management (NALAS, 11-09-14)
Knowledge Management (NALAS, 11-09-14)
 
The Path to Engagement is Paved with Purpose
The Path to Engagement is Paved with PurposeThe Path to Engagement is Paved with Purpose
The Path to Engagement is Paved with Purpose
 
What people think: explaining urban cycling
What people think: explaining urban cyclingWhat people think: explaining urban cycling
What people think: explaining urban cycling
 
Ud 3 Els recursos de la natura
Ud 3 Els recursos de la naturaUd 3 Els recursos de la natura
Ud 3 Els recursos de la natura
 

Similaire à An Evening of Microsoft 'Oslo' DSLs and bdUnit BDD

Wire It 0.5.0 Presentation
Wire It 0.5.0 PresentationWire It 0.5.0 Presentation
Wire It 0.5.0 PresentationEric Abouaf
 
DSL in test automation
DSL in test automationDSL in test automation
DSL in test automationtest test
 
.NET and C# introduction
.NET and C# introduction.NET and C# introduction
.NET and C# introductionPeter Gfader
 
Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Vitaly Baum
 
Runtime Environment Of .Net Divya Rathore
Runtime Environment Of .Net Divya RathoreRuntime Environment Of .Net Divya Rathore
Runtime Environment Of .Net Divya RathoreEsha Yadav
 
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...Maarten Balliauw
 
C++ 11 Style : A Touch of Class
C++ 11 Style : A Touch of ClassC++ 11 Style : A Touch of Class
C++ 11 Style : A Touch of ClassYogendra Rampuria
 
OntoDSL: An Ontology-Based Framework for Domain-Specific Languages
OntoDSL: An Ontology-Based Framework for Domain-Specific LanguagesOntoDSL: An Ontology-Based Framework for Domain-Specific Languages
OntoDSL: An Ontology-Based Framework for Domain-Specific LanguagesTobias Walter
 
Wire It Presentation
Wire It PresentationWire It Presentation
Wire It PresentationEric Abouaf
 
Scalable database, Scalable language @ JDC 2013
Scalable database, Scalable language @ JDC 2013Scalable database, Scalable language @ JDC 2013
Scalable database, Scalable language @ JDC 2013Maciek Próchniak
 
Description and Discovery of Type Adaptors for Web Services Workflow
Description and Discovery of Type Adaptors for Web Services WorkflowDescription and Discovery of Type Adaptors for Web Services Workflow
Description and Discovery of Type Adaptors for Web Services WorkflowMartin Szomszor
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)Ary Borenszweig
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)Ary Borenszweig
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)Crystal Language
 
Smoothing Your Java with DSLs
Smoothing Your Java with DSLsSmoothing Your Java with DSLs
Smoothing Your Java with DSLsintelliyole
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesEelco Visser
 
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...Mickael Istria
 
Lecture 1 slides
Lecture 1 slidesLecture 1 slides
Lecture 1 slidesamarprabhu
 

Similaire à An Evening of Microsoft 'Oslo' DSLs and bdUnit BDD (20)

Wire It 0.5.0 Presentation
Wire It 0.5.0 PresentationWire It 0.5.0 Presentation
Wire It 0.5.0 Presentation
 
DSL explained _
DSL explained _DSL explained _
DSL explained _
 
DSL in test automation
DSL in test automationDSL in test automation
DSL in test automation
 
.NET and C# introduction
.NET and C# introduction.NET and C# introduction
.NET and C# introduction
 
Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)
 
Runtime Environment Of .Net Divya Rathore
Runtime Environment Of .Net Divya RathoreRuntime Environment Of .Net Divya Rathore
Runtime Environment Of .Net Divya Rathore
 
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
 
C++ 11 Style : A Touch of Class
C++ 11 Style : A Touch of ClassC++ 11 Style : A Touch of Class
C++ 11 Style : A Touch of Class
 
OntoDSL: An Ontology-Based Framework for Domain-Specific Languages
OntoDSL: An Ontology-Based Framework for Domain-Specific LanguagesOntoDSL: An Ontology-Based Framework for Domain-Specific Languages
OntoDSL: An Ontology-Based Framework for Domain-Specific Languages
 
Wire It Presentation
Wire It PresentationWire It Presentation
Wire It Presentation
 
Scalable database, Scalable language @ JDC 2013
Scalable database, Scalable language @ JDC 2013Scalable database, Scalable language @ JDC 2013
Scalable database, Scalable language @ JDC 2013
 
Description and Discovery of Type Adaptors for Web Services Workflow
Description and Discovery of Type Adaptors for Web Services WorkflowDescription and Discovery of Type Adaptors for Web Services Workflow
Description and Discovery of Type Adaptors for Web Services Workflow
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)
 
Smoothing Your Java with DSLs
Smoothing Your Java with DSLsSmoothing Your Java with DSLs
Smoothing Your Java with DSLs
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific Languages
 
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
 
Perl5 VS JSON
Perl5 VS JSONPerl5 VS JSON
Perl5 VS JSON
 
Lecture 1 slides
Lecture 1 slidesLecture 1 slides
Lecture 1 slides
 

Dernier

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 

Dernier (20)

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 

An Evening of Microsoft 'Oslo' DSLs and bdUnit BDD

  • 1. An Evening of DSLs: ‘Oslo’ James Lynch
  • 2. Whatis Microsoft ‘Oslo’? Difficult to define Connecting Visual and TextualDSLs and SQL Server on the stack Questionablemerits/benefits An immature technology – ‘nascent’ (3rd CTP)
  • 3.
  • 4. An ‘Oslo’ Use Case:<plug>bdUnit</plug>
  • 5. Whatis Microsoft ‘Oslo’? Create a new language, parser and compiler… BDD Style DSL with C# Unit Tests output WPF IDE Agnostic Unit Tests -> Structure Map to the Rescue!
  • 8. MGrammar and Intellipad Intellipad Tokens and Syntaxes Language Projection(verb, noun, adjective...?) Syntax Delegation Functional Expressions
  • 10. LowLevel Projection When a @User(Chris) ~Username is "chriscanal" and a @Post(DSLs) ~Title is "An Evening of DSLs" and @Blog(ScotAltNet) ~Author is Chris and @User(Chris) #Publish a @Post(DSLs) @Blog(ScotAltNet) should have more than0~Entries and @Blog(ScotAltNet) ~Entriesshould contain a @Post with DSLs ~Title and @Post(DSLs) ~PublicationDateshould belater than@Blog(ScotAltNet) ~CreatedDate and @User(Chris) ~PostCountshould be equal to1 Object/Entity Token Property Token Method Token Constraint Token Operator Syntax Value Syntax
  • 11. Projection at a HigherLevel When a @User(Chris) ~Username is "chriscanal" and a @Post(DSLs) ~Title is "An Evening of DSLs" and @Blog(ScotAltNet) ~Author is Chris and @User(Chris) #Publish a @Post(DSLs) @Blog(ScotAltNet) should have more than 0 ~Entries and @Blog(ScotAltNet) ~Entries should contain a @Post with DSLs ~Title and @Post(DSLs) ~PublicationDate should be later than @Blog(ScotAltNet) ~CreatedDate and @User(Chris) ~PostCount should be equal to 1 WhenStatement Syntax TargetList Syntax Constraint Syntax
  • 13. ‘Oslo’ DSL Pipeline ‘M’ Language Framework and Tooling You’re on your own!
  • 14. bdUnit Project: http://assembla.com/spaces/bdunit Blog: http://lynchjames.co.uk Email: lynchjames@gmail.com Twitter: lynchjames