300 likes | 459 Views
Packaging Design and Architecture Guidance for Visual Studio. Tom Hollander Wojtek Kozaczynski Harry Pierson Microsoft. Agenda. Background Introducing the Guidance Automation Toolkit GAT Concepts Demos More Important Stuff. D. A. D. I. A. D. I.
E N D
Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry Pierson Microsoft
Agenda • Background • Introducing the Guidance Automation Toolkit • GAT Concepts • Demos • More Important Stuff
D A D I A D I patterns & practicesArchitecture Guidance for the Enterprise ProvenBased on field experience Authoritative Offer the best advice availableAccurateTechnically validated and testedActionableProvide the steps to success RelevantAddress real-world problems based on customer scenarios Available online: http://www.microsoft.com/practices Books available: http://www.amazon.com/practices Patterns Application Blocks Reference Architectures Atomic solutions to recurring problems Sub-system-level guidance for common services System-level guidance for common customer scenarios D A D I D A D I A A D D I I Guides Guidance for broad horizontal topics such as security, performance, deployment and operations
BackgroundEvolution of Guidance • patterns & practices produces guidance in various forms • Guides • Patterns • Application Blocks • Frameworks and Baseline Architectures • p&p addresses progressively more complex architectural challenges • Complexity of assets increases • More complex assets harder to evaluate, comprehend and use
BackgroundExample: Data Access Application Block private DataSet GetProducts(int categoryId) { Database db = DatabaseFactory.CreateDatabase("Sales"); return db.ExecuteDataset("getProductsByCategory", categoryId); }
BackgroundExample: UI Process Application Block • <views> • <view name="Form1“ • type="Demo.Form1, Demo" • controller="MyController“ • layoutManager=“VerticalLayoutManager” • stayOpen="true"/> • <view name="Form2" • type="Demo.Form2, Demo" • controller="MyController" /> • <view … /> • … • </views>
BackgroundExample: EDRA Application Framework • Application framework supporting • Separation of service interface and implementation • Separation of business logic and cross-cutting concerns • Separation of business logic and underlying transports • Different deployment patterns
BackgroundThe Challenge • As our assets get more involved: • We need to write more documentation • Customers need to read more documentation to use assets correctly • “guidance” value of asset diminishes if if takes a lot of reading to use it effectively • We need a way to make more complex guidance easily consumable without relying entirely on documentation!
BackgroundWe are not alone… • When we started looking at this problem, we realized that it is common • Consumability of components, frameworks and application architectures built by our customers • Consumability of assets derived from patterns & practices deliverables
Introducing the Guidance Automation Toolkit • Light-weight extensibility mechanism to Visual Studio 2005 • Allows to build user experience guiding the developer through how to use code assets in Visual Studio • First preview version will be available soon – check at http://microsoft.com/practices for details
Introducing GATGoals • Simplify authoring reusable, parameterizable software assets • Artifact templates • Actions modifying solution artifacts • Wizards guiding the use of templates and actions • Familiar user experience for developing with reusable assets • Wizard for gathering information from developer • Expanding templates with gathered information • Executing “recipes” with gathered information, where recipe is a sequence of parameterized actions that transform solution artifacts to automate a developer use-case
Introducing GATSoftware Asset Lifecycle Accelerate solution development with reusableassets by putting them in VS tools Reuse feedback apply Creation Search & Retrieval Inform harvest fit SDLC inform Simplify locating, reviewing and obtaining reusable assets Simplify ways of creating, packaging and storing reusable, software assets Packaging & Cataloging
Introducing GATScope Reuse feedback apply Creation Search & Retrieval Inform harvest fit SDLC inform Packaging & Cataloging
Introducing GATGAT and GAX in the guidance lifecycle Guidance Author (Architect) Guidance Consumer (Developer) End User builds Guidance Package generates Guidance Automation Toolkit Source Code compiles to Guidance Automation eXtensions Application Visual Studio 2005
GAT Concepts • Recipe • Visual Studio Template • Text Template • Guidance Package
GAT Concepts Recipe • A Recipe supports a developer use-case, through a structured, parameterized set of actions that transform solution artifacts • A Recipe consists of: • Launch Point(s) • IDE UI element(s) allowing the user to run the recipe • Argument List • List of arguments passed to templates and actions • Argument Value Gathering Strategy • Argument value providers • UI (wizards) to gather arguments from the user • Actions • List of artifact transformations that create, modify or delete VS artifacts
GAT Concepts Visual Studio Template • Predefined artifacts that can be added to your solutions • Three types: • Item Template • Project Template • Solution Template • When a template “unfolds”, it can trigger the executing of recipes • Can launch wizards and modify created artifacts
GAT Concepts Text Template • A text file with script markup that modifies template output • Useful for generating code or configuration on-the-fly • Can receive parameters from recipes • Think ASP for any type of file <#@ Template Language="C#" #/> <#@ Using Namespace="System.ComponentModel.Design" #/> <# IDictionaryService svc = (IDictionaryService) GetService(typeof(IDictionaryService)); #/> using System; namespace<#= svc.GetValue("TargetNamespace") #/> { class<#= svc.GetValue("ClassName") #/> { static void Main(string[] args) { Console.WriteLine("<#= svc.GetValue("Hello") #/>"); Console.ReadLine(); } } }
GAT Concepts Guidance Package • A collection of related templates and recipes • A unit of packaging and distributing code-based guidance • Can be individually • Installed • Enabled and disabled • Uninstalled
GAT Concepts Hypothetical Guidance Packages • Automating common use cases with p&p software assets • Creating and configuring solutions built using reference architectures (EDRA or Smart Clients) • Generating code that uses an Application Block (data layers using the DAAB, connecting smart client to services using OAB) • Creating and configuring extensions to blocks and frameworks • Enforcing best practices for ‘raw’ .NET platform • Creating solutions/projects that adhere to the .NET Application Architecture • Implementing design patterns • Analyzing and fixing code for security, performance, coding standards • Guidance packages for building guidance packages
Demonstration #1 Guidance Automation eXtensions and Guidance Packages – Developer Experience
Demonstration #2 Guidance Automation Toolkit: Authoring Experience
More Important StuffAlignment with other VS2005 features • GAT is compatible with new VS2005 features • Domain Specific Languages • DSLs are concerned with rich editing of project artifacts • Recipes are concerned with automating specific actions over artifacts • Both are likely to be useful in complex domains • Visual Studio Team System • VSTS provides powerful tools for team development and process management • GAT works with VSTS, but does not prescribe any team process or tools
More Important StuffSupport • GAT is an “emerging technology” provided “as-is” • No formal support policy • Only applicable to development machines, so not relevant for production server environments • The best source of support is the community • Microsoft provides community infrastructure • Microsoft participates in the community
More Important StuffFutures • Initial release of GAT is tested against Visual Studio 2005 Beta 2 • A minor refresh is expected for the final release of Visual Studio 2005 • Future plans to integrate GAT more closely with related authoring tools (eg. DSL, VSIP)
Session Summary • In this session we have talked about: • The challenges that architects and developers face with increasingly complex guidance assets • How the patterns & practices team is addressing this problem with Guidance Automation Toolkit • The key concepts underlying the Guidance Automation Toolkit • Support and future plans for GAT
Call to Action • We want your help to improve GAT and the patterns & practices assets that will use it • You can help by: • Downloading GAT as soon as it is available and trying it out • Participating in the community • Asking and answering questions • Submitting bugs and providing feedback • Sharing any interesting guidance packages you have built • Check back at http://microsoft.com/practices
Questions and Answers • Submit questions using the text box