
- •Содержаhие
- •2. Классические математические
- •3. Стохастические модели
- •4.4. Имитация случайных событий…………………..… 78
- •5. Обработка результатов
- •6. Моделирование вероятностных
- •7. Модели систем
- •8. Алгоpитмизация пpоцеccов
- •9. Унифицированный
- •Введение
- •1. Концепция моделирования
- •1.1. Понятие модели
- •1.2. Концепции определения моделей
- •2. Классические математические модели
- •2.1. Примеры моделей в виде дифференциальных уравнений
- •2.2. Классические модели в виде дифференциальных уравнений
- •2.3. Инерционные модели
- •2.4. Модели на основе передаточных функций
- •2.5. Конечные автоматы
- •3. Стохастические модели объектов
- •3.1. Математические модели случайных процессов
- •3.2. Классификация моделей случайных процессов
- •3.3. Модели марковских процессов
- •4. Имитация случайных событий
- •4.1. Понятие статистического моделирования
- •4.2. Датчики случайных чисел
- •4.3. Проверочные тесты
- •4.4. Имитация случайных событий
- •4.5. Имитация непрерывных случайных величин
- •4.6. Имитация марковского процесса
- •5. Обработка результатов моделирования на эвм
- •5.1. Выбор числа опытов
- •5.2. Значимость оценки
- •5.3. Формулы и алгоритмы для оценки результатов моделирования
- •6. Моделирование вероятностных автоматов
- •6.1. Аналитическое определение вероятностных автоматов
- •6.2. Табличное задание функций переходов и выходов
- •6.3. Имитационное моделирование вероятностных автоматов
- •7. Модели систем массового обслуживания
- •7.1. Общие сведения
- •7.2. Модель входного потока заявок и времени обслуживания
- •7.3. Модель Эрланга
- •7.4. Исследование модели пуассоновского процесса с помощью производящих функций
- •7.5. Модель для определения времени задержки в виде интегро-дифференциальных уравнений Линди-Такача-Севастьянова
- •7.6. Имитационное моделирование одноканальной смо
- •7.7. Имитационные модели многофазных смо
- •7.8. Имитационные модели многоканальных смо
- •7.9. Алгоритмизация имитационной модели смо произвольной структуры
- •8.1. Моделиpующие алгоpитмы
- •9. Унифицированный язык моделирования uml
- •9.1. Основные компоненты
- •9.2. Понятия и компоненты
- •9.3. Диаграммы вариантов использования
- •9.4. Диаграммы классов
- •Вертикальная координата : : Подвеска : : Машина
- •9.5. Типы связей между классами
- •9.6. Расширения понятия класса в uml
- •9.7. Связи между объектами
- •9.8. Диаграммы взаимодействия
- •9.9. Диаграммы состояний
- •9.10. Диаграммы деятельностей
- •10. Объектно-ориентированное моделирование
- •10.1. Определение объекта
- •10.2. Наследование
- •10.3. Полиморфизм
- •10.4. Типы данных и пакеты
- •Библиографический список
- •Аналитические и имитационные модели
9.7. Связи между объектами
Аналогично ключевому понятию модели классов - понятию ассоциации, - для объектов существует понятие связи (link). Связь есть экземпляр ассоциации, установленной для объектов данных классов. Бинарная связь представляется как сплошная линия между двумя объектами.
Объекты-партнеры связи исполняют определенные роли, имена которых изображаются на соответствующих концах связи. Связь не имеет собственного имени и характеризуется именами объектов, которые она соединяет. Поскольку связи являются экземплярами ассоциаций, то для них не указывается множественность. Другие свойства, присущие ассоциациям, такие как агрегация, композиция, навигация, могут быть показаны на ролях связей аналогичным образом. Также можно указать и квалификатор, задающий тип связи (см. рис. 9.15).
Рис. 9.15 – Связи
Квалификаторы бывают следующих видов:
- «association» задает тип связи как экземпляр ассоциации, соединяющей соответствующие классы. Так как все связи - экземпляры ассоциации, то указывать этот квалификатор не имеет смысла, т.к. соответствующий ему тип связи выставляется по умолчанию;
- «parameter» указывает, что объект является параметром операции другого объекта-партнера связи;
- «local» показывает, что объект ‑ локальный параметр операции или метода другого объекта-партнера связи;
- «global» ‑ аналогично предыдущему, только здесь глобальный параметр;
- «self» ‑ применяется для обозначения связи объекта с самим собой. Используется для обозначения возможности посылки объектом сообщений самому себе.
N-арная связь представляется на диаграмме как ромб, от которого выходят соединения к объектам. Остальные атрибутьи N-арной связи такие же, как и у бинарной связи.
В контексте диаграмм классов пакет (package) - это вместилище для некоторого набора классов и других пакетов. Пакет является самостоятельным пространством имен. В UML нет каких-либо ограничений на правила, по которым разработчики могут или должны группировать классы в пакеты. Но есть стандартные случаи, когда такая группировка уместна, например, тесно взаимодействующие классы, или разбиение системы на подсистемы.
Пакет физически содержит сущности, определенные в нем. Это означает, что если будет уничтожен пакет, то будет уничтожено и все его содержимое. При описании классов пакета нередко бывает полезно сослаться на класс, определенный в другом пакете. Это можно сделать, импортировав нужный пакет. Это означает, что в импортирующем пакете станут доступными все классы импортируемого пакета. При этом пространства имен не объединятся. Для использования класса надо будет указать его имя с полным путем пакета, в котором он лежит. На рис. 9.16 показано, что пакет с именем «Трасса» импортирует пакет с именем «Подъем».
Рис. 9.16
9.8. Диаграммы взаимодействия
Взаимодействия между объектами в системе представляются диаграммами взаимодействия (interaction diagrams). Диаграммы взаимодействия подразделяются на два основных типа диаграмм: диаграммы последовательности (sequence diagrams) и кооперативные диаграммы (collaboration diagrams).
Диаграммы последовательности имеют две размерности: обычно по вертикали представлено время, по горизонтали - различные объекты. Оси координат могут меняться местами, ось времени может располагаться горизонтально, слева направо, а список объектов - вертикально.
Объект на диаграмме изображается в виде прямоугольника на вершине вертикальной пунктирной линии, называемой линией жизни объекта (lifeline). Она представляет собой фрагмент жизненного цикла объекта в процессе взаимодействия. Если объект создается или уничтожается на отрезке времени, представленном на диаграмме, то его линия жизни начинается и заканчивается в соответствующих точках, в противном случае линия жизни объекта проводится от начала до конца диаграммы.
Символ объекта рисуется в начале его линии жизни; если объект создается не в начале диаграммы, то сообщение о создании объекта рисуется со стрелкой, проведенной к символу объекта. Если объект уничтожается не в конце диаграммы, то момент его уничтожения помечается большим крестиком «». Линия жизни может разветвляться на две (и более) параллельные линии, показанные условно. Каждая ответвляющаяся линия соответствует переходу в потоке сообщений. Линии жизни могут объединяться в некоторой последующей отметке.
Для того чтобы проиллюстрировать данный вид диаграмм, обратимся к примеру. Пусть ученик сдает экзамен на вождение. Трасса ученику не подбирается, и он едет по неизведанной трассе. Если на протяжении отрезка времени Т ученик получит не более двух сигналов тревоги, то экзамен сдан. Если между сигналами проходит отрезок времени больше Т/2, то предыдущий сигнал аннулируется. Построим диаграмму последовательности для одной из ситуаций, когда экзамен не сдан (см. рис. 9.17).
Рис. 9.17
Сообщения (message) связывают на диаграмме последовательности объекты между собой и передают информацию о выполняемом действии. Сообщение представляется на диаграмме сплошной линией со стрелкой на конце, проведенной от линии жизни одного объекта к линии жизни другого объекта. Возможна посылка сообщения объектом самому себе - самоделегирование. В этом случае линия может начинаться и заканчиваться около символа объекта. Линия помечается именем сообщения (операция или сигнал) и значениями его аргументов. Сообщения могут быть помечены условием перехода, которое располагается в квадратных скобках.
Сообщения могуг быть следующих типов:
- асинхронные сообщения рисуются линией с половинкой стрелки на конце. Они не блокируют работу вызывающего объекта, и он может продолжать свой собственный процесс. Асинхронные сообщения можно использовать для создания нового объекта или для установления связи с уже выполняемой ветвью процесса;
- вызов процедуры рисуется как заполненная стрелка. Возвращение из процедуры подразумевается неявно и на диаграмме обычно не отображается. Оно обозначается явно в том случае, если это необходимо для большей ясности и представляется меткой (короткая поперечная линия), расположенной около адресата возврата.
Обычно стрелка с сообщением рисуется горизонтально. Это симнолизирует, что сообщение передается мгновенно и ничего не может произойти в момент передачи. Если на передачу сообщения необходимо какое-то время, в течение которого может что-нибудь произойти (например, посылка сообщения в противоположном направлении), то линия со стрелкой может быть ломаной (конец стрелки располагается ниже ее начала).
Объединенный набор сообщений может быть маркирован как итерация (ineration). Маркером итерации служит символ «*». Для сценария итерация указывает, что множество сообщений может передаваться многократно. Для процедуры условие продолжения итерации может указываться в конце итерации. Возможны случаи, когда часть сообщений является частью итерации, а остальные сообщения могут быть вьшолнены только однократно.
Переходы (transition) рисуются как многократные стрелки, проведенные в одну точку, помеченные условием перехода. Переход может быть именован. Имя представляет собой время посылки сообщения (например: А). В случае, когда передача сообщения происходит не мгновенно, время получения отмечается именем с апострофом (например: А’). Имя может быть проставлено слева от стрелки. Имя может быть использовано для выражения, ограничивающего время посылки сообщений. Ограничения помещаются в фигурных скобках.
Диаграммы последовательности полезны для представления параллельных процессов. Для этого в диаграммах последовательности вводятся активации (activation), показывающие период времени, в течение которого объект выполняет действия непосредственно или через зависимую процедуру.
Активация представляется на диаграмме длинным тонким прямоугольником, верхняя часть которого выравнивается с моментом, когда метод данного объекта становится активным, а нижняя часть ‑ с моментом завершения работы данного метода. Выполняемое действие может быть помечено текстом справа от символа активации (или слева, в зависимости от стиля), поочередно входящие сообщения указывают действия, которые выполняются в данном методе. В потоке управления процедуры верхняя часть символа активации предупреждает о входящем сообщении (которое инициирует действие), а нижняя часть является началом посылки возвращаемого сообщения.
Для параллельно работающих объектов (каждый из них с собственным потоком управления) активация показывает продолжительность выполнения операций каждым объектом. Для процедур активация показывает время, в течение которого процедура (или вложенная процедура) данного объекта активна. В случае рекурсивного вызова объекта вторая активация рисуется слегка правее первой, с небольшим наложением на нее (рекурсивные вызовы могут иметь произвольную глубину).
Кооперативные диаграммы (collaboration diagrams) предоставляют возможность пространственно располагать объект. На кооперативных диаграммах экземпляры объектов показываются в виде пиктограмм и отображаются лишь объекты, прямо или косвенно участвующие в выполнении данного варианта использования. Линии со стрелкой на конце обозначают сообщения, обмен которыми осуществляется в рамках данного варианта использования. Их временная последовательность указывается путем нумерации сообщений.
Линия со стрелкой проводится около линии, соединяющей объекты, и указывает в направлении объекта, которому посылается сообщение. Для пометки различных сообщений могут использоваться следующие типы стрелок:
- линия с заполненной стрелкой обозначает вызов процедуры и может использоваться также между параллельно работающими активными объектами для посылки сигналов и ожиданий;
- линия с половинкой стрелки используется для явного указания на асинхронный обмен сообщениями между двумя объектами;
- другие разновидности могут представлять разновидности управления, например, «balking» или «timeout», но они обычно воспринимаются как дополнительные возможности UML.
Сообщения на кооперативной диаграмме помечаются номерами. Нумерация сообщений делает восприятие их последовательности более трудным, чем в случае расположения линий на странице сверху вниз. Принято применять вложенную систему нумерации, т.к. это позволяет понять, какая операция что вызывает.
Внутренние сообщения о выполнении операции нумеруются, начиная с единицы. В последовательности сообщений между объектами в параллельных процессах нумерация сообщений относится к одному уровню (нет вложенности).
На кооперативной диаграмме сообщение можно снабдить такой же управляющей информацией, что и на диаграмме последовательности.
Пиктограмма объекта на кооперативной диаграмме помечается строкой имени, имеющей вид:
<ИмяОбъекта : ИмяКласса>,
где ИмяОбъекта, либо ИмяКласса могут отсутствовать. Если имя объекта отсутствует, то перед именем класса сохраняется двоеточие. Вызов взаимодействия на диаграмме может быть представлен символом действующего лица.
Так как в описанном ранее примере о сдаче учеником экзамена важна не только временная последовательность событий, но и отрезки времени между ними, то в данной задаче нет необходимости использовать кооперативную диаграмму. Поэтому проиллюстрируем данный вид диаграммы на следующей последовательности действий: ученику подается команда «Старт», команда передается системе управления и начинается движение.
Если происходит какая-либо тревожная ситуация (удар о потолок или избыточная тряска), то датчик сигнализирует об этом системе управления машины ученика, а также преподавателям, принимающим экзамен.
Система управления обязана на это отреагировать уменьшением скорости, а преподаватели ‑ фиксацией ошибки ученика.
Диаграмма, иллюстрирующая данный пример, представлена на рис. 9.18.
Рис. 9.18