In informatica, un livello di astrazione o livello di astrazione è un modo di nascondere i dettagli di funzionamento di un sottosistema, permettendo la separazione delle preoccupazioni per facilitare l’interoperabilità e l’indipendenza dalla piattaforma. Esempi di modelli di software che usano livelli di astrazione includono il modello OSI per i protocolli di rete, OpenGL e altre librerie grafiche.
In informatica, un livello di astrazione è una generalizzazione di un modello concettuale o un algoritmo, lontano da qualsiasi implementazione specifica. Queste generalizzazioni nascono da ampie somiglianze che sono meglio incapsulate da modelli che esprimono somiglianze presenti in varie implementazioni specifiche. La semplificazione fornita da un buon livello di astrazione permette un facile riutilizzo distillando un concetto utile o un modello di progettazione in modo che le situazioni in cui può essere accuratamente applicato possano essere rapidamente riconosciute.
Un livello è considerato essere sopra un altro se dipende da esso. Ogni livello può esistere senza i livelli sopra di esso, e richiede i livelli sotto di esso per funzionare. Spesso i livelli di astrazione possono essere composti in una gerarchia di livelli di astrazione. Il modello OSI comprende sette livelli di astrazione. Ogni livello del modello incapsula e affronta una parte diversa delle necessità delle comunicazioni digitali, riducendo così la complessità delle soluzioni ingegneristiche associate.
Un famoso aforisma di David Wheeler è “Tutti i problemi in informatica possono essere risolti da un altro livello di indirezione”. Questo è spesso deliberatamente citato erroneamente con “astrazione” sostituito da “indirezione”. A volte è anche erroneamente attribuito a Butler Lampson. Il corollario di Kevlin Henney è, “…eccetto per il problema dei troppi livelli di indirezione.”
.