Title: DSL Tools in Visual Studio
1DSL Tools in Visual Studio
- Stuart Kent
- Senior Program Manager
- Visual Studio Team System DSL Tools
- http//blogs.msdn.com/stuart_kent
- http//lab.msdn.microsoft.com/vs2005/teamsystem/wo
rkshop/dsltools/
DSL Domain Specific Language
2What is a domain?
Business Systems
Real-Time Systems
Requirements
Aircraft control systems
Airline Baggage Handling Systems
Insurance Management Systems
Specification
Implementation
Deployment
3What is a language?
Declarative
agtb cd
ltCallRecordgt ltcallergtltnumbergt07713248lt/numbergt
Textual
Pictorial
class Magnox NuclearPowerStation public
void dropRods ()
Procedural
4Domain Specific Languages (DSLs) make problems
Small Scale
- Small scale
- Not much design beyond existing platform
- ?
- easy to understand
- agile
- small team
- early prototypes
- easy maintenance
- changes inexpensive
5Finding prime numbers is Small Scale
- If we have a system that can
- do multiplication and division
- do things repeatedly
language
platform
6Finding parts lists is Small Scale
- If we have a system that can
- keep large lists of parts scan them quickly
- combine and filter the lists efficiently
CREATE
JOIN WHERE
SELECT
platform
language
Relational Database
7Developing a GUI is Small Scale
- If we have a system that can
- display combinations of windows and widgets
- show things and interact with user in them
language
platform
Visual programming languages
Interactive app platform
8Phone billing systems are Small Scale
- if we have a language of phone billing
- and a platform to run it on
Phone Billing Engine
9Using a domain specific language
customer
tablet PC
customer -facing developer
10Other things you can do
prototype for review
animator
11Other inputs to generation
functional model
refine
prototype for review
animator
functional modelrefined/augmented for performance
phone bill system
generator
data model
existing api model
etc
12Mind The Gap DSLs Code Generation
13What are (could) DSLs (be) used for?
- To write models that drive code generators
- Configuring code frameworks, configuring
deployment - DSL unifies points of variability scattered
amongst artefacts - Delivers software product lines
- To write interpreted configuration files
- Often expressed in XML
- To provide a domain-specific abstractions for the
purposes of - Simulation/animation
- Monitoring system execution
- What-if analysis
- Metric taking
- Generating business plans and reports
-
- As part of a software factory
- Combines all of the above
14How are DSLs implemented now?
- XML
- Syntax very raw, no graphics
- Validation weak
- Multiple cross-referencing docs are difficult to
manage - N.B. Required for large models in a team
environment - UML profiles (UML stereotypes / tagged values)
- XML persistence ugly hard to handle
- Stereotypes / tagged values not very powerful
- UML profiles can bear little semantic resemblance
to mainstream UML - Game of square peg in round hole
- Packaging in UML is not so conducive to working
with large models in a team environment
15How are DSLs implemented now?
- MOF/EMF
- Deals with conceptual aspects of language
- Rest of designer/editor is hand-coded
- In meta-environments
- Releases a meta-monster that can be hard to tame
- Often doesnt scale to large models in a team
environment - Tools not integrated into familiar IDEs
16DSL Tools in Visual Studio V1
- To make it cost-effective to develop
DSL-specific, visual designers hosted in Visual
Studio - For SIs large enterprises (at least)
- For a particular class of DSLs
- In a way that makes the model data easily
accessible by automation tools, that are easy to
author using XML and/or .Net technology - In a way that enables working with large models
in a team environment - To make it cost-effective to author DSL-driven
code/artefact generators
17Mainline scenario
18Demo
- Well build a designer from scratch
- Heres a screenshot of the target designer
19(No Transcript)
20DSL Tools in Visual Studio
- Stuart Kent
- Senior Program Manager
- Visual Studio Team System DSL Tools
- http//blogs.msdn.com/stuart_kent
- http//lab.msdn.microsoft.com/vs2005/teamsystem/wo
rkshop/dsltools/