Архитектура: Здания

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

Особенность строительства дома в том, что нужно всё важное спланировать заранее. Важного много, но возьмём что-нибудь одно, например, фундамент.

Тип фундамента зависит от кучи переменных. Если дом планируется возле речки или озера, там высокий уровень грунтовых вод. Поэтому нужен фундамент на сваях. Сваи не смогут удержать тяжёлый кирпичный дом, поэтому кирпичных домов возле рек и озёр нет. Если фундамент лежит выше уровня промерзания грунта, зимой грунт ниже фундамента замёрзнет и вспучится из-за расширения воды. Это может сломать фундамент, а за ним и дом. Известно, что в Москве грунт может промёрзнуть на 1.7 метра, а в Новосибирске на 2.4 метра. Раз в этих городах фундамент нужно закапывать так глубоко, имеет смысл делать цокольные этажи.

В IT для фундамента частенько используют слово “платформа”. Если смотреть глобально, мы живём во времена третьей платформы. Если смотреть локально, каждый IT-продукт с будущим пытается стать платформой. Аналогично фундаментам домов, платформы боятся грунтовых вод (текучки кадров), промерзания грунта (недостатка финансирования) и ещё много чего.

Если нужно построить несколько домов и сделать это красиво, всё становится гораздо сложнее. Например, мы хотим пять домов и фонтан между ними. Архитектору нужно продумать не только важные вещи вроде расположения подъездов, но и всякие мелочи. Например, нужно представить, что будет происходить с фонтаном на Новый год в Сибири.

Если ты архитектор, и у тебя есть чертежи, под которыми подписался заказчик, работать легко и приятно. Если заказчик внезапно захочет построить ещё один этаж (а твой фундамент на дополнительный вес не рассчитан), можно сослаться на то, что в проекте нарисовано и согласовано не это. Не нужно лишний раз пускаться в торги и споры. Не нужно выкапывать фундамент и строить всё заново. Сводится всё к тому, что в строительстве домов парадигма мышления “делаем чётко по документации” является оптимальной. В строительстве софта не всегда так. Всё-таки soft - это “мягкий”. Мягкое должно легко менять форму.

В общем, аналогии со строительством домов при написании программ могут быть мощными и заманчивыми, но у них есть предел. В любом случае, такие аналогии могут очень сильно обогатить образ мышления архитектора ПО. Хорошо, когда у специалиста есть множество инструментов, которые можно использовать для креативного решения возникающих задач.

На картинке ниже сначала нарисована классическая планировка дома. Под ней нарисована диаграмма компонентов трекера задач. Такая диаграмма компонентов может быть сильно понятнее UML-ной диаграммы компонентов потому что на ней сразу виден относительный размер компонента. Вместо стрелок между компонентами нарисованы двери.

Сверху планировка дома, снизу планировка информационной системы.

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