Программная система напоминает город – запутанная сеть шоссе и гостиниц, объездных дорог и зданий. В городе кипит деловая жизнь; новые потоки управления постоянно рождаются, бурлят жизнью и угасают. Данные накапливаются, хранятся и уничтожаются. Город застроен разными зданиями: одни – высокие и изящные, другие – приземистые и функциональные, третьи – убогие и полуразвалившиеся. В потоке данных возникают «пробки», в нем существуют свои «часы пик» и дорожные работы. Качество программного «города» напрямую связано с тем, какой объем планирования был вложен в него.
Некоторым программным системам везет – они создаются опытными архитекторами, и их дизайн тщательно продуман. Структура таких систем создает ощущение элегантности и баланса. Благодаря четкой и логичной разметке в них легко ориентироваться. Судьба других сис -
тем складывается не так благополучно; это не города, а программные деревеньки, хаотично растущие на случайном скоплении кода. Их транспортная инфраструктура не справляется с потоками, а строения тусклы и непривлекательны. Оказавшись внутри такой системы, вы совершенно не представляете, как выбраться наружу.
Какую судьбу вы бы выбрали для своего кода? Какой программный город вам бы хотелось построить?
• Системы имели примерно одинаковый размер (около 500 ООО строк кода).
• Обе были «встроенными» решениями в потребительских аудиоустрой – ствах.
• Экосистема обоих проектов была достаточно зрелой и прошла много циклов выпуска продукта.
• Оба решения строились на базе Linux.
• Код был написан на С++.
• Обе системы были разработаны «опытными» программистами (которым иногда стоило бы действовать более ответственно).
• Архитекторами были сами программисты.
Имена персонажей этой истории были изменены, чтобы защитить ее участников (как невиновного, так и виноватого).
Related posts: