Закоулки мозга

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:Установка контекста для анализа

  1. Определить цели и основные шаги по их достижению. Это описание желаемого результата использования системы, это высокоуровненвые бизнес-цели и конкретные требования, в том числе и нефункциональные.
  2. Определить подходящие ресурсы для анализа (appropriate resources for analysis). Сюда входят документы, схемы, наряду с конечными пользователями и экспертами в предметной области.
  3. Определить ключевые области действий (проявления поведения?). Это основные области системы, требующие анализа. Их можно определить путем составления последовательности основных действий, происходящих в предметной области (на основе анализа существующей системы или умозрительно).
  4. Сформулировать предварительный план анализа

@understand-the-problem:Понимание решаемой задачи с помощью выявления поведения

  1. Планирование сценариев
    1. Выбрать основные сценарии с помощью опросов пользователей и экспертов и/или анализа существующей документации
    2. Соотнести сценарии с ключевыми областями действий
  2. Составление сценариев
    1. Определить метаданные сценариев
    2. Описать каждый шаг в терминах инициатор-действие-участник
    3. Определить услуги, предоставляемые участниками
    4. Определить проблемы сценария
    5. Обновить таблицу проблем сценариев
    6. Разделить сценарии
  3. Сформировать словари
    1. Словарь заинтересованных участников системы
    2. Словарь услуг
  4. Вывести атрибуты (свойства)
    1. Исследовать сценарии с целью обнаружить свойства инициаторов и участников
    2. Сформировать словари свойств

@defining-objects:Определение объектов, реализующих поведение

  1. Сформировать карточки моделирования (modelling cards)
    1. Определить различные типы объектов
    2. Распределить свойства
    3. Распределить оказываемые услуги
    4. Собрать ожидаемые (contracted) услуги

@classifying-objects:Классификация объектов и идентификация их связей

  1. Описать связи по контрактам
  2. Организовать объекты в иерархии
    1. Выбрать принципы организации иерархии
    2. Определить абстракции
    3. Определить особые случаи
    4. Распределить объекты (factor object)?
    5. Сформировать / обновить таблицу реорганизации

@modeling-system-dynamic:Моделирование динамики системы

  1. Сформировать словари определений состояний
    1. Определить состояния, связанные с каждым объектом
    2. Описать каждое состояние
  2. Определить жизненный цикл объектов
    1. Определить события, изменяющие состояние объектов
    2. Организовать события в жизненный цикл
  3. Определить последовательности операций.