Four Strategies for Managing Technical Debt

Current literature related to software engineering research, developers’ blogs, as well as software engineering developers’ conferences talk in a great deal about technical debt. It is relevant to ask — why technical debt is an important concern for a software development team? Why should we care about technical debt? What if technical […]

Lifecycle of smells

Track Smells for Improved Maintainability

It is commonly understood that an excessive number of smells in a software system impair the quality of the software and makes the software hard to maintain and evolve. A lot about smells has been studied and written in last two decades. You may find a large collection of smells […]

Are We Developing Features or Our Future Nightmares

A recent study (presentation, paper) conducted on close to 2000 open-source C# projects revealed that on average every C# class that we work with has approximately 2 design smells and 6 implementation smells. The study shows that unutilized abstraction and duplicate abstraction are the most frequently occurring design smells. Similarly, […]

Does Your Architecture Smell?

Disclaimer: Here is the original source of the article. Reproduced here with permission. Kent Beck coined the term “code smell” in the popular Refactoring book by Martin Fowler and defined it informally as “certain structures in the code that suggest (sometimes they scream for) the possibility of refactoring”. An excessive […]

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