Download presentation
Presentation is loading. Please wait.
Published byBaldwin McLaughlin Modified over 9 years ago
1
EMEA Beat Schwegler Architect Microsoft EMEA HQ http://blogs.msdn.com/beatsch/ Ingo Rammer Principal Consultant thinktecture http://www.thinktecture.com/ Defining and Building a Software Factory
2
Vision Ingredients of a Software Factory Implementation How to create artifacts for a Software Factory Creating a guidance package Defining a DSL This Session Is About
3
Factory Ingredients Patterns Provide general solutions to common problems Frameworks Provide supporting and reusable assets Concrete e.g..NET Fx Abstract e.g. Zachman Framework Models Provide a formal way to describe a specific problem Are able to execute or produce formal artifacts Methodologies Define a codified set of recommended practices Tools Support creating, maintaining and debugging
4
How to build a Software Factory Vision Vision
5
Inception Identify example solutions Use them to elicit requirements Use them to validate factory Determine what you have to work with Do you have any existing assets? What are the constraints on the solutions you build? Required technologies, preferred vendors What are the constraints on how you build them? Existing development process conventions Approval by an internal architectural review board Safety critical certification from a third party
6
Construction (iterative) Identify experience to be harvested Common solution elements Requirements, architecture, feature groups, components and subsystems, deployment topology, development process, cross cutting aspects Viewpoints, relationships and operations Artifacts and activities in each viewpoint Develop assets to describe and support activities Domain assets like specifications from standards bodies Design assets like styles, patterns or idioms Implementation assets like class libraries, frameworks, templates, wizards, tools Separate common and variable features Map feature variations onto variability points Package and deliver the assets
7
Refine Along Three Dimensions Coverage Start with a small kernel and prove its value (UIP) Grow to address more of the problem (Service Access) Generality Start with a constrained problem domain (caching) Grow by adding variability (pluggable key algorithm) Depth Start telling them what to do (UIP guide) Grow by doing more for them (UIP block, UIP designer)
8
Learning A Domain module users builders guidelines patterns templates wizards libraries frameworks languages designers spike finishedmodule spec learnings
9
Composing Viewpoints XyZ module XyZ GUI Viewpoint guidelines patterns templates wizards libraries frameworks languages designers XyZ GUI spec GUIview networkview biz logic view appointmentsview recordsview XyZ Records Viewpoint guidelines patterns templates wizards libraries frameworks languages designers XyZ Appointments Viewpoint guidelines patterns templates wizards libraries frameworks languages designers XyZ Network Viewpoint guidelines patterns templates wizards libraries frameworks languages designers XyZRecordsspec XyZApptsspec XyZnetworkspec
10
Specializing Viewpoints XyZ module XyZ GUI Viewpoint framework patterns guidelines templates tools recipes models languages XyZ GUI spec GUIview AbC module GUIview AbC GUI Viewpoint framework patterns guidelines templates tools recipes models languages AbC GUI spec System GUI Viewpoint framework patterns guidelines templates tools recipes models languages System GUI spec Corporate GUI Viewpoint framework patterns guidelines templates tools recipes models languages. Net GUI Guidlines Viewpoint framework patterns guidelines templates tools recipes models languages
11
Defining Relationships XyZ module XyZ GUI Viewpoint framework patterns guidelines templates tools recipes models languages XyZ GUI spec GUIview biz model view XyZ biz logic Viewpoint framework patterns guidelines templates tools recipes models languages XyZ biz spec Relate metadata, tasks and artifacts in one life cycle phase, one part of a system, one level of abstraction to metadata, tasks and artifacts in other phases, parts and levels of abstraction
12
How it was built GAT4WS GAT4WS
13
Assets for the GAT4WS Patterns Adapter pattern Frameworks asmx Tools Schema designer Schema to class generator WSDL creation tool Service interface and adapter generator
14
The Factory Schema Project Engineering Software Engineering Infrastructure Engineering Infrastructure Design and Provisioning System Deployment System Operation System Requirements Infrastructure Requirements Infrastructure Operation Business Engineering Business Requirements Business Operation Business Design System Development
15
System Development System Deployment System Operation Project Engineering System Requirements Business Design Software Engineering System Design Application Development Business Requirements Application Development Software Contract Design
16
Service Contract Design : Software Contract Design Data & Message Contract Design Application Development System Design Service Contract Design Lifecycle Management Business Design Business Contract Design
17
Software Contract Design Service Contract Design : Software Contract Design XSD Design Service Contract Design Data & Message Contract Design : Software Contract Design Class Design Message Contract Data Contract Service Contract Design : Software Contract Design WSDL DesignInterface Design
18
System Development System Operation Project Engineering System Requirements Business Design Software Engineering System Design Application Development Software Contract Design Business Requirements Application Development Software Contract Design System Deployment
19
Module Development Application Development System Development Software Contract Design System Design Application Development System Operation System Requirements Application Specification Application Implementation Module Development System Deployment
20
Service Implementation Application Implementation : System Development Adapter Service Implementation : Application Implementation Business Logic Transport Software Contract Design
21
GAT4WS Recipes (1/2) Create solution Activates on creation of the solution Generate data and message types Activates on *.xsd items Scope: data & message contract projects Create service contract Activates on service contract project item Scope: service contract project Generate service interface Activates on *.wsdl items Scope: service contract project
22
GAT4WS Recipes (2/2) Generate adapter Activates on *.wsdl items Scope: service contract project Create Web Service endpoint Activates on Endpoints solution folder Scope: Endpoints solution folder Expose service interface Activates on endpoint projects Scope: Endpoint solution folder
23
Creating a Guidance Package
26
Guidance Package Actions Converters CustomWizardPages Editors References Templates Items Projects Solutions Text ValueProviders Guidance schema Installer Setup
27
Adding an Action
30
Creating an Unbound Recipe
31
Execute an Unbound Recipe
32
Bind a Recipe
34
Execute a Bound Recipe
35
GAT demo demo
36
How it was built DSL for UIP DSL for UIP
37
Assets for the UIP DSL Patterns MVC (in UIP) Frameworks UIP Windows Forms Tools DSL Toolkit Property Editor
38
Approach for building DSL Defining the requirements and the abstractions Pattern languages vs. domain languages The syntax Transformations Moving down the abstraction layers
39
UIP Starting Point Manual development of Controller View to Controller binding Configuration file
40
Controller implements Page Flow
41
Views "offer" their State
42
Views call the Controller
43
Configuration Defines Flow
44
Defining the Abstract Syntax
45
Defining the Concrete Syntax
46
Transformations Configuration File Controller Page classes Wizard-related page classes
47
Creating a DSL from scratch...
48
Identifying the Product Product families and product lines Generic, similar and individual features
49
Designing a Language User Focused Start with the concrete syntax User in mind Grammar Focused Start with domain model and abstract syntax Templating in mind
50
Grammar Focused
51
User Focused (Use Case)
52
How Can You Start Today? Designing frameworks? Think about a custom language for your framework How would it look like? Does it simplify the use of your framework? Does it reduce the training effort?
53
Technical Issues Today Even if the DSL tools are not yet released Determine that your framework's architecture supports DSLs How could you generate code (partial classes, config files,...)? Which parts are cumbersome, where do you need support? How will developers use the DSL?
54
Summary Vision Ingredients of a Software Factory Implementation How to create artifacts for a Software Factory Creating a guidance package Defining a DSL
55
Closing Notes Closing Notes
56
Software Factories Software Product Lines Architecture Frameworks Model Driven Development Guidance In Context
57
Software Factories We have to step up to the next level Predictability Quality Efficiency Software Factories are a long term vision to Improve productivity and predictability across the software life cycle Make it easy to deliver a wide range of tailored solutions
58
Q & A Q & A
59
© 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.