I datateknik är ett abstraktionslager eller en abstraktionsnivå ett sätt att dölja detaljerna i ett delsystem, vilket gör det möjligt att separera problem för att underlätta driftskompatibilitet och plattformsoberoende. Exempel på programvarumodeller som använder abstraktionslager är OSI-modellen för nätverksprotokoll, OpenGL och andra grafikbibliotek.
I datavetenskapen är ett abstraktionslager en generalisering av en konceptuell modell eller algoritm, bort från varje specifikt genomförande. Dessa generaliseringar uppstår ur breda likheter som bäst kapslas in av modeller som uttrycker likheter som finns i olika specifika implementeringar. Den förenkling som ett bra abstraktionslager ger möjliggör enkel återanvändning genom att destillera ett användbart koncept eller designmönster så att situationer, där det kan tillämpas på ett korrekt sätt, snabbt kan kännas igen.
Ett lager anses ligga ovanpå ett annat om det är beroende av det. Varje lager kan existera utan de överliggande lagren och kräver de underliggande lagren för att fungera. Ofta kan abstraktionslagren komponeras till en hierarki av abstraktionsnivåer. OSI-modellen består av sju abstraktionslager. Varje lager i modellen kapslar in och behandlar en annan del av behoven för digital kommunikation, vilket minskar komplexiteten hos de tillhörande tekniska lösningarna.
En berömd aforism av David Wheeler är ”Alla problem inom datavetenskapen kan lösas genom ytterligare en indirekt nivå”. Detta är ofta medvetet felciterat med ”abstraktion” i stället för ”indirektion”. Den tillskrivs också ibland felaktigt Butler Lampson. Kevlin Henneys följdriktighet till detta är: ”… utom när det gäller problemet med för många indirekta nivåer.”