Abstract:
Systems mature. Like people, they grow bigger, gain more mass, and learn new skills. However, as systems mature, the complexity and its size tend to grow too. The system suddenly becomes a tangled mess, full of duplicate and redundant code and prone to bugs. This is where refactoring can help.
Refactoring is a process that involves altering the internal structure of the program or system to make it cleaner and more intuitive. It is a change made to the structure of the system to make it easier to understand and cheaper to modify. However it is important to note that refactoring does not aim to modify the observable behaviour of a system; in fact it is the opposite as it makes changes to the internal structure while making sure that the functionalities of the system stay the same. In addition, refactoring is also helpful in finding bugs because bugs in the code can easily be spotted by clarifying the structure of the program.
One candidate of such process is the Virus Host Interaction Lexicon system. Composed of seven modules, it has interlocking components whose code base has become so large that bugs and duplication of code become inevitable. Two of these modules, in particular the Virho References and Virho Hotspots, contain several bugs that prevent it from being useful. The refactoring of the Virho References module and Virho Hotspots module addressed these problems, while giving it the opportunity to be expanded and modified in the future versions because of its more modular and more manageable code.