Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build...

25
Software Factory Software Factory Assembling Applications with Models, Assembling Applications with Models, Patterns, Frameworks and Tools Patterns, Frameworks and Tools Anna Liu Anna Liu [email protected] [email protected] Senior Architect Advisor Senior Architect Advisor Microsoft Australia Microsoft Australia

Transcript of Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build...

Page 1: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

Software FactorySoftware Factory

Assembling Applications with Models, Assembling Applications with Models, Patterns, Frameworks and ToolsPatterns, Frameworks and Tools

Anna LiuAnna [email protected]@microsoft.com

Senior Architect AdvisorSenior Architect AdvisorMicrosoft AustraliaMicrosoft Australia

Page 2: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

2

Software Development as Software Development as CraftsmanshipCraftsmanship

nn Labor IntensiveLabor Intensivenn Generic ToolsGeneric Toolsnn Generic ProcessesGeneric Processesnn One off One off

applicationsapplicationsnn Hand stitched from Hand stitched from

scratchscratchnn Minimal reuseMinimal reuse

Overruns, defects, security holes, project failures

Page 3: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

3

Industrial RevolutionIndustrial Revolutionnn Took other industries from Took other industries from

craftsmanship...craftsmanship... Individuals or small teams create whole Individuals or small teams create whole

products from scratch by handproducts from scratch by handnn ...to manufacturing...to manufacturing

Downstream suppliers use standardized Downstream suppliers use standardized processes and tools that automate processes and tools that automate menial tasks to rapidly assemble a wide menial tasks to rapidly assemble a wide range of product variants based on range of product variants based on standardized designs from reusable standardized designs from reusable components provided by upstream components provided by upstream suppliers in standardized packagessuppliers in standardized packages

Page 4: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

4

Software Product LinesSoftware Product Linesnn Build new solutions by Build new solutions by

assembling partial assembling partial solutions and/or solutions and/or configuring general onesconfiguring general ones

nn Specify only the unique Specify only the unique features of each solution features of each solution and assume the common and assume the common onesones

nn Variations in requirements Variations in requirements map predictably to map predictably to variations in artifacts and variations in artifacts and processesprocesses

nn Reduce custom Reduce custom development by 40% to development by 40% to 80% for the typical 80% for the typical solutionsolution

SoftwareProductLines

A set of systems sharing a set of A set of systems sharing a set of managed features that satisfy the managed features that satisfy the specific needs of a particular specific needs of a particular market segment and that are market segment and that are developed from a common set of developed from a common set of core assets in a prescribed way.core assets in a prescribed way.

Clements and NorthropClements and Northrop

Page 5: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

5

Reducing Impedance to SPL Reducing Impedance to SPL adoptionadoptionnn Cost of entry into Cost of entry into

software product line software product line is nonis non--trivial ($, trivial ($, time)time)

nn Large scope = too Large scope = too much variation, bad much variation, bad economies of scaleeconomies of scale

nn “to achieve “to achieve successful SPL successful SPL adoption… need to adoption… need to consider product consider product and process and process propositions”propositions”

nn Automation through Automation through tools, patterns, tools, patterns, framework, templatesframework, templates

nn Use Domain specific Use Domain specific languages to solve languages to solve targeted problems targeted problems and to enable MDDand to enable MDD

nn Constraint based Constraint based scheduling to enable scheduling to enable scaling up of agile scaling up of agile methods, and provide methods, and provide guidance in contextguidance in context

Page 6: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

6

Industrializing Software Industrializing Software DevelopmentDevelopment

SoftwareProductLines

ArchitectureFrameworks

ModelDriven

Development

Guidance InContext

Page 7: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

7

Guidance In ContextGuidance In Contextnn Provide guidance that Provide guidance that

helps practitioners know helps practitioners know what to do and that helps what to do and that helps them do itthem do it

nn Build installable packages Build installable packages containing organized sets containing organized sets of configurable guidance of configurable guidance assets for common use assets for common use casescases

nn Attach guidance to steps Attach guidance to steps in the process and parts of in the process and parts of the architecturethe architecture

nn SScope process steps with cope process steps with pre and post conditions to pre and post conditions to let project worklet project work flow vary flow vary subject to constraintssubject to constraints

SoftwareProductLines

Guidance InContext

Page 8: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

8

How Guidance EvolvesHow Guidance Evolves

GuidelinesGuidelines

PatternsPatterns

TemplatesTemplates

FrameworksFrameworks

DesignersDesignersProvide tool to help Provide tool to help framework usersframework users

Ship stable features Ship stable features in compiled formin compiled form

Automate pattern Automate pattern application application

Formalize based on Formalize based on experienceexperience

Page 9: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

9

Model Driven DevelopmentModel Driven Developmentnn Create highly focused Create highly focused

custom languages for custom languages for specific problems, specific problems, platforms or tasksplatforms or tasks

nn Develop custom tools to Develop custom tools to support themsupport them

nn Use metadata captured by Use metadata captured by models for automationmodels for automation

SoftwareProductLines

ModelDriven

Development

Guidance InContext

The good thing about The good thing about bubbles and arrows, as bubbles and arrows, as opposed to programs, is opposed to programs, is that they never crash… .. that they never crash… ..

Bertrand Meyer

Page 10: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

10

XML, Projects,XML, Projects,Configs, Classes, Configs, Classes,

CodeCode

Physical Servers and Physical Servers and Network SegmentsNetwork Segments

Deployment Deployment UnitsUnits

packaged intopackaged into deployed ondeployed on

Services, Services, Messages, Applications, Messages, Applications,

EndpointsEndpointsLogical Data Center Logical Data Center

Host SoftwareHost Software

Code VisualizationCode Visualization

Page 11: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

11

XML, Projects,XML, Projects,Configs, Classes, Configs, Classes,

CodeCode

Physical Servers and Physical Servers and Network SegmentsNetwork Segments

Deployment Deployment UnitsUnits

packaged intopackaged into deployed ondeployed on

Services, Services, Messages, Applications, Messages, Applications,

EndpointsEndpointsLogical Data Center Logical Data Center

Host SoftwareHost Software

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

Page 12: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

12

Domain Specific LanguagesDomain Specific Languagesnn Highly focused custom languagesHighly focused custom languages

Designed for specific problems, platforms or Designed for specific problems, platforms or taskstasks

nn Many proven examplesMany proven examples SQL, GUI builders, HTML, regular expressionsSQL, GUI builders, HTML, regular expressions

nn Make solution easier to understand and Make solution easier to understand and maintainmaintain Improve agility through rapid iterationImprove agility through rapid iteration

Page 13: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

13

Generating ArtifactsGenerating Artifacts

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)

Page 14: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

14

XML, Projects,XML, Projects,Configs, Classes, Configs, Classes,

CodeCode

Physical Servers and Physical Servers and Network SegmentsNetwork Segments

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 Vertical Mapping -- System System DesignDesign

Page 15: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

15

XML, Projects,XML, Projects,Configs, Classes, Configs, Classes,

CodeCode

Physical Servers and Physical Servers and Network SegmentsNetwork Segments

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 Vertical Mapping -- System DesignSystem Design

Service-OrientedArchitecture modelService-Oriented

Architecture model

Port Details editorPort Details editor

Service-OrientedArchitecture modelService-Oriented

Architecture model

Port Details editorPort Details editor

Page 16: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

16

XML, Projects,XML, Projects,Configs, Classes, Configs, Classes,

CodeCode

Physical Servers and Physical Servers and Network SegmentsNetwork Segments

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 Vertical Mapping -- Data Data Center DesignCenter Design

Page 17: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

17

XML, Projects,XML, Projects,Configs, Classes, Configs, Classes,

CodeCode

Physical Servers and Physical Servers and Network SegmentsNetwork Segments

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 Vertical Mapping -- Data Center DesignData Center Design

Services assignedto logical infrastructure

Services assignedto logical infrastructure

Architecture validatedagainst operational

settings and constraints

Architecture validatedagainst operational

settings and constraints

Services assignedto logical infrastructure

Services assignedto logical infrastructure

Architecture validatedagainst operational

settings and constraints

Architecture validatedagainst operational

settings and constraints

Page 18: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

18

XML, Projects,XML, Projects,Configs, Classes, Configs, Classes,

CodeCode

Physical Servers and Physical Servers and Network SegmentsNetwork Segments

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 Horizontal Mapping --DeploymentDeployment

Page 19: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

19

XML, Projects,XML, Projects,Configs, Classes, Configs, Classes,

CodeCode

Physical Servers and Physical Servers and Network SegmentsNetwork Segments

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 Horizontal Mapping -- DeploymentDeployment

Page 20: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

20

Architecture FrameworksArchitecture Frameworksnn Define viewpoints that Define viewpoints that

identify and separate identify and separate key stakeholder key stakeholder concernsconcerns

nn Organize tools, Organize tools, process and content process and content by viewpointby viewpoint

nn Relate and integrate Relate and integrate life cycle phases, life cycle phases, system components, system components, and levels of and levels of abstractionabstraction

SoftwareProductLines

ArchitectureFrameworks

ModelDriven

Development

Guidance InContext

Page 21: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

21

DB DB DefinitionsDefinitions

XML, Projects,XML, Projects,Configs, Classes, Configs, Classes,

CodeCode

Physical Servers and Physical Servers and Network SegmentsNetwork Segments

Deployment Deployment UnitsUnits

packaged intopackaged into deployed ondeployed on

Services, Services, Messages, Applications, Messages, Applications,

EndpointsEndpointsBusiness Entities,Business Entities,Operations, RulesOperations, Rules

WinOEWinOESchedules & 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

A G raph O f V iew points…A G raph O f V iew points…

ModelsModelsPatternsPatternsFrameworksFrameworksComponentsComponentsGuidanceGuidanceTest CasesTest CasesToolsTools

Page 22: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

22

… D efines A S oftw are Factory… D efines A S oftw are Factorynn This is called a software factory schemaThis is called a software factory schema

Like a recipe for a specific type of applicationLike a recipe for a specific type of application A set of viewpoints related by mappings that support A set of viewpoints related by mappings that support

transformation, validation, traceabilitytransformation, validation, traceability Lists artifacts required to build application type and Lists artifacts required to build application type and

explains how to combine themexplains how to combine themnn A software factory template is contentA software factory template is content

Configures a development environment for application Configures a development environment for application typetype

Projects, patterns, frameworks, guidanceProjects, patterns, frameworks, guidancenn Configured development environment is software Configured development environment is software

factoryfactory Integrates tools, process and content for that type of Integrates tools, process and content for that type of

applicationapplication Domain specific editing, rendering, compilation, Domain specific editing, rendering, compilation,

debugging, refactoringdebugging, refactoring

Page 23: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

23

SummarySummaryIntegrating The Critical InnovationsIntegrating The Critical Innovationsnn Exploit economies of scope with systematic reuseExploit economies of scope with systematic reuse

By building families of similar but distinct software By building families of similar but distinct software productsproducts

nn Assemble self describing service componentsAssemble self describing service components Using new encapsulation, packaging and orchestration Using new encapsulation, packaging and orchestration

technologiestechnologiesnn Raise the level of abstraction for developersRaise the level of abstraction for developers

By developing domain specific languages and toolsBy developing domain specific languages and tools Using new language definition, code generation and tool Using new language definition, code generation and tool

building technologiesbuilding technologiesnn Scale up agile methods to higher levels of Scale up agile methods to higher levels of

complexitycomplexity Using constraint based scheduling and active guidanceUsing constraint based scheduling and active guidance

Page 24: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

Sample Software FactorySample Software FactorynnMobile client software factoryMobile client software factory

http://msdn.microsoft.com/practices/defauhttp://msdn.microsoft.com/practices/default.aspx?pull=/library/enlt.aspx?pull=/library/en--us/dnpag2/html/mcsflp.aspus/dnpag2/html/mcsflp.asp

24

Page 25: Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build new solutions by assembling partial solutions and/or configuring general ones n Specify

25

Community Resources Community Resources nn WebsitesWebsites

Software FactoriesSoftware Factories http://msdn.microsoft.com/architecture/softwarefactorieshttp://msdn.microsoft.com/architecture/softwarefactories

Visual Studio 2005 Team SystemVisual Studio 2005 Team System http://msdn.microsoft.com/vstudio/teamsystemhttp://msdn.microsoft.com/vstudio/teamsystem

Dynamic Systems InitiativeDynamic Systems Initiative http://www.microsoft.com/windowsserversystem/dsi/defhttp://www.microsoft.com/windowsserversystem/dsi/def

ault.mspxault.mspx ANZ Architecture Resource CentreANZ Architecture Resource Centre

http://www.microsoft.com/australia/architecture/http://www.microsoft.com/australia/architecture/nn BlogsBlogs

http://blogs.msdn.com/jackgr/http://blogs.msdn.com/jackgr/ http://blogs.msdn.com/keith_short/http://blogs.msdn.com/keith_short/ http://blogs.msdn.com/stevecook/http://blogs.msdn.com/stevecook/ http://blogs.msdn.com/annali/http://blogs.msdn.com/annali/