Открытая коллекция знаний

OpenU.Ru

Справочник UML. Объектно-ориентированное проектирование.

dependency(зависимость)

Отношение между двумя элементами, при котором изменение одного элемента (поставщика) может затронуть другой элемент (клиент) или предоставить необходимую ему информацию. Зависимость - это термин, который был введен для удобства обозначения нескольких различных видов отношении между элементами модели.
См. relationship, а также табл. 2, в которой перечислены все виды зависимостей, принятых в языке UML.

Семантика

Зависимость - это отношение между двумя элементами одной модели или двух разных моделей. Под этим, словом принято подразумевать несколько различных видов отношений. Точно так же в биологии под термином беспозвоночные объединены все животные, кроме позвоночных.
В случае, когда зависимость представляет собой асимметричную осведомленность, независимые элементы называются поставщиками (suppliers), а зависимые - клиентами (clients).
У зависимости может быть имя, которое указывает на роль, которую она исполняет в модели. Однако, как правило, самого наличия зависимости достаточно, чтобы ее значение стало понятно. Поэтому имя чаще всего излишне. У зависимости может иметься стереотип, обозначающий ее истинную природу, а также подробное текстовое описание (чаще всего неформальное).
Если между двумя пакетами существует зависимость, это значит, что, по меньшей мере, одна такая же зависимость есть и между двумя элементами, хранящимися в этих пакетах. Исключение составляют зависимости доступа и импорта, которые связывают именно пакеты, а не их элементы. Например, зависимость использования между двумя классами можно показать как зависимость использования между пакетами, в которых они содержатся. Наличие зависимости между пакетами, впрочем, не означает того, что она существует между всеми элементами этих пакетов. Такая ситуация в моделировании встречается крайне редко.
См. package.
Зависимость может иметь целое множество ссылок на другие, подчиненные зависимости. Так, зависимость между двумя пакетами может ссылаться на базовые зависимости, существующие между классами.
Зависимости могут быть не транзитивными.
Обратите внимание, что ассоциация и обобщение также подходят под определение зависимости, однако в модели у них есть свое собственное представление и нотация, так что обычно они даже не считаются зависимостями. В отличие от них зависимость реализации, у которой тоже есть собственная нотация, вес равно считается зависимостью.
Существует несколько видов зависимостей, которые соответствуют нескольким видам отношений: абстракция (abstraction), связывание (binding), комбинирование (combination), разрешение (permission) и использование (usage).
Абстракция. Абстракция представляет собой изменение уровня абстрактности для некоторого понятия. Оба элемента зависимости являются одним и тем же понятием, но при этом отличаются между собой. Как правило, один из элементов, более абстрактный, а второй - более конкретный, хотя возможны ситуации, когда оба элемента будут двумя возможными вариантами понятия, существующими на одном уровне абстракции. К зависимости абстракции относятся следующие стереотипы (в порядке возрастания специфичности отношений): трассировать (trace), уточнять (refine), реализация (есть собственная нотация) и выводить (derive).
Связывание. Этот вид зависимости связывает элемент, связанный с шаблоном, и сам шаблон. Аргументы, необходимые для параметров шаблона, прикреплены к зависимости связывания в виде списка.
Разрешение. Такая зависимость (всегда изображается в виде особого стереотипа) связывает пакет (или класс) с другим пакетом (или классом), которому он предоставляет разрешение использовать свое содержимое. Стереотипами зависимости разрешения являются: быть доступным (access), быть дружественным (friend) и импортировать (import).
Использование. Зависимость использования (ключевое слово "use" - использовать) связывает клиент с поставщиком, изменения в котором ведут к изменению клиента. Использование нередко представляет собой зависимость реализации, при которой один элемент использует услуги другого элемента для реализации своего поведения. К стереотипам этого вида зависимости относятся: вызывать (call), создать экземпляр (instantiate), параметр (parameter) и отправить (send). Однако на этом список стереотипов не исчерпывается, так как в различных языках программирования могут оказаться свои виды зависимости использования.

Нотация

Зависимость изображается в виде пунктирной стрелки, которая связывает два элемента модели. Тот элемент модели, который находится у хвоста стрелки (клиент) зависит от элемента, который находится у ее наконечника (поставщик). У стрелки может находиться ключевое слово, указывающее на вид данной зависимости, а также имя этой зависимости (рис. 89).

Рис. 89.

Несколько других видов отношений также используют нотацию в виде пунктирной стрелки, однако под определение зависимости они не подходят. К ним относятся отношения потока (become - превращаться и сору - копировать), комбинирование (extend - расширять и include - включать), а также присоединение к элементу модели примечания или ограничения, относящиеся к этому элементу. Если одним из элементов является примечание или ограничение, то стрелку можно не изображать.
Стандартные элементы
become (превращаться), bind (связывать), call (вызывать), сору (копировать), create (создавать), derive (выводить), extend (расширять), friend (быть дружественным), import (импортировать), include (включать), instanceOf (являться экземпляром), instantiate (создать экземпляр), powertype (множество всех типов), send (отправить), trace (трассировать), use (использовать).

Алфавитный указатель