Understanding the Grey Area Between Service and

A Software Factory to Build
Factories
EMEA
Beat Schwegler
Architect
Microsoft EMEA HQ
http://blogs.msdn.com/beatsch/
Ingo Rammer
Principal Consultant
thinktecture
http://www.thinktecture.com/
This Session Is About
Patterns & practices
Automated guidance
Domain specific languages
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
Factory Ingredients
Patterns
Frameworks
Software
Factory
Template
Models
Tools
Methodologies
Factory Composability
CRUD Data Application
Customer Store
Smart Client
GAT4WS
UIP
Data Service
GAT4WS
DAL
Database
PAG
http://msdn.microsoft.com/practices
Guides
E.g. Application Interoperability: Microsoft
.NET and J2EE
Reference and baseline implementations
E.g. Applied Integration Baseline Reference
Implementation
Application blocks
E.g. Enterprise Library
Guides
Consist of written guidance
25+ guides cover…
Patterns
Application architecture
Integration
Performance
Security
…
E.g.
E.g. Application Architecture
Operational Management
Security
Communication
User Interface Components
User Process Components
Service Interfaces
Business
Workflows
Business
Components
Data Access Logic
Components
Data Source
Business
Entities
Service Agents
Service
Reference and Baseline Implementations
Are executable samples and baselines
Applied Integration Baseline Reference
Implementation
WS-I Basic Security Profile Reference
Implementation
More baselines to come…
Smart client baseline
…
demo
Global Bank Integration
Application Blocks
Reusable source code components that
provide proven solutions
14+ blocks cover…
Data access
Logging
User interface process
Composite user interfaces
…
Enterprise Library
A consistent set of application blocks
Caching Application Block
Configuration Application Block
Data Access Application Block
Cryptography Application Block
Exception Handling Application Block
Logging and Instrumentation Application
Block
Security Application Block
Assets of a SF Template
Guidelines
Patterns
Templates
Wizards
Libraries
Frameworks
Tests
Languages
Designers
Configurations
Resources
Schemas
Help
…
Assets of a SF Template
Guidelines
Patterns
Templates
Wizards
Libraries
Frameworks
Tests
Languages
Designers
Configurations
Resources
Schemas
Help
…
VSTS Support for Building SFs
DSL Toolkit
Product line development tools
Schema designer, templates
Life cycle development tool suite integration
Methodology templates, dynamic help
Visual Studio SDK (VS SDK)
Guidance Automation Toolkit (GAT)
VSTS Support for Using SFs
Integration with MSF Agile and Formal
Distributes process fragments across
software factory schema
Customizes guidance for target application
type
Product development tools
Modeling platform, configuration editor
Guidance Automation Extension (GAX)
GAT/GAX
Guidance Author
(Architect)
Add, Remove
Install
Install
GAX
GAT
Guidance
Package
Test
Guidance
Consumer
(Developer)
Recipes & Actions
Actions
Atomic operation on a VS solution item
Recipes
execute one or a sequence of actions
define how to collect arguments for actions
define how the user can “trigger” recipe
execution
recurring or non-recurring
bound or unbound
demo
The Power of Models
Visual Languages
Corona
Important
Shapes
Links, ends, style
Labels
Nesting
Layout, routing
property
label
Shape
members
Corona
Base
Corona
Group
playing
waiting
pause
begin
running
stop
R
0.1R
C
+v
0.1R
R
C
0.7CR
0v
Language Types
Natural languages
Difficult to process by machines
E.g. English, music, art, …
Formal languages
Designed for machine processing
E.g. C#, SQL, XML, …
Anatomy of Formal Languages
Concrete Syntax
Abstract Syntax
Semantics
Serialization
Syntax
Possible Representation of Concrete Syntax
Toolbox
Explorer
Property
Browser
Validation
Drawing surface
with domain
specific notation
Assets of a SF Template
Guidelines
Patterns
Templates
Wizards
Libraries
Frameworks
Tests
Languages
Designers
Configurations
Resources
Schemas
Help
…
SDK To Build Visual Modeling Tools
DSL Tools for Visual Studio
Visual
Studio
2005
Distributed
Systems
Designers
Class
Designer
Your new
Designer
Microsoft Modeling Platform
In Visual Studio
Modeling Platform
Extensible drawing
Visual Studio UI
surface with support
Integration Microsoft
for
forModeling
routing and autoPlatform
components like
layout
In Visual Studio
Toolbox, Menus
Artifact
generation
Design Surface
Template
Framework
Engine
Shell Validation
FrameFramework
work
Domain Model
Framework
Constraint checking and
guides user to resolve
issues
In-Memory graph database with
rich services (e.g., transactions,
serialization…) and queries
DSL
Creating a Language for
simple Use Case Diagrams
Actors
Use Cases
System
Comment
Relationships
Anatomy of Formal Languages
Concrete Syntax
Abstract Syntax
Semantics
Serialization
Syntax
Defining the Domain Model
Base Concepts
Inheriting Concepts
Defining Relationships
Defining Properties
Anatomy of Formal Languages
Concrete Syntax
Abstract Syntax
Semantics
Serialization
Syntax
Define Shape
Define Shape
Anatomy of Formal Languages
Concrete Syntax
Abstract Syntax
Semantics
Serialization
Syntax
Semantic Representation: Generated Artifact
demo
A Language for simple
Use Case Diagrams
Summary
Automated guidance is a key pillar of
Software Factories
The VS 2005 modeling platform and the
DSL Toolkit enable the use and creation
of formal languages
Software Factory templates glue the
ingredients together
© 2004 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.