View
224
Download
1
Tags:
Embed Size (px)
Citation preview
Software FactorySoftware Factory
Assembling Applications with Models, Assembling Applications with Models, Patterns, Frameworks and ToolsPatterns, Frameworks and Tools
Anna LiuAnna Liu [email protected]@microsoft.com Senior Architect AdvisorSenior Architect Advisor
Microsoft AustraliaMicrosoft Australia
2
Reducing Impedance to SPL Reducing Impedance to SPL adoptionadoption Cost of entry into Cost of entry into
software product line software product line is non-trivial ($, is non-trivial ($, time)time)
Large scope = too Large scope = too much variation, bad much variation, bad economies of scaleeconomies of scale
““to achieve to achieve successful SPL successful SPL adoption… need to adoption… need to consider product consider product and process and process propositions”propositions”
Automation through Automation through tools, patterns, tools, patterns, framework, templatesframework, templates
Use Domain specific Use Domain specific languages to solve languages to solve targeted problems targeted problems and to enable MDDand to enable MDD
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
3
Industrializing Software Industrializing Software DevelopmentDevelopment
SoftwareProductLines
ArchitectureFrameworks
ModelDriven
Development
Guidance InContext
4
Software Product LinesSoftware Product Lines
Build new solutions by Build new solutions by assembling partial assembling partial solutions and/or solutions and/or configuring general onesconfiguring general ones
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
Variations in requirements Variations in requirements map predictably to map predictably to variations in artifacts and variations in artifacts and processesprocesses
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
Guidance In ContextGuidance In Context
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
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
Attach guidance to steps Attach guidance to steps in the process and parts of in the process and parts of the architecturethe architecture
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
6
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
7
Model Driven DevelopmentModel Driven Development
Create highly focused Create highly focused custom languages for custom languages for specific problems, specific problems, platforms or tasksplatforms or tasks
Develop custom tools to Develop custom tools to support themsupport them
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
8
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
Code VisualizationCode Visualization
9
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
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
10
Domain Specific LanguagesDomain Specific Languages
Highly focused custom languagesHighly focused custom languages Designed for specific problems, platforms or Designed for specific problems, platforms or
taskstasks
Many proven examplesMany proven examples SQL, GUI builders, HTML, regular expressionsSQL, GUI builders, HTML, regular expressions
Make solution easier to understand and Make solution easier to understand and maintainmaintain Improve agility through rapid iterationImprove agility through rapid iteration
11
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)
12
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 - System Vertical Mapping - System DesignDesign
13
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 - System DesignVertical Mapping - System Design
Service-OrientedArchitecture modelService-Oriented
Architecture model
Port Details editorPort Details editor
Service-OrientedArchitecture modelService-Oriented
Architecture model
Port Details editorPort Details editor
14
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 Vertical Mapping - Data Center DesignCenter Design
15
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
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
16
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 - Horizontal Mapping - DeploymentDeployment
17
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
18
Architecture FrameworksArchitecture Frameworks Define viewpoints that Define viewpoints that
identify and separate identify and separate key stakeholder key stakeholder concernsconcerns
Organize tools, Organize tools, process and content process and content by viewpointby viewpoint
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
19
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,
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 Graph Of Viewpoints…A Graph Of Viewpoints…
ModelsModelsPatternsPatternsFrameworkFrameworkssComponentComponentssGuidanceGuidanceTest CasesTest CasesToolsTools
20
……Defines A Software FactoryDefines A Software Factory 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 them
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, guidance
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
21
SummarySummaryIntegrating The Critical InnovationsIntegrating The Critical Innovations
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
Assemble self describing service componentsAssemble self describing service components Using new encapsulation, packaging and orchestration Using new encapsulation, packaging and orchestration
technologiestechnologies
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 technologies
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
22
Community Resources Community Resources WebsitesWebsites
Software FactoriesSoftware Factories http://http://
msdn.microsoft.com/architecture/softwarefactoriesmsdn.microsoft.com/architecture/softwarefactories Visual Studio 2005 Team SystemVisual Studio 2005 Team System
http://http://msdn.microsoft.com/vstudio/teamsystemmsdn.microsoft.com/vstudio/teamsystem Dynamic Systems InitiativeDynamic Systems Initiative
http://www.microsoft.com/windowsserversystem/dsi/defhttp://www.microsoft.com/windowsserversystem/dsi/default.mspxault.mspx
ANZ Architecture Resource CentreANZ Architecture Resource Centre http://www.microsoft.com/http://www.microsoft.com/australiaaustralia/architecture//architecture/
BlogsBlogs http://http://blogs.msdn.com/jackgrblogs.msdn.com/jackgr// http://http://blogs.msdn.com/keith_shortblogs.msdn.com/keith_short// http://blogs.msdn.com/stevecook/http://blogs.msdn.com/stevecook/ http://blogs.msdn.com/annali/http://blogs.msdn.com/annali/