Зависимость (dependency) указывает на семантические отношения, существующие между двумя и более элементами модели. Зависимость описывает ситуацию, при которой изменения в независимом элементе (поставщике) требуют изменений в зависимом элементе (клиенте). Согласно такому определению, отношения ассоциации и обобщения также попадают в раздел зависимостей, однако у них есть своя специфическая семантика. Поэтому ассоциации и обобщения выделены в отдельные понятия, а зависимостями называются все прочие отношения (таблица № 4).
Таблица № 4
Виды зависимостей
Зависимость
Функция
Ключевое слово
Доступ (Access)
Пакет имеет доступ к содержимому другого пакета
«access»
Связывание (Binding)
Присваивание значений параметрам шаблона для создания нового элемента модели
«bind»
Вызов (Call)
Метод одного класса вызывает операцию другого класса
«call»
Вывод (Derivation)
Один экземпляр может быть вычислен на основе информации, предоставленной другим классом
«derive»
Дружественность (Friend)
Элемент имеет доступ к содержимому другого элемента, вне зависимости от его видимости
«friend»
Импорт (Import)
Пакет имеет доступ к содержимому другого пакета и добавляет имена из пространства имен этого пакета в пространство имен импортера
«import»
Создание экземпляра (Instantiation)
Метод одного класса создает экземпляры другого класса
«instantiate»
Параметр (Parameter)
Отношение между операцией и ее параметрами
«parameter»
Реализация (Realization)
Отношение между спецификацией и ее реализацией.
«realize»
Уточнение (Refinement)
Отношение между двумя версиями одной концепции на разных стадиях разработки модели или на разных уровнях абстракции. В конечной версии модели остается одна из концепций, так как обычно другие представляют собой менее проработанные версии. Отношение уточнения служит разработчику напоминанием, что все модели определенным образом соотносятся друг с другом.
«refine»
Отправка (Send)
Отношение между объектом, принимающим сигнал, и объектом, который этот сигнал отправляет
«send»
Трассировка (Trace)
Концептуальная связь между элементами различных моделей, часто находящихся на разных стадиях разработки. Не обладает подробной семантикой. Обычно используется для гарантии выполнения моделями системных требований и отслеживания тех изменений, которые могут повлиять на другие модели.
«trace»
Использование (Usage)
Одному элементу для правильного функционирования необходимы услуги другого элемента (сюда входят вызов, конкретизация, параметр, отправка, другие зависимости) Часто отношение использования возникает при реализации. Например, компилятор может требовать наличия определения одного класса для компиляции другого.
«use»
На диаграмме зависимость изображается в виде пунктирной стрелки, идущей от зависимого элемента к независимому. Над стрелкой пишется ключевое слово для вида зависимости.
Хотя язык UML предлагает набор сущностей и отношений, позволяющих представить моделируемую систему в виде графа, некоторую информацию удобнее выражать текстом. Ограничение (constraint) – это логическое выражение, представленное строкой текста на определенном языке (естественном языке, языке программирования, языке ограничений) или в виде специальной нотации. В UML входит язык ограничений под названием Object Constraint Language (OCL), который максимально подходит для выражения UML-ограничений. Ограничения можно использовать также в различных отношениях, например, для ассоциаций, а также для кванторов общности и существования.
На диаграммах ограничения представляются в виде текста, заключенного в фигурные скобки и записанного формальным или естественным языком. Строка текста, в которой содержится ограничение, должна быть помещена в элемент-примечание (note), или присоединяться к стрелке зависимости.