capa de abstracción


En informática , una capa de abstracción o nivel de abstracción es una forma de ocultar los detalles de trabajo de un subsistema, lo que permite la separación de preocupaciones para facilitar la interoperabilidad y la independencia de la plataforma . Los ejemplos de modelos de software que utilizan capas de abstracción incluyen el modelo OSI para protocolos de red , OpenGL y otras bibliotecas gráficas .

En informática , una capa de abstracción es una generalización de un modelo conceptual o algoritmo , lejos de cualquier implementación específica. Estas generalizaciones surgen de amplias similitudes que se encapsulan mejor en modelos que expresan similitudes presentes en varias implementaciones específicas. La simplificación proporcionada por una buena capa de abstracción permite una fácil reutilización al destilar un concepto útil o patrón de diseño para que las situaciones, donde se puede aplicar con precisión, se puedan reconocer rápidamente.

Se considera que una capa está encima de otra si depende de ella. Cada capa puede existir sin las capas superiores y requiere que las capas inferiores funcionen. Con frecuencia, las capas de abstracción se pueden componer en una jerarquía de niveles de abstracción. El modelo OSI comprende siete capas de abstracción. Cada capa del modelo encapsula y aborda una parte diferente de las necesidades de las comunicaciones digitales, reduciendo así la complejidad de las soluciones de ingeniería asociadas.

Un famoso aforismo de David Wheeler es "Todos los problemas en informática pueden resolverse mediante otro nivel de indirección". [1] Esto a menudo se cita erróneamente deliberadamente con "abstracción" sustituido por "indirección". A veces también se atribuye erróneamente a Butler Lampson . El corolario de Kevlin Henney para esto es, "... excepto por el problema de demasiadas capas de direccionamiento indirecto". [2]

En una arquitectura de computadora , un sistema de computadora generalmente se representa como compuesto por varios niveles de abstracción, tales como:

La lógica programable a menudo se considera parte del hardware, mientras que las definiciones lógicas también se ven a veces como parte del software o firmware de un dispositivo. El firmware puede incluir solo software de bajo nivel, pero también puede incluir todo el software, incluido un sistema operativo y aplicaciones. Las capas de software se pueden dividir en capas de abstracción de hardware, controladores de dispositivos físicos y lógicos, repositorios como sistemas de archivos, kernels de sistemas operativos, middleware, aplicaciones y otros. También se puede hacer una distinción desde lenguajes de programación de bajo nivel como VHDL , lenguaje de máquina , lenguaje ensamblador hasta un lenguaje compilado , intérprete y lenguaje de script . [3]