I'm trying to refactor a big tightly coupled application and trying to make it more maintainable and flexible.
I've got many unit tests, so I'm hoping to refactor step by step.
Which Design & Refactoring Patterns should I consider implementing / applying to accomplish this task ?
I can think of some :
Also feel free to share your own experience and best practices for this kind of refactoring job.
UPDATE
I'm carrying out this refactoring because of the reasons explained in this question. Basically I can't implement a plugin system without extracting an couple of interfaces and those interfaces are highly coupled which requires separated the application in 40+ DLLs to just compile without circular referencing problem.