In de informatica is een abstractielaag of abstractieniveau een manier om de werkingsdetails van een subsysteem te verbergen, waardoor de scheiding van belangen mogelijk wordt gemaakt om interoperabiliteit en platformonafhankelijkheid te vergemakkelijken. Voorbeelden van softwaremodellen die gebruik maken van abstractielagen zijn het OSI-model voor netwerkprotocollen, OpenGL en andere grafische bibliotheken.
In de informatica is een abstractielaag een generalisatie van een conceptueel model of algoritme, weg van een specifieke implementatie. Deze generalisaties komen voort uit brede overeenkomsten die het best worden ingekapseld door modellen die overeenkomsten uitdrukken die in verschillende specifieke implementaties aanwezig zijn. De vereenvoudiging die een goede abstractielaag biedt, maakt eenvoudig hergebruik mogelijk door een nuttig concept of ontwerppatroon te distilleren, zodat situaties, waarin het nauwkeurig kan worden toegepast, snel kunnen worden herkend.
Een laag wordt geacht bovenop een andere te liggen als hij ervan afhankelijk is. Elke laag kan bestaan zonder de lagen erboven, en heeft de lagen eronder nodig om te kunnen functioneren. Vaak kunnen abstractielagen worden samengesteld tot een hiërarchie van abstractieniveaus. Het OSI-model omvat zeven abstractie-lagen. Elke laag van het model kapselt een ander deel van de behoeften van digitale communicatie in en behandelt deze, waardoor de complexiteit van de bijbehorende technische oplossingen wordt verminderd.
Een beroemd aforisme van David Wheeler luidt: “Alle problemen in de computerwetenschap kunnen worden opgelost door een ander niveau van indirectie”. Dit wordt vaak opzettelijk verkeerd geciteerd, waarbij “abstractie” wordt vervangen door “indirectie”. Het wordt soms ook ten onrechte toegeschreven aan Butler Lampson. Kevlin Henney’s corollarium hiervan is, “…behalve voor het probleem van teveel lagen van indirectie.”