M>1. Поддержки всех возможных языков на уровне библиотек либо простоты имплементации этой поддержки.
M>2. Поддержки распределенности.
M>3. Контроля исполняемых в текущий момент времени задач.
M>4. Фиксации интерфейсов модулей, чтобы можно было заменять модули без риска развалить всю систему.
M>5. Простоты перекомбинации модулей для расширения функционала системы.
Все эти задачи можно решить методом обмена сообщениями. Можно почитать
здесь. Здесь масса шаблонов описывается