stringtranslate.com

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. Entre los modelos de software que utilizan capas de abstracción se incluyen el modelo OSI para protocolos de red , OpenGL y otras bibliotecas de gráficos , que permiten la separación de preocupaciones 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 , que se aleja de cualquier implementación específica. Estas generalizaciones surgen de similitudes amplias 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 útil o patrón de diseño de modo que las situaciones en las que se puede aplicar con precisión se puedan reconocer rápidamente. La simple composición de elementos de nivel inferior en una construcción no cuenta como una capa de abstracción a menos que proteja a los usuarios de su complejidad subyacente. [1]

Se considera que una capa está encima de otra si depende de ella. Cada capa puede existir sin las capas superiores y requiere de las capas inferiores para funcionar. Con frecuencia, las capas de abstracción se pueden componer 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, lo que reduce 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] Esto se suele citar deliberadamente de forma errónea, sustituyendo "abstracción" por "indirección". [ cita requerida ] También se atribuye a veces de forma errónea a Butler Lampson . El corolario de Kevlin Henney a esto es: "...excepto por el problema de demasiadas capas de indirección". [3]

Arquitectura de computadoras

En una arquitectura informática , un sistema informático suele representarse como compuesto de varios niveles de abstracción como:

La lógica programable suele considerarse 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 dividir 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 hacer una distinción entre lenguajes de programación de bajo nivel como VHDL , lenguaje de máquina , lenguaje ensamblador y lenguaje compilado , intérprete y lenguaje de script . [4]

Entrada y salida

En el sistema operativo Unix, la mayoría de los tipos de operaciones de entrada y salida se consideran secuencias de bytes leídos desde un dispositivo o escritos en un dispositivo. Este modelo de secuencia de bytes se utiliza para la E/S de archivos, la E/S de sockets y la E/S de terminales con el fin de proporcionar independencia del 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 una 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. A continuación, el sistema operativo realiza la transformación real necesaria para leer y escribir la secuencia 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 de dispositivo específicos necesarios para dibujar los elementos y objetos gráficos. 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.

Véase también

Referencias

  1. ^ Hohpe, Gregor (9 de marzo de 2012). Patrones de integración empresarial: diseño, creació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 (Código hermoso: los principales programadores explican cómo piensan) . Sebastopol, CA: O'Reilly and Associates. pp. 279–291. Archivado desde el original el 6 de marzo de 2024.
  3. ^ Henney, Kevlin [@kevlinhenney] (3 de septiembre de 2012). "@drunkcod Sí, ese es mi corolario :^)" ( Tweet ). Archivado desde el original el 29 de marzo de 2022 – vía Twitter .
  4. ^ Tanenbaum, Andrew S. (1979). Organización de computadoras estructuradas . Englewood Cliffs, Nueva Jersey : Prentice-Hall. ISBN 0-13-148521-0.