Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Factories: Assembling Applications with Patterns, Models, Frameworks and Tools Jack Greenfield Architect Enterprise Tools Microsoft Corporation.

Similar presentations


Presentation on theme: "Software Factories: Assembling Applications with Patterns, Models, Frameworks and Tools Jack Greenfield Architect Enterprise Tools Microsoft Corporation."— Presentation transcript:

1 Software Factories: Assembling Applications with Patterns, Models, Frameworks and Tools Jack Greenfield Architect Enterprise Tools Microsoft Corporation

2 Scaling Up Software Development Global demand for software will increase dramatically Business processes, mobile devices, digital media, smart appliances, medical informatics Current methods and practices will not scale to this level Capacity limited by methods, tools, skilled labor pool Hand crafting from scratch using labor intensive methods Marginal productivity and quality gains in ten years

3 This Is A Recurring Problem The history of programming is an exercise in hierarchical abstraction. In each generation, language designers produce constructs for lessons learned in the previous generation, and then architects use them to build more complex and powerful abstractions. Smith and Stotts

4 Raising The Level Of Abstraction Configure, adapt and assemble components Identify patterns of component assembly Build frameworks that implement those patterns Use models to automate framework completion ComponentsPatternsModelsFrameworks

5 Application Specific Integrated Circuits (ASICs)

6 Value vs. Scope The value of an abstraction increases with its specificity to some problem domain. Michael Jackson Value Scope

7 What’s Holding Us Back? We cannot assemble products on a commercial scale Proprietary protocols prevent assembly across platform boundaries Weak specification and packaging cause architectural mismatch Static encapsulation makes component boundaries hard to change Component supplier relationships are immature We have not been able to move beyond 3 rd generation languages UML is adequate for sketching but not for MDD or execution Poor quality code generation and round trip engineering Metadata integration by architecture not interchange format We have not achieved commercially significant levels of reuse Most software products are developed as individuals in isolation Promotes ad hoc reuse and organizational dementia We cannot work consistently on schedule and within budget Prescriptive methods optimize for complexity not change Agile methods optimize for change not complexity

8 Can Software Be Industrialized? Software products are in some respects like tangible products of conventional engineering disciplines such as bridges, buildings and computers. But there are also certain important differences that give software development a unique flavor. Peter Wegner

9 Economies of Scale and Scope

10 Keys To A New Paradigm Build families of unique variants via systematic reuse Using software product line practices Rapidly assemble self describing service components Using variable encapsulation and orchestration Make it easy to develop DSLs and tools that use them Using meta development tools and frameworks Maintain agility on large, dispersed, long projects Using process frameworks, CBS and active guidance Distribute cost and risk across software supply chains By standardizing consumer supplier interaction mechanisms Satisfy varying requirements via mass customization By improving value chain integration within suppliers

11 Systematic Reuse The software industry has a long history of recreating incompatible solutions to problems that are already solved Patterns of Software Architecture, Volume 2

12 Product Line Engineering Product Engineering Product Line Requirements Production Assets Product Line Members usesbuilds builds usesbuilds Software Product Lines

13 Variability Mechanisms

14 Domain Specific Languages The good thing about bubbles and arrows, as opposed to programs, is that they never crash. Bertrand Meyer

15

16 Framework Completion

17 Composition Mechanisms

18 Variable Encapsulation Provided Interface Ports Service Component Required Interface Ports Interface Implementation Proxies On-Line Commerce Order Manager Component Functional Implementation Order Management Order Manager Order OrderLine Item Customer Address 1 AddOneOrder(in OrderForm, …) ChangeOneOrder(in OrderForm,…) GetOneOrder(in orderID, out OderForm) RetrieveOrderSet(…, out OrderFormSet) UpdateOrderSet(in OrderFormSet, …) Component Aspectual Implementation

19 Assembly by Orchestration

20 Architecture Driven Development Interface design and functional factoring constitute the key intellectual content of software and are far more difficult to create or recreate than code. Peter Deutsch

21  Use Cases And Scenarios  Business Goals And Objectives  Business Entities And Relationships  Business Processes  Service Factoring  Service Distribution  Quality Of Service Strategy  Workflow Models  Role Definitions  Message Schemas And Document Specifications  Service Interactions  Service Definitions  Object Models  Logical Server Types  Service Mappings  Process Specification  Database Schemas  Data Access Strategy  Detailed Design  Technology Dependent Design  Physical Servers  Software Installed  Network Layout Conceptual Logical BusinessInformationApplicationTechnology Physical A Recipe For Software

22 Utility Services Utility Services Functional FunctionalConfiguration Business Processes Business Processes Non-functional Non-functionalConfiguration Business Entities Business Entities Abstraction & Refinement Refinement Product Architecture Product Architecture Portal Services Portal Services Business Entity Services Business Entity Services Abstraction & Refinement Refinement Logical Logical Server Types Host Host Software Settings Abstraction & Refinement Refinement EXECUTION ARCHITECTURE INFRASTRUCTURE ARCHITECTURE EXECUTABLE ARTIFACTS REQUIREMENTS ARCHITECTURE PHYSICAL DATACENTER Abstraction & Refinement Refinement CONSTRAINTS TRANSFORMATION / RECONCILIATION MAP TO HARDWARE TRANSFORMATION / RECONCILIATION DEPLOYMENT Business Business Process Services SQL DDL and DML Files SQL DDL and DML Files XML Schemas and Files XML Schemas and Files Assemblies Assemblies Other Artifacts Other Artifacts CRM DEPLOYMENT UNIT eSales DEPLOYMENT UNIT … Assemblies Assemblies Other Artifacts Other Artifacts XML Schemas and Files XML Schemas and Files SQL DDL and DML Files SQL DDL and DML Files A Software Schema

23 A Software Factory

24 PartsBlueprintsAssemblySpecs ComponentsPatterns Software Supply Chain ModelsFrameworks 7 1342 6 Software Schema 9 IDE Software Template 8 10 Software Factory Software Factory Software Factory PLs 5


Download ppt "Software Factories: Assembling Applications with Patterns, Models, Frameworks and Tools Jack Greenfield Architect Enterprise Tools Microsoft Corporation."

Similar presentations


Ads by Google