Abstraction
Ron Graham
In computing, abstraction is the crucial step of representing information in terms of its interface with the user. That is, you abstract the essential operational features of a problem and express a solution in those terms.

The way you organize data is dependent on the way someone else is most likely to want to interact with it. This is the difference between object oriented programming (OOP) and sequential programming (e.g. FORTRAN). In C++ (and other OOP applications), abstraction is the first step: the organization and type assignments for data. With a data type in hand, the programmer can determine how much memory is needed, what operations can be performed on the data represented by that type, and so on. C++ uses classes to move from abstraction to type.

Abstraction is then the act of deriving general principles from specific results. Object-oriented programming uses abstraction in the creation of classes that contain little (if any) specific information -- they instead contain the general description and layout of a data type, and leave the programming definitions to some derived class used to instantiate an object.

Abstraction is seen throughout engineering. In its simplest forms, we might

  • take a guess at a curve to fit through some experimental data, or
  • derive an expression to represent some number series, or
  • decide from manufacturing records whether or when to service a machine.

In the case of a computer simulation, QA principles suggest that the program be tested over all reasonable cases to ensure that the right answers come out. But just like the review and editing of a document you write, you just can't see how to change the program, or how to respond to a case you didn't examine, because you've worked with it long enough and gotten close to it. You can't derive general principles from it after a certain point -- you need help from someone else, even if that person doesn't know the program's nuts and bolts to your level of detail.

The progress of analysis might well be something like

concept --> simplification --> simulation --> inspection --> abstraction

and the progress of testing might well be something like

instrumentation --> calibration --> acquisition --> inspection --> abstraction

but both analysis and test lead to abstraction. And the last checkpoint before you derive reliable general principles is at least one other pair of eyes.

References

Prata, S. C++ Primer Plus. NYC: Macmillan, 1998. ISBN 1-57169-161-8


[Table of Contents] [Next]