№ работы
|
Наименование
работ
|
Кол-во часов
|
Срок сдачи
|
|
Лабораторно-практическая
работа №1. "Создание
диаграммы вариантов использования и действующих лиц"
|
2
|
1 неделя
семестра
|
|
Лабораторно-практическая
работа №2. "Создание
диаграммы Последовательности"
|
2
|
2 неделя
семестра
|
|
Лабораторно-практическая
работа №3. "Создание
Кооперативной диаграммы"
|
2
|
3 неделя
семестра
|
|
Лабораторно-практическая
работа №4 "Диаграмма
Состояний для класса Заказ"
|
2
|
4 неделя
семестра
|
|
Лабораторно-практическая
работа №5. "Построение
диаграммы Активности для варианта использования "Выполнить поставку
Заказа""
|
2
|
5 неделя
семестра
|
|
Лабораторно-практическая
работа №6. "Пакеты
и классы"
|
2
|
6 неделя
семестра
|
|
Лабораторно-практическая
работа №7. "Уточнение
методов и свойств классов."
|
2
|
7 неделя
семестра
|
|
Лабораторно-практическая
работа №8 "Описание
связей между классами."
|
2
|
8 неделя
семестра
|
|
Лабораторно-практическая
работа №9. "Исключение
кириллизованного текста в информации классов"
|
2
|
9 недели
семестра
|
|
Лабораторно-практическая
работа №10 "Построение
диаграммы компонентов"
|
2
|
10 неделя
семестра
|
|
Лабораторно-практическая
работа №11 "Кодогенерация
проекта в Delphi"
|
2
|
11 неделя
семестра
|
|
Лабораторно-практическая
работа №12 "Анализ
Delphi проекта, добавление визуальных объектов, реинжиниринг в Rose"
|
2
|
12 неделя
семестра
|
|
Лабораторно-практическая
работа №13 "Кодогенерация
модельных элементов"
|
3
|
13-14 недели
семестра
|
|
Лабораторно-практическая
работа №14 "Построение
диаграммы размещения"
|
3
|
14-15 недели
семестра
|
|
Всего:
|
30
|
|
Лабораторная
работа 1. Создание диаграммы вариантов использования и действующих лиц
Результатом проделанной работы должна стать диаграмма,
показанная на рис. 1.
Рис. 1 Диаграмма вариантов использования задачи о заказе
товара.
Этапы выполнения упражнения.
. Дважды щелкнув мышью на Главной диаграмме Вариантов
Использования (Main) в браузере, откройте ее.
. С помощью кнопки Use Case (Вариант использования) панели
инструментов поместите на диаграмму новый вариант использования. Назовите его
"Ввести новый заказ".
. Повторив этапы 2 и 3, поместите на диаграмму остальные
варианты использования:
Изменить существующий заказ
Напечатать инвентарную опись
Обновить инвентарную опись
Оформить заказ
Отклонить заказ
Выполнить поставку заказа
4. С помощью кнопки Actor (Действующее лицо) панели
инструментов поместите на диаграмму новое действующее лицо.
5. Назовите его "Продавец".
6. Повторив шаги 4 и 5, поместите на
диаграмму остальных действующих лиц:
Управляющий магазином
Клерк магазина
Бухгалтерская система
7. Создание абстрактного варианта
использования (не требующего дальнейшей декомпозиции).
Щелкните правой кнопкой мыши на варианте
использования "Отклонить заказ" на диаграмме.
В открывшемся меню выберите пункт Open
Specification (Открыть спецификацию).
Установите флажок Abstract (Абстрактный),
чтобы сделать этот вариант использования абстрактным.
Добавление ассоциаций
1. С помощью кнопки Unidirectional
Association (Однонаправленная ассоциация) панели инструменте нарисуйте
ассоциацию между действующим лицом Продавец и вариантом использования
"Ввести заказ".
. Повторив шаг 1, поместите на диаграмму
остальные ассоциации, согласно рис.1.
Добавление связи
расширения
С помощью кнопки Generalization
(Обобщение) панели инструментов нарисуйте связь между вариантом использования
"Отклонить заказ" и вариантом использования "Оформить
заказ". Стрелка должна быть направлена от первого варианта использования
ко второму. Связь расширения означает, что вариант использования "Отклонить
заказ" при необходимости дополняет функциональные возможности варианта
использования "Оформить заказ".
Щелкните правой кнопкой мыши на новой
связи между вариантами использования "Отклонить заказ" и
"Оформить заказ".
В открывшемся меню выберите пункт Open
Specification (Открыть спецификацию).
В раскрывающемся списке стереотипов
введите слово extends (расширение), затем нажмите ОК.
Надпись "extends" появится на
линии данной связи.
Добавление описаний к
вариантам использования
Выделите в браузере вариант использования
"Ввести новый заказ".
В окне документации введите следующее
описание: " Этот вариант использования дает клиенту возможность ввести
новый заказ в систему".
С помощью окна документации добавьте
описания ко всем остальным вариантам использования.
Добавление описаний к
действующему лицу
Выделите в браузере действующее лицо Продавец.
В окне документации введите следующее
описание: "Продавец - это служащий, старающийся продать товар".
С помощью окна документации добавьте
описания к остальным действующим лицам.
Лабораторная
работа 2. Создание диаграммы Последовательности
Согласовав основные бизнес процессы с Антоном, Павел
приступил к построению модели бизнес - процессов, что бы ответить на вопрос -
"как это должно делаться в системе". Для начала он выбрал наиболее
важный Вариант использования-"Ввод нового заказа" и построил для него
диаграммы взаимодействия.
Диаграммы взаимодействия
включают в себя два типа диаграмм - Последовательности и Кооперативную.
Этапы выполнения упражнения
Настройка программной среды
1. В меню модели выберите пункт Tools > - Options (Инструменты
> - Параметры).
2. Перейдите на вкладку Diagram (Диаграмма).
3. Установите флажки Sequence numbering, Collaboration numbering и
Focus of control.
4. Нажмите OK, чтобы выйти из окна параметров.
Создание диаграммы Последовательности
1. Щелкните правой кнопкой мыши на Логическом представлении браузера.
2. В открывшемся меню выберите пункт New > Sequence Diagram
(Создать >Диаграмма Последовательности).
3. Назовите новую диаграмму: Ввод заказа.
4. Дважды щелкнув на этой диаграмме, откройте ее.
Добавление на диаграмму действующего лица и
объектов
1. Перетащите действующее лицо Продавец из браузера на
диаграмму.
2. Нажмите кнопку Object (Объект) панели инструментов.
3. Щелкните мышью в верхней части диаграммы, чтобы поместить туда
новый объект.
4. Назовите объект Выбор варианта заказа.
5. Повторив шаги 3 и 4, поместите на диаграмму объекты:
Форма деталей заказа
Заказ №1234
Добавление сообщений на диаграмму
1. На панели инструментов нажмите кнопку Object Message (Сообщение
объекта).
2. Проведите мышью от линии жизни действующего лица Продавец к
линии жизни объекта Выбор варианта заказа.
3. Выделив сообщение, введите его имя - Создать новый заказ.
4. Повторив шаги 2 и 3, поместите на диаграмму сообщения:
Открыть форму - между Выбор Варианта Заказа и Форма
деталей Заказа
Ввести номер заказа, заказчика и число
заказываемых предметов - между Продавец и Форма Деталей Заказа
Сохранить заказ - между Продавец и Форма
Деталей Заказа
Создать пустой заказ - между Форма Деталей
Заказа и Заказ N1234
Ввести номер заказа, заказчика и число
заказываемых предметов - между Форма Деталей Заказа и Заказ N1234
Сохранить заказ - между Форма Деталей Заказа и Заказ
N1234
Завершен первый этап работы. Готовая диаграмма
Последовательности представлена на рис.2.
Рис.2. Диаграмма последовательности без управляющих
элементов.
Теперь нужно позаботиться об управляющих объектах и о
взаимодействии с базой данных. Как видно из диаграммы, объект Форма Деталей
Заказа имеет множество ответственностей, с которыми лучше всего мог бы
справиться управляющий объект. Кроме того, новый заказ должен сохранять себя в
базе данных сам. Вероятно, эту обязанность лучше было бы переложить на другой
объект.
Добавление на диаграмму дополнительных объектов
1. Нажмите кнопку Object панели инструментов.
2. Щелкните мышью между объектами Форма Деталей Заказа и Заказ
№1234, чтобы поместить туда новый объект.
3. Введите имя объекта - Управляющий заказами.
4. Нажмите кнопку Object панели инструментов.
5. Новый объект расположите справа от Заказ №1234.
. Введите его имя - Управляющий транзакциями.
Назначение ответственностей объектам
1. Выделите сообщение 5: Создать пустой заказ.
2. Нажав комбинацию клавиш CTRL+D, удалите это сообщение.
3. Повторите шаги 1 и 2 для удаления двух последних сообщений:
Вести номер заказа, заказчика и число
заказываемых предметов
Сохранить заказ
4. Нажмите кнопку Object Message панели инструментов.
5. Поместите на диаграмму новое сообщение, расположив его под
сообщением 4 между Форма деталей заказа и Управляющий заказами.
6. Назовите его Сохранить заказ.
7. Повторите шаги 4 - 6, добавив сообщения с шестого по девятое и
назвав их:
Создать новый заказ - между Управляющий
заказами и Заказ №1234
Ввести номер заказа, заказчика и число заказываемых
предметов
- между Управляющий заказами и Заказ №1234
Сохранить заказ - между Управляющий заказами и Управляющий
транзакциями
Информация о заказе - между Управляющий
транзакциями и Заказ №1234
8. На панели инструментов нажмите кнопку Message to Self (Сообщение
себе).
9. Щелкните на линии жизни объекта Управляющий транзакциями
ниже сообщения 9, добавив туда рефлексивное сообщение.
10. Назовите его Сохранить информацию о заказе в базе данных.
Соотнесение объектов с классами
1. Щелкните правой кнопкой мыши на объекте Выбор варианта заказа.
2. В открывшемся меню выберите пункт Open Specification (Открыть
спецификацию).
В раскрывающемся списке классов выберите пункт <New>
(Создать). Появится окно спецификации классов.
4. В поле Name введите Выбор заказа.
5. Щелкните на кнопке ОК. Вы вернетесь в окно спецификации объекта.
6. В списке классов выберите класс Выбор Заказа.
7. Щелкните на кнопке ОК, чтобы вернуться к диаграмме. Теперь объект
называется Выбор варианта заказа: Выбор Заказа
. Для соотнесения остальных объектов с классами повторите шаги с 1
по 7:
Класс Детали заказа соотнесите с объектом Форма
деталей заказа
Класс Упр_заказами - с объектом Управляющий
заказами
Класс Заказ - с объектом Заказ N 1234
Класс Упр_ транзакциями - с объектом Управляющий
транзакциями
Соотнесение сообщений с операциями
1. Щелкните правой кнопкой мыши на сообщении 1: Создать новый
заказ.
2. В открывшемся меню выберите пункт <new operation> (создать
операцию). Появится окно спецификации операции.
3. В поле Name введите имя операции - Создать.
4. Нажмите на кнопку ОК, чтобы закрыть окно спецификации операции и
вернуться к диаграмме.
5. Еще раз щелкните правой кнопкой мыши на сообщении 1.
. В открывшемся меню выберите новую операцию Создать ().
7. Повторите шаги с 1 по 6, чтобы соотнести с операциями все
остальные сообщения:
Сообщение 2: Открыть форму соотнесите с операцией Открыть
()
Сообщение 3: Ввести номер заказа, заказчика и число
заказываемых предметов - с операцией Ввести номер заказа, заказчика и
число заказываемых предметов ()
Сообщение 4: Сохранить заказ - с операцией Сохранить
заказ ()
Сообщение 5: Сохранить заказ - с операцией Сохранить
заказ ()
Сообщение 6: Создать пустой заказ - с операцией Создать
пустой заказ ()
Сообщение 7: Ввести номер заказа, заказчика и число
заказоваемых предметов - с одноименной операцией.
Сообщение 8 Сохранить заказ - с операцией Сохранить
заказ ()
Сообщение 9 Информация о заказе - с одноименной
операцией
Сообщение 10 Сохранить информацию о заказе с
одноименной операцией.
Диаграмма должна выглядеть, как на рис.3.
Рис.3. Окончательный вид диаграмы последовательности
Лабораторная
работа 3. Создание Кооперативной диаграммы
Конечный вид диаграммы представлен на рис.4.
Рис.4. Окончательный вид кооперативной диаграммы.
. Щелкните правой кнопкой мыши на Логическом представлении в
браузере.
2. В открывшемся меню выберите пункт New > Collaboration Diagram
(Создать > Кооперативная диаграмма).
3. Назовите эту диаграмму Ввод заказа.
4. Дважды щелкнув мышью на диаграмме, откройте ее.
Добавление действующего лица и объектов на диаграмму
1. Перетащите действующее лицо Продавец из браузера на
диаграмму.
2. Нажмите кнопку Object (Объект) панели инструментов.
3. Щелкните мышью где-нибудь внутри диаграммы, чтобы поместить туда
новый объект.
4. Назовите объект Выбор варианта заказа.
5. Повторив шаги 3 и 4, поместите на диаграмму объекты:
Форма деталей заказа
Заказ №1234
Добавление сообщений на диаграмму
1. На панели инструментов нажмите кнопку Object Link (Связь объекта).
2. Проведите мышью от действующего лица Продавец к объекту Выбор
варианта заказа.
3. Повторите шаги 1 и 2, соединив связями следующие объекты:
Действующее лицо Продавец и объект Форма деталей
Заказа
Объект Форма деталей Заказа и объект Выбор Варианта
Заказа
Объект Форма деталей Заказа объект Заказ N1234
. На панели инструментов нажмите кнопку Link Message (Сообщение
связи).
5. Щелкните мышью на связи между Продавец и Форма деталей
Заказа.
6. Выделив сообщение, введите его имя - Создать новый заказ;
7. Повторив шаги с 4 по 6, поместите на диаграмму сообщения:
Открыть форму - между Выбор Варианта Заказа и Форма
Деталей Заказа.
Ввести номер заказа, заказчика и число
заказываемых предметов - между Продавец и Форма Деталей Заказа
Сохранить заказ - между Продавец и Форма
деталей Заказа
Создать пустой заказ - между Форма деталей
Заказа и Заказ №1234
Ввести номер заказа, заказчика и число заказываемых предметов
- между Форма деталей Заказа и Заказ №1234
Сохранить заказ - между Форма деталей Заказа и Заказ
№1234
Теперь нужно поместить на диаграмму дополнительные элементы,
а также рассмотреть ответственности объектов.
Добавление на диаграмму дополнительных объектов
1. Нажмите кнопку Object панели инструментов.
2. Щелкните мышью где-нибудь на диаграмме, чтобы поместить туда новый
объект.
3. Введите имя объекта - Управляющий заказами.
4. На панели инструментов нажмите кнопку Object.
5. Поместите на диаграмму еще один объект.
6. Введите его имя - Управляющий транзакциями.
Назначение ответственностей объектам
1. Выделите сообщение 5: Создать пустой заказ. Выделяйте
слова, а не стрелку.
2. Нажав комбинацию клавиш CTRL+D, удалите это сообщение.
3. Повторите шаги 1 и 2 для удаления сообщений 6 и 7:
Ввести номер заказа, заказчика и число
заказываемых предметов
Сохранить заказ
. Выделите связь между объектами Форма деталей Заказа и Заказ
№1234
. Нажав комбинацию клавиш CTRL+D, удалите эту связь
6. На панели инструментов нажмите кнопку Object Link
(Связь объекта).
7. Нарисуйте связь между Форма деталей Заказа и Управляющий
Заказами.
8. На панели инструментов нажмите кнопку Object Link (Связь объекта).
9. Нарисуйте связь между Управляющий Заказами и Заказ №1234
10. На панели инструментов нажмите кнопку Object Link (Связь объекта).
11. Нарисуйте связь между Заказ №1234 и Управляющий
Транзакцией.
12. На панели инструментов нажмите кнопку Object Link (Связь объекта).
13. Нарисуйте связь между Управляющий Заказами и Управляющий
Транзакцией.
14. На панели инструментов нажмите кнопку Link Message (Сообщение
связи).
15. Щелкните мышью на связи между объектами Форма деталей Заказа
и Управляющий Заказами, чтобы ввести новое сообщение.
16. Назовите это сообщение Сохранить заказ.
17. Повторите шаги 14 - 16, добавив сообщения с шестого по девятое, и
назвав их:
Создать новый заказ - между Управляющий
Заказами и Заказ №1234
Ввести номер заказа, заказчика и число
заказываемых предметов - между Управляющий Заказами и Заказ №1234
Сохранить заказ - между Управляющий Заказами и Управляющий
Транзакцией
Информация о заказе - между Управляющий
Транзакцией и Заказ №1234
18. На панели инструментов нажмите кнопку Link to Self (Связь с
собой).
19. Щелкнув на объекте Управляющий Транзакцией, добавьте к нему
рефлексивное сообщение.
20. На панели инструментов нажмите кнопку Link Message (Сообщение
связи).
21. Щелкните мышью на рефлексивной связи Управляющий Транзакциями,
чтобы ввести туда сообщение.
22. Назовите новое Сохранить информацию о заказе в базе данных.
Соотнесение объектов с классами (если классы были
созданы при разработке описанной выше диаграммы Последовательности)
1. Найдите в браузере класс Выбор Заказа.
2. Перетащите его на объект Выбор варианта заказа на
диаграмме.
3. Повторите шаги 1 и 2 соотнеся остальные объекты и соответствующие
им классы:
Класс заказ деталей соотнесите с объектом Форма
деталей заказа
Класс Упр_заказами - с объектом Управляющий
Заказами
Класс Заказ - с объектом Заказ №1234
Класс Упр_транзакциями - с объектом Управляющий
транзакциями
Соотнесение объектов с классами (если вы не создавали
описанную выше диаграмму Последовательности)
1. Щелкните правой кнопкой мыши на объекте Форма деталей Заказа.
2. В открывшемся меню выберите пункт Open Specification (Открыть
спецификацию).
3. В раскрывающемся списке классов выберите пункт <New>
(Создать). Появится окно спецификации классов.
4. В поле имени введите Выбор заказа.
5. Щелкните на кнопке ОК. Вы вернетесь в окно спецификации объекта.
6. В списке классов выберите класс Выбор заказа.
7. Щелкните на кнопке OK, чтобы вернуться к диаграмме. Теперь объект
называется Выбор варианта заказа: Выбор Заказа
8. Для соотнесения остальных объектов с классами повторите шаги с 1
по 7:
Класс Детали заказа соотнесите с объектом Форма
деталей заказа
Класс Упр_заказами - с объектом Управляющий
заказами
Класс Заказ - с объектом Заказ N 1234
Класс Упр_ транзакциями - с объектом Управляющий
транзакциями
Соотнесение сообщений с операциями (если операции
были созданы при разработке описанной выше диаграммы Последовательности)
1. Щелкните правой кнопкой мыши на сообщении 1: Создать новый заказ.
2. В открывшемся меню выберите пункт Open Specification (Открыть
спецификацию).
3. В раскрывающемся списке имен укажите имя операции - Создать ().
4. Нажмите на кнопку ОК.
5. Повторите шаги 1-4 для соотнесения с операциями остальных
сообщений:
Сообщение 2: Открыть форму соотнесите с операцией Открыть
()
Сообщение 3: Ввести номер заказа, заказчика и число
заказываемых предметов - с операцией Ввести номер заказа, заказчика и
число заказываемых предметов ()
Сообщение 4: Сохранить заказ - с операцией Сохранить
заказ ()
Сообщение 5: Сохранить заказ - с операцией Сохранить
заказ ()
Сообщение 6: Создать пустой заказ - с операцией
Создать пустой заказ ()
Сообщение 7: Ввести номер заказа, заказчика и число
заказоваемых предметов - с одноименной операцией.
Сообщение 8 Сохранить заказ - с операцией Сохранить заказ ()
Сообщение 9 Информация о заказе - с одноименной
операцией
Сообщение 10 Сохранить информацию о заказе с
одноименной операцией
Соотнесение сообщений с операциями (если вы не
создавали описанную выше диаграмму Последовательности)
1. Щелкните правой кнопкой мыши на сообщении 1: Создать новый
заказ ().
2. В открывшемся меню выберите пункт <new operation> (создать
операцию). Появится окно спецификации операции.
3. В поле имени введите имя операции - Создать ().
5. Еще раз щелкните правой кнопкой мыши на сообщении 1.
. В открывшемся меню выберите пункт Open Specification (Открыть
спецификацию).
7. В раскрывающемся списке Name (Имя) укажите имя новой операции.
8. Нажмите на кнопку ОК.
9. Повторите шаги 1-8, чтобы создать новые операции и соотнести с
ними остальные сообщения:
Сообщение 2: Открыть форму соотнесите с операцией Открыть
()
Сообщение 3: Ввести номер заказа, заказчика и число
заказываемых предметов - с операцией Ввести номер заказа, заказчика и
число заказываемых предметов ()
Сообщение 4: Сохранить заказ - с операцией Сохранить
заказ ()
Сообщение 5: Сохранить заказ - с операцией Сохранить
заказ ()
Сообщение 6: Создать пустой заказ - с операцией Создать
пустой заказ ()
Сообщение 7: Ввести номер заказа, заказчика и число
заказоваемых предметов - с одноименной операцией.
Сообщение 8 Сохранить заказ - с операцией Сохранить заказ
()
Сообщение 9 Информация о заказе - с одноименной
операцией
Сообщение 10 Сохранить информацию о заказе с
одноименной операцией
Ваша диаграмма должна выглядеть, как показано на рис.4
Лабораторная
работа 4. Диаграмма Состояний для класса Заказ
Постройте диаграмму Состояний для класса Заказ,
показанную на рис.5.
Рис 5. Диаграмма состояний для класса Заказ
Этапы выполнения упражнения
Создание диаграммы
. Найдите в браузере класс Заказ.
2. Щелкните на классе правой кнопкой мыши и в
открывшемся меню укажите пункт New > Statechart Diagram (Создать диаграмму
состояний).
Добавление начального и конечного состояний
1. Нажмите кнопку Start State (Начальное состояние)
панели инструментов.
2. Поместите это состояние на диаграмму.
3. Нажмите кнопку End State (Конечное состояние)
панели инструментов.
4. Поместите это состояние на диаграмму.
Добавление суперсостояния
. Нажмите кнопку State (Состояние) панели
инструментов.
2. Поместите это состояние на диаграмму.
Добавление оставшихся состояний
. На панели инструментов нажмите кнопку State (Состояние).
2. Поместите состояние на диаграмму.
3. Назовите состояние Отменен.
4. На панели инструментов нажмите кнопку State
(Состояние).
5. Поместите состояние на диаграмму.
6. Назовите состояние Выполнен.
7. На панели инструментов нажмите кнопку State (Состояние).
8. Поместите состояние на диаграмму внутрь
суперсостояния.
9. Назовите состояние Инициализация.
10. На панели инструментов нажмите кнопку State
(Состояние).
11. Поместите состояние на диаграмму внутрь
суперсостояния.
12. Назовите состояние Выполнение заказа
приостановлено.
Описание состояний
1. Дважды щелкните мышью на состоянии Инициализация.
2. Перейдите на вкладку Detail (Подробно).
3. Щелкните правой кнопкой мыши в окне
Actions (Действия).
4. В открывшемся меню выберите пункт Insert
(Вставить).
5. Дважды щелкните мышью на новом действии.
6. Назовите его Сохранить дату заказа.
7. Убедитесь, что в окне When (Когда) указан пункт
On Entry (На входе).
8. Повторив шаги 3-7, добавьте следующие действия:
Собрать клиентскую информацию, в окне When укажите DO
(Выполнять между входом и выходом)
Добавить к заказу новые позиции, укажите DO
9. Нажмите два раза на ОК, чтобы закрыть
спецификацию.
10. Дважды щелкните мышью на состоянии Отменен.
11. Повторив шаги 2-7, добавьте действия:
Сохранить дату отмены, укажите On
Exit (На выходе)
12. Нажмите два раза на ОК, чтобы закрыть
спецификацию.
13. Дважды щелкните мышью на состоянии Выполнен.
14. Повторив шаги 2-7, добавьте действие:
Выписать счет, укажите On Exit
15. Нажмите два раза на ОК, чтобы закрыть спецификацию.
Добавление переходов
. Нажмите кнопку Transition (Переход) панели
инструментов.
2. Щелкните мышью на начальном состоянии.
3. Проведите линию перехода к состоянию Инициализация.
4. Повторив шаги с первого по третий, создайте
следующие переходы:
От состояния Инициализация к состоянию Выполнение
заказа приостановлено
От состояния Выполнение заказа приостановлено к
состоянию Выполнен
От суперсостояния к состоянию Отменен
От состояния Отменен к конечному
состоянию
От состояния Выполнен к конечному
состоянию
5. На панели инструментов нажмите кнопку Transition
to Self (Переход к себе).
6. Щелкните мышью на состоянии Выполнение заказа
приостановлено
Описание переходов
1. Дважды щелкнув мышью на переходе от
состояния Инициализация к состоянию Выполнение заказа приостановлено,
откройте окно спецификации перехода.
2. В поле Event (Событие) введите фразу Выполнить
заказ.
3. Щелкнув на кнопке ОК, закройте окно спецификации.
4. Повторив шаги с первого по третий, добавьте
событие Отменить заказ к переходу между суперсостоянием и
состоянием Отменен.
5. Дважды щелкнув мышью на переходе от состояния Выполнение
заказа приостановлено к состоянию Выполнен, откройте окно его
спецификации.
6. В поле Event (Событие) введите фразу Добавить
к заказу новую позицию.
7. Перейдите на вкладку Detail (Подробно).
8. В поле Guard Condition (Сторожевое Условие)
введите Не осталось незаполненных позиций.
9. Щелкнув на кнопке ОК, закройте окно спецификации.
10. Дважды щелкните мышью на рефлексивном переходе
(Transition to Self) состояния Выполнение заказа приостановлено.
11. В поле Event (Событие) введите фразу Добавить
к заказу новую позицию.
12. Перейдите на вкладку Detail (Подробно).
13. В поле Guard Condition (Сторожевое Условие)
введите Остаются незаполненные позиции.
14. Щелкнув на кнопке ОК, закройте окно спецификации.
Лабораторная
работа 5. Построение диаграммы Активности для варианта использования
"Выполнить поставку Заказа"
Побеседовав с Павлом, Антон понял, что необходимо согласовать
логику реализации еще одного варианта использования "Выполнить поставку
заказа". Стало ясно, что здесь возможны несколько альтернативных потоков
управления. Для таких ситуаций более удобно использовать не диаграммы
взаимодействия, приспособленные для единственного потока, а диаграмму активности.
Описание варианта использования.
При оформлении заказа проверяют каждую содержащуюся в нем
позицию, чтобы убедиться в наличии соответствующих товаров на складе. После
этого выписываются товары для реализации заказа. Во время выполнения этих
процедур одновременно проверяется прохождение платежа. Если платеж прошел, и
товары имеются на складе, то осуществляется их поставка. Если платеж прошел, но
товары на складе отсутствуют, то заказ ставится в ожидание. Если платеж не
прошел, то заказ аннулируется.
Этапы выполнения упражнения.
1. Найдите в браузере вариант использования "Выполнить
поставку заказа"
. Щелкните на классе правой кнопкой мыши и в
открывшемся меню укажите пункт New > Activity Diagram (Создать диаграмму
активности).
. Назвите диаграмму "Выполнить поставку" и откройте
ее двукратным щелчком мыши
. На панели инструментов щелкните мышкой на элементе
Swimline, затем на поле диаграммы. На диаграмме появится разделительная линия
("водная дорожка").
. Установите курсор на заголовок NewSwinlane и нажмите правую
клавишу мыши. В выпадающем списке нажмите Select in brousere. В браузере
выделится этот объект. Нажав правую клавишу мыши в выпадающем списке выберете
Open Specefication и откройте спецификацию. Измените поле Name на Клерк. Выберите
в поле Class Клерк в магазине.
. Выполните заново пункты 5-6 и присвойте полю Name Система,
Class - Бухгалтерская система.
7. Найдите в браузере сплошной черный кружок (начальное
состояние). Перенесите его на дорожку Клерк.
8. Выберете из панели инструментов объект Activity и помемтите
его на диаграмму в "дорожку" Клерк. Измените имя объекта на ”Получить
заказ”.
. Повторите предыдущий этап, создайте на "дорожке" Клерк
4 новых Activity и присвойте им имена Проверить позицию заказа, закрепить
позицию за заказом, Поставить заказ в ожидание, Скомплектовать заказ
10. Поместите на "дорожку" 2 новых объекта End
State (конечное состояние). Одному из них измените поле Name на "Выполнить
поставку"
. На дорожку Система поместите новый объект Activity и
присвойте полю Name "Проверить платеж”. На эту же дорожку поместите
новый объект End State и измените в его спецификации поле Name на "Отменить
заказ".
. Поместить на "дорожку" Клерк 2 объекта Horisontal
Sinhronization (горизонтальная синхронизация). Присвойте полю Name спецификации
одного объекта "1", другого - "2".
. Поместить на "дорожку" Клерк объект
Dicision (выбор). Через спецификацию присвойте полю Name "Позиция
имеется?".
. Поместить на "дорожку" Система объект
Dicision. Присвойте полю Name "Деньги поступили?".
. Щелкните мышкой на панели инструментов объекте - стрелке
State Transition (состояние перехода). Затем щелкните мышкой на диаграмме
объекта начальное состояние. Удерживая кнопку мыши перенесите курсор на
активность ”Получить заказ" и лишь затем отпустить курсор. В
результате два объекта будут соединены стрелкой.
. Выполните этап 14, соединив стрелкой объект Активность
"Получить заказ" с объектом Horisontal Sinhronization 1.
. Соедините этими же стрелками объекты 1 и "Проверить
платеж", 1 и "Проверить позицию заказа", "Проверить
заказ" и "Деньги подступили?", "Деньги поступили?" и
"Отменить заказ", "Проверить позицию заказа" и
"Позиция имеется", "Позиция имеется" и "Закрепить
позицию за заказом", "Деньги получены?" и 2, "Закрепить
позицию за заказом" и 2, "Позиция имеется?" и "Поставить
заказ в ожидание", 2 и "Скомплектовать заказ",
"Скомплектовать заказ" и "Выполнить поставку",
"Поставить заказ в ожидание" и объект Конечное состояние (без имени).
. Присвоим некоторым стрелкам наименование полю Event
(условие перехода). Для этого, установим курсор на стрелке, соединяющей
"Деньги получены?" и "Отменить заказ". Двукратным щелчком
мыши откроем окно спецификации. В поле Event введем "Нет".
. Выполним пункт 18 для стрелки, соединяющей "Деньги
получены?" и 2 и присвойте Event "Да". Аналогично для стрелки
соединяющей "Позиция имеется?" и "Закрепить позицию за
заказом" присвоить Event "Да". Стрелке, соединяющей
"Позиция имеется?" и "Поставить заказ в ожидание" -
"Нет".
. Добавим элементарные действия (Actions) к активности
"Проверить позицию заказа". Установим курсор на "Проверить
позицию заказа" и двукратным щелчком мыши откроем окно спецификации.
Откроем закладку Actions. Установим курсор на свободное поле и нажмем правую
клавиши мыши. В выпадающем меню нажмем Insert. В появившейся заставке в поле
When выберем Entry (на входе в активность), В поле Name введем
"Просмотреть спецификацию к заказу". Нажать Ok. Вновь нажмем курсор
правой мыши и введем новое действие. Полю When прсвоим Do (промежуток между
входом и выходом), а полю Name "Найти новую позицию". При вводе
третьей активности полю When присвойте Exit (выход), а полю Name "Передать
результаты поиска".
. Путем перемещения объектов (установить курсор мыши - нажать
- тащить - отпустить) привести диаграмму к виду, показанному на рис.6.
Рис.6 Диаграмма активности для варианта использования
"Выполнить поставку заказа"
Лабораторная
работа 6. Пакеты и классы
В этом упражнении необходимо сгруппировать в
пакеты классы, созданные при выполнении предыдущих работ. Затем нужно будет
построить несколько диаграмм Классов и показать на них классы и пакеты системы.
Создание диаграммы Классов
Объедините обнаруженные классы в пакеты. Создайте диаграмму
Классов для отображения пакетов, диаграммы Классов, для представления классов в
каждом пакете и диаграмму Классов для представления всех классов варианта
использования "Ввести новый заказ".
Этапы
выполнения упражнения
Создание
пакетов
1. Щелкните правой кнопкой мыши на Логическом представлении браузера.
2. В открывшемся меню выберите пункт New > Package (Создать >Пакет).
3. Назовите новый пакет Сущности.
4. Повторив шаги 1-3, создайте пакеты Границы и Управление.
Создание Главной диаграммы Классов
1. Дважды щелкнув мышью на Главной диаграмме Классов, находящейся под
Логическим представлением браузера, откройте ее.
2. Перетащите пакет Сущности из браузера на диаграмму.
3. Перетащите пакеты Границы и Управление из браузера
на диаграмму.
Главная диаграмма Классов должна выглядеть, как показано на
рис.7
Рис.7 Главная диаграмма классов в логическом представлении
браузера.
Создание диаграммы Классов для сценария
"Ввести новый заказ" с отображением всех классов
1. Щелкните правой кнопкой мыши на Логическом представлении браузера.
2. В открывшемся меню выберите пункт New > Class Diagram (Создать
> Диаграмма Классов).
3. Назовите новую диаграмму Классов: Ввод нового заказа.
4. Дважды щелкнув мышью на этой диаграмме в браузере, откройте ее.
5. Перетащите из браузера все классы (Выбор_заказа, Заказ_деталей,
упр_заказами, Заказ, Упр_транзакциями.
Объединение классов в пакеты
1. В браузере перетащите класс выбор_заказа на пакет Границы.
2. Перетащите класс заказ_деталей на пакет Границы.
3. Перетащите классы Упр_заказами и Упр-транзакциями на
пакет Управление.
4. Перетащите класс Заказ на пакет Сущности.
Классы и пакеты в браузере показаны на рис.9
Рис.8 Представление пакетов и классов
Добавление диаграмм Классов к каждому пакету
1. В браузере щелкните правой кнопкой мыши на пакете Границы.
2. В открывшемся меню выберите пункт New > Class Diagram (Создать
> Диаграмма Классов).
3. Введите имя новой диаграммы - Main (Главная).
4. Дважды щелкнув мышью на этой диаграмме, откройте ее.
5. Перетащите на нее из браузера классы выбор_заказа и заказ_деталей.
6. Закройте диаграмму.
В браузере щелкните правой кнопкой мыши на пакете Сущности.
8. В открывшемся меню выберите пункт New > Class Diagram
(Создать > Диаграмма Классов).
. Введите имя новой диаграммы - Main (Главная).
. Дважды щелкнув мышью на этой диаграмме, откройте ее.
. Перетащите на нее из браузера класс Заказ.
. Закройте диаграмму
. В браузере щелкните правой кнопкой мыши на пакете Управление
. В открывшемся меню выберите пункт New > Class Diagram
(Создать > Диаграмма Классов).
. Введите имя новой диаграммы - Main (Главная).
. Дважды щелкнув мышью на этой диаграмме, откройте ее.
. Перетащите на нее из браузера классы Упр_заказами и Упр_транзакциями
. Закройте диаграмму
Лабораторная
работа 7. Уточнение методов и свойств классов
В этом упражнении к описаниям операций будут добавлены
детали, включая параметры и типы возвращаемых значений, и определены атрибуты
классов
Постановка проблемы
Для определения атрибутов классов был
проанализирован поток событий. В результате к классу Заказ диаграммы
Классов были добавлены атрибуты Номер заказа и Имя клиента. Так
как в одном заказе можно указать большое количество товаров и у каждого из них
имеются свои собственные данные и поведение, было решено моделировать товары
как самостоятельные классы, а не как атрибуты класса Заказ.
Добавление атрибутов и операций
Добавим атрибуты и операции к классам диаграммы Классов
"Ввод нового заказа". При этом используем специфические для языка
особенности. Установим параметры так, чтобы показывать все атрибуты, все
операции и их сигнатуры. Применим нотацию UML.
Этапы выполнения упражнения
Настройка
1. В меню модели выберите пункт Тооls > Options
(Инструменты >Параметры).
2. Перейдите на вкладку Diagram.
3. Убедитесь, что флажок Show visibility (Показать
видимость) установлен.
4. Убедитесь, что флажок Show stereotyps (Показать
стереотипы) установлен.
5. Убедитесь, что флажок Show operation signatures
(Показать сигнатуры операций) установлен.
. Убедитесь, что флажки Show all attributes (Показать все
атрибуты) и Show all operations (Показать вое операции) установлены.
. Убедитесь, что флажки Suppress attributes
(Подавить атрибуты) и Suppress operations (Подавить операции) сброшены.
8. Перейдите на вкладку Notation (Нотация).
9. Убедитесь, что флажок Visibility as icons
(Отображать пиктограммы) сброшен.
Добавление нового класса
. Найдите в браузере диаграмму Классов варианта
использования "Ввести новый заказ".
2. Дважды щелкнув мышью на диаграмме, откройте
ее.
3. Нажмите кнопку С1аss панели инструментов.
4. Щелкните мышью внутри диаграммы, чтобы поместить
туда новый класс.
5. Назовите его Позиц_заказа.
6. Назначьте этому классу стереотип Entity.
7. В браузере перетащите класс в пакет Сущности.
Добавление атрибутов
1. Щелкните правой кнопкой мыши на классе Заказ.
2. В открывшемся меню выберите пункт New Attribute
(Создать атрибут),
. Введите новый атрибут:
OrderNumber: Integer
. Нажмите клавишу Enter
. Введите следующий атрибут:
CustomerName: String.
. Повторив шаги 4 и 5, добавьте атрибуты:
OrderDate: Date
OrderFillDate: Date
Если тип атрибута не появляется в выпадающем списке, то
введите его от руки и он далее будет появляться.
7. Щелкните правой кнопкой мыши на классе Позиц_заказа.
8. В открывшемся меню выберите пункт New
Attribute (Создать атрибут).
9. Введите новый атрибут:
ItemID: Integer.
. Нажмите клавишу Enter.
11. Введите следующий атрибут:
ItemDescription: String.
Добавление операций к классу Позиц_заказа
1. Щелкните правой кнопкой мыши на классе Позиц_заказа.
2. В открывшемся меню выберите пункт New
Opration (Создать операцию).
3. Введите новую операцию:
Создать ()
4. Нажмите клавишу Enter.
5. Введите следующую операцию:
Взять_информацию ()
6. Нажмите клавишу Enter.
7. Введите операцию:
Дать_информацию ()
Подробное
описание операций с помощью диаграммы Классов
1. Щелкнув мышью на классе Заказ, выделите
его.
2. Щелкните на этом классе еще раз, чтобы
переместить курсор внутрь.
3. Отредактируйте операцию Создать (), чтобы
она выглядела следующим образом:
Создать (): Воо1еаn
4. Отредактируйте операцию Взять_информацию:
Взять_информацию (OrderNum: Integer,
Customer: String, OrderDate: Date, FillDate: Date): Boolean
5. Отредактируйте операцию Дать_информацию;
Дать_информацию (): String
Подробное
описание операций с помощью браузера
1. Найдите в браузере класс Позиц_заказа.
2. Раскройте этот класс, щелкнув на значке
"+" рядом с ним. В браузере появятся атрибуты и операции класса.
3. Дважды щелкнув мышью на операции Дать_информацию
(), откройте окно ее спецификации:
4. В раскрывающемся списке Return class (Возвращаемый
класс) укажите String.
5. Щелкнув мышью на кнопке ОК, закройте окно
спецификации операции.
6. Дважды щелкните в браузере на операции Дать_информацию
() класса Позиц_заказа, чтобы открыть окно ее спецификации.
7. В раскрывающемся списке Return class укажите
Воо1еаn.
8. Перейдите на вкладку Detail (Подробно).
9. Щелкните правой кнопкой мыши в области
аргументов, чтобы добавить туда новый параметр:
10. В открывшемся меню выберите пункт Insert
(Вставить). Rose добавит аргумент под названием argname.
11. Щелкнув один раз на этом слове, выделите его и
измените имя аргумента на ID.
12. Щелкните на колонке Туре (Тип). В
раскрывающемся списке типов выберите Integer (Если этого либо иного
необходимого типа не будет - введите его вручную).
13. Щелкните на колонке Default (По
умолчанию), чтобы добавить значение аргумента по умолчанию. Введите число 0.
14. Нажав на кнопку ОК, закройте окно спецификации
операции.
15. Дважды щелкните на операции Создать () класса
Позиц_заказа, чтобы открыть окно ее спецификации.
16. В раскрывающемся списке Return class укажите
Воо1еаn.
17. Нажав на кнопку ОК, закройте окно спецификации
операции.
Подробное
описание операций
1. Используя браузер или диаграмму Классов, введите
следующие сигнатуры операций класса Заказ_деталей:
Открыть (): Boolean
Сохранить заказ (): Boolean
2. Используя браузер или диаграмму Классов, введите
сигнатуру операций класса Выбор_заказа:
Создать (): Воо1еаn
3. Используя браузер или диаграмму Классов, введите
сигнатуру операций класса Упр_заказами:
Сохранить заказ (OrderID: Integer): Воо1еаn
4. Используя браузер или диаграмму Классов, введите
сигнатуры операций класса Упр_транзакциями:
Сохранить заказ (OrderID: Integer): Boolean
Сохранить информацию (): Integer
Лабораторная работа 8. Описание связей между
классами
В этом упражнении определяются связи между классами,
участвующими в варианте использования "Ввести новый заказ".
Постановка
задачи
Чтобы найти связи, были просмотрены диаграммы
Последовательности. Все взаимодействующие там классы нуждались в определении
соответствующих связей на диаграммах Классов. После обнаружения связи были
добавлены на диаграммы классов.
Добавление связей
Добавим связи к классам, принимающим участие в варианте
использования "Ввести новый заказ".
Этапы выполнения упражнения
Настройка
1. Найдите в браузере диаграмму Классов "Ввод
нового заказа",
2. Дважды щелкнув на диаграмме, откройте ее.
3. Проверьте, имеется ли в панели инструментов
диаграммы кнопка Unidirectional Association (Однонаправленная ассоциация). Если
ее нет, продолжите настройку, выполнив шаги 4 и 5. Если есть, приступайте к
выполнению самого упражнения.
4. Щелкните правой кнопкой мыши на панели
инструментов диаграммы и в открывшемся меню выберите пункт Customize
(Настроить),
5. Добавьте на панель кнопку Creates A
Unidirectional Association (Создать однонаправленную ассоциацию).
Добавление
ассоциаций
1. Нажмите кнопку Unidirectional Association панели
инструментов.
2. Проведите ассоциацию от класса выбор_заказа
к классу заказ_деталей.
3. Повторите шаги 1 и 2, создав ассоциации:
От класса заказ_деталей к классу упр_заказами
От класса упр_заказами к классу Заказ
От класса упр_заказами к классу упр_транзакциями
От класса упр_транзакциями к классу Заказ
От класса упр_транзакциями к классу Позиц_заказа
От класса Заказ к классу Позиц_заказа
4. Щелкните правой кнопкой мыши на однонаправленной
ассоциации между классами выбор_заказа и заказ_деталей класса выбор_заказа.
5. В открывшемся меню выберите пункт Multiplicity
> Zero or One (Множественность > - Нуль или один),
6. Щелкните правой кнопкой мыши на другом конце
однонаправленной ассоциации.
7. В открывшемся меню выберите пункт Multiplicity
> Zero or One (Множественность > Нуль или один),
8. Повторите шаги 4-7, добавив на диаграмму значения
множественности для остальных ассоциаций, как показано на рис.10
Рис.10 Ассоциации сценария "Ввести новый заказ"
Лабораторная
работа 9. Исключение кириллизованного текста в информации классов
Разработанные ранее модели, предназначенные для описания
предметной области используют кириллизованную символику, недопустимую для
большинства языков программирования. Выполните замену русского текста на
латинский шрифт. Для этой цели сохраните предыдущую модель под другим именем и
далее работайте с новым файлом (что бы при необходимости можно было бы
вернуться к бизнес - процессам, описанным русским шрифтом).
Этапы выполнения упражнения.
Этап 1. Используя меню (Файл-> Сохранить как) сохраните
данную модель под другим именем (например Заказ1) в той же папке, что и
исходная модель.
Работайте далее с копией модели (то есть Заказ1).
Этап 2. Переименуйте классы и их спецификации таким образом,
чтобы использовался только латинский шрифт. Замените имя класса
Заказ_деталей на OrderDetail
Выбор_заказа на OrderОptions
Заказ на Order
Упр_заказами на OrderMgr
Позиц_заказа на OrderItem
Упр_транзакциями на TransactionMgr
Измените имена операций таким образом, чтобы рис.10
преобразовался в рис.11. Для этого, измените операцию класса OrderОptions
Открыть () на Open ()
Класса OrderDetail
Открыть () на Open ()
Сохранить заказ () на Save ()
Класса Order
Ввести номер заказа, заказчика и число
заказываемых предметов () на SetInfo ()
Сохранить_заказ () на Save ()
Класса OrderMgr
Сохранить заказ () на SaveOrder ()
Класса TransactionMgr
Сохранить заказ () на SaveOrder ()
Сохранить информацию о заказе () на Commit ()
Создать_заказ () на SubmitInfo ()
Класса OrderItem
Создать () на Create ()
Взять_информацию () на GetInfo ()
Дать_информацию на SetInfo ()
Переименуйте имена пакетов
Границы на Boundaries
Сущности на Entity
Контроль на Control
Добавление стереотипов к классам
1. Щелкните правой кнопкой мыши на классе OrderOptions диаграммы.
2. В открывшемся меню выберите пункт Open Specification (Открыть
спецификацию).
3. В поле стереотипа выберите из выпадающего списка слово Boundary
(если его нет, то введите).
4. Нажмите на кнопку ОК.
5. Повторив шаги 1-4, свяжите классы OrderDetail со стереотипом
Boundary, OrderMgr и TransactionMgr со стереотипом Control, а класс Order и
OderItem - со стереотипом Entity.
Теперь диаграмма Классов должна иметь вид, показанный на
рис.11.
Рис.11 Основная диаграмма классов
Замечание. На диаграмме рис.11 возможно визуальное
представление классов не в виде иконок, а в виде дополнительной строки текста с
именем стереотипа. За этот вид отвечает метка установленная либо на icon либо
на label (Class> Open Specefication> Options> Label)
Лабораторная
работа 10. Построение диаграммы компонентов
В настоящем разделе начинается построение физической модели
системы (то есть программной системы).
Этапы выполнения упражнения. Так как эта модель
связана с конкретным языком программирования, то в настройках это необходимо
отметить. Выполнить Tools>Options>Notations>Default Language и из выпадающего
списка языков программирования выбрать Delphi.
Создание
пакетов компонентов
1. Щелкните правой кнопкой мыши на представлении
компонентов в браузере.
2. В открывшемся меню выберите пункт New >
Package (Создать > Пакет}.
3. Назовите пакет Entities (Сущности).
4. Повторив шаги с первого по третий, создайте
пакеты Boundaries (Границы) и Control (Управление).
Добавление пакетов на Главную диаграмму
Компонентов
1. Откройте Главную диаграмму Компонентов, дважды
щелкнув на ней мышью,
2. Перетащите пакеты Entities, Boundary и Control из
браузера на Главную диаграмму.
Отображение зависимостей между пакетами
1. Нажмите кнопку Dependency (Зависимость) панели
инструментов.
2. Щелкните мышью на пакете Boundary Главной
диаграммы Компонентов.
3. Проведите линию зависимости к пакету Control.
4. Повторив шаги 1 - 3, проведите зависимость
от пакета Control к пакету Entities.
В результате диаграмма примет вид рис.12
Рис.12 Зависимости между пакетами
Добавление
компонентов к пакетам и отображение зависимостей
1. Дважды щелкнув мышью на пакете Entities Главной
диаграммы Компонентов, откройте Главную диаграмму Компонентов этого пакета.
2. Нажмите кнопку Package Specification
(Спецификация пакета) панели инструментов.
3. Поместите спецификацию пакета на диаграмму.
4. Введите имя спецификации пакета - OrderItem_.
. Повторив шаги 2-4, добавьте спецификацию пакета
Order_.
. Нажмите кнопку Dependency (Зависимость)
панели инструментов.
7. Щелкните мышью на спецификации пакета OrderItem_.
8. Проведите линию зависимости к спецификации пакета
OrderItem_.
9. С помощью описанного метода создайте следующие
компоненты и зависимости:
Для пакета Boundaries:
Спецификацию пакета Orderоptions_
Зависимости в пакете Boundaries:
От спецификации пакета Orderоptions_
к спецификации пакета OrderDetai_l
Для пакета Control:
Спецификацию пакета OrderMgr_
Спецификацию пакета TransactionMgr_
Зависимости в пакете Control:
От спецификации пакета OrderMgr_
к спецификации пакета TransactionMg_
Создание
диаграммы Компонентов системы
1. Щелкните правой кнопкой мыши на представлении
Компонентов в браузере.
2. В открывшемся меню выберите пункт New >
Component Diagram (Создать > Диаграмма Компонентов).
3. Назовите новую диаграмму System.
. Дважды щелкните на этой диаграмме мышью.