arc411 domain specific language tools for model-driven development in microsoft visual studio 2005...
TRANSCRIPT
ARC411ARC411Domain Specific Language Domain Specific Language Tools For Model-Driven Tools For Model-Driven Development In Microsoft Development In Microsoft Visual Studio 2005 Visual Studio 2005 Jochen SeemannJochen SeemannProgram ManagerProgram ManagerEnterprise ToolsEnterprise ToolsMicrosoft CorporationMicrosoft Corporation
Visual LanguagesVisual Languages
ImportantImportant
ShapesShapes
Links, ends, styleLinks, ends, style
LabelsLabels
NestingNesting
Layout, routingLayout, routing
property
Corona
Corona
Corona
label
Shape
GroupBase
members
waiting
runningpause begin
stop
playing
+v
0v0.7CR
R
C
0.1R
C
R0.1R
Domain Specific Languages In Domain Specific Languages In The Context Of The DSL ToolsThe Context Of The DSL Tools
Visual Languages… Visual Languages… To understand or define requirements To understand or define requirements
To understand or define designTo understand or define design
To generate parts of the solutionTo generate parts of the solution
To implement design patterns for To implement design patterns for specific frameworks and architecturesspecific frameworks and architectures
To customize applications and To customize applications and application componentsapplication components
To visualize existing systemsTo visualize existing systems
Building A Designer For Building A Designer For Visual StudioVisual Studio
ToolboxToolbox
PropertyPropertyBrowserBrowser
ExplorerExplorer
ValidationValidation
Drawing surface Drawing surface with domain with domain
specific notationspecific notation
Visual Studio Team SystemVisual Studio Team System
Change Management
Work Item Tracking
Reporting
Project Portal
Visual StudioTeam Foundation Server Integration Services
Project Management
Pro
ces
s a
nd
Arc
hit
ect
ure
P
roc
ess
an
d A
rch
ite
ctu
re
Gu
idan
ce
Gu
idan
ce
Dynamic Code Analyzer
Visual Studio Team Edition
Software Architects
Static Code Analyzer
Code Profiler
Unit Testing
Code Coverage
Team Explorer (includes Team Foundation Server CAL)
Visual Studio Professional Edition
Load Testing
Manual Testing
Test Case Management
Visual Studio Team Edition
Software DevelopersVisual Studio Team Edition
Software Testers
Vis
ua
l Stu
dio
Ind
us
try
V
isu
al S
tud
io In
du
str
y
Pa
rtn
ers
Pa
rtn
ers
Team Build
Visio for Enterprise Architects (in MSDN Premium Subscription)
Modeling PlatformModeling PlatformDSL ToolsDSL Tools
Application Designer
System Designer
Logical Datacenter Designer
Deployment Designer
Class Designer (in Visual Studio Standard Edition and higher)
A SDK To Build Visual A SDK To Build Visual Modeling ToolsModeling Tools
VisualStudio2005
Microsoft Modeling PlatformMicrosoft Modeling PlatformIn Visual StudioIn Visual Studio
DistributedDistributedSystemsSystems
DesignersDesigners
ClassClassDesignerDesigner
DSL Tools for Visual StudioDSL Tools for Visual Studio
Your newYour newDesignerDesigner
Microsoft Modeling PlatformMicrosoft Modeling PlatformIn Visual StudioIn Visual Studio
Modeling PlatformModeling Platform
Domain ModelDomain ModelFrameworkFramework
Design SurfaceDesign SurfaceFrameworkFramework
TemplateTemplateEngineEngine
ShellShellFrame-Frame-workwork
ValidationValidationFrame-Frame-workwork
In-Memory graph database In-Memory graph database with rich services (e.g., with rich services (e.g.,
transactions, serialization…) transactions, serialization…) and queries and queries
Extensible drawing Extensible drawing surface with surface with
support for routing support for routing and auto-layoutand auto-layout
Artifact Artifact generation generation
Constraint checking Constraint checking and guides user to and guides user to
resolve issuesresolve issues
Visual Studio UI Visual Studio UI Integration for Integration for
components like components like Toolbox, MenusToolbox, Menus
A Simple Workflow LanguageA Simple Workflow Language
AttendDSL Session
Try outDSL Tools in Hands-On Lab
TechEdParty
Tonight
Fascinated Fascinated by DSL Toolsby DSL Tools
Already Already ThirstyThirsty
Too lateToo late
Thirsty Thirsty nownow
Define Domain Model Define Domain Model Task ClassTask Class
AttendDSL Session
Try outDSL Tools in Hands-On Lab
TechEdParty
Tonight
Define Domain Model Define Domain Model InheritanceInheritance
AttendDSL Session
Try outDSL Tools in Hands-On Lab
TechEdParty
Tonight
Define Domain Model Define Domain Model RelationshipsRelationships
AttendDSL Session
Try outDSL Tools in Hands-On Lab
TechEdParty
Tonight
Define ShapeDefine Shape
AttendDSL Session
Rounded RectangleRounded Rectangle Outline color: blackOutline color: black Fill color: gray Fill color: gray
Text DecoratorText Decorator Position: centerPosition: center
Define Connector Define Connector AppearanceAppearance
AttendDSL Session
Try outDSL Tools in Hands-On Lab
Text DecoratorText Decorator Position: Source, TopPosition: Source, Top
ConnectorConnector solidsolid blackblack filled arrowheadfilled arrowhead
Fascinated Fascinated by DSL Toolsby DSL Tools
Define ConnectorDefine ConnectorVisual SyntaxVisual Syntax
AttendDSL Session
Try outDSL Tools in Hands-On Lab
TechEdParty
Tonight
Define MappingDefine Mapping
AttendDSL Session
ShapeShape Domain ModelDomain Model
CustomCustomBehaviorBehavior
Building A DesignerBuilding A Designer
NotationNotationDefinitionDefinition
MappingMappingDefinitionDefinition
DomainDomainModelModel
DefinitionDefinition
Code generated Code generated by DSL Toolsby DSL Tools
Validation/Validation/ConstraintsConstraints
Custom Custom XMLXML
SerializationSerialization
Code/Code/ArtifactArtifact
GenerationGeneration
Custom CodeCustom Code(SDK)(SDK)
First Example First Example Building a simple Building a simple workflow designerworkflow designer
Define a domain modelDefine a domain model Define shapesDefine shapes Define mappingDefine mapping Generate codeGenerate code Build designerBuild designer Run designerRun designer
Generators Based On TemplatesGenerators Based On Templates
standardStuff;standardStuff;standardStuff;standardStuff;<# foreach Task t in this.Workflow.Tasks<# foreach Task t in this.Workflow.Tasks {{#>#>
class <#= t.Name #> : TaskBaseclass <#= t.Name #> : TaskBase{ … }{ … }
<# }<# }#>#>moreStandardStuff; …moreStandardStuff; …
prospectinitiated
prospective sale
empty
overflow
Sat
weekly
accumulator4
£20
1 week delay
£30
prospectcancels
salesperson’saccount31
monthly
bank a/c
pay
7
£
standardStuff;standardStuff;standardStuff;standardStuff;class DoFirst : TaskBase {…}class DoFirst : TaskBase {…}class DoNext : TaskBase {…} class DoNext : TaskBase {…} ……
TemplateTemplate
Generated Generated CodeCode
ModelModel
QueriesQueries
Software Factories Software Factories Multiple DesignersMultiple Designers
prospectinitiated
prospective sale
empty
overflow
Sat
weekly
accumulator4
£20
1 week delay
£30
prospectcancels
salesperson’saccount31
monthly
bank a/c
pay
7
£
Model 1 – FlowModel 1 – Flow
Model 2 – EntitiesModel 2 – Entities
7
£
<xxx yyy> <zzz /></xxx>
Model 3 – ControlModel 3 – Control
Flow aspect Flow aspect codecode
Control aspect Control aspect codecode
Entities aspect Entities aspect codecode
Generating Artifacts Generating Artifacts From ModelsFrom Models
Define a simple html reportDefine a simple html report Create a reportCreate a report
Example: Entity DesignerExample: Entity Designer
Example: Utility For VSTSExample: Utility For VSTS
Second Example Second Example Building a business entity Building a business entity designer with code generationdesigner with code generation Review domain modelReview domain model Review shape definitionReview shape definition Build and run designerBuild and run designer Build sample modelBuild sample model Review code generationReview code generation Generate WinForm code for business entityGenerate WinForm code for business entity Open WinForm for business entityOpen WinForm for business entity
What’s Next?What’s Next?
DSL Tools are in an early stageDSL Tools are in an early stageCTP releases for Visual Studio 2005 availableCTP releases for Visual Studio 2005 availableContinue to release every 2-3 months with Continue to release every 2-3 months with growing feature setgrowing feature set
Designer SDKDesigner SDKModel Data Access Model Data Access Model Validation Model Validation UI and Designer BehaviorUI and Designer BehaviorCustom XML SerializationCustom XML Serialization
Richer design experience for Domain Models, Richer design experience for Domain Models, Notation and MappingNotation and MappingMultiple Views and Multiple ModelsMultiple Views and Multiple ModelsDesigner Deployment SupportDesigner Deployment Support
Microsoft Domain Specific Language Microsoft Domain Specific Language (DSL) Tools For Visual Studio 2005(DSL) Tools For Visual Studio 2005
Generates executable designer based Generates executable designer based on description of the “Domain Specific on description of the “Domain Specific Language” (DSL) used in the designerLanguage” (DSL) used in the designer
Generated DesignerGenerated DesignerIs a complete usable tool (fully functional, Is a complete usable tool (fully functional, undo, persistence/XML file support… )undo, persistence/XML file support… )
Is starting point of designer development Is starting point of designer development (SDK, artifact generation… )(SDK, artifact generation… )
Community And Resources Community And Resources
DSL Tools HomepageDSL Tools Homepage http://lab.msdn.microsoft.com/teamsystem/workshop/dsltools/
DSL Tools Community ForumDSL Tools Community Forum http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=61
Software Factorieshttp://msdn.microsoft.com/architecture/overview/softwarefactories/
Your FeedbackYour Feedbackis Important!is Important!
Please Fill Out a Survey forPlease Fill Out a Survey forThis Session on CommNetThis Session on CommNet
© 2005 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.