Software Engineering Institute | Carnegie Mellon University
Software Engineering Institute | Carnegie Mellon University

Digital Library

Javascript is currently disabled for your browser. For an optimal search experience, please enable javascript.

Advanced Search

Basic Search

Content Type


Publication Date


Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools

  • Loading the video......
  • Abstract

    Increasingly complex and rapidly changing requirements and technologies are pushing the limits of the current approach to application development. Because of these trends, stakeholders are increasingly turning to software product line practices to reduce risk, cost, and time to market while improving product quality through systematic reuse. Adopting organizations are starting to demand the kind of tool support available in Rapid Application Development (RAD) environments for software product lines. This talk describes a methodology developed at Microsoft called Software Factories. The goal of the methodology is to enable automation of life-cycle tasks in software product line contexts by integrating innovations in model-driven development (MDD), component-based development (CBD), and agile development methods. Software Factories is based on a four-part pattern for building patterns, models, frameworks, and tools for specific domains, such as user interface construction or database design. The key to the methodology is reducing the cost of implementing the pattern, making it cost-effective for narrower and more specialized domains, such as B2C application development and business process automation. The central concept is the software schema-a network of viewpoints describing the artifacts that constitute the members of a family of software products and identifying the patterns, languages, frameworks, tools, processes, and other assets used to build those artifacts. Mappings between viewpoints support artifact transformation and provide constraints on the development process that enable a scalable approach to agile development. By automating many aspects of the product development process, the Software Factories methodology provides a basis for industrializing software development and promotes the formation of software supply chains, paving the way for software mass customization.


    Jack Greenfield is an architect for enterprise frameworks and tools at Microsoft. He was previously the chief architect of the Practitioner Desktop Group at Rational Software Corporation, and the founder and CTO of InLine Software Corporation. At NeXT, he was a key contributor to the Enterprise Objects Framework, now known as Web Objects from Apple Computer. A well-known speaker and writer, Mr. Greenfield is also coauthor of the book Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools published by John Wiley and Sons. He has contributed to the Unified Modeling Language (UML), the Java 2 Platform, Enterprise Edition (J2EE), and related Object Management Group (OMG) and Java Community Process (JCP) specifications. He holds a BS degree in Physics from George Mason University.