Попробуем, прежде всего, разобраться, в чем состоит цель ACDM.
Какие основные задачи он перед собой ставит и за одно,
чем этот подход ACDM, архитектурно-центрический метод
проектирования, чем он не является.
Целью, естественно, является архитектурное проектирование
программных систем. При этом следует отметить, что ACDM —
это гибкий метод, который ориентирован на оперативное
управление рисками и итеративную разработку.
Какие задачи стоят перед разработчиками по ACDM?
Это, прежде всего, выявление, анализ и организация
архитектурных драйверов или движущих сил архитектурного
проектирования, а также руководство архитектурным проектом
и созданием соответствующей документации.
Мы помним из курса о моделях жизненного цикла,
что в ряде случаев (скажем, водопадные модели)
документирование фактически управляет жизненным циклом.
И, собственно, метокогнитивный цикл развития программных
проектов с учетом их оценки управления,
в том числе архитектурными пробами или некими прототипами,
предварительным видением архитектуры проекта с учетом
итеративного уточнения конструкций, оценка планирования
и коррекция — вот основные стадии каждой из наших итераций
в рамках ACDM. Ну, и чем ACDM не является,
что он не включает — это детальное проектирование,
это процессы разработки, достаточно тех методологий,
которые уже существуют и которые мы обсуждали.
Это Rational Unified Process, Microsoft Solution Framework,
гибкие подходы. А также ACDM не включает
особенности реализации на уровне конкретных языков
и систем программирования, на уровне аппаратного обеспечения
моделей жизненного цикла, а также инструментария поддержки
разработки программных систем.
Что касается структуры ACDM этого архитектурно-центричного
подхода? Что он определяет? В чем его смысл?
Прежде всего, речь идет о построении архитектурного проекта.
Детальное проектирование, реализация, тестирование и так далее
в этом случае нас интересует в меньшей степени.
Речь идет о том, что технологии или подход ACDM дает нам
возможность быстрого итеративного производства начальной
версии архитектуры проекта, который затем можно
скорректировать. При этом в целом определяются основные
стадии работ по производству архитектурного прототипа
и архитектуры программной системы на основе быстрой
адаптивной разработки и высокого качества.
Высокое качество возникает из грамотного баланса атрибутов
качества или драйверов архитектуры, выявление которых и
представляет собой важнейшую задачу для архитекторов,
выявление управления которыми критически важно.
Именно эти драйверы выстраиваются на, возможно, более ранних
стадиях разработки и по сути дела руководят разработкой
архитектурного проекта. За счет чего наша точка сборки,
о которой мы говорили совсем недавно, приближается
к инициации архитектурного проекта и старту архитектурного
проектирования насколько это возможно.
Таким образом, драйверы архитектуры помогают
проектированию оценки и коррекции архитектурного проекта,
а также его проектированию. И результаты оценки позволяют
уточнять архитектурный проект при помощи подхода ACDM.
В чем же состоит процессная основа подхода, основанного
на архитектурном проектировании.
Это, прежде всего, итеративная разработка по метакогнитивному
циклу с постоянным уточнением проекта и оценкой проекта,
архитектурными тестами, архитектурными пробами на каждом
витке этого последовательного уточнения.
При этом оценка проекта определяет, во-первых, готов ли он
к производству, то есть можно ли закончить итерации и перейти
уже на следующую стадию производства или детального
архитектурного проектирования и кодирования, тестирования,
интеграции и так далее. И с другой стороны, выявляет проблемы,
которые важны для текущих и последующих архитектурных
тестов и их результатов, те атрибуты качества и их баланс,
которые являются существенными для продукта, могут дать
возможность проявить определенные проблемы архитектурного
тестирования на каждом из этапов ACDM, на каждом из этапов
проектирования. Вторая существенная вещь, которая
происходит — это архитектурное тестирование.
С одной стороны, решаются проблемы, выявленные при оценке
проекта, при этом, с другой стороны, архитектурное тестирование
представляет собой основу для понимания того, насколько
продукт готов к производству и для уточнения проекта.