Конспект лекций case cals. Конспект_САСТ-2. Конспект лекций по дисциплине case и cals технологии по направлению подготовки
Скачать 3.53 Mb.
|
8.5.2. Отношения между классами В диаграмме классов могут использоваться следующие типы отношений (связей): ассоциации, зависимости, обобщения и реализации. Перечисленные ти- пы отношений уже были определены в разделе 8.4, рассматривающем построе- ние диаграмм вариантов использования. Поэтому здесь приведены только при- меры их графического изображения на диаграмме классов. Отношение ассоциации обозначается сплошной линией с дополнительны- ми специальными символами (имя ассоциации, имена и кратность классов-ролей ассоциации), которые характеризуют отдельные свойства конкретной ассоциа- ции (рис. 8.11). С помощью чёрного треугольника, расположенного над линией связи справа или слева от имени ассоциации, уточняется смысл имени и указы- вается направление чтения имени связи. Когда в диаграмме классов требуется отразить тот факт, что ассоциация между двумя классами имеет специальный вид «часть–целое», то используется ассоциация специального вида — агрегатная ассоциация. В этом случае класс «целое» имеет более высокий концептуальный уровень, чем класс «часть». Гра- фически агрегатные ассоциации изображаются в виде простой ассоциации с не- закрашенным ромбом на стороне класса-«целого» (рис. 8.12). Если связь «части» и «целого» настолько сильна, что уничтожение «цело- го» приводит к уничтожению всех его «частей», то агрегатные ассоциации, об- ладающие таким свойством, называются композитными или просто компози- 123 циями. При наличии композиции объект-часть может быть частью только одного объекта-целого (композита). При обычной агрегатной ассоциации «часть» может одновременно принадлежать нескольким «целым». Графически композиция изо- бражается в виде простой ассоциации, дополненной закрашенным ромбом со стороны «целого» (рис. 8.13). Рис. 8.11. Графическое изображение отношения ассоциации на диаграмме классов в языке UML Рис. 8.12. Графическое изображение отношения агрегации на диаграмме классов в языке UML Рис. 8.13. Графическое изображение отношения композиции на диаграмме классов в языке UML 124 Отношение зависимости графически изображается пунктирной линией между соответствующими элементами со стрелкой, направленной от зависимого класса к независимому классу (классу-источнику) (рис. 8.14). Рис. 8.14. Графическое изображение отношения зависимости на диаграмме классов в языке UML Для отношения зависимости в UML предопределены ключевые слова (за- писываются в кавычках рядом со стрелкой), обозначающие специальные виды зависимостей: –– «access» — служит для обозначения доступности открытых атрибутов и операций класса-источника для классов-клиентов; –– «bind» — класс-клиент может использовать некоторый шаблон для сво- ей последующей параметризации; –– «derive» — атрибуты класса-клиента могут быть вычислены по атрибу- там класса-источника; –– «import» — открытые атрибуты и операции класса-источника становят- ся частью класса-клиента; –– «refine» — указывает, что класс-клиент служит уточнением класса- источника. Отношение обобщения обозначается сплошной линией с треугольной стрелкой, указывающей на более общий класс (класс-предок) (рис. 8.15). Рядом со стрелкой обобщения может размещаться строка текста (ограни- чение), указывающая на некоторые дополнительные свойства этого отношения: 125 –– {complete} — означает, что в данном отношении обобщения специфи- цированы все классы-потомки, и других классов-потомков у данного класса- предка быть не может; Рис. 8.15. Графическое изображение отношения обобщения на диаграмме классов в языке UML –– {disjoint} — означает, что классы-потомки не могут содержать объекты, одновременно являющиеся экземплярами двух или более классов; –– {incomplete} — означает, что на диаграмме указаны не все классы- потомки; –– {overlapping} — означает, что отдельные экземпляры классов-потомков могут принадлежать одновременно нескольким классам. 8.5.3. Интерфейс Интерфейсы являются элементами диаграммы вариантов использования (см. раздел 8.4). При построении диаграммы классов отдельные интерфейсы мо- гут уточняться, и в этом случае для их изображения используется специальный графический символ — прямоугольник класса с ключевым словом «interface», у которого отсутствует секция атрибутов (рис. 8.16). 126 Рис. 8.16. Графическое изображение интерфейса на диаграмме классов в языке UML 8.5.4. Пример диаграммы классов На рис. 8.17 приведён пример диаграммы классов. Рис. 8.17. Пример диаграммы классов UML Компания может состоять из нескольких офисов и иметь множество отде- лов. При этом уничтожение класса «Компания» делает бессмысленным сущест- вование классов «Офис» и «Отдел». Поэтому классы «Офис» и «Отдел» связаны 127 с суперклассом «Компания» композиционным отношением с указанием соответ- ствующей кратности. Каждый отдел может иметь название или быть безымянным, что отражено на диаграмме соответствующим, опять же композитным, отношением. Кроме то- го, отдел и офис ассоциируются друг с другом по месторасположению. Класс «Отдел» ассоциируется с классом «Персонал», который определяет персонал компании — руководителей отделов и рядовых сотрудников, их отно- шения (подчинение). При этом персональные данные сотрудников частично за- фиксированы в «Записях кадрового учёта», к которым должен быть ограничен доступ, и частично в «Контактной информации», которая доступна для просмот- ра. 8.6. Механизмы расширения UML Механизм расширения — один из трёх механизмов (стереотипы, помечен- ные значения и ограничения), с помощью которых можно контролируемым спо- собом расширять язык UML. Механизмы расширения языка UML используют, чтобы настроить язык на конкретные требования предметной области и применяемой разработчиком ме- тодики проектирования, а именно для уточнения существующих модельных элементов, переопределения стандартных компонентов UML, определения зави- сящих от специфики моделируемого процесса или от языка реализации про- граммного кода расширений языка UML, присоединения произвольной семанти- ческой или несемантической информации к элементам модели. Стереотип (Stereotype) расширяет словарь UML, позволяя создавать новые виды блоков, производные от существующих, но при этом более полно соответ- ствующие поставленной задаче. Стереотипы обеспечивают некоторый способ классификации модельных элементов на уровне объектной модели и возмож- ность добавления в язык UML «виртуальных» метаклассов с новыми атрибутами и семантикой. 128 Стереотип представляется в виде имени, заключённого в кавычки и распо- ложенного над именем другого элемента. Стереотипный элемент можно изобра- жать также с помощью новой связанной с ним пиктограммы. В языке UML определён ряд стандартных стереотипов для классификато- ров, компонентов, отношений и других элементов модели. В приложении А.1 приведена таблица стандартных стереотипов UML. Помеченное значение (Tagged Value) расширяет свойства блоков UML, разрешая вносить новую информацию в спецификацию элемента. Помеченные значения изображаются в виде строки в скобках, расположенной под именем другого элемента. В приложении А.2 приведена таблица стандартных помечен- ных значений UML. Ограничение (Constraint) расширяет семантику блоков UML. C их помо- щью можно вводить новые или изменять существующие правила. Ограничения изображаются в виде строки в скобках, которая расположена возле ассоцииро- ванного элемента или связана с ним отношениями зависимости. Можно также представить ограничение в виде примечания. В приложении А.3 приведена таб- лица стандартных ограничений UML. 8.7. Диаграмма состояний Диаграммы состояний (Statechart Diagram) используются для описания по- ведения сложных систем. Они определяют все возможные состояния, в которых может находиться объект, а также процесс смены состояний объекта в результа- те некоторых событий. 8.7.1. Состояние Состояние (State) представляет собой условие или ситуацию в ходе жиз- ненного цикла объекта, в течение которого он удовлетворяет логическому усло- вию, выполняет определённую деятельность или ожидает события. Событие (Event) — спецификация существенных явлений в поведении системы, которые имеют местоположение во времени и пространстве. 129 Состояние на диаграмме изображается прямоугольником со скруглёнными вершинами, который может быть разделен на две секции горизонтальной линией (рис. 8.18). В верхней секции записывается имя состояния, а в нижней — список некоторых внутренних действий или переходов в данном состоянии. Имеется также два вида псевдосостояний: начальное состояние, в котором находится только что созданный объект, и конечное состояние, которое объект не покидает, как только туда попадает (рис. 8.19). Рис. 8.18. Графическое изображение состояния в языке UML Рис. 8.19. Графическое изображение начального и конечного состояний в языке UML 8.7.2. Переход Переход (Transition) представляет собой отношение между двумя состоя- ниями, которое указывает на то, что объект в первом состоянии должен выпол- нить определённые действия и перейти во второе состояние. На диаграмме состояний переход изображается сплошной линией со стрелкой, которая направлена в целевое состояние (рис. 8.20). 130 Рис. 8.20. Графическое изображение перехода из состояния в состояние в языке UML Переходы имеют метки, которые синтаксически состоят из трёх необяза- тельных частей — событие, сторожевое условие, действие: <сигнатура события>[<сторожевое условие>]<выражение действия> При этом сигнатура события описывает некоторое событие с необходимы- ми аргументами: <имя события>(<список параметров, разделенных запятыми>) Сторожевое условие (Guard Condition) — логическое условие, записанное в прямых скобках и представляющее собой булевское выражение, принимающее одно из двух взаимно исключающих значений: «истина» или «ложь». Действие (Action) представляет собой спецификацию выполняемого ут- верждения, которая образует абстракцию вычислительной процедуры. Действие обычно приводит к изменению состояния системы, и может быть реализовано посредством передачи сообщения объекту, модификации связи или значения атрибута. В UML действия разделяются на действия входа и действия выхода. Входное действие (Entry Action) — действие, которое выполняется в мо- мент перехода в данное состояние. Обозначается с помощью ключевого слова «entry», которое указывает на то, что следующее действие должно быть выпол- нено в момент входа в данное состояние. Действие выхода (Exit Action) — действие, производимое при выходе из данного состояния. Обозначается с помощью ключевого слова «exit», которое указывает на то, что следующее действие должно быть выполнено в момент вы- хода из данного состояния. 131 В UML помимо ключевых слов «entry» и «exit», определённых для дейст- вия, есть ключевое слово «do», которое определяет деятельность, выполняю- щуюся в течение всего времени, пока объект находится в данном состоянии, или до тех пор, пока она не будет прервана внешним событием. 8.7.3. Пример диаграммы состояний UML Рассмотрим диаграмму состояний, которая представляет собой пример мо- делирования поведения конкретного объекта — процесса функционирования те- лефонного аппарата [12] (рис. 8.21). Рис. 8.21. Пример диаграммы состояний UML Данная диаграмма состояний представляет единственный объект с одним составным состоянием. Вне этого составного состояния имеется только одно со- 132 стояние «Ожидание», которое характеризует исправный и подключённый к те- лефонной сети телефонный аппарат. Переход в следующее состояние происхо- дит при поднятии телефонной трубки. Переход с атомарным действием «издать тоновый сигнал» переводит аппарат в составное состояние, а точнее в начальное его подсостояние. Далее телефонный аппарат будет находиться в состоянии «Тоновый сиг- нал». При этом будет непрерывно издавать этот сигнал до тех пор, пока не про- изойдёт событие «Набор_ цифры(n)» либо не истечёт 15 секунд с момента под- нятия трубки. В первом случае аппарат перейдёт в состояние «Набор номера», а во втором — в состояние «Истечение времени ожидания». При наборе номера выполняется событие «Набор_цифры(n)» с условием «номер неполный». Это оз- начает, что если набранный телефонный номер не содержит необходимого коли- чества цифр, то следует продолжить набор очередной цифры, оставаясь в со- стоянии «Набор номера». Если же набранный номер полный, то можно перейти в состояние «Невер- ный номер» или «Соединение». В случае неверного номера (сторожевое условие «неверный» истинно) ничего не остаётся, как покинуть составное состояние, опустив трубку на рычаг. Если же номер верный, то происходит соединение по этому номеру. Однако в результате соединения аппарат абонента может быть занят (пе- реход в состояние «Занято») или свободен (переход в состояние «Звонок у або- нента»). В первом случае можно повторить дозвон, предварительно опустив трубку на рычаг (выход из составного состояния). Во втором случае происходит проверка условия «разговор доступен». Если оно истинно, что соответствует снятию трубки абонентом, то начинается телефонный разговор. В противном случае (т.е. это условие не выполняется) телефон абонента будет продолжать звонить, извещая об отсутствии абонента или о невозможности по какой-либо причине вести разговор по телефону. При этом ничего не остаётся, как опустить трубку на рычаг. 133 Если же разговор состоялся, то после выполнения условия «подтвержде- ние» на окончание разговора трубка снова опускается. При этом телефонный ап- парат переходит в состояние «Ожидание», в котором может находиться неопре- делённо долго. 8.8. Диаграмма деятельности Диаграмма деятельности (Activity Diagram) представляет собой диаграмму, на которой изображены переходы потока управления от одной деятельности к другой. Деятельность (Activity) — это продолжающийся во времени неатомарный шаг вычислений в автомате. Деятельность в конечном счёте приводит к выпол- нению некоего действия (Action), составленного из выполняемых атомарных вы- числений, каждое из которых либо изменяет состояние системы, либо возвраща- ет какое-то значение. Действие может заключаться в вызове другой операции, посылке сигнала, создании или уничтожении объекта либо в простом вычисле- нии. Диаграммы деятельности относятся к динамическому аспекту поведения системы. С их помощью можно промоделировать последовательные и парал- лельные шаги вычислительного процесса, а также жизнь объекта, когда он пере- ходит из одного состояния в другое в разных точках потока управления. Графическая нотация диаграммы деятельности во многом похожа на нота- цию диаграммы состояний, поскольку на ней также присутствуют обозначения состояний и переходов. Отличия следующие: –– состояния используются для представления не деятельностей, а дейст- вий (другая семантика состояний); –– на переходах отсутствует сигнатура событий. Каждое состояние на диаграмме деятельности соответствует выполнению некоторой элементарной операции, а переход в следующее состояние срабатыва- ет только при завершении операции в предыдущем состоянии. 134 Графически диаграмма деятельности представляется в форме графа дея- тельности, вершинами которого являются состояния действия, а дугами — пере- ходы от одного состояния действия к другому. 8.8.1. Состояния действия и состояния деятельности Состояние действия (Action State) — это состояние, которое представляет вычисление атомарного (элементарного) действия (как правило — вызов опера- ции). При этом такое состояние не может быть подвергнуто декомпозиции и со- держать внутренние переходы. Состояние деятельности (Activity State) — состояние, которое служит для представления процедурной последовательности действий, требующих опреде- лённого времени выполнения. Таким образом, состояние деятельности можно представить как составное состояние, поток управления которого включает только другие состояния дея- тельности и действий. Состояния деятельности могут быть подвергнуты даль- нейшей декомпозиции, вследствие чего выполняемую деятельность можно пред- ставить с помощью других диаграмм деятельности. Состояния деятельности не являются атомарными и могут быть прерваны. Графически состояния деятельности и действий обозначаются одинаково (прямоугольником с закруглёнными краями, внутри которого записывается про- извольное выражение), с тем отличием, что у первого могут быть дополнитель- ные части, такие как действия входа и выхода. 8.8.2. Переходы Понятие перехода (Transition) уже было рассмотрено в разделе 8.7.2. При построении диаграммы деятельности используются только переходы, которые срабатывают сразу после завершения деятельности или выполнения со- ответствующего действия. На диаграмме такой переход изображается сплошной линией со стрелкой. Можно использовать в модели ветвление, которое описывает различные пути выполнения в зависимости от значения некоторого булевского выражения. 135 При этом точка ветвления представляется ромбом. В точку ветвления может входить ровно один переход, а выходить — два или более. Для каждого исходя- щего перехода задаётся булевское выражение, которое вычисляется только один раз при входе в точку ветвления (рис. 8.22). Для моделирования бизнес-процессов часто используются параллельные потоки. В UML для обозначения разделения (Concurrent Fork) и слияния (Concurrent Join) таких параллельных потоков выполнения используется синхро- низационная черта, которая рисуется в виде жирной вертикальной или горизон- тальной линии (рис. 8.23). Рис. 8.22. Графическое изображение ветвления в языке UML Рис. 8.23. Графическое изображение разделения и слияния параллельных потоков управления в языке UML 136 8.8.3. Дорожки Дорожка (Swimlane) представляет собой графическую область диаграммы деятельности, содержащую элементы модели, ответственность за выполнение которых принадлежит отдельным подсистемам. При моделировании течения бизнес-процессов иногда бывает полезно раз- бить состояния деятельности на группы, каждая из которых представляет отдел компании, отвечающий за ту или иную работу. В UML такие группы и называ- ются дорожками, поскольку визуально каждая группа отделяется от соседних вертикальной чертой (рис. 8.24). |