Book Review – “Refactoring for Software Design Smells”

ACM SigSoft Software Engineering Notes A short review of our design smells book titled “Refactoring for Software Design Smells: Managing Technical Debt” has recently appeared on ACM Sigsoft Software Engineering Notes. The review is written by Will Tracz. Some of the important points mentioned in the review are presented below: […]

Refactoring for Architecture Smells: An Introduction

“Cities grow, cities evolve, cities have parts that simply die while other parts flourish; each city has to be renewed in order to meet the needs of its populace… Software-intensive systems are like that.” – Grady Booch “Code smells” or “bad smells” [1] are considered structures or code fragments that […]

Evolution of MonoDevelop Structure

In this case study article, we analyze MonoDevelop IDE using Designite tool. We present how the structure and smell profile evolved (during 2011 to 2015 timeframe) with the help of a few graphs. By reading this article, you will know how you can perform a grounded analysis of the evolution […]

Is Refactoring a “Needless Rework”?

“Refactoring is a needless rework – I want my team to get the design right the first time!” told a project manager when one of us were discussing software design with him. Is he right? Why should developers “waste” time improving the design of existing code when they can be […]

Understanding Software Design Quality

What is software design quality? How do we create high-quality designs? How do we evaluate software design quality? These are some of the questions that a developer or an architect may have. In this article, we attempt to bring out our perspective on these aspects. What is design quality? Software […]

Are Patterns Good, Always?

It is a common belief in the developer community that since design patterns encapsulate good and proven design solutions, one should use them as often as possible during software development. However, during our design assessments, we have come across many design cases where design patterns have been used but the […]

Leveraging Smells for Analytics

Software analytics has become a buzzword today and holds the promise of increasing the efficiency of software development and processes. A number of people are spending countless hours mining software repositories to garner retrospective and predictive insights that can disrupt the way software projects are managed. That brings us to […]

Refactor vs Rewrite

Conversations such as “Oh, this is such a cluttered design”, “This software has high technical debt”, and “What a complex piece of code!” may lead to exchanges such as “Can’t we do something about this?”, “Why can’t we scrap this?”, and “Can refactoring make it better?” Essentially, the discussion boils […]


Technical Debt

Technical debt is very similar to financial debt. When a person takes a loan (or uses his credit card heavily), he incurs debt. If he is paying the installment (or the credit card bill) then the created debt is fine and does not create further problems. However, if the person […]