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 . Ejemplos de modelos de software que utilizan capas de abstracción incluyen el modelo OSI para protocolos de red , OpenGL y otras bibliotecas de gráficos .
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 mediante 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 o patrón de diseño útil para que las situaciones, en las que pueda aplicarse con precisión, puedan reconocerse 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 de la informática pueden resolverse mediante otro nivel de indirecta". [1] Esto a menudo se cita erróneamente deliberadamente con "abstracción" sustituida por "indirecta". A veces también se atribuye erróneamente a Butler Lampson . El corolario de Kevlin Henney a esto es, "... excepto por el problema de demasiadas capas de indirecta". [2]
Arquitectura de Computadores
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 a veces también se consideran 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 a un lenguaje compilado , intérprete y lenguaje de escritura . [3]
Entrada y salida
En el sistema operativo Unix, la mayoría de los tipos de operaciones de entrada y salida se consideran flujos de bytes leídos desde un dispositivo o escritos en un dispositivo. Este modelo de flujo de bytes se utiliza para E / S de archivos, E / S de socket y E / S de terminal para proporcionar independencia al dispositivo. Para leer y escribir en un dispositivo a nivel de aplicación, el programa llama a una función para abrir el dispositivo, que puede ser un dispositivo real como un terminal o un dispositivo virtual como un puerto de red o un archivo en un sistema de archivos. . Las características físicas del dispositivo están mediadas por el sistema operativo, que a su vez presenta una interfaz abstracta que permite al programador leer y escribir bytes desde / hacia el dispositivo. Luego, el sistema operativo realiza la transformación real necesaria para leer y escribir el flujo de bytes en el dispositivo.
Gráficos
La mayoría de las bibliotecas de gráficos, como OpenGL, proporcionan un modelo de dispositivo gráfico abstracto como interfaz. La biblioteca es responsable de traducir los comandos proporcionados por el programador en los comandos específicos del dispositivo necesarios para dibujar los elementos gráficos y los objetos. Los comandos de dispositivo específicos para un trazador son diferentes de los comandos de dispositivo para un monitor CRT , pero la biblioteca de gráficos oculta la implementación y los detalles dependientes del dispositivo al proporcionar una interfaz abstracta que proporciona un conjunto de primitivas que generalmente son útiles para dibujar objetos gráficos.
Ver también
- Interfaz de programación de aplicaciones (API)
- Interfaz binaria de aplicación (ABI)
- Compilador , una herramienta para la abstracción entre código fuente y código máquina
- Abstracción de hardware
- Ocultación de información
- Capa (diseño orientado a objetos)
- Anillo de protección
- Sistema operativo , una capa de abstracción entre un programa y el hardware de la computadora.
- Ingeniería de software
Referencias
- ^ Spinellis, Diomidis (2007). Hermoso código: los programadores líderes explican cómo piensan . Sebastopol, CA: O'Reilly and Associates. págs. 279-291.
- ^ @kevlinhenney (3 de septiembre de 2012). "Sí, ese es mi corolario" (Tweet) - a través de Twitter .
- ^ Tanenbaum, Andrew S. (1979). Organización informática estructurada . Acantilados de Englewood, Nueva Jersey : Prentice-Hall. ISBN 0-13-148521-0.