Archive for Month: April 2016

Refactoring for Software Architecture Smells: Potential Research Directions

Smells and refactoring have received considerable focus from the academia as well as from the industry in the past two decades. Various tools, processes, techniques, and practices have been proposed to identify smells arising at the granularity of code and (to some extent) of design. However, architecture smells and corresponding […]

Ten Must to Read Books for Software Architects

In our workshops on software architecture, one of the questions towards the end is: “There is so much to learn about software architecture – what books would you recommend us to read?”. To answer this question, we provide you a list of 10 must to read books in our opinion […]

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 […]