Философско-романтический пост про архитектуру ПО

“Архитектура – это то, что трудно изменить на поздних стадиях разработки. Поэтому ее должно быть как можно меньше.”

Мартин Фаулер

Различия между архитектурой и дизайном

Различия между архитектурой и дизайном

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

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

Я пришел к удивительному заключению о том, что вопросы, которые мы рассматривали вчера, имеют куда большее проникновение во все сферы нашей жизни, чем может показаться сначала. Я приведу простой, на мой взгляд, пример: Строите вы дом. И по каким-то одним вам известным причинам решили построить его деревянным (это, кстати, архитектурное решение). Строили, строили и построили. Есть у вас коробка, крыша, двери и тут приходит вам мысль о том, что было бы не плохо еще и электричество в него провести (т.е. выполнить интеграцию с другой системой – системой силовых сетей). Вот в этот момент вы делаете предположение (non-local assumption) о том, что существуют специальные силовые кабели, которые могут использоваться в деревянных домах, т.е. соответствуют нормам пожаробезопасности и т.д. и т.п. И вы начинаете проектировать подсистему того, как вы подключитесь к системе городской эл.сети, где поставите коробки, автоматы, розетки, etc.

А вот что вы будете делать если таких кабелей в природе не существует?! Т.е. не придумали их еще. Есть простой обычный ПВХ, да только в кирпичном доме вы его можете использовать, а в деревянном нет. А дом то уже стоит!? Поэтому, выбор деревянного дома и его системы энергоснабжения будут архитектурными решениями, а вот перегородки, комнаты и т.д. и т.п. – это уже дизайн и реализация. Т.е. локально вы можете возиться в своем доме сколько угодно и из дерева эти перегородки собирать-разбирать (реализация, рефакторинг), но как только вы будете вынуждены интегрироваться с другой системой – это уже архитектура.

И именно поэтому, очень важно на ранней стадии проектирования постараться все эти предположения (non-local assumption) хотя бы озвучить.

Чтиво:

P.S. Комментарии и обсуждение приветствуются

This entry was posted in Main menu, Soft and tagged , , . Bookmark the permalink.
  • Vladimir Tsukur

    +1 за хороший пример! Озвучить / записать / сделать явными архитектурные решения – первый (но очень важный) шаг. Ведь выстраивать всю систему мы будем именно на этих предположениях!