- •Глава 1
- •1 Тема: Объектная модель
- •1. Представления модели.
- •2. Характеристика представлений и относящиеся к ним диаграммы.
- •Конструкции для расширения возможностей языка моделирования
- •1. Ole 1.0
- •2. ActiveX
- •3. Стандартные и пользовательские интерфейсы
- •20 Тема: Понятие агента. Многоагентные системы.
1. Представления модели.
2. Характеристика представлений и относящиеся к ним диаграммы.
Разделение системы на представления позволяет уменьшить сложность ее моделирования. Представление — это конструкции, представляющие один из аспектов моделируемой системы.
Различают три основных представления:
Описание структуры
Описание динамики взаимодействия объектов
Управление моделями
Структурная классификация описывает системные сущности и их отношения между собой.
Динамическое поведение описывает поведение системы во времени.
Представление управления моделью — это описание разбиения модели на иерархические блоки.
В табл. 1 приведены представления модели, используемые в языке UML и относящиеся к ним диаграммы.
Таблица 1 Представления модели и диаграммы в языке UML
Область |
Представления |
Диаграммы |
Структурная |
Статистическое |
классов |
Использования |
использования | |
Программной реализации |
компонентов | |
Развертывания |
развертывания | |
Динамическая |
В виде конечного автомата |
состояний |
Деятельности |
деятельности | |
Взаимодействия |
последовательности | |
|
кооперации | |
Управление моделью |
Управления моделью |
классов |
1. СТРУКТУРНАЯ КЛАССИФИКАЦИЯ
Основой статического представления модели являются классы и их отношения: ассоциации, обобщения и различные виды зависимостей, например реализация и использование. Классом (class) называется описание некоторой концепции предметной области или элемента программного решения. Классы являются тем центром, вокруг которого строится представление классов. Все прочие элементы либо принадлежат классам, либо относятся к ним.
Статическое представление изображается на диаграммах классов, в которых основной акцент сделан именно на описании классов и их взаимоотношений.
Графически класс изображается в виде прямоугольника. Атрибуты и операции класса перечисляются в горизонтальных отделениях этого прямоугольника. Если на диаграмме не нужно представлять полное описание класса, то отделения можно просто скрыть. Один и тот же класс может присутствовать на различных диаграммах и отображаться с разной степенью детализации (полное описание класса часто присутствует только на одной диаграмме).
Отношения между классами выражаются при помощи различных линий и дополнительных обозначений, которые ставятся либо над самими линиями, либо у их концов.
Отношение |
Функция |
Нотация |
Ассоциация |
Описание связей между экземплярами классов |
|
Зависимость |
Отношение, существующее между двумя элементами модели |
|
Поток |
Отношение между двумя версиями одного и того же объекта, существующими в последовательные моменты времени |
|
Обобщение |
Отношение между общим описанием и более специфическими его разновидностями; используется при наследовании |
|
Реализация |
Отношение между спецификацией и ее реализацией |
|
Использование |
Ситуация, когда для корректной работы одному элементу системы необходим другой элемент |
|
Пример: В качестве примера рассмотрим компьютеризированную театральную кассу.
На рис.1 приведена диаграмма классовдля системы продажи театральных билетов.
Рис. 1 Диаграмма классов
Эта диаграмма частично отражает предметную область деятельности театральной кассы: в ней есть такие важные классы, как Customer (Клиент), Reservation (Заказ), Ticket (Билет) и Performance (Представление). Клиенты могут делать по несколько заказов, при этом один заказ принадлежит только одному клиенту. Существует два вида заказов: Subscription Series (Абонемент) и Individual Reservation (Единичный заказ). В обоих случаях происходит заказ билетов — в первом случае одного, во втором — одного или нескольких. Каждый из имеющихся в кассе билетов может быть продан как Абонемент или как Единичный заказ, но не как и то и другое одновременно. На каждое представление имеется некоторое количество билетов, снабженных уникальным номером места. Театральное представление может идентифицироваться постановкой, датой и временем ее исполнения.
Классы можно описывать с разной степенью детализации. На ранней стадии проектирования модель отражает только логические аспекты системы. В процессе дальнейшей работы в модель вносится информация о различных проектных решениях и деталях реализации системы. Большинство представлений модели находятся приблизительно на одном уровне детализации.
В представлении использования описывается функционирование системы с точки зрения ее пользователей, которые называются в моделировании актантами (actors). Назначение представления вариантов использования — выявить всех актантов системы и все варианты ее использования, а также указать, какие актанты в каких вариантах использования фигурируют.
На рис. 2 изображена диаграмма использования для нашего примера с театральной кассой. Актантами здесь будут Kiosk (Киоск), Clerk (Кассир) и Supervisor (Начальник). Киоск представляет собой еще одну систему, которая принимает заказы клиента. Клиент не будет считаться актантом в программном приложении для театральной кассы, так как он не связан с ним напрямую. Варианты использования в нашем примере включают в себя покупку билетов в Киоске или у Кассира в театре, покупку абонемента (только у Кассира) и подсчет общего числа продаж билетов (по требованию Начальника). Покупка билетов или абонемента имеют одну общую черту — процедуру снятия денег Клиента с его кредитной карты. В полном описании системы продажи театральных билетов должны присутствовать еще несколько вариантов использования (например, обмен или проверка наличия свободных билетов).
Рис. 2 Диаграмма использования
2. ДИНАМИЧЕСКОЕ ПОВЕДЕНИЕ
В представлении взаимодействия описывается последовательность обмена сообщениями между ролями, которые реализуют поведение системы Роль-классификатор — это описание объекта, выполняющего особую функцию во взаимодействии и отличающегося от прочих объектов того же класса. Представление взаимодействия отражает целостно! поведение системы, то есть показывает потоки управления между объектами. Это представление изображается на двух различных диаграммах, описывающих разные аспекты системы: диаграмме последовательности и диаграмме кооперации.
На диаграммах последовательности отображаются сообщения в том же порядке, в котором они передаются во времени. Каждая роль-классификатор изображается в виде «линии жизни» (lifeline) — вертикальной линии, представляющей роль на протяжении взаимодействия. Сообщения изображаются в виде стрелок, идущих от одной линии жизни к другой.
Диаграмма последовательности описывает историю конкретной транзакции или сценарий. Назначение — отобразить последовательность действий для части или целого варианта использования. В процессе реализации каждое сообщение на диаграмме соответствует вызову операции класса или формированию события в конечном автомате.
Рис. 3 Диаграмма последовательности
На рис. 3 изображена диаграмма последовательности для варианта использования Buy tickets (Купить билеты), который начинается с обращения киоска к театральной кассе. В эту же диаграмму включены шаги обращения к варианту использования charge (Снять деньги с кредитной карты), куда, в свою очередь, уже входят как общение с Киоском, так и со Службой работы с кредитными картами (credit card service).
На диаграмме кооперации представлены объекты и связи между ними. Объекты и их связи имеют значение только в контексте определенного взаимодействия, причем объект описывается ролью-классификатором, а связь внутри кооперации — ролью-ассоциацией. Таким образом, диаграмма кооперации является графическим представлением взаимодействия этих двух ролей (рис. 4). Стрелки-сообщения, расположенные у линий, изображающих отношения, связывают роли-классификаторы. Последовательность сообщений задается их нумерацией.
Рис. 4 Диаграмма кооперации
Назначение диаграммы кооперации - показать реализацию какой-либо операции. На диаграмме указываются параметры и локальные переменные операций, а также постоянные ассоциации. Последовательность сообщений на схеме соответствует структуре вложенных вызовов и прохождению сигналов в программе. На рис.4 изображена диаграмма кооперации для заказа билетов. Из Киоска поступает запрос в базу данных. Указатель db, который возвращается объекту TicketSeller (Продавец билетов), представляет собой локальную связь с базой данных, которая поддерживается только на время взаимодействия. Продавец билетов запрашивает некоторое количество необходимых мест, находит ряд свободных билетов по различной цене, временно блокирует их в базе данных и перенаправляет в Киоск, где Клиент выбирает из них подходящие. После того как клиент выбрал билет, со всех прочих билетов блокировка снимается.
Диаграмма кооперации и диаграмма последовательности служат для моделирования взаимодействия объектов в системе, однако каждая диаграмма имеет свою специфику. Диаграмма последовательности заостряет внимание на временной последовательности обмена сообщениями, оставляя «за кадром» структурные взаимоотношения между объектами. В диаграмме кооперации, напротив, главный акцент сделан на отображении отношений между ролями и связанных с ними сообщений. Временная последовательность становится в этом случае не столь явной, так как на нее указывает только нумерация сообщений.
Представление в виде конечного автомата описывает возможные жизненные циклы объекта и состоит из состояний, соединенных переходами.
Каждое состояние — это такой период жизненного цикла объекта, когда он удовлетворяет определенным условиям. Некоторое событие может привести к переходу, в результате которого объект окажется в новом состоянии. При переходе может выполняться действие, предписанное данному переходу.
Представление в виде конечного автомата изображается на диаграммах состояний.
Рис. 5 Диаграмма состояний
На рис. 5 изображена история билета на определенное представление. Исходное состояние билета (черная точка на рисунке) определяется как Доступное (Available). Места, предназначенные для абонементов, распределяются перед началом театрального сезона. Первый раз бронирование оставшихся после этого мест происходит, когда клиент выбирает билет. После этого билет либо продается, либо возвращается в базу данных и блокировка с него снимается. Если клиент задерживается с выбором билета, то но истечении максимального времени транзакции билет также разблокируется. Места в абонементе можно обменять на другие билеты. В таком случае билеты, предназначенные для абонемента, снова поступают в продажу.
Конечный автомат можно использовать при описании пользовательских интерфейсов, контроллеров внешних устройств и прочих реагирующих подсистем. Ими также можно описывать пассивные объекты, которые за время своей жизни проходят через несколько качественно различных состояний, имеющих свое собственное поведение.
Представление деятельности является вариантом конечного автомата, в котором показаны длительные вычислительные деятельности.
Деятельность представляет собой поток работ или выполнение операций. Представление деятельности отображает как последовательные, так и параллельные виды деятельности.
Изображаются такие модели на диаграммах деятельности.
Рис. 6 Диаграмма деятельности
На рис. 6 изображена диаграмма деятельности для нашей театральной кассы. На ней показан весь спектр различных видов театральной деятельности по подготовке конкретного представления (если у вас есть опыт работы в театре, не принимайте наш пример слишком буквально!). Стрелками на диаграмме показаны последовательные зависимости. Например, конкретную постановку можно выбрать из ряда других еще до того, как станет известно, когда она состоится. Жирной чертой отмечены места разделения или соединения потоков управления. Уже после того, как составлено расписание постановок, театр может начать рекламировать какую-либо одну из них, покупать для нее сценарии и музыку, нанимать актеров, работать над освещением, костюмами, причем делать все это можно одновременно. Впрочем, до начала репетиций театр должен будет выбрать сценарий и нанять актеров. Диаграмма деятельности отражает реальные потоки работ в человеческой организации. Такое бизнес-моделирование и есть основное ее назначение. С таким же успехом ее можно использовать и при моделировании работы программного приложения.
Диаграмма деятельности может оказаться полезной и для понимания поведения системы. При ее использовании не нужно указывать детали реализации, такие, например, как сообщения, которыми обмениваются объекты и которые необходимо отображать на диаграмме кооперации.
Все предыдущие представления модели являли собой чисто логические построения. В отличие от них физическое представление отражает структуру реализации программного приложения, включая разбиение программы на компоненты и развертывание ее на аппаратных узлах. С помощью него можно указывать отображение классов на компоненты реализации и узлы, на которых устанавливается система.
Существует два физических представления: представление реализации и представление развертывания.
Представление реализации показывает, какие компоненты есть в данной системе и какие между ними существуют зависимости.
Компонентами системы мы называем отдельные программные блоки, из которых состоит вся система. Понимание зависимостей между компонентами дает возможность отслеживать на модели результаты изменений в отдельных компонентах. Помимо того, в этом представлении модели иногда указывается, с какими классами и элементами связан конкретный компонент.
Рис. 7 Диаграмма компонентов
Представление реализации изображается на диаграмме компонентов. На рис.7 изображена диаграмма компонентов для системы продажи театральных билетов. Вы видите здесь три пользовательских интерфейса: по одному для клиента, покупающего билет в киоске, кассира, работающего с системой бронирования билетов в реальном времени, и для начальника, запрашивающего результаты продаж билетов.
Кроме того, на этой диаграмме вы найдете три компонента: компонент продажи билетов, который координирует запросы, поступающие от театральных киосков и кассиров; компонент, обрабатывающий операции по снятию денег с кредитных карт, и, наконец, база данных с информацией о билетах. Таким образом, на диаграмме нашли отражение все виды компонентов системы. Некоторые конфигурации приложения могут допускать наличие в программе нескольких копий компонента.
Маленький именованный кружок на диаграмме изображает интерфейс, то есть некий набор связанных друг с другом услуг. Непрерывная линия, идущая от компонента к кружку-интерфейсу, указывает на то, что данный компонент обеспечивает работу интерфейса (иными словами, компонент реализует интерфейс, далее он обозначается как Клиент). Если же от компонента к интерфейсу идет пунктирная стрелка, это означает, что компонент требует для своей работы наличия доступа к данному интерфейсу. Например, компонент продажи билетов обеспечивает как продажи абонементов, так и групповые продажи билетов. Однако абонемент можно купить как в Киоске, так и у Кассира в театре, тогда как групповыми продажами занимается только Кассир.
Представление развертывания отражает расположение работающих компонентов на узлах. Узел — это ресурс, используемый во время выполнения программы (например, компьютер, аппаратное устройство или память). Это представление служит для изображения распределения ресурсов и их размещения.
Представление развертывания изображается на диаграммах развертывания. На рис. 8 показана описательная диаграмма развертывания для нашей театральной системы. На ней изображены типы узлов системы и те компоненты, которые на них содержатся. Узлы изображаются в виде параллелепипедов.
На рис. 9 вы видите диаграмму развертывания в реальном мире. На ней показаны отдельные узлы и их связи в конкретной версии системы. Информация, которую несет эта модель, полностью совместима с информацией описательной модели на рис.8.
Рис. 8 Диаграмма развертывания (описательный уровень)
Рис. 9 Диаграмма развертывания (уровень реального мира)
3. УПРАВЛЕНИЕ МОДЕЛЬЮ
Представление управления моделью определяет внутреннюю организацию модели. Любая модель состоит из набора пакетов, содержащих ее элементы: классы, конечные автоматы и варианты использования. Одни пакеты могут включать в себя другие пакеты, поэтому модель должна иметь начальный корневой пакет, в котором содержится информация обо всей модели.
Пакетами называются блоки для манипуляций содержимым модели, а также для осуществления контроля доступа и конфигурации. Каждый элемент модели принадлежит какому-либо пакету или другому элементу.
Модель — это полное описание системы, сделанное с некой точки зрения на определенном уровне абстракции. У одной системы может одновременно быть несколько моделей, полученных с разных точек зрения, например, аналитическая модель, модель проектирования и т. д. Модели отображаются как особые виды пакетов.
Еще одним особым видом пакетов является подсистема. Подсистема — это часть системы, обладающая четким интерфейсом, который может быть реализован как отдельный компонент.
Как правило, информация об управлении моделью изображается на диаграммах классов.
На рис. 10 показан набор пакетов для системы продажи театральных билетов и зависимости в нем. Подсистема театральной кассы включает в себя те примеры, которые мы уже описывали в этой главе. В полную систему включены также подсистемы планирования и общих операций. Каждая подсистема, в свою очередь, состоит из нескольких пакетов.
Рис. 10 Пакеты