Design By Transformation (DxT)

Pipe-and-filter (PnF) architectures are a fundamental class of software designs.  Complex parallel PnF architectures can be derived by transformations that codify design knowledge used by domain experts. Starting with a simple sequential PnF architecture, we apply transformations to refine (reveal hierarchical detail), optimize (break modular boundaries to achieve efficiency or availability), and extend (incrementally expose more architecture functionality) to derive a parallel architecture.  More information is obtained by following the hyperlinks below.

Basics Case Studies Tools Research Support Publications

DxT Basics

Pipe and Filter (PnF) Architectures

A pipe-and-filter architecture is a directed multi-graph of boxes and connectors that defines the implementation of a system. A box is a component with input and output ports.  A connector is a communication path for messages pointing in the direction of dataflow from an output port to one or more input ports.

A filter architecture is an example (Fig. (a)). It consists of a single box FILTER that takes a stream of photographs P as input, examines each photograph p in P, and outputs p only if some criteria is satisfied. A shorter stream Q is produced. FILTER may have other parameters, such as a photograph type and filtering criteria. We elide these details without loss of generality.

Transformations

An architectural transformation is a mapping (a multi-graph rewrite) of an input architecture to an output architecture an elementary architecture into a complex, sophisticated architecture.  There are at least 3 basic transformations that we consider:

Case Studies

DxT can be used as a principled way to re-engineer legacy applications or to forward engineer new applications.  (The former is used for domains containing a single application, whereas the latter is used when transformations describe a combinatorial number of derivable applications).  Our primary application is to forward engineer dense linear algebra applications using the Flame methodology and Elemental library.  Our goal is to express the design knowledge of Elemental as transformations, and to generate Elemental libraries for new architectures, rather than hand-deriving such libraries.  Doing so will be a significant accomplishment -- both in software engineering in general, and dense linear algebra in particular.  To date, our case studies include DxT designs of

Tools (to be elaborated)

For details, see papers and technical reports on ReFlO and DxTer.

Research Support

DxT work is supported by:

Publications