Building a DsE Product Family

Domain-specific Engineering (DsE) is a methodology for building a domain—a product family and an associated mechanism for deriving customized products. DsE integrates disciplines of management, engineering, and manufacturing. Manufacturing entails problem analysis, solution synthesis, and problem-solution evaluation for the development of a product. Synthesis is the constructing of a product by combining discrete elements to form a coherent whole. MetaSynthesis, then, is the exploration of techniques for constructing a product from components. DsE provides a framework in which MetaSynthesis identifies alternative methods and tools for the effective and efficient derivation of similar products (each in the form of various work products) from a coherent set of reusable components appropriate to a targeted domain. The four levels of DsE process capability accommodate different approaches to synthesis that MetaSynthesis characterizes.

The approach to reuse within DsE is abstraction-based reuse. The medium for abstraction-based reuse is adaptable components. The DsE concept of defining and using adaptable components was originally conceived in the form of an essential tool for the Spectrum application generation environment, was developed further as supporting technology for the Synthesis product line methodology, and has been generalized further as supporting technology for the DsE methodology. Each adaptable component represents an "abstraction" that defines a family of similar components which are the basic building blocks of the work products in a domain. A principal activity of the DsE domain engineering process is product family engineering which includes the design and implementation of a product family as a set of adaptable components and a means for deriving and composing instance components to form customized products. Building a product family includes identifying the set of abstractions that need to be realized as adaptable components.

Domain Engineering builds a set of adaptable components that are sufficient to build the instances of a specified product family, along with an associated generator (a "factory" in manufacturing terms) through which components are selected, tailored, and combined to construct a product customized to specified customer needs. Building a product entails resolving a set of decisions that progressively reduce the set of products to a specific instance. (Low-capability forms of DsE allow this work to be done manually, whereas higher levels of DsE capability rely on partially or fully automating it.)

The members of a product family are distinguished by a set of decisions that are meaningful to a customer in a targeted market. A generator formalizes a family in that every product that it produces is a member of that family: this mechanism can construct any member of the family and every instance that it can generate is a member of the family. A generated product is an integrated set of generated work products and a generated work product is an integrated set of components.

The MetaSynthesis Method and Tools

MetaSynthesis is a method for creating and using metaprograms to derive tailored reusable assets. An associated notation and family of tools supports practical use of the MetaSynthesis method. MetaSynthesis generalizes the concept of metaprogramming which is the creation and use of programs that generate other programs.

MetaSynthesis can be applied at any work scope granularity, that is to produce reusable components, work products, or whole products. The basic MetaSynthesis building block is the adaptable component. Each adaptable component is a metaprogram that defines a family, representing all instances of that family in a single unified form.

At a product level, MetaSynthesis supports defining a product family and deriving instance products. At a work product level, it supports defining a work product family and deriving instance work products. At a component level, it supports defining an adaptable component and deriving instance components. A product family can be represented as a set of interrelated work product families, each of which is represented as a covering set of adaptable components.

The MetaSynthesis method is augmented by an associated family of metaprogramming tools. Each tool is built upon an underlying abstact notation for describing a family and expressing any allowed (dimensions of) customization. Any MetaSynthesis tool implements (1) a notation for representing a family and for selecting among instances and (2) a mechanism for deriving an instance of a particular family given a definition of the family and of instance selection values in that notation. The MetaSynthesis family of tools includes:


The concept of MetaSynthesis relates to many other familiar terms. Creating a generator that produces software is known as metaprogramming. Creating a generator that produces complete products, widely applied in manufacturing, is known as mass customization. MetaSynthesis corresponds to the subfamily of Domain-specific Engineering process that includes the creation and use of a generator as opposed to those based on a more conventional software process. An Adaptable Component is a representation of a family of software components.

Effective reuse is forward looking, concerned with previously developed assets only as a guide and source for what will be needed in the future. The nature of reuse is being able to rapidly create a customized component that meets a current need. This is achieved by representing each reusable component in the form of a metaprogram that accounts for all the ways that such a component may need to be tailored for reuse. A metaprogram defines a family of similar components and provides a mechanism for deriving any instance of that family such that the instance obtained is customized to specific needs.

The following graphic illustrates two ways of envisioning a set of reusable assets that can each be used as a component of different products. The traditional view, depicted on the left, envisions a repository of fixed assets that must be searched for close matches that can then be tailored to a specific need. This approach has never worked very well or done much if anything to increase productivity. An alternate but equivalent view, depicted on the right, envisions a repository of adaptable assets that must be created specifically for reuse. Each adaptable asset represents a set of assets that each meets a similar need in different ways. A particular reusable asset is obtained by selecting the adaptable asset that encompasses a specific need and then deriving an instance asset by applying associated tailoring criteria. This approach eliminates uncertainty and effort involved in both finding and tailoring reusable assets for greater productivity and quality at the individual and aggregate asset level and provides a fundamental mechanism for a DsE approach.

Adaptable Components