Архитектурное проектирование

preview

Архитектурное проектирование - это комплекс мер, направленных на создание и проработку архитектурных решений, которые оформляются в виде документации на проект.

Основная цель: формализация процесса проектирования. Для этого выделяются следующие "строительные" блоки:

  • Сбор и выделение значимых требований
  • Анализ предметной области
  • Формализация процесса построения и описания архитектуры
  • Использование (в том числе повторное) готовых концепций проектирования
  • Использование формализованных подходов

Архитектурно значимые требования

Duration: 5

Это такие требования, которые оказывают измеримое влияние на архитектуру компьютерной системы. Они включают как функциональные так и нефункциональные требования. Но не все требования являются значимыми.

Система считается спроектированной, когда достигнуты Архитектурно значимые требования.

Аспекты, которые учитываются при формировании значимых требований: - Описательные характеристики - Индикаторы - Эвристики (оценки)

Подход сверху-вниз

Duration: 5

Хорошо показывает себя на больших проектах, на проектах с высокими рисками (здравоохранение, финтех).

Достоинства:

  • естественная декомпозиция - разбивать на части всегда проще, чем объединять
  • эффективная грануляция проекта
  • прогнозируемые сроки

Недостатки:

  • сложно работать в непроработанных доменах
  • сложно выполнять исследовательские задачи
  • легко уйти в "высокие уровни абстракции"

Подход снизу-вверх

Duration: 5

Идеально для маленьких и средних проектов (заказная разработка, аутсорс).

Достоинства:

  • прагматичный подход, позволяет оттолкнуться от того что надо прямо сейчас.
  • не требует глубокой проработки домена
  • позволяет решать исследовательские задачи
  • возможность итеративной разработки
  • совместимость с Agile

Недостатки:

  • сложно прогнозировать сроки
  • сложно укрупнять
  • большая доля рефакторинга
  • гранулирование "хромает"
  • риск закопаться в деталях

Общий архитектурный цикл

Duration: 10

Проектирование архитектуры идет по следующему циклу:

  • Сбор требований
  • Анализ
  • Формирование архитектурных кандидатов
  • Проверка на соответствие требованиям
  • Эволюция

Концепции архитектурного проектирования

Duration: 5

  • Референсные архитектуры - готовые архитектурные концепции, с хорошим уровнем документирования, которые можно использовать как отправную точку разработку проекта;
  • Архитектурные тактики - общее описание действий, которые используются для достижения значимых требований (примеры, "сокрытие информации", "генерализация модуля", "извлечение компонента" и т.д.)
  • Готовое решение - рассмотрение части архитектуры как "черного ящика", функционирующего на базе готового продукта. Очень часто, это софт с открытым исходным кодом.

Недостатки использования ПО с открытым кодом в больших проектах:

  • "размытие" ответственности
  • законодательные коллизии (например, налоговый и бухгалтерский учет)
  • сложности с сопровождением и обновлением

Подходы к проектированию

Duration: 10

Получение сбалансированного проект - это одна из основных задач архитектурного проектирования. Чтобы удерживать "баланс" архитекторы часто используют готовые методы построения дизайна. В целом все методы соответствуют общему циклу разработки архитектуры, но сфокусированы на разных нюансах. Допускается комбинирование подходов.

  • Аттрибутивный дизайн - итеративный подход, сфокусирован на анализе и удовлетворении атрибутов качества, этот подход стоит выбрать на этапе проработки требований, ранний этап проектирования. Данный подход не рассматривает возможность "поздней" эволюции, документирование и концепции;
    • MS подход - в основном концентрируется на формализованных "целях" проекта, когда список целей может быть как следствием атрибутов качества, так и самостоятельной сущностью. Это очень обобщенный подход, без фиксации деталей, архитектор свободен дополнить его на свое усмотрение;
  • Architecture-centric design method (ACDM) - подход более высоких уровней абстракции, чем аттрибутивный дизайн. Фокусировка на достижение бизнес требований, обобщенного описания проекта и исследовательскую работу.
  • Architecture development method (ADM) - часть TOGAF, подход для построения Enterprise архитектур, с хорошо формализованным и подробным циклом работы.