Rubin K. S., Goldberg A. Object behavior analysis // Communications of the ACM. 1992. № 9 (35). C. 48–62.
Анализ - изучение и моделирование предметной области (problem domain) в контексте заданных целей и шагов по их достижению. Анализ концентрируется на том, что должна делать система, и на том, почему она должна это делать (связь с целями).
Результат объектно-ориентированного анализа (ООА) - четкое понимание поведения системы; объектов, обеспечивающих это поведение; взаимодействия между объектами и динамики системы. Все это должно быть сформулировано четко определенным языком, использующим термины предметной области. В идеале, словарь и структуры, используемые на этапах проектирования и реализации должны ясно отражать (соответствовать) словарю и структурам, полученным в ходе анализа, см. Единый язык в разработке ПО.
Недостаток большинства подходов к ООА - излишняя концентрация на осязаемых объектах. Многие подходы рекомендуют сосредоточиться на существительных в спецификациях. Существительные становятся объектами, их свойства выводятся из прилагательных, а интерфейс взаимодействия определяется глаголами. Такие подходы плохо масштабируются, так как подразумевают наличие полных и четко сформулированных спецификаций, что для большинства крупных проектов зачастую недостижимо. Во вторых, такие подходы придают слишком большой вес осязаемым объектам, в то время как они могут не подходить для компьютерной модели, либо иметь гораздо меньшее влияние на модель, чем объекты концептуальные.
Объектно-поведенческий анализ (ОПА, англ. Object Behavior Analysis, OBA) в первую очередь концентрируется на поведении.
Это пятиступенчатый процесс, результаты которого фиксируются в:
- Скриптах, описывающих использование системы
- Словарях:
- Названий инициаторов и участников взаимодействий
- Услуг, оказываемых участниками
- Атрибутов
- Определений состояний
- Объектных моделях:
- Иерархических связей
- Контрактных связей
- Моделях динамики системы:
- Жизненные циклы объектов
- Последовательности операций
Пять шагов Объектно-поведенческого анализа:
@setting-analysis-context:Установка контекста для анализа
- Определить цели и основные шаги по их достижению. Это описание желаемого результата использования системы, это высокоуровненвые бизнес-цели и конкретные требования, в том числе и нефункциональные.
- Определить подходящие ресурсы для анализа (appropriate resources for analysis). Сюда входят документы, схемы, наряду с конечными пользователями и экспертами в предметной области.
- Определить ключевые области действий (проявления поведения?). Это основные области системы, требующие анализа. Их можно определить путем составления последовательности основных действий, происходящих в предметной области (на основе анализа существующей системы или умозрительно).
- Сформулировать предварительный план анализа
@understand-the-problem:Понимание решаемой задачи с помощью выявления поведения
- Планирование сценариев
- Выбрать основные сценарии с помощью опросов пользователей и экспертов и/или анализа существующей документации
- Соотнести сценарии с ключевыми областями действий
- Составление сценариев
- Определить метаданные сценариев
- Описать каждый шаг в терминах инициатор-действие-участник
- Определить услуги, предоставляемые участниками
- Определить проблемы сценария
- Обновить таблицу проблем сценариев
- Разделить сценарии
- Сформировать словари
- Словарь заинтересованных участников системы
- Словарь услуг
- Вывести атрибуты (свойства)
- Исследовать сценарии с целью обнаружить свойства инициаторов и участников
- Сформировать словари свойств
@defining-objects:Определение объектов, реализующих поведение
- Сформировать карточки моделирования (modelling cards)
- Определить различные типы объектов
- Распределить свойства
- Распределить оказываемые услуги
- Собрать ожидаемые (contracted) услуги
@classifying-objects:Классификация объектов и идентификация их связей
- Описать связи по контрактам
- Организовать объекты в иерархии
- Выбрать принципы организации иерархии
- Определить абстракции
- Определить особые случаи
- Распределить объекты (factor object)?
- Сформировать / обновить таблицу реорганизации
@modeling-system-dynamic:Моделирование динамики системы
- Сформировать словари определений состояний
- Определить состояния, связанные с каждым объектом
- Описать каждое состояние
- Определить жизненный цикл объектов
- Определить события, изменяющие состояние объектов
- Организовать события в жизненный цикл
- Определить последовательности операций.