Reengineering .NET : [injecting quality testability and architecture into existing systems] Implementing a service oriented architecture Understanding application architecture Unit testing Understanding the dependency inversion principle Using test doubles with unit tests Initial solution review Planning the project Identifying development tools and the build process Cleaning up legacy solutions Establishing the foundation Basic refactoring to services Advanced refactoring to services Refactoring to a controller Reengineering .NET projects with Visual Studio 2012