Abstraction

Dick Dye

Dick Dye

Lockheed Martin (MILSTAR)

Search for more papers by this author
First published: 15 January 2002

Abstract

The word abstraction is used as a noun, “to build an abstraction.” Its root form, abstract, is used as a verb, “to abstract the requirements to perform a domain analysis” or as an adjective, “a linked list is an abstract concept.” From the software engineering perspective, all of these uses refer to the concept of identifying essential properties while simultaneously eliminating nonessential properties. An abstraction intentionally ignores some qualities, attributes, or functions to focus attention on others. It is a summary; it covers the high points and leaves out the details. An abstraction omits all the pieces of the system that are not necessary for understanding the system at a given level of detail. The abstraction includes only the relevant aspects of the object. The selection of what to include and what to exclude in a good abstraction is based on knowledge of the problem, the needs of the moment, and experience. A proper combination of these considerations leads to a good abstraction.

The purpose of creating abstractions is to concentrate on one aspect of the problem and to preclude distraction by other parts of the problem. Level of abstraction is a quality that deals with the amount of detail in this view of a system. The process of abstraction has also been referred to as chunking. In this context, one abstraction represents one chunk of information. Encapsulation is the process of separating and hiding the external (user's) view of an abstraction from the internal (implementer's) view of the abstraction. There are three fundamental abstractions in terms of which all software can be described. A complete design must include all three. They are data, function, and process. These are discussed.

The full text of this article hosted at iucr.org is unavailable due to technical difficulties.