EMEA Beat Schwegler Architect Microsoft EMEA HQ Ingo Rammer Principal Consultant thinktecture Software Factories Today
Main Issues Today Tactical Communicating Guidance and Experience Capturing Intent Engineering vs. Implementation Strategic Formalization of the architectural schema
Intent Today
Guidance Today Context Free Guidance "Best Practices" Context Aware "Patterns" Often: Only context aware guidance is really applicable
Applying Guidance Today: Developer filters 100s or 1000s of sources (blogs.msdn.com: posts by authors) Other issues: Guidance with different intention Guidance with different context Guidance based on different levels of experience Guidance with different degrees of correctness and applicability
1st Step A solution architect defines a set of guidance which is applicable for a certain project
Using Guidance shouldn't be Engineering Today it takes an engineering approach to use guidance Discovery, Evaluation, Prototyping, Trial- and-error Different sources of guidance Books, articles, weblogs, conferences, application blocks, source code fragments Employees, Vendors, consultants, universities,
Using a Fx shouldn’t be Engineering Let's look at an exemplary piece of guidance User Interface Process Application Block Created by Microsoft's PAG Team Implementation of MVC and other patterns Close to 140 pages of documentation Lots of interfaces and base classes to implement and extend
UIP: Sample Process
... the process as XML <navigationGraph iViewManager="WinFormViewManager" name="Shopping" state="State" statePersist="SqlServerPersistState" startView="cart">
The culprit The shown UIP model is only used as documentation The "real" process flow has to be expressed as XML and C# source code Interfaces have to be implemented, base classes extended A lot of the original intent is lost in the transformation process...
Capturing Intent Modeling captures intent Source code: just implementation Most models are either One-way source to generate implementation Only be used for documentation What if the model were an artefact in the same way as a C# source code file?
Software Factory Schema schema schema
Architecture Frameworks Define viewpoints that identify and separate key stakeholder concerns Organize tools, process and content by viewpoint Relate and integrate life cycle phases, system components, and levels of abstraction Software Product Lines Architecture Frameworks Model Driven Development Guidance In Context
Software Architecture IEEE Architecture Description Standards
Software Architecture IEEE Architecture Description Standards
A Rectangular Framework (Grid) A grid cannot express... variation because it is static relationships between non-adjacent viewpoints because it is rectangular a specific solution because it is generic A grid is a rectangular, static, generic view of a multi- dimensional, dynamic, domain-specific space
A Non-Rectangular Framework A graph of viewpoints that separates and interrelates concerns Business process, user interface layout, data access, logical database design A viewpoint captures information relevant to its stakeholders What activities are performed What guidance assets are used for each activity, and how to configure them What artifacts are involved, and how they are organized What types are involved, where they are defined, and how they interact Viewpoint X Viewpoint Y Viewpoint XZ Viewpoint Z Mapping Reference Transformation Traceability References Transformation Synch Constraint Validation Transformation
A 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
System Development System Deployment System Operation Project Engineering System Requirements Business Design Software Engineering Business Requirements Software Contract Design System Design Application Development
Module Development Application Development System Development Software Contract Design System Design Application Development System Deployment System Operation System Requirements Application Implementation Application Specification Application Implementation Module Development
A Factory Schema Project Engineering Software Engineering Infrastructure Engineering Business Engineering System Development System Operation Business Requirements System Requirements Infrastructure Requirements Business Operation Infrastructure Operation Business Design System Deployment Infrastructure Design and Provisioning
Infrastructure Engineering System Deployment Infrastructure Design and Provisioning System Deployment Physical Deployment Design Logical Infrastructure Design Logical Deployment Design Physical Infrastructure Design Infrastructure Operation Infrastructure Provisioning
A Factory Schema Project Engineering Software Engineering Infrastructure Engineering Business Engineering System Development Infrastructure Design and Provisioning System Operation Business Requirements System Requirements Infrastructure Requirements Business Operation Infrastructure Operation Business Design System Deployment
System Design System Deployment Infrastructure Design and Provisioning System Deployment Physical Deployment Design Logical Infrastructure Design Logical Deployment Design System Operation Physical Infrastructure Design Infrastructure Operation Infrastructure Provisioning System Requirements
Tools for Architects demo demo
VS 2005 Tools for Architects Application Design ApplicationDesigner System Design SystemDesigner Infrastructure Design Logical Datacenter Designer Deployment Design DeploymentDesigner
Industrializing Software Development Software Product Lines Architecture Frameworks Model Driven Development Guidance In Context
What if you could take the model and let it become source code?
UIP: Sample Process
What if …... you could right-click in Visual Studio and "Add UIP Form..."?
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
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 artefacts: A framework Codified guidance (domain-specific language, wizard,...) A developer uses a model and the codified guidance to implement a solution
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)
Today’s Factories for Factories GAT/GAX Guidance Automation Toolkit Guidance Automation Extension DSL Tools Domain Specific Languages
GAT 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
GAT Guidance Package Like an add-in, yet quite different Simple conceptual model Declarative definition Used on demand Smart, contextual guidance Big or small
Domain Specific Language Visual or textual language A sourcecode-equivalent artefact, not just documentation
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
Summary Tactical Engineering vs. Implementation Communicating Guidance and Experience Capturing Intent – “The Evolution of Guidance” Strategic Formalization of a Factory Schema
© 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.