Refactoring for Software Design Smells
Managing Technical Debt
- 1st Edition - November 3, 2014
- Latest edition
- Authors: Girish Suryanarayana, Ganesh Samarthyam, Tushar Sharma
- Language: English
Awareness of design smells – indicators of common design problems – helps developers or software engineers understand mistakes made while designing, what design principles were… Read more
- Contains a comprehensive catalog of 25 structural design smells (organized around four fundamental designprinciples) that contribute to technical debt in software projects
- Presents a unique naming scheme for smells that helps understand the cause of a smell as well as pointstoward its potential refactoring
- Includes illustrative examples that showcase the poor design practices underlying a smell and the problemsthat result
- Covers pragmatic techniques for refactoring design smells to manage technical debt and to create and maintainhigh-quality software in practice
- Presents insightful anecdotes and case studies drawn from the trenches of real-world projects
- Dedication
- Foreword by Grady Booch
- Foreword by Dr. Stéphane Ducasse
- Preface
- Acknowledgments
- Chapter 1. Technical Debt
- 1.1. What is Technical Debt?
- 1.2. What Constitutes Technical Debt?
- 1.3. What is the Impact of Technical Debt?
- 1.4. What causes technical debt?
- 1.5. How to Manage Technical Debt?
- Chapter 2. Design Smells
- 2.1. Why Care About Smells?
- 2.2. What Causes Smells?
- 2.3. How to address smells?
- 2.4. What Smells Are Covered in This Book?
- 2.5. A Classification of Design Smells
- Chapter 3. Abstraction Smells
- 3.1. Missing Abstraction
- 3.2. Imperative Abstraction
- 3.3. Incomplete Abstraction
- 3.4. Multifaceted Abstraction
- 3.5. Unnecessary Abstraction
- 3.6. Unutilized Abstraction
- 3.7. Duplicate Abstraction
- Chapter 4. Encapsulation Smells
- 4.1. Deficient Encapsulation
- 4.2. Leaky Encapsulation
- 4.3. Missing Encapsulation
- 4.4. Unexploited Encapsulation
- Chapter 5. Modularization Smells
- 5.1. Broken Modularization
- 5.2. Insufficient Modularization
- 5.3. Cyclically-Dependent Modularization
- 5.4. Hub-like Modularization
- Chapter 6. Hierarchy Smells
- 6.1. Missing Hierarchy
- 6.2. Unnecessary Hierarchy
- 6.3. Unfactored Hierarchy
- 6.4. Wide Hierarchy
- 6.5. Speculative Hierarchy
- 6.6. Deep Hierarchy
- 6.7. Rebellious Hierarchy
- 6.8. Broken Hierarchy
- 6.9. Multipath Hierarchy
- 6.10. Cyclic Hierarchy
- Chapter 7. The Smell Ecosystem
- 7.1. The Role of Context
- 7.2. Interplay of Smells
- Chapter 8. Repaying Technical Debt in Practice
- 8.1. The Tools
- 8.2. The Process
- 8.3. The people
- Appendix A. Software Design Principles
- Appendix B. Tools for Repaying Technical Debt
- Appendix C. Notations for Figures
- Appendix D. Suggested Reading
- Bibliography
- Index
"Given its practical orientation and the variety of real-world examples offered throughout the book, this is a must-have for any practicing software engineer, developer, software architect, or anyone else interested in software design."—Computing Reviews
"...a delightful, engaging, actionable read...you have in your hand a veritable field guide of smells...one of the more interesting and complex expositions of software smells you will ever find...The concept of technical debt is central to understanding the forces that weigh upon systems, for it often explains where and how and why a system is stressed. What delights me about this present book is its focus on technical debt and refactoring as the actionable means to attend to it."—From the foreword by Grady Booch, IBM Fellow and Chief Scientist for Software Engineering, IBM Research
"Evolving software inevitably accumulates technical debt, making maintenance increasingly painful and expensive. The authors, based on their extensive experience, categorize the major design problems (smells) that come up in software, and lucidly explain how these can be solved with appropriate refactoring."—Diomidis Spinellis, Author of “Code Reading” and “Code Quality”, Addison-Wesley Professional
"...the book I would have loved to write...Refactoring for Software Design Smells is an excellent book. It is another milestone that professionals will use...I’m sure that you will learn a lot from it and that you will enjoy it."—From the foreword by Stéphane Ducasse, Co-author of Object-Oriented Reengineering Patterns, Morgan Kaufmann
- Edition: 1
- Latest edition
- Published: November 3, 2014
- Language: English
GS
Girish Suryanarayana
GS
Ganesh Samarthyam
TS