Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build...
Transcript of Assembling Applications with Models, Patterns, Frameworks ... · 4 Software Product Lines n Build...
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
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
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
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
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
6
Industrializing Software Industrializing Software DevelopmentDevelopment
SoftwareProductLines
ArchitectureFrameworks
ModelDriven
Development
Guidance InContext
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
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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/