Как правило, стандарты кодирования также определяют взаимодействие между модулями. Для относительно простых проектов (до 50.000 строк) у нас используется стандарт uCOS, но мне надоело перекомпилявить всё из-за добавления одной глобальной переменной, буду смотреть другое. Сначала решите, какой стандарт вам подходит, а потом какая идеология взаимодействия лучше ложится.