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
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.