Разработка и оценка архитектуры на основе сценариев
При проектировании архитектуры системы на основе требований, зафиксированных в виде вариантов использования, первые возможные шаги состоят в следующем.
- Выделение компонентов
- Выбирается набор "основных" сценариев использования
- Определяются компоненты, отвечающие за определенные действия в рамках этих сценариев
- При возникновении дополнительных хорошо выделенных подзадач добавляются новые компоненты, и сценарии уточняются.
- Определение интерфейсов компонентов
- Уточнение набора компонентов
- Достижение нужных свойств.
На основе возможных сценариев использования или модификации системы возможен анализ характеристик архитектуры и оценка ее пригодности для поставленных задач или сравнительных анализов нескольких архитектур, это так называемый метод анализа архитектуры ПО, основные шаги которого:
1) Определить набор сценариев действия пользователя или внешних систем
2) Определить архитектуру
3) Классифицировать сценарий
4) Необходимо оценить сценарий
5) Выявить взаимодействие сценариев
6) Оценить архитектуру в целом, для этого надо использовать оценки важности сценариев и степень их поддержки архитектуры.
UML Виды диаграмм UML
Для представления архитектуры, а, точнее, различных входящих в нее структур, удобно использовать графические языки. На настоящий момент наиболее проработанным и наиболее широко используемым из них является унифицированный язык моделирования (UnifiedModelingLanguage, UML).
UML предлагает использовать для описания архитектуры 8 видов диаграмм. 9-й вид UML диаграмм, диаграммы вариантов использования (см. лекцию 4), не относится к архитектурным представлениям. Другие виды диаграмм можно использовать для описания внутренней структуры компонентов или сценариев действий пользователей и прочих элементов, к архитектуре часто не относящихся. Диаграммы UML делятся на две группы — статические и динамические диаграммы.
Статические диаграммы
К этому типу относятся диаграммы классов, объектов, компонентов и диаграммы развертывания.
Динамические диаграммы
Динамические диаграммы описывают происходящие в системе процессы. К ним относятся диаграммы деятельности, сценариев, диаграммы взаимодействия и диаграммы состояний.
Статические диаграммы
Статические диаграммы
Статические диаграммы представляют либо постоянно присутствующие в системе сущности и связи между ними. К этому типу относятся диаграммы классов, объектов, компонентов и диаграммы развертывания.
Диаграммы классов (classdiagrams) показывают классы или типы сущностей системы, характеристики классов (поля и операции) и возможные связи между ними.
Диаграммы объектов (objectdiagrams) показывают часть объектов системы и связи между ними в некотором конкретном состоянии или суммарно, за некоторый интервал времени.
Диаграммы компонентов (componentdiagrams) представляют компоненты в нескольких смыслах — атомарные составляющие системы с точки зрения ее сборки, конфигурационного управления и развертывания.
Диаграммы развертывания (deploymentdiagrams) показывают декомпозицию системы на физические устройства различных видов — серверы, рабочие станции, терминалы, принтеры, маршрутизаторы и пр.
Динамические диаграммы
Динамические диаграммы
Динамические диаграммы описывают происходящие в системе процессы. К ним относятся диаграммы деятельности, сценариев, диаграммы взаимодействия и диаграммы состояний.
Диаграммы деятельности (activitydiagrams) иллюстрируют набор процессов-деятельностей и потоки данных между ними, а также возможные их синхронизации друг с другом.
Диаграммы сценариев (или диаграммы последовательности, sequencediagrams) показывают возможные сценарии обмена сообщениями или вызовами во времени между различными компонентами системы.
Диаграммы взаимодействия (collaborationdiagrams) показывают ту же информацию, что и диаграммы сценариев, но привязывают обмен сообщениями/вызовами не к времени, а к связям между компонентами.
Диаграммы состояний (statechartdiagrams) показывают возможные состояния отдельных компонентов или системы в целом, переходы между ними в ответ на какие-либо события и выполняемые при этом действия.