What is an Abstraction?
Abstraction masks a complex concept or system, letting an actor of a corresponding process use an easy mechanism to interact with underlying components. Thinking itself abstracts more complicated psychology. We use our conscious minds to interpret events and make decisions. We do not socialize with the cognitive mechanisms that influence our mental state unless we are self-aware and reflect internally.
In the same way, we do not collaborate with the foundational elements of a complicated technology without analyzing its architecture and mechanics. Abstraction decouples user/agent interaction from deeper functionality.
Why is Abstraction Important in Technology?
In the context of technology, abstraction works as a design principle and facilitates technological growth. As a design principle, abstraction surfaces in data modeling, object-oriented programming, APIs, etc. Below are two examples of abstracted design, which simplifies a system and provides flexibility:
-
A data modeler decides to represent an Employee and a Vendor both as a generic Person object. The simple rendition of an entity allows another software module to function correctly by interacting through the Person representation of the entity.
-
An API encapsulates web communication behind an HTTP Verb. The encapsulation lets an inventory management system send the stock level of a product to a presentation module without direct exposure to networking and security infrastructure.
In a broader sense, abstraction layers fundamental technologies into a more sophisticated tool. An actor leverages a system for a niche case, such as using a graphics engine to render video game graphics. The actor is not concerned with the detailed processes of the system. In earlier generations of technology, developers managed lower-level functionality and could not utilize a system to perform higher-level or abstracted functions.
For instance, a modern graphics engine uses native AI (Artificial Intelligence) to perform rendering optimizations; a developer could not accomplish the same quality output in earlier versions of the system when the AI modules did not abstract the mechanics of the optimizations.
Conclusions and Considerations
Modular design requires the abstraction of systems and objects from corresponding consumers, setting the stage for scalable technology. We should consider the following when implementing abstraction within new software:
-
Designers should not overly generalize a system such that the practical use or consumption of the system is unclear.
-
When abstracting an interface from implementation, designers should include only the actions and data useful for the consumption of the software module. The remaining functionality should remain internal to the software module.
Below are additional examples of abstraction:
-
Every high-level programming language abstracts the complexities of assembly language, which further abstracts the complexities of the machine language running on specific hardware.
-
Higher-order cognition is an abstraction of the critical thinking skills we acquire as our brains mature.
-
Every user interface is an abstraction of the backend system. Users can effectively use the UI to perform their jobs, without executing the complex calculations and business logic required to follow a cross-functional process.
-
A control panel in an aircraft cockpit abstracts the aircraft's operation from any engineering and mechanics.
At Aptimized, we prioritize the core understanding of the current technology landscape. In order to scale and mature as an organization, the technologies must evolve alongside any growth. Our team of experts develop unique solutions for your business, with modernization and intelligence at the heart of your technology. Contact us today to get a no-cost assessment for your needs.