Компоненты — это единицы развертывания (модули/плагины не имеют возможности самостоятельного развертывания, а компоненты имеют).
CCP: Common Closure Principle — приложение не разделяется на компоненты (нет точно очерченных границ контекстов бизнес-логики), единая кодовая база (весь код в одном репозитории)
REP: Reuse/Release Equivalence Principle — приложение разделяется на компоненты (согласно точно очерченным границам контекстов бизнес-логики), единая кодовая база (весь код все еще в одном репозитории). Таким образом изменения всех компонентов согласованны (компоненты не имеют своей версии изменений).
CRP: Common Reuse Principle — приложение разделяется на компоненты (согласно точно очерченным границам контекстов бизнес-логики), компоненты выносятся в отдельные репозитории (каждый компонент имеет свои версии изменений). Таким образом в приложении, изменения в компонентах нужно согласовывать вручную (т.к. компоненты теперь являются вендорами со своими версиями).

В начале разработки наибольшую важность имеет правая сторона треугольника, когда единственной жертвой является повторное использование. Но по мере развития и интеграции в другие проекты фокус начинает смещаться влево.
Возможно, вы уже заметили, что три принципа связности компонентов вступают в противоречие друг с другом. Принципы эквивалентности повторного использования (REP) и согласованного изменения (CCP) являются включительными: оба стремятся сделать компоненты как можно крупнее. Принцип повторного использования (CRP) — исключительный, стремящийся сделать компоненты как можно мельче. Задача хорошего архитектора — разрешить это противоречие. Совет: собирайте вместе все, что изменяется по одной причине и в одно время. Разделяйте все, что изменяется в разное время и по разным причина.