Перепроектирование -- изменение характера связей между частями программной системы и/или числа этих частей.
Перепроектирования все пытаются избежать.
Но если оно вдруг потребуется (а это бывает не редко в развивающихся проектах, хотя бы на уровне отдельных модулей, а не всей системы), то его легкость зависит: