Refactoring For Software Design Smells: Managing Technical Debt by Girish SuryanarayanaRefactoring For Software Design Smells: Managing Technical Debt by Girish Suryanarayana

Refactoring For Software Design Smells: Managing Technical Debt

byGirish Suryanarayana, Ganesh Samarthyam, Tushar Sharma

Paperback | November 3, 2014

Pricing and Purchase Info

$90.99 online 
$96.95 list price save 6%
Earn 455 plum® points

Prices and offers may vary in store


In stock online

Ships free on orders over $25

Not available in stores


Awareness of design smells indicators of common design problems helps developers or software engineers understand mistakes made while designing, what design principles were overlooked or misapplied, and what principles need to be applied properly to address those smells through refactoring. Developers and software engineers may "know" principles and patterns, but are not aware of the "smells" that exist in their design because of wrong or mis-application of principles or patterns. These smells tend to contribute heavily to technical debt further time owed to fix projects thought to be complete and need to be addressed via proper refactoring.

Refactoring for Software Design Smellspresents 25 structural design smells, their role in identifying design issues, and potential refactoring solutions. Organized across common areas of software design, each smell is presented with diagrams and examples illustrating the poor design practices and the problems that result, creating a catalog of nuggets of readily usable information that developers or engineers can apply in their projects. The authors distill their research and experience as consultants and trainers, providing insights that have been used to improve refactoring and reduce the time and costs of managing software projects. Along the way they recount anecdotes from actual projects on which the relevant smell helped address a design issue.

  • Contains a comprehensive catalog of 25 structural design smells (organized around four fundamental design principles) 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 points toward its potential refactoring
  • Includes illustrative examples that showcase the poor design practices underlying a smell and the problems that result
  • Covers pragmatic techniques for refactoring design smells to manage technical debt and to create and maintain high-quality software in practice
  • Presents insightful anecdotes and case studies drawn from the trenches of real-world projects
Girish Suryanarayana is currently a Senior Research Scientist at Research and Technology Center, Siemens Technology and Services Pvt. Ltd. Bangalore, India. At Siemens, he is involved in providing architectural guidance to software development teams, pursuing research in topics related to software architecture and cloud computing, and ...
Title:Refactoring For Software Design Smells: Managing Technical DebtFormat:PaperbackDimensions:258 pages, 8.75 × 6.35 × 0.68 inPublished:November 3, 2014Publisher:Morgan KaufmannLanguage:English

The following ISBNs are associated with this title:

ISBN - 10:0128013974

ISBN - 13:9780128013977

Look for similar items by category:


Table of Contents


  1. Technical Debt
  2. Design Smells
  3. Abstraction
  4. Encapsulation
  5. Modularization
  6. Hierarchy
  7. Smell Sociology
  8. Repaying Technical Debt in Practice

Appendix A: List of object-oriented design principles

Appendix B: List of software tools for replaying technical debt

Appendix C: Notations for figures that have been used in the book

Appendix D: Further suggested reading

Editorial 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