В этом случае программа из «спагетти-кода» превращается в конструктор, состоящий из набора модулей/подпрограмм, взаимодействующих друг с другом по хорошо определенным и простым правилам, что собственно и позволяет контролировать ее сложность, а также дает возможность получить все те преимущества, которые обычно соотносятся с понятием хорошая архитектура:
Масштабируемость (Scalability) - возможность расширять систему и увеличивать ее производительность, за счет добавления новых модулей.
Ремонтопригодность (Maintainability) - изменение одного модуля не требует изменения других модулей
Заменимость модулей (Swappability) - модуль легко заменить на другой
Возможность тестирования (Unit Testing) - модуль можно отсоединить от всех остальных и протестировать / починить
Переиспользование (Reusability) - модуль может быть переиспользован в других программах и другом окружении
Сопровождаемость (Maintenance) разбитую на модули программу легче понимать и сопровождать