Принципы хорошей архитектуры

В книге "Руководство по проектированию архитектуры приложений (часть 2)" написано:

Создайте модель архитектуры на основании известных на данный момент сведений и составьте список вопросов, ответы на которые должны быть даны в последующих сценариях и итерациях.

Детально опишем основные этапы итеративного процесса проектирования архитектуры:

  1. Определение целей архитектуры. Наличие четких целей поможет сосредоточиться на архитектуре и правильном выборе проблем для решения. Точно обозначенные цели помогают определить границы каждой фазы: момент, когда завершена текущая фаза и все готово для перехода к следующей.
  2. Основные сценарии. Используйте основные сценарии, чтобы сосредоточиться на том, что имеет первостепенное значение, и проверяйте возможные варианты архитектур на соответствие этим сценариям.
  3. Общее представление приложения. Определите тип приложения, архитектуру развертывания, архитектурные стили и технологии, чтобы обеспечить соответствие вашего дизайна реальным условиям, в которых будет функционировать создаваемое приложение.
  4. Потенциальные проблемы. Выявите основные проблемные области на основании параметров качества и потребности в сквозной функциональности. Это области, в которых чаще всего делаются ошибки при проектировании приложения.
  5. Варианты решений. В каждой итерации должен быть создан «пилот» или прототип архитектуры, являющийся развитием и доработкой решения. Прежде чем переходить к следующей итерации, необходимо убедиться в соответствии этого прототипа основным сценариям, проблемам и ограничениям развертывания.

Затруднения

Чаще всего при проектировании приложения затруднения вызывают вопросы:

  1. Аутентификация
  2. Авторизация
  3. Кэширование
  4. Связывание и связность (GRASP: сильная связность это хорошо, а вот сильное зацепление это плохо)
  5. Управление исключениями
  6. Протоколирование, аудит и инструментирование
  7. Валидация
  8. Какие основные риски могут возникнуть при использовании выбранного архитектурного решения (например выбранный архитектурный подход увеличит в 10 раз нагрузку на процессор, или потребует многократного увеличения оперативной памяти, или будет плохо масштабируемым)
  9. Какие допущения были сделаны в этой архитектуре
  10. Плюсы и минусы по сравнению с другими архитектурными подходами

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


10.02.2010 08:35