In computing, an abstraction layer or abstraction level is a way of hiding the working details of a subsystem. Examples of software models that use layers of abstraction include the OSI model for network protocols, OpenGL, and other graphics libraries, which allow the separation of concerns to facilitate interoperability and platform independence. Another example is Media Transfer Protocol and AWS CDK.
In computer science, an abstraction layer is a generalization of a conceptual model or algorithm, away from any specific implementation. These generalizations arise from broad similarities that are best encapsulated by models that express similarities present in various specific implementations. The simplification provided by a good abstraction layer allows for easy reuse by distilling a useful concept or design pattern so that situations, where it may be accurately applied, can be quickly recognized.
A layer is considered to be on top of another if it depends on it. Every layer can exist without the layers above it, and requires the layers below it to function. Frequently abstraction layers can be composed into a hierarchy of abstraction levels. The OSI model comprises seven abstraction layers. Each layer of the model encapsulates and addresses a different part of the needs of digital communications, thereby reducing the complexity of the associated engineering solutions.
A famous aphorism of David Wheeler is, "All problems in computer science can be solved by another level of indirection."[1] This is often deliberately misquoted with "abstraction" substituted for "indirection."[citation needed] It is also sometimes misattributed to Butler Lampson. Kevlin Henney's corollary to this is, "...except for the problem of too many layers of indirection."[2]
Gregor Hohpe, author of Enterprise Integration Patterns, argues that just composing some lower-level elements into a construct doesn't count as an abstraction layer because you still have to deal with its underlying complexity. He specifically mentions AWS CDK constructs as an example. In his view, good abstractions take into account common needs and encode them in an abstract language. [3]
^Spinellis, Diomidis (2007). "Chapter 17. Another Level of Indirection". Beautiful Code: Leading Programmers Explain How They Think. Sebastopol, CA: O'Reilly and Associates. pp. 279–291. Archived from the original on Mar 6, 2024.
^Henney, Kevlin [@kevlinhenney] (September 3, 2012). "@drunkcod Yes, that's my corollary :^)" (Tweet). Archived from the original on Mar 29, 2022 – via Twitter.
^Hohpe, Gregor (2022-09-22). "Good abstractions are obvious but difficult to find, even in the cloud". The Architect Elevator. Retrieved 2024-05-14.
computing, an abstractionlayer or abstraction level is a way of hiding the working details of a subsystem. Examples of software models that use layers of abstraction...
hardware by calling functions in the API. A hardware abstractionlayer (HAL) is an abstractionlayer, implemented in software, between the physical hardware...
The Physics AbstractionLayer (PAL) is an open-source cross-platform physical simulation API abstraction system. It is similar to a physics engine wrapper...
A database abstractionlayer (DBAL or DAL) is an application programming interface which unifies the communication between a computer application and...
The Network AbstractionLayer (NAL) is a part of the H.264/AVC and HEVC video coding standards. The main goal of the NAL is the provision of a "network-friendly"...
An application layer is an abstractionlayer that specifies the shared communication protocols and interface methods used by hosts in a communications...
An operating system abstractionlayer (OSAL) provides an application programming interface (API) to an abstract operating system making it easier and...
the communications between systems are split into seven different abstractionlayers: Physical, Data Link, Network, Transport, Session, Presentation, and...
called Common Warehouse Metamodel (CWM) The AbstractionLayer represents domain and application abstractions. Conceptual package represent business domain...
hybrid kernel; the architecture comprises a simple kernel, hardware abstractionlayer (HAL), drivers, and a range of services (collectively named Executive)...
Simple DirectMedia Layer (SDL) is a cross-platform software development library designed to provide a hardware abstractionlayer for computer multimedia...
source and destination. For SQL/RDBMS backends, it has a database abstractionlayer that supports basic connectivity to Postgres, MySQL / MariaDB, IBM...
responsible for mission operations. The CCSDS Message AbstractionLayer (MAL) provides message abstraction and generic service patterns to the Mission Operation...
four abstractionlayers, which classify all related protocols according to each protocol's scope of networking. An implementation of the layers for a...
networking, the link layer is the lowest layer in the Internet protocol suite, the networking architecture of the Internet. The link layer is the group of...
Layers (digital image editing), used in digital image editing to separate different elements of an image Layers, in 2D computer graphics Abstraction layer...
term "layers" refers to a logical grouping of components which may or may not be physically located on one processing node. Abstractionlayer Client–server...
and define an I/O abstractionlayer using the virtual instrument software architecture (VISA). The VISA hardware abstractionlayer provides an interface-independent...
ORM/active-record model is popular with web frameworks. Data access object Database abstractionlayer Microsoft Application Architecture Guide ASP.NET DAL tutorial...
principle of least authority (PoLA), requires that in a particular abstractionlayer of a computing environment, every module (such as a process, a user...
In the seven-layer OSI model of computer networking, the physical layer or layer 1 is the first and lowest layer: the layer most closely associated with...
frameworks: the operating system selects suitable kernels from the abstractionlayer in the case of devices that use diverse resources. The operating system...
also the new kernel architecture built on OpenHarmony and its kernel abstractionlayer as user mode, which the OS itself shares lineage with lightweight...
designed to help the user to perform specific tasks Application layer, an abstractionlayer that specifies protocols and interface methods used in a communications...