En informatique, une couche d’abstraction ou un niveau d’abstraction est une façon de cacher les détails de fonctionnement d’un sous-système, permettant la séparation des préoccupations pour faciliter l’interopérabilité et l’indépendance de la plate-forme. Des exemples de modèles logiciels qui utilisent des couches d’abstraction comprennent le modèle OSI pour les protocoles de réseau, OpenGL et d’autres bibliothèques graphiques.
En informatique, une couche d’abstraction est une généralisation d’un modèle conceptuel ou d’un algorithme, loin de toute mise en œuvre spécifique. Ces généralisations découlent de larges similitudes qui sont mieux encapsulées par des modèles qui expriment les similitudes présentes dans diverses implémentations spécifiques. La simplification fournie par une bonne couche d’abstraction permet une réutilisation facile en distillant un concept ou un modèle de conception utile de sorte que les situations, où il peut être appliqué avec précision, peuvent être rapidement reconnues.
Une couche est considérée comme étant au-dessus d’une autre si elle en dépend. Chaque couche peut exister sans les couches au-dessus d’elle, et nécessite les couches en dessous d’elle pour fonctionner. Les couches d’abstraction peuvent fréquemment être composées en une hiérarchie de niveaux d’abstraction. Le modèle OSI comprend sept couches d’abstraction. Chaque couche du modèle encapsule et traite une partie différente des besoins des communications numériques, réduisant ainsi la complexité des solutions d’ingénierie associées.
Un célèbre aphorisme de David Wheeler est « Tous les problèmes en informatique peuvent être résolus par un autre niveau d’indirection ». Cette citation est souvent délibérément erronée, le mot « abstraction » étant substitué à « indirection ». Elle est aussi parfois attribuée à tort à Butler Lampson. Le corollaire de Kevlin Henney est : « … sauf pour le problème des trop nombreuses couches d’indirection… ».