Любое изменение в вычислительной системе, например, новая функция или новый компонент, является прозрачным , если система после изменения придерживается предыдущего внешнего интерфейса настолько, насколько это возможно, при этом изменяя свое внутреннее поведение. Цель состоит в том, чтобы скрыть изменения от всех систем (или пользователей-людей) на другом конце интерфейса. Как ни странно, этот термин относится к общей невидимости компонента, он не относится к видимости внутренних компонентов компонента (как в белом ящике или открытой системе ). Термин прозрачный широко используется в маркетинге вычислений вместо термина невидимый , поскольку термин невидимый имеет плохой оттенок (обычно рассматривается как то, что пользователь не может видеть и не может контролировать), в то время как термин прозрачный имеет хороший оттенок (обычно ассоциируется с тем, что ничего не скрывает). В подавляющем большинстве случаев термин прозрачный используется вводящим в заблуждение образом для обозначения фактической невидимости вычислительного процесса, которая также описывается термином непрозрачный , особенно в отношении структур данных. [ необходима цитата ] Из-за этого вводящего в заблуждение и нелогичного определения современная компьютерная литература склонна отдавать предпочтение использованию термина «агностический» вместо «прозрачный».
Этот термин особенно часто используется в отношении уровня абстракции , который невидим ни из своего верхнего, ни из нижнего соседнего уровня.
Также временно использовавшийся позднее около 1969 года в руководствах по программированию IBM и Honeywell, [ требуется цитата ] этот термин относился к определенной технике компьютерного программирования . Код приложения был прозрачным, когда он был свободен от низкоуровневых деталей (таких как управление, специфичное для устройства) и содержал только логику, решающую основную проблему. Это достигалось посредством инкапсуляции — помещения кода в модули, которые скрывали внутренние детали, делая их невидимыми для основного приложения.
Например, сетевая файловая система прозрачна, поскольку она вводит доступ к файлам, хранящимся удаленно в сети, таким же образом, как и предыдущий локальный доступ к файловой системе , поэтому пользователь может даже не заметить этого при использовании иерархии папок. Ранний протокол передачи файлов (FTP) значительно менее прозрачен, поскольку он требует, чтобы каждый пользователь научился получать доступ к файлам через ftp- клиент.
Аналогично, некоторые файловые системы допускают прозрачное сжатие и распаковку данных, позволяя пользователям хранить больше файлов на носителе без каких-либо специальных знаний; некоторые файловые системы прозрачно шифруют файлы. Этот подход не требует ручного запуска утилиты сжатия или шифрования.
В программной инженерии также считается хорошей практикой разрабатывать или использовать слои абстракции для доступа к базе данных , чтобы одно и то же приложение работало с разными базами данных; здесь слой абстракции позволяет другим частям программы прозрачно обращаться к базе данных (см. , например, Объект доступа к данным ).
В объектно-ориентированном программировании прозрачность достигается за счет использования интерфейсов , которые скрывают фактические реализации, выполненные с использованием различных базовых классов .
Прозрачность означает, что любая форма распределенной системы должна скрывать свою распределенную природу от пользователей, выглядя и функционируя как обычная централизованная система.
Существует много типов прозрачности:
Формальные определения большинства этих концепций можно найти в RM-ODP , открытой эталонной модели распределенной обработки (ISO 10746).
Степень, в которой эти свойства могут или должны быть достигнуты, может сильно различаться. Не каждая система может или должна скрывать все от своих пользователей. Например, из-за существования фиксированной и конечной скорости света всегда будет больше задержек при доступе к ресурсам, удаленным от пользователя. Если кто-то ожидает взаимодействия в реальном времени с распределенной системой, это может быть очень заметно.
https://lightcast.io/open-skills/skills/KS441HX6SDYW15ZBFJNJ/transparency-human-computer-interaction