- •Введение о достоинствах визуального моделирования
- •Глава 1 Активные субъекты
- •Создание активного субъекта
- •Варианты использования
- •Создание варианта использования
- •Поток событий для варианта использования
- •Связи вариантов использования
- •Диаграммы вариантов использования
- •Создание основной диаграммы вариантов использования
- •Создание коммуникативной ассоциации
- •Создание включающей связи
- •Создание расширяющей связи
- •Как создать дополнительную диаграмму вариантов использования
- •Диаграммы действий
- •Создание диаграммы действий
- •Как создать точку принятия решения
- •Как создать контролируемый переход
- •Как привести линии диаграммы к ортогональному виду
- •Полосы синхронизации
- •Kак создать полосу синхронизации
- •Как поделить диаграмму действий на зоны
- •Исходное и завершающее действия
- •Как создать исходное (завершающее) действие
- •Резюме к главе 1
- •Глава2 Что такое объект
- •Характеристики объекта
- •Понятие класса
- •Как создать класс
- •Стереотипы и классы
- •Как "находить" классы
- •Классы сущностей
- •Классы границ
- •Классы управления
- •Как определить или создать стереотип класса
- •Документирование классов
- •Как документировать класс
- •Как создать пакет
- •Как разместить класс в пакете
- •Диаграммы классов
- •Как создать основную диаграмму классов
- •Как создать основную диаграмму классов пакета
- •Как установить признак отображения принадлежности класса пакету
- •Резюме к главе 2
- •Глава 3 Реализации вариантов использования
- •Документирование сценариев
- •Диаграммы последовательностей
- •Как создать диаграмму последовательностей
- •Как создать объекты и сообщения в диаграмме последовательностей
- •Как связать объект диаграммы последовательностей с классом
- •Диаграммы последовательностей и классы границ
- •Сложность диаграмм последовательностей
- •Резюме к главе 3
Как "находить" классы
Строгой инструкции, которая предписывала бы способы отыскания абстракций, подходящих на роль классов, просто нет. В Rational Unified Process для разработки классов моделируемой системы предлагается обращать внимание на стереотипы классов сущностей, границ и управления. Указанное множество стереотипов позволяет аналитику и дизайнеру размежевать уровни предметной области, представления и управления системой.
Поскольку процесс проектирования отличается итеративным характером, множество классов системы на протяжении ее жизненного цикла изменяется и пополняется. Исходный набор классов-кандидатов редко совпадает с тем, члены которого в конечном итоге реализуются на практике.
Классы сущностей
Класс сущностей (entity class) моделирует структуру данных и поведение, отличающиеся стабильным характером. Класс подобного типа отражает качества сущности реального мира или применяется для выполнения внутренних функций системы. Классы сущностей обычно не зависят от окружения, т.е. не чувствительны к тому, каким образом внешние обстоятельства влияют на работу системы. Во многих случаях такие классы удается с успехом применять в нескольких различных приложениях.
Первый шаг состоит в разграничении сфер ответственности системы на основе результатов анализа потока событий, охватывающего определенные варианты использования. Классы сущностей обычно необходимы системе для поддержки функций, относящихся к той или иной сфере ответственности. Для описания определенной функции подойдет краткое выражение с именем существительным. Полученный список описаний подлежит фильтрации с целью удаления фрагментов, которые не относятся к предметной области, являются избыточными либо посвящены конкретным особенностям реализации.
Классы сущностей создаются, как правило, на фазе планирования. Их часто называют "предметными", поскольку они представляют абстракции понятий и вещей реального мира.
Классы границ
Классы границ (boundary classes) обслуживают процессы взаимодействия между системой и ее окружением, обеспечивая интерфейсы для пользователей и сторонних систем (т.е. активных субъектов). Такие классы образуют часть системы, которая непосредственно "общается" с внешним миром.
Для отыскания классов границ анализируется каждая пара вида "активный субъект/вариант использования". Классы границ, выбранные на этапе планирования, обычно отличаются низким уровнем детализации. В этот момент, например, целесообразно моделировать и документировать функции окна графического интерфейса, рассматриваемого в целом, не оговаривая особенности реализации его отдельных частей (кнопок, переключателей, опций и т.п.).
Требования, предъявляемые к элементам графического интерфейса пользователя, зачастую весьма неоднозначны. Хотя термины "дружественный интерфейс" или "гибкий интерфейс" употребляются повсеместно, о единодушии при их толковании говорить не приходится. Это как раз тот случай, когда весьма уместны подходы, связанные с коллективным обсуждением решений и созданием прототипов: потребитель получает возможность заранее "пощупать" будущую систему и прийти к осмысленному выводу о том, насколько в действительности "дружественны" предлагаемые интерфейсы. Затем найденные критерии "дружественности" закрепляются в виде структур и характеристик поведения классов границ. В процессе проектирования классы уточняются и "шлифуются" с учетом особенностей выбранных механизмов их реализации.
Как упоминалось выше, классы границ используются и для моделирования способов взаимодействия разрабатываемой системы с другими системами.