I databehandling er et abstraktionslag eller abstraktionsniveau en måde at skjule arbejdsdetaljerne i et delsystem på, hvilket gør det muligt at adskille problemerne for at lette interoperabilitet og platformsuafhængighed. Eksempler på softwaremodeller, der anvender abstraktionslag, omfatter OSI-modellen for netværksprotokoller, OpenGL og andre grafikbiblioteker.
I datalogi er et abstraktionslag en generalisering af en konceptuel model eller algoritme, væk fra enhver specifik implementering. Disse generaliseringer opstår på baggrund af brede ligheder, som bedst indkapsles af modeller, der udtrykker ligheder, som er til stede i forskellige specifikke implementeringer. Den forenkling, som et godt abstraktionslag giver mulighed for let genbrug ved at destillere et nyttigt koncept eller designmønster, så situationer, hvor det kan anvendes præcist, hurtigt kan genkendes.
Et lag anses for at være oven på et andet, hvis det afhænger af det. Hvert lag kan eksistere uden de lag, der ligger over det, og kræver lagene under det for at fungere. Ofte kan abstraktionslag sammensættes til et hierarki af abstraktionsniveauer. OSI-modellen omfatter syv abstraktionslag. Hvert lag i modellen indkapsler og behandler en anden del af behovene for digital kommunikation og reducerer derved kompleksiteten af de tilhørende tekniske løsninger.
En berømt aforisme af David Wheeler er: “Alle problemer inden for datalogi kan løses ved hjælp af et andet indirekte niveau”. Dette er ofte bevidst fejlciteret, idet “abstraktion” erstattes af “indirektion”. Det er også nogle gange fejlagtigt tilskrevet Butler Lampson. Kevlin Henneys konsekvens til dette er: “… bortset fra problemet med for mange indirekte lag.”