Reengineering .NET: Injecting Quality, Testability, and Architecture into Existing Systems (Microsoft Windows Development Series)