EMEA Beat Schwegler Architect Microsoft EMEA HQ Ingo Rammer Principal Consultant thinktecture A Software Factory to Build Factories
What if you could take the model and let it become source code?
UIP: Sample Process
... you could right-click in Visual Studio and "Add UIP Form..."?
IDEs are Extensible VSIP / Visual Studio Extensibility AddIn Supports all these requirements But extensibility model doesn’t directly support domains to communicate experience And: Complex! (We have first hand experience here with WSCF)
Roles and Artifacts Visual Studio 2005 Guidance & Experience Runtime Guidance & Experience Toolkit Guidance Package SourceCode Application Guidance & Experience Author (Architect) Guidance & Experience Consumer (Developer) End User builds generates compiles to
Roles & Artifacts "Architect" selects guidance and creates two artifacts: A framework Codified guidance (domain-specific language, wizard,...) A developer uses a model and the codified guidance to implement a solution
How Guidance EvolvesGuidelines Patterns Templates Frameworks Designers Provide tool to help framework users Ship stable features in compiled form Automate pattern application Formalize based on experience
What’s A Factory? A highly customized instance of Visual Studio Supplies key life cycle artifacts Supplies partial or prototypical components containing key mechanisms and design elements To accelerate frequently encountered tasks Specific to a certain type of solution or product
Value vs. Scope Scope Value Increasing value decreases scope. The value of an abstraction is proportional to its specificity. Michael Jackson
What’s In A Factory? A structured installable collection of customizable, integrated tool, process and content assets (software factory template) A description of the software factory (software factory schema)
Factory for Factories GAT/GAX (Guidance Automation Toolkit, Guidance Automation Extension) DSL Tools
DSL Domain Specific Languages Highly focused custom languages designed for specific problems, platforms or tasks Many proven examples SQL, GUI builders, HTML, regular expressions Visual Studio Team System Distributed System Designers Make solution easier to understand and maintain
Guidance Automation Expert guidance can accelerate development Need to capture and deliver it Guidance produced in various forms, e.g. Microsoft patterns & practices More complex challenges more complex guidance Solution is to build guidance into the tools Guides and enforces at the same time
Guidance Lifecycle Visual Studio 2005 Guidance Automation eXtensions Guidance Automation Toolkit GuidancePackage SourceCode Application Guidance Author (Architect) Guidance Consumer (Developer) End User builds generates compiles to
What is In Your Factory? Documentation Baseline solution template Solution component templates and recipies UIP designer Code snippets Reusable blocks and libraries Development use case automation Development use case: Create solution Add subsystem Define UIP wizard Connect wizard with business logic Add service agent
Governance and Process Similar to components and services No new model is needed, it can fit existing processes Governance Enterprise global (product families) Project specific Team specific
The next steps … 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 Models Methodologies Tools Software Factory Template
CRUD Data Application Customer Store Factory Composability Smart Client GAT4WS UIP Data Service GAT4WS DAL Database
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 PAG
Guides Consist of written guidance 25+ guides cover… Patterns Application architecture Integration Performance Security …
E.g.
E.g. Application Architecture User Interface Components User Process Components Service Interfaces Business Workflows Business Components Business Entities Data Access Logic Components Service Agents Data Source Service Security Operational Management Communication
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
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
Global Bank Integration demo demo
“BATs” are a new guidance form-factor designed to make it easy to build customized baseline architectures within a specific application scenario Integrated into Visual Studio (built using the Guidance Automation Toolkit), using wizards, templates, code generation etc. Combines existing guidance assets such as blocks and patterns into an end-to-end architecture Designed to be flexible and customizable Baseline Architecture Toolkits
Patterns, Blocks Feature Guidance Packages Solution Guidance Packages Baseline Arch Toolkits Docs, Ref Impls Etc. Docs, Ref Impls Etc. Scenario 1 BAT Scenario 2 BAT Assembly of BATs
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)
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) VSTS Support for Using SFs
GAX Install GAT Install Guidance Package Add, Remove Test Guidance Author (Architect) Guidance Consumer (Developer) GAT/GAX
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
The Power of Models demo demo
Visual Languages Important Shapes Links, ends, style Labels Nesting Layout, routing property Corona label Shape GroupBase members waiting running pausebegin stop playing +v 0v 0.7CR R C 0.1R C R
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, …
Concrete Syntax Serialization Syntax Anatomy of Formal Languages Abstract Syntax Semantics
Possible Representation of Concrete Syntax Toolbox PropertyBrowser Explorer 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 Visual Studio 2005 Microsoft Modeling Platform In Visual Studio DistributedSystemsDesignersClassDesigner DSL Tools for Visual Studio Your new Designer
Microsoft Modeling Platform In Visual Studio Modeling Platform Domain Model Framework Design Surface Framework Template Engine Shell Frame- work Validation Frame- work In-Memory graph database with rich services (e.g., transactions, serialization…) and queries Extensible drawing surface with support for routing and auto- layout Artifact generation Constraint checking and guides user to resolve issues Visual Studio UI Integration for components like Toolbox, Menus
Creating a Language for simple Use Case Diagrams DSL DSL
Actors
Use Cases
System
Comment
Relationships
Concrete Syntax Serialization Syntax Anatomy of Formal Languages Abstract Syntax Semantics
Defining the Domain Model
Base Concepts
Inheriting Concepts
Defining Relationships
Defining Properties
Concrete Syntax Serialization Syntax Anatomy of Formal Languages Abstract Syntax Semantics
Define Shape
Concrete Syntax Serialization Syntax Anatomy of Formal Languages Abstract Syntax Semantics
Semantic Representation: Generated Artifact
Use Case DSL demo demo
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.