What Does the Verb To Abstract Mean in Computing?

Question
In I.T., what does abstract or the act of abstraction mean?

Answer (Disambiguation of abstraction)

Examples
For TCP/IP Networking
The seven layers of the OSI model are abstractions. (This was taken from worlddidac.org.)

For Containerization
We find this quote in Docker Up and Running (by Matthias & Kane on page 125): "One of Docker's major strengths is its ability to abstract away the underlying hardware and operating system so that your application is not constrained to any particular host or environment." Another relevant quote is "[a] Kubernetes Operator is an abstraction for deploying non-trivial applications on Kubernetes." (This last quote was taken from a Nebulaworks' engineer; see the full quote here.)

For Programming
An application programming interface (better known as an API) is an abstraction; reducing an application to an interface enables other people or programs to invoke methods or functions of the program.

In programming an abstract data type is a logical concept; its actual implementation within the same programming language can vary (and use different built-in data types). (The previous sentence was paraphrased from page 634 of Cracking the Coding Interview.)

Abstraction is a feature of object-oriented programming; to read more see https://whatis.techtarget.com/definition/abstraction. Frederick Brooks said "[r]epresentation is the essence of programming." (As taken from page 103 of The Mythical Man Month.)

For Quality Assurance
For some testing, such as functional testing, of an application, someone will abstract away the details of the underlying implementation (by coding an abstraction merely for testing). This testing has its advantages and disadvantages. In some contexts, speed of testing is important. In other situations, a human's attention is important. There are pragmatic benefits to focusing on basic operational tests; if someone is too caught up in the details of unit testing (with the theoretical differences emphasized), they may not realize a fundamental problem has been introduced to the code. Functional tests that are automated or configured abstract away behind-the-scenes specifics.

For Intellectual Property
A software design is ineligible for a patent it is for an abstract idea. In the Alice Corp. v CLS Bank International lawsuit, the Supreme Court abstractness was defined as something conventional, overtly obvious or too broad to warrant a patent. The courts do not support improper attempts "to monopolize an abstract idea." (This paragraph and final quote were taken from this external site.)

Explanation:
To abstract is to reduce complexity of an asset, tool, or technology. Through the process of abstraction complex systems are represented in an understandable way. Distributed systems work to integrate multiple components of computing resources and data from disparate sources for real-time updates and rapid performance. The communication contract or protocol between the different assets on a network can be readily defined through abstraction. Industry standards help abstraction benefit rapid provisioning of I.T. infrastructure. Architecting modern software would be far more time-consuming without abstracting components.

Loosely coupled components are readily breakable. In other words they are disassociated from each other relative to tightly coupled components. Thus the trend toward loose coupling is a trend toward abstraction. Linux philosophy itself is modular, and the principle of loose coupling does not apply to merely programming or systems administration. The Law of Demeter, normally a programming concept, has applicability to microservices.

Microservices include atomic publishers, listeners and other tools that perform discrete tasks. They are popular because they can be replaced with different vendors or other competing tools without requiring every system to be similarly changed; microservices prevent vendor-lock-in while promoting scalability. They can support implementing (or abstracting) the underlying resources to for network communication over a TCP socket. Abstraction can play a role in asynchronous communications. A message queue can keep content throughout a network outage, and data processing can ensue with minimal human operation.

"The best way of building fault-tolerant systems is to find some general-purpose abstractions with useful guarantees, implement them once, and then let applications rely on those guarantees." (This quote was taken from page 321 of Designing Data-Intensive Applications by Kleppman.)

Byte code, CPU registers, cycles in gates of CPUs, random access memory, system calls, motherboard circuitry including capacitors and power supply electrical currents are quite complex when trying to comprehend the details of each component at the same time. AWS, Azure and GCP afford an abstract way of leveraging data center assets.

If QA tests are decoupled from one another (e.g., invoking an interface without a GUI), they can run independently. Thus abstracting a test from another allows for granular and parallel testing. Truly atomic tests renders the order of testing irrelevant (according to page 205 of Continuous Delivery by Humble and Farley). Not all tests can be atomic. Loosely coupled testing is ideal for the pipelinization of value streams. (See What is Pipelinization in Technology/Computing? if you want to read more about it.)

Certain business reports and features of an application may be only understood by professionals with domain knowledge. Abstracting the jargon from the application enables testing and development to progress.

Specialized systems can require deep technical knowledge. With abstraction such systems can be leveraged by other people seeking integrate other tools for dynamic solutions. To simplify a tool for its utilization is an example of abstraction. Disassociating a message publishing component from a server, container, cluster, network, or other technology enables an engineer to manage something useful. Given the context of certain businesses, abstraction allows teams to cooperate and interact productively with a reduced dependency on jargon and enterprise idiosyncrasies. What are called Software Engineers in modern times deal with networking, infrastructure, databases and security (often programmatically) through emulated or virtualized infrastructure resources. Abstractions empower manageability through the reduction of complexity.

To learn more about abstraction in I.T., you may also want to read this. We do want to acknowledge that there are implementations and architectures that involve too much abstraction. We hope you have a greater understanding of what it means to "abstract" something in the world of technology.

Leave a comment

Your email address will not be published.