Satisfy Your Technical Curiosity - 1 A Deep Dive Into The Guidance Automation Toolkit Jelle Druyts Compuware.NET Consultant

Slides:



Advertisements
Similar presentations
.NET Technology. Introduction Overview of.NET What.NET means for Developers, Users and Businesses Two.NET Research Projects:.NET Generics AsmL.
Advertisements

COB.NET R2 Program - 02 June 2014 Guidance Automation Toolkit VISUG 09/08/2006 Jelle Druyts
Site Collection, Sites and Sub-sites
SharePoint Forms All you ever wanted to know about forms but were afraid to ask.
Microsoft Office SharePoint Portal Server 2007 Introduction to InfoPath Forms Services Daryl L. Rudolph.
Designing, Deploying and Managing Workflow in SharePoint Sites Steve Heaney Product Development Manager OBS
T-FLEX DOCs PLM, Document and Workflow Management.
DEV392: Extending SharePoint Products And Technologies Through Web Parts And ASP.NET Clint Covington, Program Manager Data And Developer Services - Office.
Building Enterprise Applications Using Visual Studio ®.NET Enterprise Architect.
EMEA Beat Schwegler Architect Microsoft EMEA HQ Ingo Rammer Principal Consultant thinktecture
Software Factory Assembling Applications with Models, Patterns, Frameworks and Tools Anna Liu Senior Architect Advisor Microsoft Australia.
1 Computing for Todays Lecture 22 Yumei Huo Fall 2006.
Using the Visual Basic Editor Visual Basic for Applications 1.
Tom Hollander Solution Architect Solutions Development Centre Microsoft Australia ARC308.
Chapter 2: The Visual Studio.NET Development Environment Visual Basic.NET Programming: From Problem Analysis to Program Design.
Open and save files directly from Word, Excel, and PowerPoint No more flash drives or sending yourself documents via Stop manually merging versions.
Using Microsoft SharePoint to Develop Workflow and Business Process Automation Ted Perrotte National Practice Manager, Quilogy, Microsoft Office SharePoint.
1 1 Roadmap to an IEPD What do developers need to do?
Version Enterprise Architect Redefines Modeling in 2006 An Agile and Scalable modeling solution Provides Full Lifecycle.
©2011 Quest Software, Inc. All rights reserved. Steve Walch, Senior Product Manager Blog: November, 2011 Partner Training Webcast.
Winter Consolidated Server Deployment Guide for Hosted Messaging and Collaboration version 3.5 Philippe Maurent Principal Consultant Microsoft.
User Group 2015 Version 5 Features & Infrastructure Enhancements.
1 of 5 This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS DOCUMENT. © 2007 Microsoft Corporation.
2. Introduction to the Visual Studio.NET IDE 2. Introduction to the Visual Studio.NET IDE Ch2 – Deitel’s Book.
Create with SharePoint 2010 Jen Dodd Sr. Solutions Consultant
OFC302 Building Smart Document Solutions in Word & Excel Martin Sawicki Lead Program Manager.
McGraw-Hill© 2007 The McGraw-Hill Companies, Inc. All rights reserved. 1-1.
M. Taimoor Khan * Java Server Pages (JSP) is a server-side programming technology that enables the creation of dynamic,
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
DEV334 Creating Application Starting Points & Sharing Best Practices with Enterprise Templates Marc Gusmano Director of Emerging Technologies The Information.
Crystal Hoyer Program Manager IIS Team Preview of features that will be announced at MIX09 Please do not blog, take pictures or video of session.
Classroom User Training June 29, 2005 Presented by:
Lesley Bross, August 29, 2010 ArcGIS 10 add-in glossary.
Future Directions: Building Customizable Applications using.NET Eric Schnepp TLN205 Lead Program Manager Microsoft Corporation.
IT 211 Project Integration and Deployment Lab #11.
Session 1 SESSION 1 Working with Dreamweaver 8.0.
DEV325 Deploying Visual Studio.NET Applications Billy Hollis Author / Consultant.
B Copyright © 2009, Oracle. All rights reserved. Creating Experts.
Domain-Specific Development Stuart Kent, Senior Program Manager, DSL Tools, Visual Studio Team System, Microsoft.
1 Chapter Overview Publishing Resources in Active Directory Service Redirecting Folders Using Group Policies Deploying Applications Using Group Policies.
Lecture Set 2 Part A: Creating an Application with Visual Studio – Solutions, Projects, Files.
Systems Analysis and Design in a Changing World, 3rd Edition
DEV337 Modeling Distributed Enterprise Applications Using UML in Visual Studio.NET David Keogh Program Manager Visual Studio Enterprise Tools.
IBM Software Group ® Context-Sensitive Help with the DITA Open Toolkit Jeff Antley IBM October 4, 2007.
Office Business Applications Workshop Defining Business Process and Workflows.
DEV303 ASP.NET: Leveraging Visual Studio.NET For Web Projects Tony Goodhew Product Manager Microsoft Corp.
DEV330 Visual Studio.NET IDE Tips and Tricks Billy Hollis Author / consultant.
3 Copyright © 2004, Oracle. All rights reserved. Working in the Forms Developer Environment.
1 EndNote X2 Your Bibliographic Management Tool 29 September 2009 Humanities and Social Sciences Resource Teams.
EMEA Beat Schwegler Architect Microsoft EMEA HQ Ingo Rammer Principal Consultant thinktecture
EMEA Beat Schwegler Architect Microsoft EMEA HQ Ingo Rammer Principal Consultant thinktecture
IBM Software Group ® Managing Reusable Assets Using Rational Suite Shimon Nir.
CS562 Advanced Java and Internet Application Introduction to the Computer Warehouse Web Application. Java Server Pages (JSP) Technology. By Team Alpha.
® IBM Software Group © 2007 IBM Corporation Module 1: Getting Started with Rational Software Architect Essentials of Modeling with IBM Rational Software.
Visual Studio for Software Architects and Future Directions in Modeling Tools Jochen Seemann TLN311 Program Manager Microsoft Corporation.
Lecture Set 2 Part A: Creating an Application with Visual Studio – Solutions, Projects, Files 8/10/ :35 PM.
Chapter 27 Getting “Web-ified” (Web Applications) Clearly Visual Basic: Programming with Visual Basic nd Edition.
UNDERSTANDING YOUR OPTIONS FOR CLIENT-SIDE DEVELOPMENT IN OFFICE 365 Mark Rackley
EMEA Beat Schwegler Architect Microsoft EMEA HQ Ingo Rammer Principal Consultant thinktecture
Workflow in Microsoft Office SharePoint Server Jessica Gruber Consultant Microsoft Corporation.
Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry Pierson Microsoft.
Integrating and Extending Workflow 8 AA301 Carl Sykes Ed Heaney.
7 Copyright © 2006, Oracle. All rights reserved. Creating Experts.
Enterprise Library 3.0 Memi Lavi Solution Architect Microsoft Consulting Services Guy Burstein Senior Consultant Advantech – Microsoft Division.
XP Creating Web Pages with Microsoft Office
Building Enterprise Applications Using Visual Studio®
PLM, Document and Workflow Management
Development Changes in Dynamics 365 for Finance and Operations
Presentation transcript:

Satisfy Your Technical Curiosity - 1 A Deep Dive Into The Guidance Automation Toolkit Jelle Druyts Compuware.NET Consultant

Satisfy Your Technical Curiosity - 2 Have you ever needed... A 40-page document full of guidelines Architectural layers, solution/project structure Namespaces, class names, method names,... Best practices, step-by-step instructions Visual Studio customizations Custom actions, menu items, toolbar buttons,... Custom “Add New” items (classes, projects, solutions) Advanced automation Wizards Code generation Quick-start solutions for development teams Custom Software Factory development More time to write interesting code?

Satisfy Your Technical Curiosity - 3 Goals You will learn What GAT is, what it can and cannot do Best practices for GAT development How GAT fits into the Software Factories vision You will be able to Recognize opportunities for GAT Implement solutions with GAT Sit back while it does your work

Satisfy Your Technical Curiosity - 4 Agenda Visual Studio Extensibility Guidance Automation Toolkit GAT Best Practices GAT & Software Factories

Satisfy Your Technical Curiosity - 5 Satisfy Your Technical Curiosity VISUAL STUDIO EXTENSIBILITY A look at the available extensibility features in Visual Studio

Satisfy Your Technical Curiosity - 6 Visual Studio Templates Project & Item templates Reusable and customizable project and item stubs “New Project” and “Add New Item” dialog boxes Accelerate the development process Easy deployment: just a.zip file Content files: source code files, embedded resources, project files,... Metadata stored in a “.vstemplate” file (XML) Copy to a predefined folder (local or on the network) Capabilities are limited (templates are “dumb”)

Satisfy Your Technical Curiosity - 7 Visual Studio SDK Visual Studio has an object model Call the Visual Studio API’s directly Use EnvDTE.dll and EnvDTE80.dll Powerful Entire Visual Studio object model is exposed Difficult Registering custom packages in Visual Studio COM interop with EnvDTE object model

Satisfy Your Technical Curiosity - 8 Guidance Automation Toolkit Guidance Automation Make reusable code and pattern assets available in Visual Studio Integrate reusable code into applications Guide developers through complex procedures Built upon Visual Studio SDK Roadmap Latest release: February 2007 CTP Will be included in a future release of the Visual Studio Built and used by Microsoft patterns & practices Used extensively in their various “Software Factories” Free download (source code not available)

Satisfy Your Technical Curiosity - 9 Satisfy Your Technical Curiosity GUIDANCE AUTOMATION TOOLKIT A deep dive into the various elements of GAT

Satisfy Your Technical Curiosity - 10 GAT & GAX Guidance Automation Toolkit Guidance Automation Extensions Design-time Authoring of guidance packages Required for guidance package authors Runtime Execution of guidance packages Required for all developers

Satisfy Your Technical Curiosity - 11 Guidance Life Cycle

Satisfy Your Technical Curiosity - 12 Guidance Automation Packages A Guidance Package is Authored for a specific purpose A unit of deployment and versioning A Guidance Package consists of Visual Studio Templates Guidance Automation Recipes The “Guidance Package” meta package A quick-start solution for Guidance Packages Generates project structure & sample code Generates setup project to build MSI

Satisfy Your Technical Curiosity - 13 A First Look At The Enterprise Library Guidance Package

Satisfy Your Technical Curiosity - 14 Visual Studio Templates Provide integration with Visual Studio “Create New Project/Item” dialog box Defined in.vstemplate files (XML) Expanded by the Visual Studio template engine Associate Visual Studio Templates with recipes Select TemplateGAT calls Recipe Wizard collects arguments Template is “unfolded” Actions are executed to further transform solution items

Satisfy Your Technical Curiosity - 15 Visual Studio Templates <VSTemplate Version="2.0" Type="ProjectGroup" xmlns=" Application Block Guidance Package that creates a new Application Block. CSharp ApplicationBlock.ico Projects\Runtime\Runtime.vstemplate Microsoft.Practices.RecipeFramework.VisualStudio, Version= , Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a Microsoft.Practices.RecipeFramework.VisualStudio.Templates.UnfoldTemplate <Template xmlns=" SchemaVersion="1.0" Recipe="CreateApplicationBlock">

Satisfy Your Technical Curiosity - 16 Visual Studio Templates

Satisfy Your Technical Curiosity - 17 Guidance Automation Recipes A recipe is a fancy word for a wizard Automated activity as a series of instructions Abstracts something a developer would need to do manually E.g. create projects, add references,... Ensures that repetitive (error-prone) activities are performed in a consistent manner Simplifies complex or repetitive development tasks Defined in an XML file in the root of the project Referenced by a Visual Studio Template Recipe gets run when template is “unfolded”

Satisfy Your Technical Curiosity - 18 Guidance Automation Recipes <GuidancePackage xmlns=" Name="JelleDruyts.EnterpriseLibraryGuidance" Caption="Enterprise Library Guidance" Description="Provides guidance around the creation of Application Blocks" Guid="2cac5b9c-a04f-4a49-8a56-3ee5d63bd83f" SchemaVersion="1.0"> Create a new Enterprise Library Application Block <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters. CodeIdentifierStringConverter, Microsoft.Practices.RecipeFramework.Library" /> <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters. NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library" /> Application Block Information <Field ValueName="ApplicationBlockName" Label="Application Block Name" InvalidValueMessage="Must be a valid.NET identifier." /> <Field ValueName="ApplicationBlockNamespace" Label="Namespace" InvalidValueMessage="Must be a valid.NET namespace identifier." />

Satisfy Your Technical Curiosity - 19 Wizards Value gathering strategies Gather values for recipe arguments Walk the developer through one or more steps Any recipe can have a wizard associated with it

Satisfy Your Technical Curiosity - 20 Value Providers Provide values for recipe arguments Optionally dependant of other recipe arguments Define project names, post-build commands,... Retrieve currently selected project, file,... Special guest: ExpressionEvaluatorValueProvider Regular.NET classes (pre-built & custom) <ValueProvider Type="Evaluator" Expression="$(ApplicationBlockNamespace).$(ApplicationBlockName)">

Satisfy Your Technical Curiosity - 21 Type Converters Validate the value of a field CodeIdentifierStringConverterNamespaceStringConverter... Convert UI fields to a type representation Regular.NET classes (pre-built & custom) <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters. CodeIdentifierStringConverter, Microsoft.Practices.RecipeFramework.Library" />

Satisfy Your Technical Curiosity - 22 Actions Atomic units of work called in a defined sequence by recipes E.g. add project references, generate classes, add project items,... Strongly-typed input and output arguments Come from the recipe or from another action (chaining) Typically use EnvDTE Regular.NET classes (pre-built & custom)

Satisfy Your Technical Curiosity - 23 Looking Into The Enterprise Library Guidance Package

Satisfy Your Technical Curiosity - 24 Code Generation T4 templates (Text Templates Transformation Toolkit) Combination of text and scriptlets (C#/VB.NET expressions) E.g. generate data access component from database,... ASP.NET-like syntax with full capabilities of.NET using System; using Microsoft.Practices.EnterpriseLibrary.Common.Configuration; using Microsoft.Practices.EnterpriseLibrary.Configuration.Design; namespace { internal sealed class : ConfigurationNode { }

Satisfy Your Technical Curiosity - 25 Continuous Guidance Recipes stay “alive” Recipes associated with project items E.g. right-click data access project, choose “Add Data Access Component” Adding more templates New projects, e.g. data access project New project items, e.g. data access component Uses same mechanisms (wizards, actions,...)

Satisfy Your Technical Curiosity - 26 Guidance Navigator Separate window listing Overview information All the available recipes History of executed recipes Links to online help, documentation,...

Satisfy Your Technical Curiosity - 27 Other GAT Artifacts Custom Wizard Pages Add custom user controls to the wizard Type Editors Edit values in a wizard through a custom UI Snippets Visual Studio snippets that are automatically deployed

Satisfy Your Technical Curiosity - 28 Code Generation in the Enterprise Library Guidance Package

Satisfy Your Technical Curiosity - 29 Satisfy Your Technical Curiosity GAT BEST PRACTICES A look at some development best practices around GAT

Satisfy Your Technical Curiosity - 30 When (Not) To Use GAT Use GAT when You have a specific problem with a specific solution that Is automatable Must be executed multiple times Has a development time or risk that is too high to do manually You can’t use “dumb” Visual Studio Templates You want to prepare for building a Software Factory Do not use GAT when You will use the Guidance Package only once – ever You can’t/don’t want to invest time in the learning curve You just think it’s cool

Satisfy Your Technical Curiosity - 31 Authoring Guidance Packages There is a learning curve Do not involve everyone Make 1 person/team responsible for GAT Once the knowledge is there, investment pays off quickly Don’t try to build everything at once Start automating simple scenarios Incrementally increase complexity Add templates, logic and guidance along the way

Satisfy Your Technical Curiosity - 32 GAT & Source Control Guidance Package “state” is kept in a.gpState file (XML) with the solution file (.sln) Indicates which Guidance Packages are associated with the solution Contains recipe references and some state Can/should be checked in to Source Control

Satisfy Your Technical Curiosity - 33 Guidance Package State Guidance Packages are “stateless” Recipe arguments (wizard fields) aren’t available after the wizard finished Store values out-of-band (e.g. to disk, database,...) Lookup values dynamically in solution if possible (through Visual Studio SDK, e.g. default namespace) The generated code is the “model” DSLs can fill this gap

Satisfy Your Technical Curiosity - 34 Satisfy Your Technical Curiosity GAT & SOFTWARE FACTORIES A look at the big picture

Satisfy Your Technical Curiosity - 35 Software Factories Initiative developed by Microsoft patterns & practices Web Service SF-Web Client SF Smart Client SF-Mobile Client SF Current state: infancy Written documentation + Guidance Packages + Reference Implementations GAT mostly used for wizards & code generation The code is the “model” The road ahead: towards the Grand Vision Domain Specific Languages (DSLs) capture and persist the model Programming code becomes a “rendering” of the model GAT guides developers through complex tasks

Satisfy Your Technical Curiosity - 36 A Possible Future (EFx)

Satisfy Your Technical Curiosity - 37 GAT & Software Factories Software Factory enabling technologies: Visual Studio Extensibility Model Visual Studio Modeling Tools (Designers) Domain Specific Language Tools (DSLs) Small, highly focused languages that model and solve clearly identifiable problems Guidance Automation Toolkit Generate initial solution structure Wizards & code generation Can be used to provide guidance and context to DSLs Launch recipes from shapes in the DSLs Enable DSLs in certain parts of the solution

Satisfy Your Technical Curiosity - 38 Satisfy Your Technical Curiosity IN CLOSING Wrapping up...

Satisfy Your Technical Curiosity - 39 Key Points GAT is the next step in Visual Studio automation Builds on Visual Studio Templates & Visual Studio SDK GAT can help you Automate repetitive tasks and complex processes Provide guidance right inside the Visual Studio solution Generate code with the powerful T4 engine Provide context and guidance continuously Make sure guidelines and best practices are enforced Be lazy Be lazy GAT is a key part of Software Factories Understand the present Prepare for the future

Satisfy Your Technical Curiosity - 40 Satisfy Your Technical Curiosity Resources Guidance Automation Toolkit Home Forum Community site My Guidance Automation series Software Factories Home Guidance Automation Toolkit and Domain-Specific Language Tools for Visual Studio 2005: Integration Scenarios EFx Clarius Software Factories Toolkit Microsoft Microsoft patterns & practices: Enterprise Library 2.0:

Satisfy Your Technical Curiosity - 41 Satisfy Your Technical Curiosity Thank You! Thanks for your attention I'll be happy to answer all your questions Right after the session Compuware Booth Community Booth: Ask-The-Experts VISUG Booth

Satisfy Your Technical Curiosity - 42