Архитектурный анализ выполняется архитектором системы и включает в себя:
· утверждение общих стандартов (соглашений) моделирования и документирования системы;
· предварительное выявление архитектурных механизмов (механизмов анализа);
· формирование набора основных абстракций предметной области (классов анализа);
· формирование начального представления архитектурных уровней.
Соглашения моделирования определяют:
· используемые диаграммы и элементы модели;
· правила их применения;
· соглашения по именованию элементов модели;
· организацию модели (пакеты).
Пример набора соглашений моделирования:
· Имена вариантов использования должны быть короткими глагольными фразами.
· Имена классов должны быть существительными, соответствующими, по возможности, понятиям предметной области.
· Имена классов должны начинаться с заглавной буквы.
· Имена атрибутов и операций должны начинаться со строчной буквы.
· Составные имена должны быть сплошными, без подчеркиваний, каждое отдельное слово должно начинаться с заглавной буквы.
|
|
· Все классы и диаграммы, описывающие предварительный системный проект, помещаются в пакет с именем Analysis Model.
· Диаграммы классов, реализующих вариант использования, и диаграммы взаимодействия, отражающие взаимодействие объектов в процессе реализации сценариев варианта использования, помещаются в кооперацию (см. подразд. 2.6) с именем данного варианта использования и стереотипом «use-case realization». Все кооперации помещаются в пакет с именем Use Case Realizations. Связь между вариантом использования и его реализацией изображается на специальной диаграмме трассировки (рис. 4.4).
Рис. 4.4. Фрагмент диаграммы трассировки
Архитектурные механизмы отражают нефункциональные требования к системе (надежность, безопасность, хранение данных в конкретной среде, интерфейсы с внешними системами и т.д.) и их реализацию в архитектуре системы. В процессе анализа они только обозначаются, отвлекаясь от особенностей среды реализации, а все детали их реализации определяются в процессе проектирования.
Архитектурные механизмы, по существу, представляют собой набор типовых решений, или образцов, принятых в качестве стандарта данного проекта.
Идентификация основных абстракций заключается в предварительном определении набора классов системы (классов анализа) на основе описания предметной области и спецификации требований к системе (в частности, глоссария). Способы идентификации основных абстракций аналогичны способам идентификации сущностей в модели ERM.
Так, для системы регистрации идентифицировано пять классов анализа:
|
|
· Student (Студент);
· Professor (Профессор);
· Schedule (Учебный график);
· Course (Курс);
· CourseOffering (Предлагаемый курс).
Классы анализа показаны на рис. 4.5.
Рис. 4.5. Классы анализа системы регистрации
Архитектурные уровни образуют иерархию уровней представления любой крупномасштабной системы. В практике разработки таких систем существует ряд типовых решений — архитектурных образцов, среди которых наиболее распространенным является образец «Уровни» (Layers). Этот образец можно описать следующим образом:
Наименование образца:
«Уровни».
Контекст:
Крупномасштабные системы, нуждающиеся в декомпозиции.
Проблема:
Архитектура крупномасштабной системы должна удовлетворять следующим требованиям:
· компоненты системы должны иметь возможность замены;
· изменения в одних компонентах не должны сильно затрагивать другие;
· однородные функции должны группироваться вместе;
· размер компонентов не должен быть слишком большим.
Решение:
Предлагается базовый вариант, включающий следующие уровни (сверху вниз):
· прикладной (Application Subsystems) — набор компонентов, реализующих основную функциональность системы, отраженную в вариантах использования;
· бизнес-уровень (Business-specific) — набор компонентов, специфичных для конкретной предметной области;
· промежуточный (Middleware) — различные платформо-независимые сервисы (библиотеки пользовательского интерфейса, брокеры запросов и др.);
· системный (System software) — ПО для вычислительной и сетевой инфраструктуры (ОС, сетевые протоколы и др.).
Архитектурные уровни представляются в модели в виде пакетов со стереотипом «1ауег». Количество и структура уровней зависят от сложности предметной области и среды реализации. В рамках архитектурного анализа определяется начальная структура модели (набор пакетов и их зависимостей) и рассматриваются только верхние уровни (прикладной и бизнес-уровень).
4.3.2.
АНАЛИЗ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ
Анализ вариантов использования выполняется проектировщиками и включает в себя:
· идентификацию классов, участвующих в реализации потоков событий варианта использования;
· распределение поведения, реализуемого вариантом использования, между классами (определение обязанностей классов);
· определение атрибутов и ассоциаций классов;
· унификацию классов анализа.
Идентификация классов, участвующих в реализации потоков событий варианта использования
В потоках событий варианта использования выявляются классы трех типов.
Граничные классы (Boundary) — служат посредниками при взаимодействии внешних объектов с системой. Как правило, для каждой пары «действующее лицо — вариант использования» определяется один граничный класс. Типы граничных классов: пользовательский интерфейс (обмен информацией с пользователем без деталей интерфейса — кнопок, списков, окон), системный интерфейс и аппаратный интерфейс (используемые протоколы без деталей их реализации).
Классы-сущности (Entity) — представляют собой основные абстракции (понятия) разрабатываемой системы, рассматриваемые в рамках конкретного варианта использования. Источники выявления классов-сущностей: основные абстракции, созданные в процессе архитектурного анализа, глоссарий, описание потоков событий вариантов использования, сущности, описанные в модели бизнес-анализа (при наличии бизнес-модели).
Управляющие классы (Control) — обеспечивают координацию поведения объектов в системе. Они могут отсутствовать в некоторых вариантах использования, ограничивающихся простыми манипуляциями с хранимыми данными. Как правило, для каждого варианта использования определяется один управляющий класс. Примеры управляющих классов: менеджер транзакций, координатор ресурсов, обработчик ошибок.
|
|
Классы анализа отражают функциональные требования к системе и моделируют объекты предметной области. Совокупность классов анализа представляет собой начальную концептуальную модель системы.
Пример набора классов, участвующих в реализации варианта использования «Зарегистрироваться на курсы», приведен на рис. 4.6.
Рис. 4.6. Классы, участвующие в реализации варианта использования «Зарегистрироваться на курсы»
Распределение поведения, реализуемого вариантом использования, между классами
Квалифицированное распределение обязанностей между классами является наиболее важной частью объектно-ориентированного анализа. Исходя из назначения трех выделенных типов классов, можно кратко охарактеризовать распределение обязанностей между ними:
· граничные классы отвечают за взаимодействие с внешней средой системы (действующими лицами);
· классы-сущности отвечают за хранение и манипулирование данными;
· управляющие классы координируют потоки событий варианта использования.
Более детальное распределение обязанностей (в виде операций классов) выполняется с помощью диаграмм взаимодействия (диаграмм последовательности и кооперативных диаграмм).
В процессе анализа конкретного варианта использования в первую очередь строится диаграмма последовательности (одна или более), описывающая основной поток событий и его подчиненные потоки. Для каждого альтернативного потока событий строится отдельная диаграмма (из соображений простоты наглядного восприятия). Нецелесообразно описывать тривиальные потоки событий (например, в потоке участвует только один объект).
Рис. 4.7. Диаграмма последовательности «Зарегистрироваться на курсы» — Основной поток событий
На рис. 4.7—4.11 приведены диаграммы последовательности и кооперативные диаграммы для основного потока событий варианта использования «Зарегистрироваться на курсы».
Рис. 4.8. Кооперативная диаграмма «Зарегистрироваться на курсы» - подчиненный поток «Создать график»
|
|
Рис. 4.9. Кооперативная диаграмма «Зарегистрироваться на курсы» — подчиненный поток «Обновить график»
На последней диаграмме (см. рис. 4.11) присутствует объект дополнительного класса-сущности PrimaryScheduleOfferinglnfo. Его назначение будет описано ниже, при рассмотрении связей между классами.
Обязанности каждого класса определяются исходя из сообщений на диаграммах взаимодействия и документируются в классах в виде операций «анализа», которые появляются там в процессе построения диаграмм взаимодействия (соотнесения сообщений с операциями).
Рис. 4.10. Кооперативная диаграмма «Зарегистрироваться на курсы» — подчиненный поток «Удалить график»
Рис. 4.11. Кооперативная диаграмма «Зарегистрироваться на курсы» — подчиненный поток «Принять график»
Каждая операция «анализа» класса соответствует некоторому сообщению, принимаемому объектами данного класса. В процессе проектирования каждая операция «анализа» преобразуется в одну или более операций класса, которые в дальнейшем будут реализованы в коде системы.
Так, диаграмма классов варианта использования «Зарегистрироваться на курсы» (см. рис. 4.6) после построения диаграмм взаимодействия должна принять следующий вид (рис. 4.12).
Рис. 4.12. Диаграмма классов с операциями «анализа»
При построении диаграмм взаимодействия возникают проблемы правильного распределения обязанностей между классами. Для их решения существует ряд образцов[26], некоторые из них приведены ниже.