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.