Domain-specific Engineering

Rethinking the software process

The traditional software process was conceived based on the simplifying assumption that the goal of development is to create a single, fixed solution to a well-defined problem. This is not the situation that confronts most software developments: real problems are poorly understood and constantly changing. Complicating this further, many people have similar problems to be solved. The traditional approach is either to have someone (often different people) solve each of these problems separately or to have someone create a single solution to all of these problems, either simplifying them into a single problem or complicating the solution for everyone by accommodating some of the differences as installation or usage choices. DsE is a reconception of the software process based on a more accurate view of the true nature of development.

The figures below progressively introduce the elements of a DsE process, down to the level of familiar activities. The DsE course fully defines the concepts and activities of DsE as a comprehensive engineering and manufacturing process. For greater detail, the RSP Guidebook presents (as of 1993) a uniform description of two of the specialized forms that a DsE process can take. For best fit to an organization's preferred practices, the PIr method provides guidance on defining a fully tailored DsE process.

The context of a Domain-specific Engineering process:

<Domain-specific Engineering Context>

The traditional software process starts with a defined problem and creates a single solution to it. DsE starts with an organization's defined business objectives for a market and creates the framework for delivering customized solutions to any of a set of similar problems. Process adoption identifies those market-based objectives, in terms of targeted customers and the types of problems to be solved, and determines how DsE should be applied to achieve those objectives.

A Domain-specific Engineering process:

<A Domain-specific Engineering Process>

Application Engineering is the process by which a software development project builds a customized product to meet the needs of a particular customer.

Domain Engineering is the process for creating reusable assets and a supporting infrastructure that enables Application Engineering projects to be performed more effectively: faster, at lower cost, and with better quality.

An example of an augmented DsE Application Engineering process

<An augmented Application Engineering Process>

The easiest Application Engineering process for an organization to adopt is one that closely resembles its existing software development process. Differences can be limited, for example, to the way in which individual work products are developed, with parts of some of these being created with reusable assets. This type of process, which is most suitable for sales-driven businesses, provides modest productivity improvements while requiring only modest efforts to institute.

An example of a streamlined DsE Application Engineering process

<A streamlined Application Engineering Process>

Any engineering process can be adapted to a domain-specific context and provide benefits over that process used for a single product at a time. However, the DsE approach provides opportunities for much greater leverage through streamlining of the process. While an improved process can be introduced incrementally over several years for lower risk, many organizations opt for more rapid change so they can better respond to their customers' needs and gain a competitive advantage in their market. Adopting this type of process requires a substantial organizational commitment and effort but produces much greater productivity improvements for market-driven businesses.

Details of Application Modeling:

<A detailed Application Engineering Process>

Details of Application Production:

<A detailed Application Engineering Process>

A DsE Domain Engineering process:

<A Domain Engineering Process>

Domain Engineering is organized into 5 activities: