MSc-IT Study Material
January 2011 Edition

Computer Science Department, University of Cape Town
| MIT Notes Home | Edition Home |

Abstraction

Abstraction is the activity of reducing the information in a problem to only that information which is important to us. When we perform analysis and design we use many levels of abstraction in order to make both the problem we are solving and the software we are developing understandable and meaningful. At higher abstraction levels, the problem and the software are described in less detail and more broadly. At lower abstraction levels, more details are given, and the software begins to take on a more concrete form.

Ultimately, the software itself is the lowest level of abstraction that a software engineer will use. It has the highest level of detail.

When performing the act of abstraction, software engineers attempt to create procedural and data abstractions. Procedural abstraction is abstraction applied to functions, methods, and procedures in general. For example, a function's name is an abstraction of the operations which the function performs. The name, in other words, stands for those sequence of operations, and in our designs can be used in its stead.

Data abstraction is abstraction applied to the data discussed in our software and system designs. When we combine data to form an object or class, or combine objects to form a collection, we are performing data abstraction.

Clearly, the software analysts and designers need to choose an appropriate level of abstraction to operate at.