Открыть сервис

ОООА: определение и основные характеристики

ОООА (Объектно-ориентированный анализ) — это методология исследования предметной области, направленная на выявление, классификацию и моделирование объектов и их взаимодействий в рамках разрабатываемой программной системы. ОООА является первым этапом в процессе объектно-ориентированного проектирования (ООП) и разработки программного обеспечения (ПО), предшествуя созданию архитектуры и кода. Основная цель ОООА — построение абстрактной модели реального мира или бизнес-процессов, которая затем может быть реализована в виде объектно-ориентированной программы.

История возникновения

Объектно-ориентированный анализ возник как ответ на усложнение программных систем в 1980-х годах. Традиционные структурные методы анализа (например, методология структурного анализа и проектирования, SADT) не справлялись с моделированием сложных, изменяющихся систем, где ключевыми элементами были данные и их поведение.

Основоположниками ОООА считаются:

  • Гради Буч (Grady Booch) — в 1986 году опубликовал работу «Object-Oriented Development», где впервые описал методологию анализа на основе классов и объектов.
  • Ивар Якобсон (Ivar Jacobson) — в 1987 году представил метод Object-Oriented Software Engineering (OOSE), основанный на сценариях использования (use cases).
  • Джеймс Рамбо (James Rumbaugh) — в 1991 году выпустил книгу «Object-Oriented Modeling and Design» (OMT), где предложил нотацию для моделирования объектов, их атрибутов и связей.

В 1994–1995 годах Буч, Рамбо и Якобсон объединили усилия, создав Унифицированный язык моделирования (UML) — стандартную графическую нотацию для объектно-ориентированного анализа и проектирования. UML стал де-факто стандартом для ОООА, заменив разрозненные методы.

Основные принципы ОООА

ОООА базируется на четырёх фундаментальных принципах объектно-ориентированного подхода:

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

Этапы проведения ОООА

Процесс объектно-ориентированного анализа обычно включает несколько последовательных шагов:

1. Определение требований и границ системы

На этом этапе аналитик собирает и документирует функциональные и нефункциональные требования к системе. Используются интервью с заказчиками, анализ документов, наблюдение за бизнес-процессами. Результат — спецификация требований, часто оформленная в виде сценариев использования (use cases).

2. Выявление объектов и классов

Аналитик идентифицирует ключевые сущности предметной области, которые будут представлены в виде объектов. Критерии выбора:

  • Существенность для системы — объект должен быть необходим для выполнения функций.
  • Наличие состояния — объект должен иметь атрибуты, которые могут изменяться.
  • Наличие поведения — объект должен выполнять действия или реагировать на события.

Примеры: для системы управления библиотекой объектами будут «Книга», «Читатель», «Библиотекарь», «Заказ».

3. Определение атрибутов и методов

Для каждого класса определяются:

  • Атрибуты (свойства) — данные, характеризующие объект (например, для «Книги»: название, автор, год издания, ISBN).
  • Методы (операции) — действия, которые может выполнять объект (например, «Забронировать», «Выдать», «Вернуть»).

4. Построение связей между классами

Выявляются отношения между классами:

  • Ассоциация — структурная связь (например, «Читатель» имеет «Заказ»).
  • Агрегация — отношение «часть-целое» (например, «Библиотека» состоит из «Книг»).
  • Композиция — более строгая форма агрегации, где часть не может существовать без целого (например, «Страница» является частью «Книги»).
  • Наследование — отношение «является» (например, «Учебник» является подклассом «Книги»).

5. Моделирование поведения

Для описания динамики системы используются диаграммы:

  • Диаграммы последовательности — показывают порядок обмена сообщениями между объектами во времени.
  • Диаграммы состояний — описывают жизненный цикл объекта (изменение его состояний под воздействием событий).
  • Диаграммы деятельности — моделируют потоки работ и алгоритмы.

6. Проверка и верификация модели

Полученная модель анализируется на соответствие требованиям, полноту, непротиворечивость и отсутствие избыточности. Проводятся ревью с участием заказчика и разработчиков.

Инструменты и нотации

Основным инструментом ОООА является UML (Unified Modeling Language), который включает 14 типов диаграмм. Наиболее часто используемые в анализе:

  • Диаграмма классов — статическая структура системы: классы, их атрибуты, методы и связи.
  • Диаграмма вариантов использованияфункциональные требования с точки зрения акторов (пользователей, внешних систем).
  • Диаграмма последовательности — временная динамика взаимодействия объектов.
  • Диаграмма состояний — жизненный цикл одного класса.

Популярные программные средства для ОООА: Enterprise Architect, IBM Rational Rose, Visual Paradigm, Draw.io, Lucidchart.

Отличие от смежных дисциплин

  • ОООА vs. Объектно-ориентированное проектирование (ООП) — анализ отвечает на вопрос «что система делает?», а проектирование — «как это реализовать?». ОООА создаёт логическую модель, ООП добавляет технические детали (архитектура, базы данных, интерфейсы).
  • ОООА vs. Структурный анализ — структурный анализ фокусируется на функциях и потоках данных (DFD, ERD), а ОООА — на объектах, их поведении и взаимодействии. ОООА более гибкий при изменении требований, так как объекты инкапсулируют данные и методы.
  • ОООА vs. Анализ предметной области — предметный анализ шире: он включает изучение бизнес-правил, процессов, целей организации, не обязательно связанных с ПО. ОООА — это узкая методология, ориентированная на создание программной модели.

Применение

ОООА используется в:

  • Разработке корпоративных информационных систем (ERP, CRM, SCM).
  • Создании веб-приложений и мобильных приложений.
  • Моделировании бизнес-процессов (например, в нотации BPMN, которая также использует объектный подход).
  • Разработке игр (моделирование игровых объектов, персонажей, предметов).
  • Инженерии знаний (построение онтологий и экспертных систем).

Критика и ограничения

  • Сложность обучения — ОООА требует понимания абстрактных концепций (классы, наследование, полиморфизм), что может быть трудно для начинающих аналитиков.
  • Избыточность для малых проектов — для простых систем (например, скриптов или небольших сайтов) ОООА может быть излишним, так как увеличивает время на анализ без существенного выигрыша.
  • Субъективность выделения объектов — разные аналитики могут по-разному определить границы и иерархию классов, что приводит к неоднозначности модели.
  • Трудности с моделированием сложных бизнес-правил — некоторые алгоритмы и логические условия плохо выражаются через объекты и связи, требуя дополнительных механизмов (например, паттернов проектирования).

Интересные факты

  • Термин «объектно-ориентированный анализ» впервые появился в книге Питера Коуда (Peter Coad) и Эдварда Йордана (Edward Yourdon) «Object-Oriented Analysis» (1990).
  • Методология ОООА активно используется в agile-подходах (Scrum, XP), где анализ и проектирование выполняются итеративно, а не строго последовательно.
  • В 1997 году UML был принят как стандарт Международной организацией по стандартизации (ISO/IEC 19501:2005).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →