Awhile back Somasegar talked about
VSTS and Software Factories. Ah, the industrialization of software development. Let's talk about software factories for a second.
A software factory is a software product that can be plugged into or configure an extensible development tool, like Visual Studio Team System, as Somasegar mentions. So what is the software factory product? It can be any of a number of combination of different things, such as patterns, frameworks and domain specific languages. And what does this provide? Think about customer relationship management for a second. If you were to examine the majority of CRM applications, you would probably find some underlying similaries in the framework components and in the design patterns used in the software. Herein lies the problem. Why should everybody who designs a CRM application have to go through the process of building, from scratch, those same framework components under the same usage and design patters and guidance? If an accepted approach to the development of CRM applications has been proven and used successfully, why not make that non-customized portion of the application development life-cycle available to others, in an effort to increase productivity? This is what software factories will attempt to solve. The factory for a CRM application would contain something along the lines of the .Net framework, C# or VB.Net, the Microsoft Business Framework and Microsoft SQL Server, with maybe one or two other components that don't strike me at the moment. When given that software factory, you now have all the framework components of developing and endless number of CRM applications, each with its own specific customizations that tailor to the customers needs.
The main supporting player in software factories is the knowledgable and experienced developer. This knowledge and experience must be captured, recorded and made available for reuse by others in the software development industry.
Lets see how well the idea takes off.