ADD - это методика определения программной архитектуры, в которой процесс ' композиции основывается на предполагаемых атрибута качества продукта. Это рекурсивный процесс декомпозиции, на каждом из этапов которого происходит отбор тактик и архитектурных образцов, удовлетворяющих тем или иным сценариям качества, а также распределение функциональности, направленное на конкретизацию типов модулей данного образца. В контексте жизненного цикла ADD располагается сразу после анализа требований, а начинается он, как мы уже говорили, в тот момент, когда об архитектурных мотивах можно говорить с достаточной степенью уверенности.
Результатом применения ADD являются первые несколько уровней представления декомпозиции модулей архитектуры, а также все другие связанные с ними представления. Не стоит, впрочем, думать, что после ADD становятся известны все детали представлений, — система описывается как набор контейнеров функциональности и существующих между ними взаимосвязей. Во всем процессе проектирования это первый случай сочленения архитектуры, результаты которого, естественно, весьма приблизительны. Тем не менее, в контексте реализации предполагаемых атрибутов качества это очень важный момент, поскольку именно здесь закладываются основы достижения функциональности. Различие между архитектурой, являющейся результатом выполнения ADD, и архитектурой, готовой к реализации, лежит в плоскости принятия подробных проектных решений. В частности, это может быть выбор между конкретными объектно-ориентированными образцами проектирования, с одной стороны, и промежуточным программным обеспечением, применение которого сопряжено с многочисленными архитектурными ограничениями, — с другой. Архитектура, спроектированная средствами ADD, предусматривает отсрочку принятия этого решения, благодаря чему достигается большая гибкость.
С участием общих сценариев из главы 4, а также тактик и образцов из главы 5 можно создать ряд различных процессов проектирования. Отличаются они принятыми принципами деления проектных работ и содержанием процесса проектирования. Ниже мы приведем более подробное описание ADD — тем самым мы постараемся показать, как следует реализовывать общие сценарии и тактики, как делить проектные работы на отдельные участки и что, по нашему мнению, являет собой суть процесса проектирования.
Метод ADD мы продемонстрируем на примере архитектуры линейки продуктов для открывателя гаражной двери в рамках домашней информационной системы. Предположим, что в обязанности открывателя входит поднятие и опускание Двери тремя способами: согласно положению переключателя, с пульта дистанционного управления (ПДУ), а также средствами домашней информационной системы. Будем также иметь в виду, что с помощью последней можно проводить Диагностику неисправностей открывателя.