Revisiting LCOM

Along with other metrics, LCOM (Lack of Cohesion in Methods) was first defined by C&K in the OOPSLA paper [1] that invented a new field of object-oriented metrics. LCOM shows the degree of lack of cohesion among methods of a class. In other words, it reveals the extent to which […]

A Few 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 smells, considering them to be “uncommon smells”. By “uncommon smells”, I mean […]

Common (and Uncommon) Smells in Java Code

Smells are structures in code that violate design principles and negatively impact quality. Here are some of the bad smells in Java code. Constant Interface Constant interfaces have only static final data members declared in them without any methods. Suggested refactoring for this smell depends on kind of constants present […]

How to Carry Out a Quick Design Assessment – An Example

Poor design quality and huge technical debt are common issues perceived in real-life software projects. Carrying out a software design quality assessment effectively and adopting the recommendations from it could improve the design quality. A comprehensive design assessment requires us to know the requirements in detail and weight different design […]

Why Care About Design Principles?

“The computer industry is the only industry that is more fashion-driven than women’s fashion” said Larry J. Ellison (CEO of Oracle). Technology is changing more rapidly than ever before – with old buzzwords getting quickly replaced by new ones (do you still remember buzz words like “grid computing” and “semantic […]

“Refactoring for Software Architecture Smells” – IWoR

The paper “Refactoring for Software Architecture Smells” to appear in the proceedings of the 1st International Workshop on Refactoring (IWoR), co-located with Automated Software Engineering (ASE) conference, to be held on 4 Sept 2016 in Singapore. Abstract Code smells and refactoring have received considerable interest from the academia as well […]

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