I have been speaking to customers and partners recently (last week in Japan) about Software Factories and our modeling strategy in general. During those talks, the audience found it useful to see a couple of different Software Factory examples that fall near the opposite ends of a size scale.

 

  1. A baseline architecture for part of a Presentation Layer
    • The Pattern & Practices team User Interface Process (UIP) block available from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/uipab.asp. This is a small framework, based on the MVC pattern, which helps a developer build that part of a layered application architecture that concerns transitions between related Web pages or Windows forms in the Presentation layer
    • A solution-building agent (we call these recipes) that adds a UIP project to an existing solution from a project template
    • Process guidance for building User Interface Processes

This mini-Software Factory could be further enhanced by a DSL-based Design tool for diagrammatically showing links between pages or forms, which generates completion code for the UIP block.

 

  1. A set of assets spanning the entire life cycle for B2C ecommerce systems for small to medium sized businesses that includes:
    • Feature models of system requirements that help the developer configure the Software Factory assets when building a particular instance of the family
    • A baseline architecture description for this family of applications
    • A set of assemblies containing pre-built frameworks and components for all major subsystems
    • DSL based tools for both development and deployment tasks
    • A set of patterns to be used by developers when coding or using one of the abovementioned DSLs
    • Configurable BizTalk schedules for orchestrating drop ship dialogs with suppliers
    • A tailored development process – exactly fit to the needs of the various roles engaged in building this kind of application
    • Recipes that create the initial solution, and then lazily build out project clusters for optional subsystems
    • A deployment topology
    • A set of test cases and data sets
    • A set of build scripts

 

Software Factories can be composed. For example, the second SF may include (and possibly specialize to the domain of ecommerce applications) the first one.