Архитектура – искусство расходовать пространство впустую

Программная система напоминает город – запутанная сеть шоссе и гостиниц, объездных дорог и зданий. В городе кипит деловая жизнь; новые потоки управления постоянно рождаются, бурлят жизнью и угасают. Данные накапливаются, хранятся и уничтожаются. Город застроен разными зданиями: одни – высокие и изящные, другие – приземистые и функциональные, третьи – убогие и полуразвалившиеся. В потоке данных возникают «пробки», в нем существуют свои «часы пик» и дорожные работы. Качество программного «города» напрямую связано с тем, какой объем планирования был вложен в него.

Некоторым программным системам везет – они создаются опытными архитекторами, и их дизайн тщательно продуман. Структура таких систем создает ощущение элегантности и баланса. Благодаря четкой и логичной разметке в них легко ориентироваться. Судьба других сис -

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

Какую судьбу вы бы выбрали для своего кода? Какой программный город вам бы хотелось построить?

• Системы имели примерно одинаковый размер (около 500 ООО строк кода).

• Обе были «встроенными» решениями в потребительских аудиоустрой – ствах.

• Экосистема обоих проектов была достаточно зрелой и прошла много циклов выпуска продукта.

• Оба решения строились на базе Linux.

• Код был написан на С++.

• Обе системы были разработаны «опытными» программистами (которым иногда стоило бы действовать более ответственно).

• Архитекторами были сами программисты.

Имена персонажей этой истории были изменены, чтобы защитить ее участников (как невиновного, так и виноватого).

Related posts:

  1. Что такое архитектура?

Подпишитесь на рассылку по почте:

Введите свой адрес почты, чтобы получать уведомления о новых статьях.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>