This site is dedicated to the advancement of software development.

We see a capacity crisis looming. The industry continues to hand-stitch applications distributed over multiple platforms housed by multiple businesses located around the planet, automating business processes like health insurance claim processing and international currency arbitrage, using strings, integers and line by line conditional logic. Most developers build every application as though it is the first of its kind anywhere.

Without significant changes in our methods and practices, global demand for software development and maintenance will vastly exceed the pace at which the industry can deliver in the very near future.

Scaling up to much higher levels of productivity will require the ability to rapidly configure, adapt and assemble independently developed, self describing, location independent components to produce families of similar but distinct systems. It will require a transition from craftsmanship to manufacturing like the ones we have seen in other industries, and will eventually produce more advanced earmarks of industrialization, such as supply chains, value chain integration and mass customization.

To accomplish this, the industry must capitalize on some key innovations in software development. We must synthesize ideas such as domain specific languages, software product lines, component specification and assembly, patterns, framework completion, domain analysis and feature variability analysis into a cohesive approach to software development that can learn from the best patterns of industrialized manufacturing.

This is what we mean by Software Factories. The industrialization of software development.

A Software Factory is a software product line that configures extensible development tools like Visual Studio Team System with packaged content like DSLs, patterns, frameworks and guidance, based on recipes for building specific kinds of applications. For example, we might set up a Software Factory for thin client Customer Relationship Management (CRM) applications using the .NET framework, C#, the Microsoft Business Framework, Microsoft SQL Server and the Microsoft Host Integration Server. Equipped with this factory, we could rapidly punch out an endless variety of CRM applications, each containing unique features based on the unique requirements of specific customers. Better yet, we could use this factory to create an ecosystem, by making it available to third parties, who could extend it to rapidly build CRM applications incorporating their value added extensions.

Follow this link to read a brief article on Software Factories we wrote recently that was published in Software Development Magazine, July 2004.

Our site is under construction. We are in the process of adding content and resources to illustrate our ideas, and point towards those of others who think likewise, or even those who disagree with our views. Please check out the section that describes our Book.

Thank you for visiting.