Refactoring for Software Migration
01 October 2001
Refactoring can be an important ingredient in the strategy for development and evolution of complex telecommunications software systems. Refactoring is one way to reuse and extend a successful software system. This paper will present some design tactics that will assist a development team when they choose evolution from an existing software system over building a completely new system from the ground up. Strictly speaking, the refactoring process changes only the internal design of the software. Refactoring does not add any new functionality. But the goal of refactoring work is to pave the way for the software to be modified and extended more easily. The simplest example of redesign is the creation of simple "wrapper classes" that contain groups of functions extracted from the legacy code. More complex design patterns are also useful when attempting to improve the design. Developers usually divide the redesign work into stages, so that each stage can be implemented and tested separately. This paper describes a real-world example of this approach that show how refactoring improved the design of a wireless base station controller product.