Title :
On the Multiple Implementation of Abstract Data Types Within a Computation
Author_Institution :
Xerox Palo Alto Research Center
fDate :
7/1/1983 12:00:00 AM
Abstract :
A fundamental step in the software design process is the selection of a refinement (implementation) for a data abstraction. This step traditionally involves investigating the expected performance of a system under different refinements of an abstraction and then selecting a single alternative which minimizes some performance cost metric. In this paper we reformulate this design step to allow different refinements of the same data abstraction within a computation. This reformulation reflects the fact that the implementation appropriate for a data abstraction is dependent on the behavior exhibited by the objects of the abstraction. Since this behavior can vary among the objects of a computation, a single refinement is often inappropriate. Accordingly, three frameworks are presented for understanding and representing variations in the behavior of objects and, thus, the potential for multiple implementations. The three frameworks are based upon: 1) a static partitioning of objects into disjoint implementation classes; 2) static partitioning of classes into implementation regions; and 3) dynamic partitioning of classes into implementation regions. These frameworks and analytic tools useful in investigating expected performance under multiple implementations are described in detail.
Keywords :
Abstract data type; abstraction refinement; data abstraction; multiple implementations; performance analysis; software design; software engineering; Computer science; Costs; Design methodology; Encapsulation; Packaging; Performance analysis; Software design; Software engineering; Software maintenance; Software systems; Abstract data type; abstraction refinement; data abstraction; multiple implementations; performance analysis; software design; software engineering;
Journal_Title :
Software Engineering, IEEE Transactions on
DOI :
10.1109/TSE.1983.234776