Есть такое понятие — Brownfield development. В общем смысле это поддержка и развитие унаследованного (legacy) кода, как правило с ужасной архитектурой и отсутствием модульных тестов.
У Manning есть хорошая книга по этому вопросу — Brownfield Application Development in .NET
Brownfield Application Development in .Net показывает вам как превратить унаследованное приложение в произведение искусства с шаблонами, инструментами и концепциями, которые обычно применяются при разработке нового приложения. Используя существующее приложение как пример, эта книга учит вас применять техники и лучшие практики для получения поддерживаемой и адекватной программы. Начиная с build-процесса и введению модульных тестов, авторы показывают как настроить среду, чтобы можно было вносить итерационные изменения в код, уменьшая связанность компонентов.