Bad smells are defined as design flaws in the coding structure. They inherently suggest the need for refactoring [2] . As a system ages, it develops design flaws which limit the programmer to further modify the code. A s the design breaks down, maintenance becomes more difficult. I n order to further update the system, the programmer must initially reengineer the system using the refactoring process. Refactoring plays a key role in reverse engineering and re-engineering by making semantic changes while keeping the functional behavior of the code intact [1].
One of the crucial steps in the process of refactoring is the detection of bad smells within the code. This chapter gives a brief overview of refactoring and the steps involved in the process of refactoring. Additionally , this chapter classifies bad smells into the following two categories: (a ) "Smells within a class" and (b) "Smells between classes." This distinction is based upon their location in the source code [15]. In closing this chapter provides examples of two bad smells and the refactoring processes used to solve them.