Cualquier cambio en un sistema informático , como una nueva función o un nuevo componente, es transparente si el sistema, tras el cambio, se adhiere lo máximo posible a la interfaz externa anterior, modificando al mismo tiempo su comportamiento interno. El objetivo es proteger del cambio a todos los sistemas (o usuarios humanos) que se encuentran al otro lado de la interfaz. Curiosamente, el término se refiere a la invisibilidad general del componente, no a la visibilidad de su funcionamiento interno (como en el caso de una caja blanca o un sistema abierto ). El término «transparente» se utiliza ampliamente en el marketing informático en sustitución de « invisible» , ya que este último tiene una connotación negativa (generalmente se percibe como algo que el usuario no puede ver y sobre lo que no tiene control), mientras que « transparente» tiene una connotación positiva (generalmente asociado con no ocultar nada). En la gran mayoría de los casos, el término «transparente» se utiliza de forma engañosa para referirse a la invisibilidad real de un proceso informático, que también se describe con el término «opaco» , especialmente en lo que respecta a las estructuras de datos. Debido a esta definición engañosa y contraintuitiva, la literatura informática moderna tiende a preferir el uso del término " agnóstico " en lugar de "transparente".
El término se utiliza con especial frecuencia en relación con una capa de abstracción que resulta invisible tanto para la capa vecina superior como para la inferior.
El término, utilizado también temporalmente alrededor de 1969 en manuales de programación de IBM y Honeywell, se refería a una técnica específica de programación informática . El código de una aplicación era transparente cuando carecía de detalles de bajo nivel (como la gestión específica del dispositivo) y contenía únicamente la lógica que resolvía un problema principal. Esto se lograba mediante la encapsulación : dividir el código en módulos que ocultaban los detalles internos, haciéndolos invisibles para la aplicación principal.
Ejemplos
Por ejemplo, el Sistema de Archivos de Red (NFS) es transparente, ya que introduce el acceso a archivos almacenados remotamente en la red de forma uniforme con el acceso local previo a un sistema de archivos , por lo que el usuario podría incluso no notarlo mientras utiliza la jerarquía de carpetas. El Protocolo de Transferencia de Archivos (FTP) inicial es considerablemente menos transparente, ya que requiere que cada usuario aprenda a acceder a los archivos mediante un cliente FTP .
De forma similar, algunos sistemas de archivos permiten la compresión y descompresión transparente de datos, lo que permite a los usuarios almacenar más archivos en un medio sin necesidad de conocimientos especiales; otros sistemas de archivos cifran los archivos de forma transparente. Este enfoque no requiere ejecutar manualmente ninguna utilidad de compresión o cifrado.
En ingeniería de software , también se considera una buena práctica desarrollar o utilizar capas de abstracción para el acceso a bases de datos , de modo que la misma aplicación funcione con diferentes bases de datos; en este caso, la capa de abstracción permite que otras partes del programa accedan a la base de datos de forma transparente (véase , por ejemplo, el Objeto de Acceso a Datos ).
En la programación orientada a objetos , la transparencia se facilita mediante el uso de interfaces que ocultan las implementaciones reales realizadas con diferentes clases subyacentes .
Tipos de transparencia en sistemas distribuidos
La transparencia implica que cualquier sistema distribuido debe ocultar su naturaleza distribuida a sus usuarios, aparentando y funcionando como un sistema centralizado normal.
Existen muchos tipos de transparencia:
- Transparencia de acceso: independientemente de cómo se deba realizar el acceso y la representación de los recursos en cada entidad informática individual, los usuarios de un sistema distribuido siempre deben acceder a los recursos de una manera única y uniforme. Ejemplo: Consultas SQL.
- Transparencia de ubicación : los usuarios de un sistema distribuido no deberían tener que saber dónde se encuentra físicamente un recurso. Ejemplo: páginas web.
- Transparencia en la migración: los usuarios no deberían tener que saber si un recurso o una entidad informática tiene la capacidad de trasladarse a una ubicación física o lógica diferente.
- Transparencia en la reubicación: si un recurso se mueve mientras está en uso, esto no debería ser perceptible para el usuario final.
- Transparencia en la replicación : si un recurso se replica en varias ubicaciones, debe aparecer ante el usuario como un único recurso.
- Transparencia simultánea : aunque varios usuarios compitan por un mismo recurso y lo compartan, esto no debería ser evidente para ninguno de ellos.
- Transparencia ante fallos : Intente siempre ocultar cualquier fallo y recuperación de las entidades y recursos informáticos.
- Transparencia en la persistencia : el hecho de que un recurso se encuentre en memoria volátil o permanente no debería suponer ninguna diferencia para el usuario.
- Transparencia en materia de seguridad : la negociación del acceso criptográficamente seguro a los recursos debe requerir una mínima intervención del usuario, o los usuarios eludirán la seguridad en aras de la productividad.
Las definiciones formales de la mayoría de estos conceptos se pueden encontrar en RM-ODP , el Modelo de Referencia de Procesamiento Distribuido Abierto (ISO 10746).
El grado en que estas propiedades pueden o deben lograrse puede variar considerablemente. No todos los sistemas pueden o deben ocultar toda la información a sus usuarios. Por ejemplo, debido a la existencia de una velocidad de la luz fija y finita , siempre habrá mayor latencia al acceder a recursos distantes del usuario. Si se espera una interacción en tiempo real con el sistema distribuido, esto puede resultar muy notorio.
Referencias
Lecturas adicionales
- Yue, Weining; Wang, Heng; Wang, Guoping (2007). «Diseño de interacción transparente para la computación ubicua: teoría y aplicación» . En Jacko, Julie A. (ed.). Interacción persona-ordenador. Diseño de interacción y usabilidad . Lecture Notes in Computer Science. Vol. 4550. Berlín, Heidelberg: Springer. pp. 331–339 . doi : 10.1007/978-3-540-73105-4_37 . ISBN 978-3-540-73105-4.
- Schelenz, Laura; Segal, Avi; Adelio, Oduma; Gal, Kobi (2024-03-20). "Transparency-Check: Un instrumento para el estudio y diseño de la transparencia en sistemas de personalización basados en IA" . ACM Journal on Responsible Computing . 1 (1): 8:1–8:18. doi : 10.1145/3636508 .
- Interacción persona-ordenador
- Arquitectura de computación distribuida
- Arquitectura de software