2005 microsoft pakistan developer conference june 13-15, 2005
TRANSCRIPT
20052005 Microsoft PAKISTAN DEVELOPER CONFERENCEJune 13-15, 2005
22
Arvindra SehmiHead of Enterprise & ArchitectureDeveloper & Platform GroupMicrosoft EMEA [email protected]/asehmi
Acknowledgement:Keith Short & Jack Greenfield, ArchitectsEnterprise Tools, Visual Studio, Microsoft Corporation
Software FactoriesSoftware Factories& DSL Tools& DSL Tools
33
AgendaAgenda
• Modeling and Methods
• What is a Software Factory?
• A Software Factory Schema
• Domain Specific Languages
• Wrap Up
44
AgendaAgenda
• Modeling and Methods
• What is a Software Factory?
• A Software Factory Schema
• Domain Specific Languages
• Wrap Up
55
You all know what You all know what modelingmodeling is… is…
66
Spend a lot of time drawing loads Spend a lot of time drawing loads of these…of these…
{creditCardDetails->isEmpty( ) =customer.creditAccount->notEmpty( )}
DeliveryAddress
addLine1addLine2postCodetown
CreditAccount
numberbalance
GeneralLedger
Supplier
name
StockReplacementOrder
orderDateorderQuantity
1
0..*
1
0..*
Catalogue
CatalogueItem
stockLeveltitleeditioncomposerminStockLevelstockRequestsidreorderQtypriceExVAT
1
*
1
*
*
1
*
1
CreditCardDetails
accountNumberexpiryDate
Customer
firstNamesecondNameprefixcustomerNumberpasswordemailAddress
*
1
*
1
1
0..1
1
0..1
OrderItem
qty
*
1
*
1
Posting
amountdate
1
0..*
1
0..*
Order
expectedDeliveryDateorderCreationDate*0..1 *0..1
0..*
1
0..*
1
1
1..*
1
1..*
0..*
1
0..*
1
77
..throw them away and get on with ..throw them away and get on with the codethe code
• But wait!
• Isn’t the code alsoa model?
• So what exactly do we mean by “model”?
UsingMicrosoft.Fabriq.EnterpriseInstrumentation.Schema;
namespace Microsoft.Fabriq.Util{ /// <summary> /// This class provides unified /// management, eventing, … /// </summary> public class Logger { public static void LogErrorMessage(
string message, int severity, string errorCode)
{ ErrorMessageEvent.Raise(
FabriqEvents.FabriqEventSource, message, severity, errorCode );
} }}
88
Are our models “mathematical Are our models “mathematical models”?models”?
99
Are they “scale models”?Are they “scale models”?
1010
Are they “theoretical models”?Are they “theoretical models”?
1111
Definitely not this kind of model…Definitely not this kind of model…
Copyright: www.gucci.comCopyright: www.gucci.com
1212
A software “model” isA software “model” is
• Partly about visualisation Abstraction for clarity Because picture worth a thousand words
• Sometimes about algorithms Expression in a convenient form Because compact and efficient
• Often a set of instructions A recipe Because can be automated
1313
You all know there is a You all know there is a ““methodmethod in the madness” in the madness”
of software development…of software development…
1414
32
Core Component BuilderDev Lead
-Build core reusable components-Build business objects
-Refine DB schemas on developmentdatabases
-Extend core components
Solution Structure DesignerProgrammer Analyst, Application Architect
-Design applications that implement business processes-Analyze and design solution structures
-Validate an application’s viability against corporatedata model
CoderDeveloper
-Use existing components-Code forms
Business AnalystBusiness Analyst, Executive
-Champion projects-Make go/no go decisions
-Define business process flow
Programming/Platforms ExpertArchitect
-Provide organizations strategic technology direction-Define organizations technology standards
-Oversee design of applications throughout theorganization
15
4
1 Mistakes in application architecture are costly, but so is having a hands on architect for every project.
2 Requirements are often vague or incomplete.
3 Business analysts find it hard to tell if an app design properly implements a business process.
4 Programmer analysts can’t be sure that dev implement what was specified.
5 Mistakes in defining data access patterns are costly, but so is having a hands on data architect for every project.
6 Talent for implementing solutions is too expensive, or requires too much oversight.
7 Following architectural guidance requires copious reading and double checking of policies, which takes time away from actual coding.
6
2
7
1515
Expensive to do thisfor every project
Too much hand holding
Senior User-Domain expert
-Consults on app design-Represents rank and file users
Business Analyst-Champions Project
-Makes Go/No Go Decisions-Defines business process flow
Graphic Designer-Design Look and Feel-Customer Advocate
Data Modeler(Data Atchitect)
-Analyze business requirements-Create conceptual models of information
-Detailed analysis
Solution Structure Designer(Programmer Analyst)
-Design applications that implement biz processes-Validate an application's viability against corporate data model
Web Dev(HTML Centric)
-HTML and Scripting-Script client side and server side behavior
-Implement styles/look and Feel
DBA/Ops-Keep systems running
-Installing/setting up servers and other computers-Setting up/maintaining databases
Lead Developer-Uses VS to build core reusable components
-Builds Biz Objects (data APIs)-Defines DB Schemas
-Uses VS to extend core components
Developer-Uses VS to use components
-Uses VS to code forms
Users
Interaction/Experience Manager
Domain Info<Informal, Verbal>
<Word Docs>
Project/IT Manager-Overall Responsibility
-Keep schedule up to data-Set timelines and key dates
-Set delivery Data
Description of Process<Visio Diagram>
Description of Application-Flow Diagram-Prototype
Policies and restrictions
Programming/Platform Expert(Architect)
-Provide Strategic Direction-Determines Company Tech Standards-Oversees design of app architectures
throughout the organization
Feedback on errors/intent
Database Specs
Possible Solutions
Spec
Feedback
Spec
Spec
Feedback
Description of Application-Flow Diagram-Prototype
Visual Spec
Path to physical DB
Feedback on errors/intent
Status Reports
Estimates
Status Reports
Estimates
Data Access API
Requirements often vague, incomplete
Hard to tell ifapp design correctlydefines biz process
PM has to trust these estimates No way to guarantee
spec is followed
No way to guaranteespec is followed
Requirements(often new)
Logical/physicalarchitecture
Requirements(QOSs)
Work Items
DB Scripts
Feedback on DB Scripts
Policies and restrictions
Advice and designs fortricky parts of the app
Domain Info<Informal, Verbal>
<Word Docs>
1616
A software “method” isA software “method” is
• A way of working from requirements to through implementation to deployment
• Typically process-oriented Identifying a set of artifacts Building those artifacts Producing deliverables
1717
Customers Want To KnowCustomers Want To Know
• What types of systems can I build? What’s the architecture of each type?
• How do I go from requirements to deployment? What artifacts and how are they related?
• Why are methodologies so ineffective? Why aren’t they integrated with my tools? Why can’t I get detailed and specific guidance for my
project?
• Why are modeling tools so ineffective? Why can’t they generate production quality code? Why don’t models stay synchronized with code? Why can’t models fit my file-oriented environment?
1818
Is Agility The Answer?Is Agility The Answer?
• Agile methods optimize for change Collaborating instead of documenting Building and running in small iterations Continuously validating requirements Continuously refactoring the software Time boxing or cash boxing the project
• Where do they fall short? Don’t scale up to large or complex projects One-off development of generic systems Lack of metadata limits degree of automation Lack of architecture documentation creates
integration and support issues
1919
Is Formality the Answer?Is Formality the Answer?
• Formal methods optimize for complexity Prescribing roles, artifact, activities Emphasizing requirements, analysis, design Using models to document architecture
• Where do they fall short? Don’t respond rapidly to change One-off development of generic systems Coding, testing, debugging, instrumentation,
deployment, management, maintenance Informal languages and mappings limit degree of
automation
2020
AgendaAgenda
• Modeling and Methods
• What is a Software Factory?
• A Software Factory Schema
• Domain Specific Languages
• Wrap Up
2121
Software Development as Software Development as CraftsmanshipCraftsmanship
• Labor Intensive
• Generic Tools
• Generic Processes
• One off applications
• Hand stitched from scratch
• Minimal reuse
Overruns, defects, security holes, project failures
2222
Exploiting CommonalityExploiting Commonality
• We already exploit economies of scale to automate production
• Stamping out many identical copies of a prototype
• Used to produce CDs/DVDs
• Does nothing to help development
2323
Exploiting CommonalityExploiting Commonality• We can also exploit
economies of scope
• Reuse designs & components
• Build many similar but distinct prototypes
• Key is supporting variability
Define only the unique piecesof each system
2424
Software FactoriesSoftware Factories
• Domain-specific process
• Domain-specific tools & languages
• Domain-specific content
• Automate rote and menial tasks
General-purpose IDEs become domain-specific software factories
2525
Software Factories Pillars – TBCSoftware Factories Pillars – TBCWarning: This is a personal perspectiveWarning: This is a personal perspective
Process, Tools & Languages, Content, Automation
Software Factories
Visual Studio (Whidbey, Orcas)
DS
L T
ools
GA
T
“FA
LC
ON
”“FA
LC
ON
”
GA
T
SD
M S
DK
?
MS
F P
rocess
Ag
ile /
Form
al
Tru
stw
ort
hy
Meta
data
Ric
h P
latf
orm
2626
AgendaAgenda
• Modeling and Methods
• What is a Software Factory?
• A Software Factory Schema
• Domain Specific Languages
• Wrap Up
2727
XML, Projects,XML, Projects,Configs, Classes, Configs, Classes,
CodeCode
Deployment Deployment UnitsUnits
packaged intopackaged into
Code VisualizationCode Visualization
Class Designerand
two-way code synch
Class Designerand
two-way code synch
Class Designerand
two-way code synch
Class Designerand
two-way code synch
2828
Raising The Level Of AbstractionRaising The Level Of Abstraction
??
Config Files.asmx Files .asmx Code Behinds
Other Code
Projects and Templates
Assemblies
2929
??
Raising The Level Of AbstractionRaising The Level Of AbstractionApplication Connection Model
Config Files.asmx Files .asmx Code Behinds
Other Code
Projects and Templates
Assemblies
3030
Models and FrameworksModels and Frameworks
CustomCustomPartialPartial
ClassesClassesFrameworkFramework
PartialPartialClassesClasses
ASP.NETASP.NET
Config FilesConfig Files
Other Other ResourcesResources
usesuses
usesuses
completescompletes
FrameworkFrameworkToolsTools
DSLDSLEditorEditor
DSLDSLModelModel
generatesgenerates
OtherOtherEditorsEditors
edit / buildedit / build
generatesgenerates
Model FilesModel Files(SDM) (SDM)
3131
Effective TransformationsEffective Transformations
Model
Application Code
PlatformFrameworks
Model
Generated Code
Platform
Model
Application Code
PlatformFrameworks
Model
Generated Code
Platform
Model
Application Code
PlatformFrameworks
Model
Generated Code
Platform
Model
Application Code
PlatformFrameworks
Model
Generated Code
Platform
GenerateGenerateTo PlatformTo Platform
Application Code
Model
PlatformFrameworks
Generated Code
Model
Platform
Application Code
Model
PlatformFrameworks
Generated Code
Model
Platform
Application Code
Model
PlatformFrameworks
Generated Code
Model
Platform
Application Code
Model
PlatformFrameworks
Generated Code
Model
Platform
Old CaseOld Case
PlatformFrameworks
Application Code
Model
Platform
Generated Code
Model
PlatformFrameworks
Application Code
Model
Platform
Generated Code
Model
PlatformFrameworks
Application Code
Model
Platform
Generated Code
Model
PlatformFrameworks
Application Code
Model
Platform
Generated Code
Model
InterrelatedInterrelatedModelsModels
Model
Application CodeDomain Specific
Framework
PlatformFrameworks
Model
Generated CodeFramework
Pattern Language
Platform
Model
Application CodeDomain Specific
Framework
PlatformFrameworks
Model
Generated CodeFramework
Pattern Language
Platform
Generate to Generate to FrameworkFramework
DSLsDSLs
3232
XML, Projects,XML, Projects,Configs, Classes, Configs, Classes,
CodeCode
Deployment Deployment UnitsUnits
packaged intopackaged into
Services, Services, Messages, Applications, Messages, Applications,
EndpointsEndpoints
Abstraction/Abstraction/refinementrefinement
Vertical Mapping - System DesignVertical Mapping - System Design
3333
XML, Projects,XML, Projects,Configs, Classes, Configs, Classes,
CodeCode
Physical Servers Physical Servers and Network and Network
SegmentsSegments
Deployment Deployment UnitsUnits
packaged intopackaged into deployed ondeployed on
Services, Services, Messages, Applications, Messages, Applications,
EndpointsEndpointsLogical Data Center Logical Data Center
Host SoftwareHost Software
Abstraction/Abstraction/refinementrefinement
Vertical Mapping - Data Center DesignVertical Mapping - Data Center Design
3434
Providing TraceabilityProviding Traceability
Applications
ApplicationHosting
Logical Machines & Network Topology
Hardware
SystemDefinition
Model
3535
XML, Projects,XML, Projects,Configs, Classes, Configs, Classes,
CodeCode
Physical Servers Physical Servers and Network and Network
SegmentsSegments
Deployment Deployment UnitsUnits
packaged intopackaged into deployed ondeployed on
Services, Services, Messages, Applications, Messages, Applications,
EndpointsEndpointsLogical Data Center Logical Data Center
Host SoftwareHost Software
constraintsconstraints
Horizontal Mapping - DeploymentHorizontal Mapping - Deployment
3636
DB DB DefinitionsDefinitions
XML, Projects,XML, Projects,Configs, Classes, Configs, Classes,
CodeCode
Physical Servers Physical Servers and Network and Network
SegmentsSegments
Deployment Deployment UnitsUnits
packaged intopackaged into deployed ondeployed on
Services, Services, Messages, Applications, Messages, Applications,
EndpointsEndpoints
Logical Business Logical Business Entities,Entities,
Operations, RulesOperations, Rules
Implementable Business Implementable Business Processes and EntitiesProcesses and Entities
User InterfaceUser InterfaceProcessProcess
Logical Data Center Logical Data Center Host SoftwareHost Software
User Interface Process DesignUser Interface Process Design
3737
DB DB DefinitionsDefinitions
XML, Projects,XML, Projects,Configs, Classes, Configs, Classes,
CodeCode
Physical Servers Physical Servers and Network and Network
SegmentsSegments
Deployment Deployment UnitsUnits
packaged intopackaged into deployed ondeployed on
Services, Messages, Applications,
Endpoints
LogicalBusiness Entities,LogicalBusiness Entities,Operations, RulesOperations, Rules
BiztalkSchedules & Rules
Implementable Business Implementable Business Processes and EntitiesProcesses and Entities
User Interface Process
Business Processes and Entities
Manual Manual ProcessesProcesses
Business Business CapabilitiesCapabilities
Logical Data Center Logical Data Center Host SoftwareHost Software
Business Entity Business Entity ImplementationImplementation
3838
DB DB DefinitionsDefinitions
XML, Projects,XML, Projects,Configs, Classes, Configs, Classes,
CodeCode
Physical Servers Physical Servers and Network and Network
SegmentsSegments
Deployment Deployment UnitsUnits
packaged intopackaged into deployed ondeployed on
Services, Services, Messages, Applications, Messages, Applications,
EndpointsEndpointsLogical Business Entities,Logical Business Entities,
Operations, RulesOperations, Rules
Implementable Business Implementable Business Processes and EntitiesProcesses and Entities
User InterfaceUser InterfaceProcessProcess
Business Processes and Business Processes and EntitiesEntities
Business Business CapabilitiesCapabilities
Logical Data Center Logical Data Center Host SoftwareHost Software
Business Process ModelingBusiness Process Modeling
3939
DB DB DefinitionsDefinitions
XML, Projects,XML, Projects,Configs, Classes, Configs, Classes,
CodeCode
Physical Servers Physical Servers and Network and Network
SegmentsSegments
Deployment Deployment UnitsUnits
packaged intopackaged into deployed ondeployed on
Services, Services, Messages, Applications, Messages, Applications,
EndpointsEndpointsLogicalBusiness Entities,LogicalBusiness Entities,
Operations, RulesOperations, Rules
BiztalkBiztalkSchedules & RulesSchedules & Rules
Implementable Business Implementable Business Processes and EntitiesProcesses and Entities
User Interface User Interface ProcessProcess
Business Processes and Business Processes and EntitiesEntities
Manual Manual ProcessesProcesses
Business Business CapabilitiesCapabilities
Logical Data Center Logical Data Center Host SoftwareHost Software
Business Process Business Process ImplementationImplementation
4040
DB Definitions
XML, Projects,Configs, Classes,
Code
Physical Servers and Network
Segments
Deployment Units
Services, Messages, Applications,
EndpointsLogical Business Entities
Rules, Operations
BizTalkSchedules & Rules
Implementable Business Processes and Entities
User InterfaceProcess
Business Processes and Entities
Manual Processes
Business Capabilities
Logical Data Center Host Software
A Graph of Interrelated Viewpoints
(IEEE1471)
Software Factory SchemaSoftware Factory Schema
4141
DB Definitions
XML, Projects,Configs, Classes,
Code
Physical Servers and Network
Segments
Deployment Units
packaged into deployed on
Services, Messages, Applications,
Endpoints
Logical Business EntitiesOperations, Rules
WinOESchedules & Rules
Implementable Business Processes and Entities
User InterfaceProcess
Business Processes and Entities
Manual Processes
Business Capabilities
Logical Data Center Host Software
Recipe for a system family
Software Factory SchemaSoftware Factory Schema
ModelsModelsPatternsPatternsBlocksBlocksFrameworkFrameworkssComponentComponentssProcessProcessTest CasesTest CasesToolsTools
4242
……A Software Factory SchemaA Software Factory Schema
• Like a recipe for a specific class of systems A set of viewpoints related by formal mappings Describes artifacts required to build systems in the class and
explains how to combine them
• Implemented by a software factory template Configures Visual Studio to build members of the class Provides the necessary ingredients and tools Solution template, project templates, file templates, patterns,
dynamic help, work item types, workflow, check in policy, reports, groups & permissions, phase exit criteria
• Creates a domain specific IDE called a software factory Integrates tools, process and content for the class of systems Domain specific editing, compilation, debugging, refactoring,
building, testing, deployment, configuration management, defect tracking, reporting
4343
AgendaAgenda
• Modeling and Methods
• What is a Software Factory?
• A Software Factory Schema
• Domain Specific Languages
• Wrap Up
4444
Domain-Specific LanguagesDomain-Specific Languages
• Focused on a single aspect of app building Success in broad horizontal domains: SQL, Windows
Form Designer
• Designed support the concepts defined by an underlying framework Automate rote tasks with effective code generation
• Increase agility by visualizing concepts, generating code and other artifacts, enabling rapid iteration
Building them must be fast, cheap and easy
4545
Building a DSLBuilding a DSLConcepts & Concepts & Well-formednessWell-formednessRulesRules
Generated and Generated and Related ArtifactsRelated Artifacts
Notations & Notations & Well-formednessWell-formednessRulesRules
XML SerializationXML Serialization
4646
Visual LanguagesVisual LanguagesImportant
• Shapes
• Links, ends, style
• Labels
• Nesting
• Layout, routing
property
Corona
Corona
Corona
label
Shape
GroupBase
members
waiting
runningpause begin
stop
playing
+v
0v0.7CR
R
C
0.1R
C
R0.1R
4747
Domain Specific Languages In The Domain Specific Languages In The Context Of The DSL ToolsContext Of The DSL Tools
• Visual Languages… To understand or define requirements To understand or define design To generate parts of the solution To implement design patterns for specific
frameworks and architectures To customize applications and
application components To visualize existing systems
4848
Building A Designer For Visual Building A Designer For Visual StudioStudio
ToolboxToolbox
PropertyPropertyBrowserBrowser
ExplorerExplorer
ValidationValidation
Drawing surface Drawing surface with domain with domain
specific notationspecific notation
4949
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)
5050
A SDK To Build Visual Modeling A SDK To Build Visual Modeling ToolsTools
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
5151
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
5252
A Simple Workflow LanguageA Simple Workflow Language
AttendDSL Session
Download &Try out
DSL ToolsHands-On Lab
GoParty
Tonight
Fascinated Fascinated by DSL Toolsby DSL Tools
AlreadyAlreadyBoredBored
Too lateToo late
Bored Bored nownow
5353
Define Domain Model Define Domain Model Task ClassTask Class
AttendDSL Session
Download &Try out
DSL Tools Hands-On Lab
GoParty
Tonight
5454
Define Domain Model Define Domain Model InheritanceInheritance
AttendDSL Session
Download &Try out
DSL ToolsHands-On Lab
GoParty
Tonight
5555
Define Domain Model Define Domain Model RelationshipsRelationships
AttendDSL Session
Download &Try out
DSL ToolsHands-On Lab
GoParty
Tonight
5656
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
5757
Define Connector Define Connector AppearanceAppearance
AttendDSL Session
Download &Try out
DSL ToolsHands-On Lab
Text DecoratorText Decorator Position: Source, TopPosition: Source, Top
ConnectorConnector solidsolid blackblack filled arrowheadfilled arrowhead
Fascinated Fascinated by DSL Toolsby DSL Tools
5858
Define ConnectorDefine ConnectorVisual SyntaxVisual Syntax
AttendDSL Session
Download &Try out
DSL ToolsHands-On Lab
GoParty
Tonight
5959
Define MappingDefine Mapping
AttendDSL Session
ShapeShape Domain ModelDomain Model
6060
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)
6161
Simple UIP Example Simple UIP Example
BA designer based on UIP BA designer based on UIP application blockapplication block• Define a domain model
• Define shapes
• Define mapping
• Generate code
• Build designer
• Run designer
6262
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
6363
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
6464
AgendaAgenda
• Modeling and Methods
• What is a Software Factory?
• A Software Factory Schema
• Domain Specific Languages
• Wrap Up
6565
Why Software FactoriesWhy Software Factories
• Consolidate implicit business and system development knowledge into specialized tools, process, and content
• Increase productivity and predictability by better organizing and automating the development process
• Reduce cost and risk by distributing the software life cycle across networks of interdependent groups and partners
6666
Support For Building FactoriesSupport For Building Factories
• Guidance for building Software Factories With Visual Studio 2005 Team System
• Integration with Visual Studio 2005 Methodology Templates, Dynamic Help
• Visual tools for building Software Factories Schema Designer, Template Builder
Possibilities that we are consideringPossibilities that we are considering
6767
Support For Using FactoriesSupport For Using Factories
• Guidance for using Software Factories
• Integration with MSF Agile and Formal Guidance tuned for specific types of systems Distributed across software factory schema
• Visual tools for using Software Factories Template Installer, Configuration Console
Possibilities that we are consideringPossibilities that we are considering
6868
DSL - What’s Next?DSL - What’s Next?
• DSL Tools are in an early stage
• CTP releases for Visual Studio 2005 available
• Continue to release every 2-3 months with growing feature set Designer SDK
Model Data Access Model Validation UI and Designer Behavior Custom XML Serialization
Richer design experience for Domain Models, Notation and Mapping
Multiple Views and Multiple Models Designer Deployment Support
6969
Microsoft Domain Specific Language Microsoft Domain Specific Language (DSL) Tools For Visual Studio 2005(DSL) Tools For Visual Studio 2005
• Generates executable designer based on description of the “Domain Specific Language” (DSL) used in the designer
• Generated Designer Is a complete usable tool (fully functional,
undo, persistence/XML file support… ) Is starting point of designer development
(SDK, artifact generation… )
7070
Resources Resources
• Book Software Factories: Assembling Applications with Patterns, Models,
Frameworks, and Tools, Jack Greenfield, Keith Short, et al, ISBN 0-471-20284-3, Wiley Publishing Inc., 2004.
• Websites Software Factories
http://msdn.microsoft.com/architecture/softwarefactories 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?http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=61ForumID=61
Visual Studio 2005 Team System http://msdn.microsoft.com/vstudio/teamsystem
Visual Studio Team System Workshop Domain-Specific Language (DSL) Tools
http://lab.msdn.microsoft.com/vs2005/teamsystem/workshop/
• Newsgroups Microsoft.private.whidbey.teamsystem.architect Microsoft.private.whidbey.teamsystem.architect.modeling
THANK YOUTHANK YOU
20052005 Microsoft PAKISTAN DEVELOPER CONFERENCEJune 13-15, 2005