Tools for Repaying Technical Debt

There are various kinds of tools available to help you identify design smells and candidates for refactoring, quantify their significance, visualize the accumulated technical debt, and perform refactoring to repay debt. Let us discuss the following kinds of tools in this article: • Comprehension tools • Critique tools, code clone

Continue reading »

War Story: Hacks vs. Proper Design Choices

One of the reasons that developers may resort to hacks and thus introduce design smells instead of adopting a systematic process to achieve a particular requirement is ‘viscosity’. Software viscosity refers to the “resistance” (i.e., increased effort and time) that must be encountered when the correct solution is being applied

Continue reading »

What Causes Design Smells?

What are design smells? Design smells are certain structures in the design that indicate violation of fundamental design principles and negatively impact design quality. Why do we have to care about design smells? Main reason is that smells negatively impact software quality, and poor software quality in turn indicates technical debt.

Continue reading »

10 Tips for Writing Maintainable Code

Recently I came across a very good book on writing maintainable code: https://amzn.com/1491953527. This book is written by very experienced authors (from Software Improvement Group – SIG). What I like about this book is, it condenses the experiences of the authors in 10 specific guidelines. Based on my experience working in

Continue reading »

Tools for Software Architecture Refactoring

As the software evolves, the architecture tends to degrade or degenerate (also known as “architecture decay” or “architecture erosion”). How do we know if the architecture is decaying and how to address it? One answer is to look at the “architectural smells” perspective. If new architectural smells get accumulated over

Continue reading »

Refactoring Uncommon Design Smells

We started working on design smells many years earlier than when we started writing our book “Refactoring for Software Design Smells“! I was digging through some of the old documents and remembered that we did not cover many of the smells considering them to be “uncommon smells”. By “uncommon smells”, I mean the ones

Continue reading »