Транзитивная зависимость


Транзитивная зависимость — это функциональная зависимость , которая сохраняется в силу транзитивности между различными программными компонентами.

В компьютерной программе прямая зависимость — это функциональность, экспортируемая библиотекой , API или любым программным компонентом , на который непосредственно ссылается сама программа. Транзитивная зависимость — это любая зависимость, вызванная компонентами, на которые программа ссылается напрямую. Например, вызов функции log() обычно вызывает транзитивную зависимость от библиотеки, которая управляет вводом-выводом для записи сообщения журнала в файл.

Зависимости и транзитивные зависимости могут разрешаться в разное время, в зависимости от того, как компилируется и/или выполняется компьютерная программа : например, компилятор может иметь фазу компоновки , на которой разрешаются зависимости. Иногда система сборки даже позволяет управлять транзитивными зависимостями. [ нужна ссылка ]

Точно так же, когда компьютер использует службы , компьютерная программа может зависеть от службы, которая должна быть запущена до выполнения программы. Транзитивной зависимостью в таком случае является любая другая служба, от которой зависит служба, от которой мы напрямую зависим, например, веб-браузер зависит от службы разрешения доменных имен для преобразования веб- URL в IP-адрес ; DNS будет зависеть от сетевой службы для доступа к удаленному серверу имен. Система загрузки Linux systemd основана на наборе конфигураций, которые объявляют зависимости запускаемых модулей: во время загрузки systemdанализирует все транзитивные зависимости, чтобы определить порядок выполнения каждого модуля для запуска.

Пусть A, B и C обозначают три различных (но не обязательно непересекающихся) набора атрибутов отношения. Предположим, что выполняются все три следующих условия:

Тогда функциональная зависимость A → C (следующая из 1 и 3 по аксиоме транзитивности ) является транзитивной зависимостью.