Antipatterns: Identification, Refactoring, and Management (Auerbach Series on Applied Software Engineering)