Эффективность «модульности» зависит от критериев, используемых при разделении системы на модули.
Я хочу предложить несколько критериев, которые можно использовать при разложении системы на модули.
Сплоченность : функциональность в модуле связана.
Низкая связь : у вас есть минимальные зависимости между модулями.
Скоординированный жизненный цикл: изменения в функциональности внутри модуля, как правило, происходят одновременно. Обычно это следствие высокой сплоченности.
Я думаю, что принцип единой ответственности был бы хорошим руководством. Попытайтесь определить обязанности для каждого модуля и заставить каждый модуль нести ответственность за свое дело.
См. http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
Это очень старый вопрос.
Интересное чтение тоже: http://www.cs.umd.edu/class/spring2003/cmsc838p/Design/criteria.pdf