Архитектура: Неформальные определения

Translations:English
Опубликовано:

В 2003 году товарищ Ральф Джонсон выдал сразу несколько вариантов определения архитектуры. Все они до сих пор используются, поэтому имеет смысл быть про них в курсе.

Для начала представим Ральфа. Он был научным руководителем студента, придумавшего термин «рефакторинг». А ещё Ральф входит в банду под названием «Gang of Four». Эта банда в 1994 написала знаменитую книжку «Паттерны проектирования». Получается, именно Ральф подкинул на собеседования разработчиков классические вопросы про синглтоны и абстрактные фабрики.

Итак, Ральф авторитетен в вопросах разработки ПО, поэтому посмотрим на его определение №1:

Архитектура - это коллективное понимание дизайна системы.
То есть архитектура - это в первую очередь социальный конструкт. Это точка зрения, о которой договорились люди, заинтересованные в проекте. Ну а договорились они в основном о том, как система разделена на компоненты, а также о том, как эти компоненты взаимодействуют.

Определение №2:

Архитектура - это проектные решения, которые хотелось бы сделать правильно как можно раньше.
Это звучит логично, если проектировать программные системы так же, как проектировать самолёты. Если ты выбрал модель двигателя, то всё, назад пути нет. Зато тебе понятен адекватный размах крыльев, грузоподъемность, а также количество мест у окна. Поэтому выбор модели двигателя является архитектурным решением (если начинать проектирование самолёта с этого решения).

Определение №3:

Архитектура – это про важные вещи. Чем бы эти важные вещи не были.

Это развитие определения №2 и оно крайне популярно. Смысл в том, что когда проектируешь систему, нужно сначала понять, что для этой системы важно. Потом нужно в первую очередь тратить энергию на поддержание важного в хорошем состоянии. Если намечается рабочая встреча о каком-то важном решении на проекте, это 100% архитектурная встреча.

Отделять важное от неважного – непростая задача. Допустим, каждый человек является архитектором своей жизни. Судя по статистике, мало кто может выделить важное даже в своей личной жизни, а потом удержать это важное в хорошем состоянии. Понять можно, всё-таки горизонт планирования лет 50.

С рабочими проектами всё чуть проще. В IT считается, что если проект мог быстро впитывать изменения больше 5 лет, архитектор был хорошим.

Для системы «самолёт» важен надёжный крепёж. Для системы «город» важны минимальные накладные расходы на транспорт.

Три определения архитектуры в этой статье далеко не идеальны. Но сводятся они к тому, что на проекте есть список важных коллективных решений. Если переиграть список этих решений заново, получится очень похожая система потому что архитектура та же. Архитектурное решение в письменном виде называется ADR (architectural decision record). В 2024 году ситуация с управлением ADR-ами чуть похуже ситуации с управлениями требованиями, но много кто пытается навести порядок, что не может не радовать.

(В следующей статье посмотрим на современные представления об архитектуре…)