Patterns & Practices Summit – Day 4: Software Factories

Steve got burned today by “the day job.”  I was really “jazzed” about today’s topic, but (there’s always a but) unfortunately, I had to work through some issues in our build and deployment process and was unable to listen and take notes on most of the morning sessions and Chris Kinsman’s Services Factory presentation.  I am not happy about this, but that’s life.  I apologize to both of my subscribers. David was able to get more notes than I was, so pop over to his blog and read all about it.

– Steve


Keynote: Architectural Guidance with Software Factories – Jack Greenfield
Working on and off during the discussion, so the notes are sparse.  Jack gave an overview of the the PnP ideas around Factories.  This set the foundation for the rest of the presentations today.  His presentation went long (there’s just way too much info on this for a single hour) so there was not time for Q&A, that was generally considered to be a bummer.

Session 1: SI & Designing for Operations – David Aiken
Work got in the way

Session 2: Smart Client Software Factory – Wojtek Kozaczynski
Work got in the way again

Session 3: Services Software Factory – Chris Kinsman
Yup, still working…

Session 4: Web Client Software Factory – Michael Puleio
Hoping to be finished soon…
Luckily, I’m sitting 3 time zones west of my office and they have all gone home.  More notes to follow…

Session 5: TDD and Guidance Automation – Chris Tavares
Chris gave us a review of how testing of Guidance Automation Packages is done.  If you are building any packages, you will want to review his talk.  It seems that trying to do TDD in this aren is really really hard.  Because you are working against the Visual Studio IDE, you can find that you are easily becoming bogged down in testing Visual Studio. To get around this, Chris recommends creating an interface and mocking Visual Studio.  Here are some notes fromthe session:

Guidance Automation Toolkit

  • Authoring environment (sort of)
  • VSIP Package
    • Does the painful stuff so you don’t have to
  • Hook up UI to gestures in VS
    • Context menus
  • User Interface
    • Wizard framework (hook to existing framework)
  • Reusable actions

Guidance Automation Extensions

  • Runtime
  • Sits inside VS and runs VSIP package

Guidance Package

  • A combination of
    • Recipes
    • Project and Item templates
    • Snippets
    • Written Guidance
    • Example code


  • Reference
    • Answers the question, “Can this recipe be run now?”
    • Needs to query on the current state of the project
      • What is currently selected
      • What does that thing contain
      • The rest of the project
  • Arguments
    • Dictionary of name/value pairs
    • Argument types are typed
    • ValueProvider
    • TypeConverter
  • Wizard
    • “Standard” pages
      • XML configuration driven
      • Map directly to argument fields
    • Custom pages
      • User controls
    • Standard wizard frame
  • Actions
    • Object that actually does the work
      • Codegen
      • Project configuration changes
    • Configuration hooks them to arguments
      • Potentially reusable across recipes

T4 Template Engine

  • Looks like Classic ASP and CodeSmith templates
  • Uses inconsistent syntax from above

Building Testable Guidance Packages

  • If you can’t test it, make it so stupid it can’t break.

Presenter First Pattern

Closing Keynote: Architecture Evaluation in Practice – Dragos Manolescu
Dragos ran through the difference between the “State of the Art” of Architecture Evaluation and the “Reality” of Architecture Evaluation.  He didn’t give a training session on what Architecture Evaluation actually is, but rather how to go about doing it in an “opportunistic manner”.  He recommends adapting the theory to your specific project needs.  The discussion was a bit esoteric with regard to my needs. 

That’s it from Redmond!  Time to get ready to fly back to the right-coast.