Software Design - Abstraction Layer

Card Puncher Data Processing

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





Discover More
Testing Infrastructure
Code - Testing (Software Quality Assurance|SQA|Validator|Checker)

A test is performed to verify that the system is conformed to the specification and is the most important part of code quality. In a “Test-driven_developmenttest-driven software development (tdd)”...
Encapsulation The Bad Part
Code Design - Encapsulation

Encapsulation is the process of create block of code (generally function) hiding the implementation details in order to create an abstraction. ...
Death Stars Architecture Diagram
Code Shipping - Dependency (Coupling)

in code. A (module|package|library) often requires other (packages|module) to be installed to function correctly. Such a relation is called a dependency. Coupling or dependency is the degree to which...
Card Puncher Data Processing
Computer Language

A programming language is a interface to the control of a CPU effectively controlling a computer. A language is a (possibly infinite) set of string all of which choose their symbols from some one alphabet....
Card Puncher Data Processing
Convexity in Software Dev

abstraction physical widgets, you can only get so much better at building widgets (concave). software and you come up with a better way of building software (tool/language/technique/pattern/library),...
Card Puncher Data Processing
Data Type - Abstract (ADT)

An abstract data type (ADT) is is defined by its methods (semantics) from the point of view of the user, specifically in terms of: possible values, possible operations. It implements the concept...
Card Puncher Data Processing
Dependency Inversion Principle

The concerns itself with decoupling dependencies between high-level and low-level layers through shared abstractions whereas the dependency injection is the decoupling between type dependency dependency...
Card Puncher Data Processing
Design - Layers

A layer is the implementation of abstraction. From a high level, each language generation are a layer. A layer is built based on recurring pattern. If a lower layer has a recurring pattern, it is taken...
Card Puncher Data Processing
Language - High Level (Programming Language)

High Level Language means that reading and writing is really easy as it looks like regular English. The return variable of a definition is not tied to a data type, it can return False of a string for...
Application Kernel Assembler Firmware Hardware
OS - Kernel

In computing, the Kernel is the central component of most computer operating systems; it is a bridge between: the applications and the actual data processing done at the hardware level. The kernel...



Share this page:
Follow us:
Task Runner