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

OpenU.Ru

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

constraint (ограничение)

Семантическое условие или ограничение, представленное выражением. Некоторые ограничения предопределены языком моделирования, другие же определяются проектировщиком. Ограничения являются одним из трех видов механизма расширения, представленных в UML
См. expression; stereotype; tagged value.

Семантика

Ограничение - это семантическое условие или ограничение, представленное в виде лингвистического выражения на каком-либо текстовом языке.
Ограничение можно присоединить к любому элементу или списку элементов модели. Оно содержит семантическую информацию, которая относится к самому элементу модели, а не только к ею представлению. У каждого ограничения есть тело, и язык интерпретации Тело представляет собой строку с логическим выражением, определяющую условие на языке ограничений. Ограничение относится к упорядоченному списку из одного и более элементов модели. Обратите внимание, что языком спецификации может быть как формальный, так и естественный язык. Во втором случае ограничение будет неформальным и не может быть автоматически учтено, например, при использовании CASE-средств (это, впрочем, не значит, что ограничение на любом из формальных языков будет автоматически учтено). В языке UML есть свой язык ограничений - OCL (объектный язык ограничений), однако можно использовать и другие языки. У некоторых часто используемых ограничений есть стандартные имена - это избавляет от необходимости писать все утверждение целиком каждый раз, когда возникает необходимость в ограничениях.
Например, ограничение xor между двумя ассоциациями, у которых есть общий класс, означает, что один объект из этого общего класса может одновременно принадлежать только одной из ассоциации.
Ограничение - это утверждение, а не выполняемый механизм. Оно оказывает на существование ограничения, которое должно быть учтено при правильном проектировании системы. Способ удовлетворения ограничения является проектным решением. Ограничения реального времени проверяются тогда, когда система "стабильна", то есть между выполнениями операций и не в момент выполнения какой-либо атомарной транзакции. В процессе выполнения операций ограничения иногда временно нарушаются.
Ограничение не может быть применено к самому себе.
Унаследованное ограничение (ограничение элемента- предка или стереотипа) должно быть соблюдено даже в том случае, когда у потомков этого элемента есть свои дополнительные ограничения. Унаследованное ограничение нельзя отменить или заменить. Если вам понадобилось сделать это, значит, модель плохо сконструирована и лучше се переделать. Унаследованное ограничение можно сделать еще жестче, добавив к нему дополнительные ограничения. Когда наследуемые элементом ограничения конфликтуют между собой, это свидетельствует о плохой согласованности модели.

Нотация

Ограничение записывается в виде строки текста, заключенного в фигурные скобки. Эта строка является телом ограничения, записанным на языке ограничений.
Инструмент моделирования должен предоставлять один или несколько языков, на которых можно записывать ограничения. Один из таких языков - OCL. В зависимости от конкретной модели для некоторых ограничений можно использовать язык программирования (например, C++). Можно также записывать ограничения естественном языком, но тогда его интерпретация и учет будут целиком зависеть от проектировщика. Язык ограничения является его частью, хотя он и не всегда указывается на диаграмме (его отслеживает инструмент моделирования).
Ограничение для списка элементов, представленных в виде текстовых строк (как, например, для списка атрибутов в разделе для атрибутов символа класса), может быть оформлено отдельной вводной строкой в этом списке (рис. 76). Вводная строка не представляет собой элемент модели. Это действующее ограничение, которое применяется ко всем последующим элементам этого списка до тех пор, пока в списке не встретится другое ограничение или пока он не окончится. Действующее ограничение может смениться другим ограничена ем, находящемся ниже в этом списке. Если действующее ограничение нужно отменить, его заменяют на пустое ограничение. Ограничение, присоединенное к отдельным элементам списка, не заменяет действующее, но может дополнительно усилить его, добавив к нему новые детали.

Ограничение для отдельного графического символа (как, например, для класса или маршрута ассоциации) в виде строки с ограничением нужно поместить рядом с символом, лучше всего у имени, если оно, разумеется, есть.

Рис. 77. Нотация ограничений
Ограничение для двух графических символов (как например, для двух классов или двух ассоциаций) изображается в виде пунктирной стрелки, идущей от одного элемента к другому. У стрелки должна быть строка с текстом ограничения, взятая в фигурные скобки. Направление стрелки соответствует информации, содержащейся в этом ограничении (рис. 77).
В случае ограничения для трех и более графических символов строка с текстом ограничения размещается внутри примечания и прикрепляется к каждому символу с помощью пунктирной линии (см. рис. 77).
Эту же нотацию можно использовать и для прочих случаев. Ограничение для трех и более маршрутов одного вида (маршрута обобщения или маршрута ассоциации) можно прикрепить к пунктирной линии, пересекающей все эти маршруты. Чтобы избежать при этом неясности, линии можно нумеровать или еще каким-либо образом помечать.

Обсуждение

Ограничение содержит семантическое утверждение относительно самой модели, в то время как комментарий является текстовым утверждением, не имеющим собственной семантики. Комментарий можно прикрепить к любому элементу модели или презентации. Как ограничения, так и комментарии можно изображать с помощью примечаний. В принципе ограничения приводятся в действие инструментами моделирования. В действительности же некоторые ограничения довольно сложно выразить формальным языком, поэтому для их запуска необходим человек. В некотором смысле ограничениями можно считать многие элементы модели, однако это слово используют для обозначения семантических утверждений, которые трудно выразить при помощи встроенных элементов модели и которые необходимо описать лингвистически.
Ограничения можно выражать на любом подходящем языке - даже на естественном, хотя в этом случае ограничение не может контролироваться инструментом моделирования. Для UML разработан специальный язык объектных ограничений (OCL), однако иногда удобнее пользоваться языком программирования.
Ограничения имеют вид текстовых строк, поэтому обычные инструменты моделирования могут вводить и поддерживать их, даже не понимая их значения. Разумеется, инструмент моделирования или надстройка к нему, которые контролируют и вводят в действие данное ограничение, должны понимать синтаксис и семантику использованного языка. Список ограничений можно прикрепить к определению стереотипа. Это указывает на то, что все элементы, у которых есть этот стереотип, соблюдают данное ограничение.
Ввод в действие. Модель, содержащая ограничения, не всегда указывает, что делать, если они не соблюдаются. Модель - это объявление того, что должно было бы произойти. Будет ли эго так или нет, зависит от реализации. В программе могут также быть формальные проверочные утверждения и прочие проверки, однако ошибка в ограничениях относится к ошибкам программирования. Конечно, если модель помогает создать программу, которая правильно сконструирована и может быть формально проверена на правильность, то цель модели достигнута.

Стандартные элементы

invariant (инвариант), postcondition (постусловие), precondition (предусловие)

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