Важное место в разработках АС занимают объектно-ориентированные методологии, основанные на объектной декомпозиции предметной области, представляемой в виде совокупности объектов, взаимодействующих между собой посредством передачи сообщений. Данный подход не является противопоставлением структурному подходу, более того, фрагменты методологий структурного анализа (а именно его базовые модели: DFD, ERD и STD) используются при объектно-ориентированном анализе для моделирования структуры и поведения самих объектов.
В качестве объектов предметной области могут рассматриваться конкретные предметы, а также абстрактные или реальные сущности (например, клиент, заказ, предприятие и т. п.). Каждый объект характеризуется своим состоянием (точнее, набором атрибутов, значения которых определяют состояние), а также набором операций для проверки и изменения этого состояния. Каждый объект является представителем некоторого класса однотипных объектов, определяющего их общие свойства. Все представители (экземпляры) одного и того же класса имеют один и тот же набор операций и могут реагировать на одни и те же сообщения.
Объекты и классы организуются с использованием следующих принципов:
1. Принцип инкапсуляции (упрятывания информации) декларирует запрещение любого доступа к атрибутам объекта, кроме как через его операции. В соответствии с этим внутренняя структура объекта скрыта от пользователя, а любое его действие инициируется внешним сообщением, вызывающим выполнение соответствующей операции.
2. Принцип наследования декларирует создание новых классов от общего к частному. Такие новые классы сохраняют все свойства классов-родителей и при этом содержат дополнительные атрибуты и операции, характеризующие их специфику.
3. Принцип полиморфизма декларирует возможность работы с объектом без информации о конкретном классе, экземпляром которого он является. Каждый объект может выбирать операцию на основании типов данных, принимаемых в сообщении, т.е. реагировать индивидуально на это (одно и то же для различных объектов) сообщение.
Таким образом, объектно-ориентированный подход заключается в представлении моделируемой системы в виде совокупности классов и объектов предметной области. При этом иерархический характер сложной системы отражается с использованием иерархии классов, а ее функционирование рассматривается как взаимодействие объектов. Жизненный цикл такого подхода содержит этапы анализа требований, проектирования, эволюции (объединяющей программирование, тестирование и отладку, а также комплексацию системы) и модификации. При этом в отличие от каскадной модели отсутствует строгая последовательность выполнения перечисленных этапов.
Известные объектно-ориентированные методологии базируются на интегрированных моделях трех типов:
· объектной модели, отражающей иерархию классов, связанных общностью структуры и поведения и отражающих специфику атрибутов и операций каждого из них (при этом одной из базовых нотаций объектной модели является диалект ERD);
· динамической модели, отражающей временные аспекты и последовательность операций (при этом достаточно часто используется STD);
· функциональной модели, описывающей потоки данных (с использованием DFD).
Главными недостатками перечисленных объектно-ориентированных методологий являются следующие:
· отсутствие стандартизации в рассматриваемой области программотехники (конкретно, для представления объектов и взаимосвязей между ними);
· отсутствие метода, одинаково хорошо реализующего этапы анализа требований и проектирования (большинство методов предназначено для объектно-ориентированного анализа, некоторые содержат слабо развитые средства проектирования).
Для преодоления этих недостатков была выработана унифицированная методология, получившая название UML(Unified Modeling Language). При создании UML его авторы руководствовались целями ускорения эволюции наиболее популярных методологий в направлении сближения их друг с другом, обобщения накопленного опыта их использования, обеспечения стабильности проектов на основе единого целостного метода.
В UML используются следующие ключевые диаграммы:
· диаграмма классов, демонстрирующая статическую структуру системы, ее содержимое – классы, объекты и отношения между ними;
· диаграмма прецедентов, моделирующая набор действующих субъектов и прецедентов использования, с помощью которых они взаимодействуют;
· диаграмма взаимодействий, обеспечивающая возможность моделирования условий в диаграммах последовательности и коллективного взаимодействия, которые представляют объекты и межобъектные взаимодействия в измерениях времени и от ношений, соответственно;
· диаграмма состояний, моделирующая изменения (переходы) состояний вследствие взаимодействия конкретного объекта с другими объектами (т. е. в отличие от диаграммы взаимодействий описывает состояния только одного класса или объекта);
· диаграмма компонентов, описывающая модули системы, в которых определены классы;
· диаграмма применения (развертывания), моделирующая схему расположения процессоров и устройств, задействованных в реализации системы, а также маршрутов передачи информации между ними.
При этом первые четыре диаграммы являются логическими представлениями разрабатываемой системы, а последние две — отражают ее физическое представление.