In der Informatik ist eine Abstraktionsschicht oder Abstraktionsebene eine Möglichkeit, die Arbeitsdetails eines Teilsystems zu verbergen und die Trennung von Belangen zu ermöglichen, um Interoperabilität und Plattformunabhängigkeit zu erleichtern. Beispiele für Softwaremodelle, die Abstraktionsebenen verwenden, sind das OSI-Modell für Netzwerkprotokolle, OpenGL und andere Grafikbibliotheken.
In der Informatik ist eine Abstraktionsebene eine Verallgemeinerung eines konzeptionellen Modells oder Algorithmus, die sich von jeder spezifischen Implementierung entfernt. Diese Verallgemeinerungen ergeben sich aus weitreichenden Ähnlichkeiten, die am besten durch Modelle gekapselt sind, die Ähnlichkeiten in verschiedenen spezifischen Implementierungen ausdrücken. Die Vereinfachung durch eine gute Abstraktionsschicht ermöglicht eine einfache Wiederverwendung, indem ein nützliches Konzept oder Entwurfsmuster so destilliert wird, dass Situationen, in denen es genau angewendet werden kann, schnell erkannt werden können.
Eine Schicht wird als über einer anderen liegend betrachtet, wenn sie von dieser abhängt. Jede Schicht kann ohne die darüber liegenden Schichten existieren und benötigt die darunter liegenden Schichten, um zu funktionieren. Häufig können Abstraktionsschichten zu einer Hierarchie von Abstraktionsebenen zusammengesetzt werden. Das OSI-Modell umfasst sieben Abstraktionsschichten. Jede Schicht des Modells kapselt und adressiert einen anderen Teil der Anforderungen der digitalen Kommunikation, wodurch die Komplexität der damit verbundenen technischen Lösungen reduziert wird.
Ein berühmter Aphorismus von David Wheeler lautet: „Alle Probleme in der Informatik können durch eine weitere Ebene der Indirektion gelöst werden“. Dieser Satz wird oft absichtlich falsch zitiert, indem „Abstraktion“ durch „Indirektion“ ersetzt wird. Manchmal wird es auch fälschlicherweise Butler Lampson zugeschrieben. Kevlin Henneys Folgerung dazu lautet: „…mit Ausnahme des Problems zu vieler indirekter Ebenen.“