- •Лабораторная работа № 5
- •Учебные вопросы:
- •Литература, техническое и программное обеспечение:
- •Вопрос 1. Модель прецедентов: диаграммы последовательностей
- •Диаграммы последовательностей системы
- •Пример диаграммы последовательностей
- •Системные события и прецеденты
- •Системные события и границы системы
- •Имена системных событий и операций
- •Отображение текста из описания прецедента
- •Вопрос 2. Модель прецедентов: детализация с помощью описания операций
- •Разделы описания
- •Постусловия
- •Составление описания
- •Советы по составлению описаний системных операций
- •Пример pos-системы тт: описания
- •Изменение модели предметной области
- •Вопрос 3. Принципы создания модели предметной области
- •Имена и модели: стратегия построения карт
- •Типичная ошибка при выделении концептуальных классов
- •Необходимость спецификаций или описание концептуальных классов
- •Когда требуются понятия-спецификации
- •Пример: модель предметной области pos-системы тт
- •Концептуальные классы
- •Модели предметной области и декомпозиция
- •Концептуальные классы предметной области торговли
- •Идентификация концептуальных классов
- •Стратегии идентификации концептуальных классов
- •Использование списка категорий концептуальных классов
- •Определение концептуальных классов с помощью выявления существительных
- •Кандидатуры на роль концептуальных классов для предметной области торговли
- •Пример рассуждения: включать ли понятие "товарный чек" в модель
- •Вопрос 4. Модель предметной области: добавление ассоциаций и атрибутов
- •Поиск ассоциаций
- •Система обозначений для ассоциаций языка uml
- •Поиск ассоциаций: список стандартных ассоциаций
- •Ассоциации с высоким приоритетом
- •Рекомендации по назначению ассоциаций
- •Кратность
- •Имена ассоциаций
- •Несколько ассоциаций между двумя типами
- •Ассоциации для предметной области pos-системы тт
- •Отношения в магазине, которые должны быть учтены
- •Использование списка категорий ассоциаций
- •Модель предметной области pos-системы тт
- •Сохранение только важных ассоциаций
- •Атрибуты
- •Система обозначений атрибутов в языке uml
- •Типы данных
- •Непримитивные типы классов
- •Совет разработчикам: не используйте атрибуты в качестве внешних ключей
- •Моделирование атрибутов Quantity и Unit
- •Атрибуты модели предметной области системы тт
Составление описания
Чтобы составить описания для каждого прецедента, выполните следующие действия.
Определите системные операции из диаграмм последовательностей.
Составьте описание для сложных системных операций, результаты которых с очевидностью не следуют из описания прецедента.
При описании постусловий используйте следующие категории:
создание и удаление экземпляра;
модификация атрибута;
формирование и разрыв ассоциаций.
Советы по составлению описаний системных операций
Постусловия целесообразно описывать в декларативной форме, желательно с использованием глаголов пассивного залога в прошедшем времени, чтобы подчеркнуть факт изменения состояний, а не способ реализации, как, например, показано ниже.
Создан экземпляр SalesLineItem (лучше).
Создание экземпляра SalesLineItem (хуже).
Необходимо установить отношения между существующими и вновь создаваемыми объектами путем формирования ассоциаций. Например, при выполнении операции enterItem недостаточно просто создать новый экземпляр записи о покупке товара SalesLineItem. После выполнения операции этот экземпляр должен быть связан с текущей продажей Sale. Поэтому одним из постусловий этой операции является следующее.
Вновь созданный экземпляр SalesLineItem связан с объектом Sale (формирование ассоциации).
Пример pos-системы тт: описания
Системные операции для прецедента оформление продажи Описание операции
ОП 1: makeNewSale
Операция
|
makeNewSale()
|
Ссылки
|
Прецеденты: Оформление продажи
|
Предусловия
|
Отсутствуют
|
Постусловия
|
|
Обратите внимание на нечеткое описание последнего постусловия. В реальном проекте все эти постусловия настолько очевидны и следуют из описания прецедентов, что создавать описание системной операции makeNewSale не имеет смысла.
Напомним один из основных принципов RUP: стремитесь к максимальной простоте и избегайте использования артефактов, которые не добавляют новых знаний.
ОП 2: enterItem
Операция
|
enterItem (itemID: itemID, quantity: integer )
|
Ссылки
|
Прецеденты: Оформление продажи
|
Предусловия
|
Инициирована продажа |
Постусловия
|
Инициализированы атрибуты экземпляра s.
|
ОП 3: endSale
Операция
|
endSale() |
Ссылки
|
Прецеденты: Оформление продажи
|
Предусловия
|
Инициирована продажа |
Постусловия
|
|
ОП 4: makePayment
Операция
|
makePayment (amount: Money) |
Ссылки
|
Прецеденты: Оформление продажи
|
Предусловия
|
Инициирована продажа |
Постусловия
|
|