method_analys_new_draw (1035360), страница 2
Текст из файла (страница 2)
В этом разделе будет реализован прецедент "Search for a phone number" и показано связанное взаимодействие с использованием циклограммы. Прецедент запускается действующим лицом Any User, использующим интерфейс, предоставленный классом PhoneBookView, для запроса на поиск. Класс PhoneBookView уведомляет класс PhoneBookController о запросе пользователя. PhoneBookController затем обновляет модель данных, хранимую в классе PhoneBookModel. Так как модель изменена, класс PhoneBookModel уведомляет PhoneBookView, который затем обновляет пользовательский интерфейс в соответствии с последним состоянием приложения.
-
В Rational Software Architect в панели Model Explorer нажмите правой кнопкой мыши Phone Book UML Model и выберите Add Diagram > Sequence Diagram;
-
Введите Sequence Diagram в качестве имени сгенерированной диаграммы, заменив имя по умолчанию SequenceDiagram1;
-
Перетащите действующее лицо Any User из панели Model Explorer на диаграмму для создания экземпляра действующего лица, как это показано на рисунке 10. Таким же образом создайте экземпляры PhoneBookView, PhoneBookController и PhoneBookModel, перетащив их на диаграмму:
Рисунок 10. Перетаскивание элементов модели на циклограмму
Выберите Asynchronous Message в панели Palette.Как показано на рисунке 11, нажмите кнопку мыши на линии под элементом any User: Any User. Удерживая кнопку мыши нажатой, перетащите линию под элемент phoneBookView:PhoneBookView:
Рисунок 11. Создание линии сообщений
Выберите операцию PhoneBookView::getUserInput() в раскрывающемся списке, как это показано на рисунке:
Рисунок 12. Выбор операции для линии сообщений
-
Таким же образом создайте линии асинхронных сообщений, показанные в таблице 3. Для создания асинхронного сообщения для собственного вызова, просто нажмите кнопку мыши в строке экземпляра без всякого перетаскивания.
Таблица 3. Линии асинхронных сообщений для циклограммы
Из экземпляра | К экземпляру | Операция |
phoneBookView | phoneBookController | PhoneBookController::userHasInput() |
phoneBookController | phoneBookModel | PhoneBookModel::searchPhoneNumber() |
phoneBookController | phoneBookModel | PhoneBookModel::setState() |
phoneBookModel | phoneBookView | PhoneBookView::stateHasChanged() |
phoneBookView | phoneBookModel | PhoneBookModel::getSearchResult() |
phoneBookView | phoneBookView | PhoneBookView::changeView() |
-
Созданная циклограмма представлена на рисунке 13. Выберите File > Save All для сохранения всех изменений.
Рисунок 13. Созданная циклограмма
Распределение классов по пакетам
-
Скопировать из строительных блоков (Project Explorer) функциональный пакет (copy-paste),
перенести пакет на диаграму классов,
перенести классы в пакет (до повления синего овала),
раскрыть содержимое пакетов (знак +).
Пример (см. выше):
Задание
-
Открыть в среде Software Architect проект. Добавить к нему модель анализа RUP.
-
Добавить в модель анализа кооперации для реализации основных прецедентов. Для каждого прецедента одну кооперацию. Название кооперации совпадают с названием прецедента. Построить «обзорную» диаграмму коопераций (классов).
Выполнить анализ архитектуры и построить в пакете Перспектива «обзорную» диаграмму классов сущностей (на основе модели предметной области). Классы сущностей копировать в модель из строительных блоков. Определить для них атрибуты, связи ассоциации, роли, множественность и арность.
Добавить в модель управлющие и граничные классы. Управляющий класс — один на каждую кооперацию. Граничный класс — один на каждого актера. Построить в пакете Перспектива «обзорную» диаграмму граничных классов и «обзорную» диаграмму управляющих классов.
-
Выполнить анализ коопераций. Для каждой кооперации:
-
открыть диаграмму классов кооперации и пеместить на нее классы (граничные, управляющий и сущностей), которые участвуют в этой кооперации.
Определить ассоциации между классами в соответствии с их свзаимодействием для реализации прцедента (общая схема: граничный — управляющий — сущности).
создать диаграмму последовательностей кооперации (для выполнения основного потока алгоритма). В качестве объектов использовать классы-участники кооперации и актера. (Первое действие всегда от актера.) События диаграммы будут прообразом его методов.
-
Проверить модель средствами пакета (валидация модели).
-
Выполнить анализ классов. После построения диаграммы последовательностей уточнить на диаграмме классов кооперации:
-
связи между классами, методы классов (названия и атрибуты), атрибуты классов.
класс сущности: атрибуты — поля хранимых данных, методы — get|set или CRUD,
класс граничный: атрибуты — элементы формы(на основе эскиза пользовательского интерфейса)/параметры протокола, методы — управляющие сигналы от пользователя (их обработчики),
классы управляющие: атрибуты — промежуточные данные алгоритма, методы — шаги алгоритма кооперации.
-
Проверить модель средствами пакета (валидация модели).
-
Построить «обзорную» диаграмму всех классов. Добавить в модель пакеты. Распределить классы анализа по пакетам.
Отчет:
После выполнения работы составляется отчет, который содержит:
-
титульный лист,
все построенные диаграммы.
Контрольные вопросы
-
Как создать модель анализа в среде IBM Software Architect ?
Как добавить в модель диаграмму классов?
Как добавить в модель диаграмму последовательностей?
Какие типы классов анализа выделяют?
Типы связей на диаграмме классов.
Типы связей на диаграмме последовательностей.
Стереотипы классов анализа.
Как задать методы и свойства класса?
Литература
-
Орлов С.А., Цилькер Б.Я. Технологии разработки программного обеспечения. - СПб.: Питер. - 2012 г.
-
Якобсон А, Дуч Г., Рамбо Дж. Унифицированный процесс разработки программного обеспечения. - Спб.: Питер. - 2002 г.
-
Материалы сайта http://www.ibm.com
12