Software Design - Abstraction Layer

About

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.

Computer

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

Custom

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.

Question

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