
- •Раздел 1. Основы разработки по 4
- •Раздел1. Основы разработки по
- •1.1. Основные понятия и определения
- •1.2. Понятие «программирование»
- •Программирование как дисциплина
- •Программирование как деятельность
- •1.3. Области разработки по
- •Контрольные вопросы
- •Раздел2. Методология разработки по
- •2.1. Основные понятия и определения
- •2.2. Классификация методологий
- •2.3. Происхождение методологий
- •Практическое происхождение
- •Алгоритмическое происхождение
- •Структурно-языковое происхождение
- •2.4. Методологии программирования
- •Методология императивного программирования
- •Методология объектно-ориентированного программирования
- •Методология функционального программирования
- •Методология логического программирования
- •Методология сентенциального программирования
- •Методология ограничительного программирования
- •Методология структурного императивного программирования
- •Методология императивного параллельного программирования
- •Методология логического параллельного программирования
- •Контрольные вопросы
- •Раздел3. Технология разработки по
- •3.1. Основные понятия и определения
- •3.2. Основные классификации
- •3.3. Модели жизненного цикла по
- •Непланируемая модель
- •Каскадная модель
- •Прототипируемая модель
- •Итеративная инкрементная модель
- •Эволюционная модель
- •Спиральная модель
- •Модифицированная спиральная модель
- •3.4. Классические технологические процессы Процесс 1. Исследование идеи
- •Процесс 2. Управление
- •Процесс 3. Анализ
- •Процесс 4. Проектирование
- •Процесс 5. Кодирование
- •Процесс 6. Тестирование
- •Процесс 7. Ввод в действие
- •Процесс 8. Сопровождение
- •Процесс 9. Снятие с эксплуатации
- •3.5. Методики анализа и проектирования
- •3.6. Стандартные технологические процессы
- •Стандарт iso/iec 12207
- •Основные процессы
- •Вспомогательные процессы
- •Организационные процессы
- •Адаптация стандарта
- •Стандарт iso/iec15288
- •Контрольные вопросы
- •Раздел4. Подходы разработки по
- •4.1. Каскадные технологические подходы
- •4.2. Каркасные технологические подходы
- •Унифицированный процесс (up)
- •Рациональный унифицированный процесс (rup)
- •Основы подхода
- •Жизненный цикл проекта
- •Каркас решений Microsoft(msf)
- •Основы подхода
- •Жизненный цикл проекта
- •Процесс iconix(iconix Process)
- •Основы подхода
- •Жизненный цикл проекта
- •4.3. Эволюционные технологические подходы
- •Подходы прототипирования
- •Итеративная инкрементная разработка (iid)
- •Быстрая разработка приложений (rad)
- •Основы подхода
- •Жизненный цикл проекта
- •4.4. Адаптивные технологические подходы
- •Особенности живых подходов
- •Адаптивная разработка по (asd)
- •Основы подхода
- •Жизненный цикл проекта
- •Экстремальное программирование (xp)
- •Основы подхода
- •Жизненный цикл проекта
- •4.5. Генетические технологические подходы
- •Синтезирующее программирование
- •Конкретизирующее программирование
- •Сборочное программирование
- •4.6. Формальные технологические подходы
- •Формальные генетические подходы
- •Подходы формальной разработки
- •Жизненный цикл проекта
- •Обзор используемых подходов
- •Инженерия стерильного цеха (CrSe)
- •Основы подхода
- •Жизненный цикл проекта
- •Методика подхода
- •Контрольные вопросы
- •Раздел5. Инженерия и инструментарий по
- •5.1. Инженерия по
- •5.2. Инструментарий по
- •Контрольные вопросы
- •Раздел6. Методические указания
- •6.1. Лабораторные работы
- •1. Введение вRational Rose
- •1.1. Цель работы
- •1.2. Общие сведения
- •1.3. Порядок выполнения
- •1.4. Содержание отчёта
- •1.5. Варианты заданий
- •1.6. Контрольные вопросы
- •2. Диаграмма прецедентов
- •2.1. Цель работы
- •2.2. Общие сведения
- •2.3. Порядок выполнения
- •2.4. Содержание отчёта
- •2.5. Варианты заданий
- •2.6. Контрольные вопросы
- •3. Диаграмма классов. Пакеты
- •3.1. Цель работы
- •3.2. Общие сведения
- •3.3. Порядок выполнения
- •3.4. Содержание отчёта
- •3.5. Варианты заданий
- •3.6. Контрольные вопросы
- •4. Диаграммы взаимодействия
- •4.1. Цель работы
- •4.2. Общие сведения
- •4.3. Порядок выполнения
- •4.4. Содержание отчёта
- •4.5. Варианты заданий
- •4.6. Контрольные вопросы
- •5. Диаграммы переходов состояний
- •5.1. Цель работы
- •5.2. Общие сведения
- •5.3. Порядок выполнения
- •5.4. Содержание отчёта
- •5.5. Варианты заданий
- •5.6. Контрольные вопросы
- •6. Диаграмма компонентов
- •6.1. Цель работы
- •6.2. Общие сведения
- •6.3. Порядок выполнения
- •6.4. Содержание отчёта
- •6.5. Варианты заданий
- •6.6. Контрольные вопросы
- •7. Диаграмма развёртывания
- •7.1. Цель работы
- •7.2. Общие сведения
- •7.3. Порядок выполнения
- •7.4. Содержание отчёта
- •7.5. Варианты заданий
- •7.6. Контрольные вопросы
- •8. Дальнейшая работа с моделью
- •8.1. Цель работы
- •8.2. Общие сведения
- •8.3. Порядок выполнения
- •8.4. Содержание отчёта
- •8.5. Варианты заданий
- •8.6. Контрольные вопросы
- •6.2. Курсовая работа
- •7. Общие сведения
- •Обзор языка uml
- •Принципы моделирования
- •Формальное описание
- •Представления модели
- •Диаграмма робастности
- •Процесс iconix
- •Обзор подхода
- •Особенности подхода
- •Ключевые принципы
- •Жизненный цикл проекта
- •8. Порядок выполнения
- •Определение задания
- •Этапы выполнения
- •Содержание отчёта
- •9. Типовые задания
- •Предметные области
- •Примеры автоматизации
- •Варианты заданий
- •6.3. Самостоятельная работа студентов
- •Тема 1. Основы разработки по Содержание темы
- •Самостоятельная работа
- •Контрольные вопросы
- •Тема 2. Методология разработки по Содержание темы
- •Самостоятельная работа
- •Контрольные вопросы
- •Тема 3. Технология разработки по Содержание темы
- •Самостоятельная работа
- •Контрольные вопросы
- •Тема 4. Подходы разработки по Содержание темы
- •Самостоятельная работа
- •Контрольные вопросы
- •Тема 5. Инженерия и инструментарий по Содержание темы
- •Самостоятельная работа
- •Контрольные вопросы
- •6.4. Примерные тестовые задания Тема 1. Основы разработки по
- •Тема 2. Методология разработки по
- •Тема 3. Технология разработки по
- •Тема 4. Подходы разработки по
- •Тема 5. Инженерия и инструментарий по
- •Литература Основная литература
- •Дополнительная литература
- •Документация
- •Интернет – источники
- •Литература по Rational RoseиUml
3.3. Порядок выполнения
1. Изучить назначение элементов интерфейса RRдля построения диаграммы классов. Рассмотреть типовой пример построения диаграммы для банкомата.
2. Продолжить моделирование системы в соответствии с индивидуальным заданием в виде построения диаграммы классов:
2.1. Определить состав классов различных типов для реализации модели системы (должно быть не менее 6 классов для актёров и прецедентов), создать несколько пакетов и распределить классы по пакетам.
2.2. Для каждого класса установить стереотипы, добавить и специфицировать атрибуты и операции (определить тип аргументов и результата); задать число объектов этого класса, его устойчивость, а также другие свойства.
2.3. Добавить и специфицировать связи различных типов между классами, определить зависимости между пакетами.
2.4. В секции документации для каждого класса ввести комментарии.
2.5. Отобразить диаграмму классов системы, отдельно отобразить диаграммы классов каждого пакета. При изображении диаграммы классов все классы предлагается представить в форме графических стереотипов и отображать атрибуты, операции или сигнатуры операций классов.
3. Оформить отчёт по результатам выполнения лабораторной работы.
3.4. Содержание отчёта
Результаты выполнения лабораторной работы необходимо представить в виде отчёта, который должен содержать следующие разделы:
1. Постановка задачи.
2. Описание пакетов и классов системы.
3. Описание связей между классами проектируемой системы.
4. Окончательный вид диаграммы классов проектируемой системы.
3.5. Варианты заданий
Вариант индивидуального задания соответствует варианту, полученному при выполнении лабораторной работы №2.
3.6. Контрольные вопросы
1. Каково назначение диаграммы классов? Какие типы классов можно создать в средеRR?
2. Какими способами можно создать диаграмму классов в средеRR?
3. Как настроить свойства атрибутов и операций класса?
4. Какие виды связей доступны в диаграмме классов?
5. Каким образом можно детализировать описание класса в средеRR?
6. Что такое стереотип? Какие стереотипы доступны вRR?
7. Каким образом можно добавить новый стереотип вRR?
8. Как создать вложенный класс вRR?
9. Как формируются пакеты классов вRR?
4. Диаграммы взаимодействия
4.1. Цель работы
Целью данной работы является использование диаграмм взаимодействия (диаграммы последовательностей и диаграммы кооперации) при разработке программной системы в среде RR.
4.2. Общие сведения
Диаграмма взаимодействия (interaction diagram) описывает динамический аспект взаимодействия объектов при реализации отдельных прецедентов и оперирует объектами и сообщениями, которыми они обмениваются. На диаграмме взаимодействия отображают один из процессов обработки информации в прецеденте. В случае наличия нескольких альтернативных потоков, создаётся несколько диаграмм взаимодействия для рассматриваемого прецедента.
Существует два типа диаграмм взаимодействия – диаграммы последовательности (sequence diagram) и диаграммы кооперации (collaboration diagram). На диаграммах обоих типов представлена одна и та же информация, но между ними есть два различия. Диаграммы последовательности заостряют внимание на управлении и представляют собой разворот взаимодействия во времени с отображением последовательности выдачи сообщений. Диаграммы кооперации отображают поток данных и показывают взаимодействие объектов независимо от времени.
Диаграмма последовательностей
Диаграммы последовательности можно создавать в представлении прецедентов или в логическом представлении браузера. Такие диаграммы должны находиться непосредственно внутри прецедента или непосредственно внутри пакета.
Для создания новой диаграммы последовательности необходимо:
1. Щёлкнуть правой кнопкой мыши на пакете или прецеденте в браузере.
2. В открывшемся меню выбрать пункт New → Sequence Diagram(Создать → Диаграмма последовательности) и определить имя новой диаграммы.
3. Дважды щёлкнуть на диаграмме в браузере для её открытия.
Либо выполнить операцию меню Browse → Interaction Diagram(Браузер → Диаграмма взаимодействия) и выбрать для построения новую диаграмму последовательности с указанием места её размещения.
При этом появляется новое окно с чистым рабочим листом диаграммы и специальная панель инструментов, содержащая кнопки с изображением графических элементов для разработки диаграммы последовательности (табл.4.1).
Таблица 4.1
Значок |
Подсказка |
Назначение кнопки |
|
Selection Tool |
Переключает в режим выделения элементов на диаграмме |
|
Text Box |
Добавляет на диаграмму текстовую область |
|
Note |
Добавляет на диаграмму примечание |
|
Anchor Note to Item |
Добавляет связь примечания с элементом диаграммы |
|
Object |
Добавляет на диаграмму объект |
|
Object Message |
Добавляет на диаграмму простое сообщение |
|
Message to Self |
Добавляет на диаграмму рефлексивное сообщение |
|
Return Message |
Добавляет сообщение типа возврата из процедуры |
|
Destruction Marker |
Добавляет на диаграмму символ уничтожения объекта |
|
Procedure Call |
Добавляет на диаграмму сообщение типа вызова процедуры |
|
Asynchronous Message |
Добавляет на диаграмму асинхронное сообщение |
Открыть существующую диаграмму последовательности можно с помощью пункта меню Browse → Interaction Diagram(Браузер → Диаграмма взаимодействия) или дважды щёлкнуть по этой диаграмме в логическом представлении или в представлении прецедента браузера.
Добавить объект на диаграмму можно как стандартным образом с помощью кнопки на специальной панели инструментов, так и более удобным способом – с помощью перетаскивания значка класса или актёра из браузера на свободное место рабочего листа диаграммы последовательности.
В результате этого на диаграмме последовательности появится изображение объекта с вертикальной пунктирной линией, означающей линию жизни этого объекта. При необходимости можно задать имя объекта, указать устойчивость его существования, возможность наличия у него нескольких экземпляров, а также добавить документацию, для чего уже известным способом (например, двойным щелчком на изображении объекта на диаграмме) следует вызвать окно свойств объекта (окно спецификации).
Отметим, что каждый объект является реализацией класса, поэтому каждый объект диаграммы последовательности может быть соотнесён с классом. Для этого можно воспользоваться полем Classокна спецификации объекта. По умолчанию полеClass=Unspecified(не определён). После соотнесения класса с объектом название класса появится на диаграмме за именем объекта и двоеточием. При назначении объекту класса можно либо указать уже существующий класс модели, либо создать новый класс. К моменту генерации кода все объекты должны быть соотнесены с классами. Разорвать соотнесение объекта с классом можно следующим образом: щёлкнуть правой кнопкой мыши на объекте, в появившемся меню выбрать пунктOpen Specificationи в раскрывшемся классе выбрать пунктUnspecified. Если нужно создать для объекта новый класс, то нужно выполнить те же действия, но в списке классов выбрать пунктNew(Создать).
Если вы хотите убедиться, что все объекты соотнесены с классами, то выберите в меню модели пункт Report → Show Unresolved Objects(Отчёт → Показать свободные объекты).
В среде RRдля каждого объекта можно задать его устойчивость в окне спецификации. Поддерживаются следующие варианты:persistent(устойчивый) – сохраняется в базе данных или другим способом, обеспечивающим постоянное хранение;static(статичный) – сохраняется в памяти компьютера в течение всего времени работы программы;transient(временный) – сохраняется в течение очень короткого времени (например, пока не закончится выполнение процессов).
Расположив объекты на диаграмме, нужно показать сообщения между ними. Сообщение – это связь между объектами, в которой один из них (клиент) требует от другого (сервера) выполнения каких-либо действий. При генерации кода сообщения транслируются в вызовы функций.
Для добавления сообщения между объектами нужно с помощью левой кнопки мыши нажать кнопку с изображением сообщения на специальной панели инструментов, отпустить левую кнопку мыши, щёлкнуть левой кнопкой мыши на изображении линии жизни 1‑го объекта на диаграмме и отпустить её на изображении линии жизни 2‑го объекта. При этом изображение линии жизни у этой пары объектов изменится на изображение фокуса управления.
Для спецификации свойств добавленного сообщения предназначено окно, которое можно открыть двойным щелчком на изображении сообщения на диаграмме последовательности. Имя сообщения можно выбрать на вкладке Generalиз выпадающего списка операций соответствующего класса-приёмника. Имя сообщения можно выбрать также из контекстного меню сообщения, в котором перечислены все операции класса-приёмника данного сообщения. В контекстном меню можно задать новую операцию, в этом случае следует выбрать строкуNew operation. При этом откроется окно спецификации свойств новой операции класса-приёмника.
При добавлении сообщений на диаграмму последовательности они получают по умолчанию свой номер в общей последовательности сообщений. Нумерация сообщений на диаграмме последовательности может быть отключена. При необходимости показать номера сообщений следует выполнить операцию меню Tools → Options(Инструменты → Параметры), открыть вкладкуDiagram(Диаграмма) и выставить отметку выбора строкиSequence numbering(Нумерация сообщений на диаграмме последовательности) в группе свойствDisplay.
Для детальной спецификации свойств сообщений можно использовать группы свойств Synchronization(Синхронизация) иFrequency(Частота) на вкладкеDetailокна спецификации сообщения. При изменении способа синхронизации передаваемого сообщения изменяется графическое изображение стрелки этого сообщения. Группа свойствSynchronizationопределяет порядок обмена сообщениями, который может быть выбран из следующих вариантов:Simple– простая посылка сообщения;Synchronous– операция происходит только в том случае, когда клиент посылает сообщение, а сервер может принять сообщение клиента;Balking– операция происходит только в том случае, когда сервер готов немедленно принять сообщение, если сервер не готов к приёму, клиент не выдаёт сообщение; Timeout – клиент отказывается от выдачи сообщения, если сервер в течение определённого времени не может его принять; Procedure Call – клиент вызывает процедуру сервера и полностью передает ему управление; Return – определяет, что происходит возврат из процедуры; Asynchronous – клиент выдаёт сообщение, и, не ожидая ответа сервера, продолжает выполнение.Группа свойств Frequencyопределяет частоту обмена сообщениями: Periodic – сообщения поступают от клиента с заданной периодичностью;Aperiodic– сообщения поступают от клиента нерегулярно.
Для удаления элемента с диаграммы выделите его и в меню модели выберите пункт Edit → Delete from model(Правка → Удалить из модели). При необходимости удаления всей диаграммы последовательности нужно щелкнуть правой кнопкой мыши на ней в браузере и в открывшемся меню выбрать пунктDelete.
Типовой пример
Для модели банкомата фрагмент вида диаграммы последовательности для типичного хода событий прецедента ‘Снятие наличных по кредитной карточке’, приведён на рис.4.1. При построении диаграммы последовательности ‘Снятие наличных по кредитной карточке’ добавлены следующие объекты и сообщения.
1. Объекты классов: ‘Клиент банкомата’,‘Устройство чтения карточки’,‘Контроллер банкомата’,‘Транзакция банкомата’,‘Клавиатура банкомата’,‘Экран банкомата’,‘Принтер банкомата’,‘Устройство выдачи наличных’и‘IКонтроллер Банка’.
2. Сообщения:
1) ‘прочитать идентификатор карточки()’ – от линии жизни объекта класса ‘Клиент банкомата’ к линии жизни объекта класса ‘Устройство чтения карточки’;
2) ‘проверить идентификатор карточки(integer)’ – от ‘Контроллер банкомата’ к ‘IКонтроллер банка’;
3) ‘ввести ПИН-код()’ – от ‘Клиент банкомата’ к ‘Клавиатура банкомата’;
4) ‘прочитать ПИН-код()’ – от ‘Контроллер банкомата’ к ‘Устройство чтения карточки’;
5) ‘создать новую транзакцию()’ – от ‘Контроллер банкомата’ к изображению ‘Транзакция банкомата’. Изображение 2‑го объекта перемещено вниз на уровень этого сообщения, что означает создание объекта в более поздний момент времени, чем начало функционирования системы.
6) ‘проверить правильность ПИН-кода()’ – от ‘Контроллер банкомата’ к ‘Транзакция банкомата’;
7) ‘показать меню опций()’ – от ‘Контроллер банкомата’ к ‘Экран банкомата’;
8) ‘ввести тип транзакции()’ – от ‘Клиент банкомата’ к ‘Клавиатура банкомата’;
9) ‘показать меню снятия суммы()’ – от‘Контроллер банкомата’ к ‘Экран банкомата’;
10) ‘ввести сумму снятия наличных()’ – от ‘Клиент банкомата’ к ‘Клавиатура банкомата’;
11) последовательно 3 сообщения: ‘открыть счёт клиента(integer)’, ‘проверить баланс клиента(integer, currency)’ и ‘уменьшить счёт клиента(integer, currency)’ – от ‘Контроллер банкомата’ к ‘IКонтроллер банка’;
12) ‘распечатать чек()’ – от ‘Контроллер банкомата’ к ‘Принтер банкомата’;
13) ‘вернуть кредитную карточку()’ – от ‘Контроллер банкомата’ к ‘Устройство чтения карточки’;
14) ‘выдать наличные()’ – от ‘Контроллер банкомата’ к ‘Устройство выдачи наличных’;
15) ‘завершить транзакцию()’ – от ‘Контроллер банкомата’ к ‘Транзакция банкомата’.
Рис.4.1. Фрагмент окончательного вида диаграммы последовательности для типичного хода событий прецедента ‘Снятие наличных по кредитной карточке’
После добавления сообщения ‘завершить транзакцию()’ поместить на линию жизни объекта класса ‘Транзакция банкомата’ символ уничтожения этого объекта.
Диаграмма кооперации
Особенность работы в среде RRзаключается в том, что диаграмма кооперации может быть автоматически создана на основе диаграммы последовательности и наоборот. Для этого, находясь в диаграмме необходимо нажать клавишу <F5> или использовать менюBrowse → Create Collaboration/Sequence diagram(Браузер → Создать диаграмму кооперации/последовательности). С помощью клавиши <F5> также осуществляется переключение между диаграммами в модели.
Диаграммы кооперации обычно создаются в браузере и размещаются под прецедентом или пакетом. Для создания новой диаграммы кооперации щёлкните правой кнопкой мыши на прецеденте в браузере, в открывшемся меню выберите пункт New → Collaboration Diagram(Создать → Диаграмма кооперации), после определения имени диаграммы дважды щёлкните мышью на ней в браузере.
При этом появляется новое окно с чистым рабочим листом диаграммы и специальная панель инструментов, содержащая кнопки с изображением графических элементов для разработки диаграммы кооперации (табл.4.2).
Таблица 4.2
Значок |
Подсказка |
Назначение кнопки |
|
Selection Tool |
Переключает в режим выделения элементов на диаграмме |
|
Text Box |
Добавляет на диаграмму текстовую область |
|
Note |
Добавляет на диаграмму примечание |
|
Anchor Note to Item |
Добавляет связь примечания с элементом диаграммы |
|
Object |
Добавляет на диаграмму объект |
|
Class Instance |
Добавляет экземпляр класса (абстрактные реализации класса) |
|
Object Link |
Добавляет на диаграмму связь |
|
Link To Self |
Добавляет на диаграмму рефлексивную связь |
|
Link Message |
Добавляет на связь диаграммы прямое сообщение |
|
Reverse Link Message |
Добавляет на связь диаграммы обратное сообщение |
|
Data Token |
Добавляет на связь элемент прямого потока данных |
|
Reverse Data Token |
Добавляет на связь элемент обратного потока данных |
Добавление объекта на диаграмму кооперации и редактирование его свойств выполняется так же, как и для диаграммы последовательности. Перед тем как поместить сообщение на диаграмму кооперации, необходимо установить путь коммуникации между объектами. Этот путь называется связью (link) и создаётся с помощью кнопкиObject Link(Связь объекта) панели инструментов. После создания связи можно поместить сообщение между объектами.
Для добавления связи между объектами нужно с помощью левой кнопки мыши нажать кнопку с изображением связи на специальной панели инструментов, отпустить левую кнопку мыши, щёлкнуть левой кнопкой мыши на изображении 1‑го объекта на диаграмме и отпустить её на изображении 2‑го объекта. Можно задать имя связи с помощью окна спецификации свойств данной связи.
Кроме имени связи можно также задать: имя ассоциации, видимость связанных объектов и наличие общих ролей. Более важной является вкладка Messages(сообщения) для спецификации сообщений между связанными объектами. Добавить сообщения можно несколькими способами. Стандартный способ заключается в использовании кнопки со значком сообщения на специальной панели инструментов. Более удобным представляется способ добавления сообщений с помощью окна свойств связей. Для этого двойным щелчком на линии связи вызывается окно её свойств и раскрывается вкладкаMessages(сообщения). После этого следует выполнить операцию контекстного менюInsert To(Вставить в направлении), в результате чего появляется вложенный список с предложением выбрать одну из операций целевого класса для спецификации имени сообщения.
Спецификация сообщений диаграммы кооперации выполняется тем же способом, что и для диаграммы последовательности.
Типовой пример
Для модели банкомата окончательный вид диаграммы кооперации для типичного хода событий прецедента ‘Снятие наличных по кредитной карточке’ приведён на рис.4.2.
Прежде чем приступить к генерации кода, требуется соотнести сообщения диаграмм взаимодействия с операциями классов. Для этого необходимо:
1. Проверить соотнесение объекта, получающего сообщения, с классом.
2. Щёлкнуть правой кнопкой мыши на сообщении диаграммы.
3. Выбрать операцию из появившегося списка.
Для уничтожения соотнесения сообщения с операцией дважды щёлкните на сообщение диаграммы, из поля Nameудалите имя операции и введите новое имя сообщения.
Если нужно создать новую операцию для сообщения:
1. Проверить соотнесение объекта, получающего сообщения, с классом.
2. Щёлкнуть правой кнопкой мыши на сообщении диаграммы и выбрать пункт New operation(Новая операция).
3. Ввести имя и детали новой операции, нажать копку OK.
4. Щёлкнуть на сообщении правой кнопкой мыши, в появившемся списке выбрать новую операцию.
Рис.4.2. Окончательный вариант диаграммы кооперации для типичного хода событий прецедента ‘Снятие наличных по кредитной карточке’
Если вы хотите убедиться, что каждое сообщение соотнесено с операцией, то выберите в меню модели пункт Report → Show Unresolved Messages(Отчёт → Показать свободные сообщения).