When a car company needs to create a new car, they don’t go down to the local hardware store to buy generic parts and tools, and start putting them all together.  Instead they have highly specialized factories, using customized processes and tools, designed to build a specific make and model of car.


When a team starts building a piece of software, the experience today is generally much more like a trip to the hardware store.  Over the last year Microsoft has been investing in Software Factories, which aim to bring the benefits of automation found in other industries to software development, resulting in improved quality, consistency and time-to-market.  A software factory is an installable package of tools, processes and guidance that extends Visual Studio and optimizes it for developing a specific type of application, like an occasionally connected client or a WCF-based service.  In practical terms, a factory provides capabilities such as wizards, templates, designers, code generation and documentation, and guides a team through the development process by surfacing tools and content appropriate to the task at hand.


There are two key elements to our software factory strategy.  First, we’re providing a platform that allows users to execute, customize and build software factories within Visual Studio.  Today, our software factory platform consists of the Guidance Automation Extensions (GAX), Guidance Automation Toolkit (GAT) and Domain Specific Language Tools.  Second, we are building a number of software factories that target some of the most common enterprise application types.


In the 6 months since the release of our first software factory there have been over 100,000 downloads of four different software factories.  In addition to us delivering this, many of our partners including Infosys, EDS and Avanade are starting to build factories and include them in their technical strategies.  In addition, tools such as GAT and DSL Tools enable anyone to build their own factories, either using existing factories as a starting point, or starting from scratch.


While it will take us a number of years to completely realize the software factory vision, we hope our current generation of factories provide some great first steps towards more streamlined software development projects – and that our roadmap with Visual Studio Team System will continue this journey.