Architecture Refactoring: A Whole New Ball Game

In my recent workshop on software architecture, I was discussing architecture refactoring. After the workshop, an architect made an important observation: “You have given many case studies and examples on architecture refactoring. But you clearly did not explain the difference between code refactoring and architecture refactoring. Developers are familiar with code refactoring,

Continue reading »

Unix Pipelines and Java 8 Streams!

I remember seeing an interesting movie named “Blue Crush” on surfing (the sea, not the internet!). I liked watching how waves roll and sometimes form a beautiful pipeline. In this movie, Anne Marie scores perfect 10 for surfing in a wave pipeline. Programming using Unix pipelines is as much fun and difficult

Continue reading »

War Story: Why Care About Technical Debt?

In our book “Refactoring for Software Design Smells”, we have included numerous anecdotes on technical debt. Here is a software war story that many readers liked because it related to their experience. [If you are new to technical debt, read this article before you continue.] — To understand the impact that technical debt

Continue reading »

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 »