Abstraction Hierarchy

The purpose of an abstraction hierarchy is to hide information and manage complexity. To be useful, individuals must be able to work independently at each level of the hierarchy. In biology, for example, parts-level researchers might need to know what sorts of parts device-level researchers would like to use, how different types of parts actually work (e.g., atomic interactions between an amino acid and the major groove of DNA), and how to order a piece of DNA. But, parts-level researchers do not need to know anything aboutDNA synthesis chemistry, how short pieces of DNA are assembled into longer contiguous DNA fragments, or how a ring oscillator works, et cetera.

An abstraction hierarchy can be used with other technologies (e.g., 'standard part families') to quickly design and specify the DNA sequence encoding many integrated genetic systems. For example, a ring oscillator system can be built from three inverter devices. Each inverter device can in turn be built from four parts, and each part can be encoded by a pre-specified sequence of DNA. Other systems can be quickly specified as different combinations of devices, and so on.


Figure 1: Abstraction barriers (red) block all exchane of information between abstraction levels. Interfaces (green) enable the limited and principled exchange of information between levels. Example exchanges are given in quotes.

One detail of the abstraction hierarchy depicted in Figure 1 that's worth elaborating is the definition of input and output signals for gene-expression based devices. A device is a combination of parts that performs some useful function. For example, one type of device is an inverter. An inverter takes an input signal and produces the opposite output signal (e.g., HIGH input produces LOW output and vice versa; an inverter functions like a Boolean NOT).