Generative Programming and Component Engineering

Generative Programming and Component Engineering

Jack Greenfield

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.

Keynote Talk on Software Factories

Increasingly complex and rapidly changing requirements and technologies are making application development increasingly difficult. This talk examines this phenomenon, and presents a simple pattern for building languages, patterns, frameworks and tools for specific domains, such as user interface construction or database design. Software Factories integrate critical innovations in adaptive assembly, software product lines, and model driven development to reduce the cost of implementing this pattern, making it cost effective for narrower and more specialized domains, such as B2B commerce and employee self service portals.

In a nutshell, a software factory is a development environment configured to support the rapid development of a specific type of application. At the heart of the methodology is the software factory schema, a network of viewpoints describing the artifacts that comprise the members of a family of software products, and the languages, patterns, frameworks and tools used to build them. Mappings between the viewpoints support traceability, validation, assisted development and complete or partial transformation. They also support a style of agile development called constraint based scheduling, which scales up to large, geographically distributed and long running projects.

While Software Factories are really just the logical next step in the continuing evolution of software development methods and practices, building on lessons learned about patterns and frameworks, and extending the kinds of automation already provided by Rapid Application Development (RAD) environments, they promise to change the character of the software industry by introducing patterns of industrialization. By automating many development tasks, and creating contracts that support separations of concerns, Software Factories promote outsourcing and the formation of software supply chains, paving the way for mass customization.