Moderne Entwicklungsmethoden, vor allem Extreme Programming, gehen heute davon aus, dass sich das Design einer Software im Laufe der Entwicklung verändert und kontinuierlich an die aktuellen Anforderungen angepasst werden muss. Refactoring ist dazu elementarer Bestandteil moderner Entwicklungsprozesse. Refactoring bedeutet dabei, die interne Struktur der Software zu modifizieren, um sie verständlicher und leichter änderbar zu gestalten, ohne dass sich das gewünschte funktionale Verhalten verändert. Während Refactorings bei kleinen Projekten noch überschaubar sind, werden sie in größeren Projekten leicht zu unangenehmen Aufgaben. Vor allem komplexere Umstrukturierungen, Refactorings von veröffentlichten APIs und solche, die die Datenbank betreffen, führen häufig zu Problemen. Wie man als Entwickler oder Projektleiter damit umgehen kann, zeigen die Autoren dieses Buches anhand eigener Erfahrungen in kommerziellen Projekten. Sie geben dem Leser eine Reihe von Tipps und Tricks mit auf den Weg, wie er Refactorings großer Systeme in seinen eigenen Entwicklungsprojekten bewältigen kann. Erläutert werden z.B. klassische Fragen, u.a.: Wie können große Refactorings in kleine Schritte zerlegt werden, oder wie können komplexe Refactorings in die tägliche Entwicklung integriert werden? Besonders die Aspekte der Planbarkeit und der konsequenten, auch über einen längeren Zeitraum dauernden Durchführung eines großen Refactorings werden in den Vordergrund gestellt. Dabei gehen die Autoren auch detailliert auf die folgenden Themen ein: Tests, Refactorings bei relationalen Datenbanken, API-Refactoring sowie das werkzeugbasierte Erkennen und Vermeiden von Architektur-Smells.