Любое приложение должно быть спроектировано с учетом необходимости частых изменений. Это согласуется с тем, что основная ценность приложения - это его гибкость Две ценности ПО - поведение и структура. Лучший способ сделать это - составить приложение из взаимозаменяемых модулей, состоящих из Компонент ПО.
Разбиение системы на модули должно быть осуществлено таким образом, чтобы изменения в большей части случаев затрагивали только один, редко два или больше, модуля (см. Single Responsibility Principle). Также модули необходимо создавать с расчетом на их дальнейшее переиспользование в других комбинациях для других систем.
Модульные программы просты. Простые модули (компоненты ПО) позволяют очевидным образом разделять код по горизонтальным или вертикальным уровням. Сложные компоненты ПО тоже можно как-то организовать, но это не даст столь явных результатов - программа по-прежнему будет сложной.