Моделирование возникновения модульности в ходе эволюции дало элегантный, хотя и тривиальный результат: если соединение имеет цену, то модульность возникает, а если соединение цены не имеет, то модульности не будет (
http://www.sciencedaily.com/releases/2013/01/130130082300.htm). Это давно понятно инженерам, но промоделировано теперь и для биологических сетей, и заодно проговорено ещё раз явно.
Я обычно, рассказывая про понятие "система", говорю, что в инженерии "система" и "модуль" чуть ли не синонимы. И, конечно, хороший дизайн -- это правильное проведение границ системы, при котором отнюдь не "всё со всем связано". Каждое соединение имеет цену, и хорошая модульность позволяет эту цену снизить именно за счёт того, что уже не "всё со всем связано".
Голдратт, кстати, любил замечать, что системы без модульности (где "всё со всем связано") -- это очень простые системы. В них можно действовать из любой точки, и твоё воздействие легко передастся через всю систему. А вот сложные системы -- там связность много меньше (ибо поддержание каждой связи оказывается дорогим), и чтобы воздействовать на всю систему, придётся лично побывать в каждой точке, мало чего можно будет добиться "дистанционно".
Alan Kay любит тоже биологическую модульность показывать в качестве примера -- и делает вывод, что модули у программистов слишком маленькие и простые, ибо в биологии модули много больше и сложней, и это он считает правильным для повторения.
Надо будет подробней про теорию и практику модульности покопать.