Software factory
A software factory is defined as a facility that assembles (not codes) software applications to conform to a Specification following a strict Methodology. By utilizing the fundamentals of industrial manufacturing -- standardized components, specialized skill sets, parallel processes, and a predictable and scalable consistency of quality – a true Software Factory can achieve a superior level of application assembly even when assembling new or horizontal solutions. Just as industrialization of the automobile manufacturing process led to increased productivity and higher quality at lower costs, industrialization of the software development process is leading to the same advantages. Software factories have gained recent popularity as a cost-efficient way to reduce the time it takes to develop software. Conceptually, software factories represent a methodology that seeks to incorporate prebuilt, standard functionalities into software which is typically disaggregated by domain.
The "Software Factory" uses a Software Manufacturing process and a set of productivity tools which enable this process.
Software Manufacturing is a process for the code-less assembly of any horizontal Business Software Application from 100% proven/reusable components, exactly to specification for an end user, that are delivered in a consistent and predictable timeframe. The Software Manufacturing process is only achieved through the use of a set of productivity tools that allow existing components, applications, and systems to be easily consumed, integrated, and orchestrated into the end product without the use of code. The canonical definition holds that if there is ANY code in the application layer, you are NOT assembling and therefore are NOT manufacturing, though most current implementations (circa 2006) do not hold strictly to this practice.
Productivity tools are tools that enable code-less assembly of software. Examples of such tools include Microsoft's Access, FileNet's Process Designer, Crystal Reports.
Since the software factory approach is based on the integration of many components, it probably requires a high level of inductive reasoning aptitude for its workers.
Of course, any software company who promises to build enterprise applications in far less time than the industry standard using the concept of a Software Factory as its sole reasoning is likely employing a scam. The old adage still stands: If it sounds too good to be true, it probably is.
References
- Jack Greenfield, Keith Short, Steve Cook, Stuart Kent, John Crupi, Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools, ISBN 0-471-20284-3
- Jack Greenfield, Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools (Microsoft, 2004)
Implementations
Microsoft Patterns & Practices Team is developing four software factories:
- Smart Client Software Factory (formerly known as Smart Client Baseline Architecture Toolkit) (released: 30 June 2006)
- Web Service Software Factory (released: July 2006)
- Mobile Client Software Factory (released: July 2006)
- Web Client Software Factory (projected to be released: January 2007)
Project Glidepath is a MicroISV-oriented Software Factory, also from Microsoft.
Enterprise Framework (EFx) Factory from Microsoft Services was one of the first pioneering architectural software factories to use a unique combination of model driven development, and integrated runtime environment tools to build Service-Oriented Enterprise Applications and Services.
.NET Database Application Developmnet
External links
- Software Factories (Microsoft .NET Architecture Center)
- tangible architect - .NET Software Factory with DSL Modeller