2005 Microsoft PAKISTAN DEVELOPER CONFERENCE June 13-15, 2005

Preview:

Citation preview

20052005 Microsoft PAKISTAN DEVELOPER CONFERENCEJune 13-15, 2005

22

Arvindra SehmiHead of Enterprise & ArchitectureDeveloper & Platform GroupMicrosoft EMEA HQasehmi@microsoft.comwww.thearchitectexchange.com/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

Recommended