Articulo de referencia

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 funcionamiento de un subsistema. Ejemplos de modelos de software que util...

En informática , una capa de abstracción o nivel de abstracción es una forma de ocultar los detalles de funcionamiento de un subsistema. 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 , que permiten la separación de responsabilidades para facilitar la interoperabilidad y la independencia de la plataforma .

En informática , una capa de abstracción es una generalización de un modelo conceptual o algoritmo , alejada de cualquier implementación específica. Estas generalizaciones surgen de amplias similitudes que se encapsulan mejor mediante modelos que expresan las similitudes presentes en diversas implementaciones específicas. La simplificación que proporciona una buena capa de abstracción permite una fácil reutilización al destilar un concepto o patrón de diseño útil , de modo que las situaciones en las que se puede aplicar correctamente se puedan reconocer rápidamente. Simplemente componer elementos de nivel inferior en una estructura no se considera una capa de abstracción a menos que oculte a los usuarios su complejidad subyacente. [ 1 ]

Una capa se considera superpuesta a otra si depende de ella. Cada capa puede existir independientemente de las capas superiores y requiere de las inferiores para funcionar. Con frecuencia, las capas de abstracción se pueden organizar en una jerarquía de niveles de abstracción. El modelo OSI consta de 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 ». [ 2 ] A menudo se cita erróneamente de forma deliberada, sustituyendo «indirección» por «abstracción». También se atribuye a veces erróneamente a Butler Lampson . El corolario de Kevlin Henney es: «...excepto por el problema de demasiadas capas de indirección». [ 3 ]

Arquitectura de computadoras

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

La lógica programable se considera a menudo parte del hardware, mientras que las definiciones lógicas también se consideran a veces 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 subdividir en capas de abstracción de hardware, controladores de dispositivos físicos y lógicos, repositorios como sistemas de archivos, núcleos de sistemas operativos, middleware, aplicaciones y otros. También se puede establecer una distinción entre lenguajes de programación de bajo nivel como VHDL , lenguaje máquina , lenguaje ensamblador y un lenguaje compilado , intérprete o lenguaje de script . [ 4 ]

Entrada y salida

En el sistema operativo Unix, la mayoría de las operaciones de entrada y salida se consideran flujos de bytes leídos o escritos en un dispositivo. Este modelo de flujo de bytes se utiliza para la entrada/salida de archivos, sockets y terminales, con el fin de garantizar la independencia del dispositivo. Para leer y escribir en un dispositivo a nivel de aplicación, el programa llama a una función para abrirlo, ya sea un dispositivo físico, 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 son gestionadas por el sistema operativo, que a su vez presenta una interfaz abstracta que permite al programador leer y escribir bytes en el dispositivo. Posteriormente, el sistema operativo realiza la transformación necesaria para leer y escribir el flujo de bytes en el dispositivo.

Gráficos

La mayoría de las bibliotecas gráficas, como OpenGL, proporcionan un modelo abstracto de dispositivo gráfico como interfaz. La biblioteca se encarga de traducir las instrucciones del programador a las instrucciones específicas del dispositivo necesarias para dibujar los elementos y objetos gráficos. Las instrucciones específicas para un plóter son diferentes de las de un monitor CRT , pero la biblioteca gráfica oculta los detalles de implementación y las particularidades del dispositivo al proporcionar una interfaz abstracta con un conjunto de primitivas útiles para dibujar objetos gráficos.

Véase también

Referencias

  1. Hohpe, Gregor (9 de marzo de 2012). Patrones de integración empresarial: diseño, construcción e implementación de soluciones de mensajería (Addison-Wesley Signature Series (Fowler)) . Addison-Wesley Professional. ISBN 978-0321200686.
  2. Spinellis, Diomidis (2007). «Capítulo 17. Otro nivel de indirección» . Beautiful Code: Leading Programmers Explain How They Think . Sebastopol, CA: O'Reilly and Associates. págs. 279–291 . Archivado del original el 6 de marzo de 2024. 
  3. Henney, Kevlin [@kevlinhenney] (3 de septiembre de 2012). "@drunkcod Sí, ese es mi corolario :^)" ( Tweet ). Archivado del original el 29 de marzo de 2022 vía Twitter . 
  4. Tanenbaum, Andrew S. (1979). Organización estructurada de computadoras . Englewood Cliffs, Nueva Jersey : Prentice-Hall. ISBN 0-13-148521-0.