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 trabajo 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 de gráficos , que permiten la separación de preocupaciones para facilitar la interoperabilidad y la independencia de la plataforma . Otro ejemplo es el Protocolo de transferencia de medios .

En informática , una capa de abstracción es una generalización de un modelo o algoritmo conceptual , alejada de cualquier implementación específica. Estas generalizaciones surgen de amplias similitudes que se resumen 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 o patrón de diseño útil para que se puedan reconocer rápidamente las situaciones en las que se puede aplicar con precisión.

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 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 y se sustituye "abstracción" por "indirección". [ cita necesaria ] 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 indirección". [2]

Arquitectura de Computadores

En una arquitectura informática , un sistema informático generalmente se representa como si consta de varios niveles de abstracción, como por ejemplo:

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 sólo software de bajo nivel, pero también puede incluir todo el software, incluido el sistema operativo y las 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 hasta un lenguaje compilado , intérprete y lenguaje de script . [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 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. 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 a los comandos específicos del dispositivo 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.

Ver también

Referencias

  1. ^ Spinellis, Diomidis (2007). Hermoso código: los programadores líderes explican cómo piensan. Sebastopol, CA: O'Reilly y asociados. págs. 279–291.
  2. ^ @kevlinhenney (3 de septiembre de 2012). "Sí, ese es mi corolario" ( Tweet ) - vía Twitter .
  3. ^ Tanenbaum, Andrew S. (1979). Organización informática estructurada . Acantilados de Englewood, Nueva Jersey : Prentice-Hall. ISBN 0-13-148521-0.