- Abstraction is a tool that permits a designer to consider a component at an abstract level without worrying about the details of the implementation of the component.
- An abstraction of a component describes the external behavior of that component without bothering with the internal details that produce the behavior.
- Abstraction is an indispensable part of the design process and is essential for problem partitioning.
- There are two common abstraction mechanisms for software systems:
- Functional abstraction, a module is specified by the function it performs.
- For example, a module to compute the log of a value can be abstractly represented by the function log.
- Similarly, a module to sort an input array can be represented by the specification of sorting.
- Functional abstraction is the basis of partitioning in function-oriented approaches. The decomposition of the system is in terms of functional modules.
- Data abstraction, any entity in the real world provides some services to the environment to which it belongs.
- Data is not treated simply as objects, but is treated as objects with some predefined operations on them. The operations defined on a data object are the only operations that can be performed on those objects.
- Data abstraction forms the basis for object-oriented design.