CAD, IDE, всякие текстовые редакторы. Можно долго не думать и сделать клиент-сервер, слабую связность везде, но два вопроса:
1. Накладные расходы -> теряется скорость отклика.
2. Как задавать зависимости между компонентами? Например, есть компоненты А и B. Если А работает, то B должен подождать. Но для этого B должен знать про существование А, а это уже не слабая связность. Можнно вввести блокировки ресурсов, конечно, но это банальные варианты из головы, потому что я не проектировал такие штуки никогда.
Что можно почитать на тему проектирования таких штук?