Software Design - Abstraction Layer


Abstraction is a technique for hiding complexity that is irrelevant to the targeted user (ie targeted business domain).

A designer should not know which electrons flow in the wire to defined its color.

The implementation of abstraction is done through the creation of higher layer that encapsulate the recurring patterns of the lowest level.


The following are the basis abstractions found in a computer and materialized in language generation


To build a data abstraction, you need to identify for each data structure a set of operations (module).

Custom abstractions can facilitate portability (cross-platform deployment) and performance optimization. …. Custom abstractions may additionally limit expressiveness: they must be revisited to take advantage of new library features and due to encapsulation may be unable to exploit supporting technologies.


All Abstraction are failed abstraction

  • Does this abstraction make our code at least a little easier to write?
  • To understand?
  • To troubleshoot?
  • Are we better off with this abstraction than we were without it?

Dependency Management

The amount of time saved via guava dependency is orders of magnitude less than the amount of time lost via guava dependency mismanagement.

Documentation / Reference

Powered by ComboStrap