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

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

  • View
    224

  • Download
    1

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/