Infosys Microsoft Alliance and Solutions blog

« Cloud computing made possible with Azure | Main | Problem Installing SQL Server 2008 on a Vista Box »

Microsoft Blueprints - Building Process Oriented Contextual Guidance

Introduction

Before we start discussing Microsoft Blueprints technology, let us try to answer this simple question: Do you have structured and systematic reuse practices in place? Please don’t rush to the answer because when one says “reuse”, the first thing that comes to mind is “code” reuse and our answer is mostly based on this perception. To bring objectivity while explaining the concept of reuse we should think in terms of reuse of intangible assets like reuse of knowledge, intelligence, domain/technical expertise etc. You might have gone through the situation when an experienced person quits the team and you find yourself struggling to meet the deadlines. Why? Because, we always tend to reuse the person itself rather than his/her knowledge or intellect. And a time comes when you become heavily dependent on that person to implement defined procedures and processes. So, the question is why do we need to re-invent the wheel when ideally we can embed all of our intellect and expertise inside a workflow based process-oriented tool and reuse that tool itself to implement a particular aspect or process during software development lifecycle or develop a particular feature of a specific type of application for example, implementing MVC pattern for your web application or implementing Single Sign-On or implementing a Data Access Layer using Entity Framework. There are a multitude of scenarios where you can use this kind of a tool tightly integrated with your development environment to provide step by step guidance to build a finished product.

What is a blueprint?

Whenever I come across this term “Blueprint”, I imagine an architect pulling out a big rolled out sheet of paper and spreading it on top of a table with some criss cross lines and curves drawn across it. Essentially, blueprint is a term associated with construction industry which contains a diagram of the architectural design of an entire building or a part of it. But in a broader sense blueprint refers to nothing but a detail plan. If one follows the individual well defined steps listed in a blueprint, you can get to the finished product at the end. Why can't we use a similar kind of approach for software development process? In fact we can. What we need is a support from underlying technology platform in order to build software blueprints which can be accessed from within our development environment itself. A software blueprint should be focused on a particular aspect of a software application. For example you can have blueprints that provide step by step guidance and code generation capability for Data Access, Application Security, and Smart Client etc.

Introducing Microsoft Blueprints

During recently concluded Professional Developer's Conference 2008, Microsoft announced the first CTP release of a new platform for authoring contextual guidance which they call Blueprints. Once you install it, you will get an additional item "Blueprints Manager..." on the Tools Menu within your Visual Studio 2008 IDE.

New menu item appears on Tools Menu within Visual Studio

At the core of the Blueprints platform are Blueprints Manager and Blueprints Runtime. Blueprints Manager is responsible for managing and updating all the blueprints available on the system. It also manages the Blueprints Repository which is a centralized storage for all the versions of every single blueprint installed on the system. Blueprints Runtime provides support for various runtime activities like executing templates, workflow execution, visual studio interfacing etc. Microsoft Blueprints Manager comes with one default blueprint called "Micosoft Blueprint Factory" which you can use to build your own custom blueprints. It provides step-by-step guidance on how to build a custom blueprint.

Blueprints Manager 

Microsoft Blueprints - Advantages

Versioning has always a problem with the GAT based guidance packages. Whenever there is a new version of a guidance package available you need to uninstall the previous version in order to install the new version. But with the blueprints you have an advantage here. One can update the installed blueprints through RSS Feeds from within Visual Studio IDE itself. Blueprint Manager keeps on checking for the updated versions of a particular blueprint on the Internet and notifies you about the latest updates which it can download and update the underlying blueprint. So, the delivery of blueprints becomes as easy as clicking a button on the screen. Information about all the versions are kept in a repository so that when you start working on an application unfolded by some older version of a given blueprint, you can always get that version from the repository and update your application. It is very important if your current version of the blueprint is incompatible with this old application. 

Blueprints Manager Auto Update Feature

Another big leap is windows workflow based guidance. Till now, if you look at GAT base software factories, you may find guidance is provided in the form of documents. You can see a list of steps that need to be taken in order to build an application using a software factory using guidance explorer. But this sort of guidance does not stop a user from executing a recipe to generate business entities from a database before executing the recipe to create a database connection which ultimately results in error. For an experienced developer or an architect it is I would say “OK” since they know the fact that we need to establish a database connection first before getting any meta data information from the database but for a developer who is new to development process, it becomes really tedious to understand why this particular recipe is not working and guidance packages as the name suggests are all about providing guidance to a mere mortal like me.
With the blueprint technology, you can build your guidance on top of workflow foundation itself so that you can create a workflow for an entire development process!! Individual activities might reflect the actual steps in SDLC. For example if you are following a Waterfall Model you can define a workflow which starts with requirement capturing activity and unless and until you upload the business requirement document in the repository, it won’t allow you to move to the next step. You can go ahead and even build some intelligence so that the workflow can check whether all the important section in the document has been filled or not. Once this is done it will mark the current activity as completed and you can move on to the next activity so on and so forth. You can also mark some of the workflow activities optional. We can display the entire workflow to the user with each activity in a different color based on its current state.

Blueprints Manager - Workflow

These are some of the advantages of blueprints as I can see today. There are tremendous improvements in terms of software factory authoring experience too. While using GAT/GAX we have to deal with lot of Xml to show wizards, to store data, to do any actions. But now blueprint has really made it simpler introducing the concept of Commands to achieve the same result. We now no more have to worry about writing everything in Xml and following GAT/GAX standards only. So now you have your code generation logic more in C# (or VB) rather than in Xml which has lot of benefits like reducing your development and testing effort drastically.

To summarize the things, Blueprints technology from Microsoft can be used to provide a richer contextual guidance to developers. Blueprints technology is lot simpler and richer than GAT/GAX technologies and overcomes many limitations. Though the Blueprints technology is in betas, we believe this technology holds a lot of promise; software developer community is encouraged to use this technology to reap huge productivity benefits. In future we hope to see blueprints which will be capable of providing guidance on some of the business and architectural challenges.

Keep watching this space as I along with my colleagues will keep updating with the latest happening on Blueprints Technology. To know more about Microsoft Blueprints please visit here.

TrackBack

TrackBack URL for this entry:
http://www.infosysblogs.com/microsoft-mt/mt-tb.fcgi/315

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

Please key in the two words you see in the box to validate your identity as an authentic user and reduce spam.

Subscribe to this blog's feed

Infosys on Twitter