Проблемы с кодом

Недостатки высокоуровневой архитектуры проникли на уровень кода. Проблемы порождают новые проблемы (см. обсуждение разбитых окон у Ханта и Дэвиса [1999]). Из-за отсутствия единой архитектуры и «стиля» проекта никто не потрудился выработать стандарты кодирования, обеспечить использование общих библиотек или применение единых идиом. Не существовало правил назначения имен компонентов, классов и файлов. В проекте даже не существовало единой системы сборки; сценарии командного процессора и «клей», написанный на Perl, сосуществовали с шаке-файлами и файлами проектов Visual Studio. Компиляция этого монстра считалась «обрядом посвящения»!

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

Дополнительные археологические исследования показали, как это произошло: существование Мегаполиса начиналось с серии разнородных прототипов, которые потом объединили, вместо того чтобы выбросить. В сущности, Мегаполис был случайным образованием. Компоненты кода были принудительно сшиты, несмотря на то, что они плохо сочетались друг с другом. Со временем небрежные стежки износились, компоненты стали конфликтовать, что вызвало неизбежное трение в кодовой базе вместо гармоничной работы всех деталей.

Примечание

Нечеткая, рыхлая архитектура ведет к появлению программных компонентов, плохо написанных и плохо сочетающихся друг с другом. Кроме того, для нее характерно дублирование кода и усилий.

Related posts:

  1. Фиаско
  2. Проблемы при проектировании системной архитектуры

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

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

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

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

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