Computer software is one technology that plays major roles in our daily lives. Its application is found in every sphere of life especially banks, government parastatals, homes and private enterprises. The use of information-based systems driven by software technology is so fundamental to the operation and management of businesses that the introduction of a new technology usually results in changes to existing software if not outright replacement.
Such changes are usually made through software engineering process called software maintenance which is usually ongoing to sustain the life of the software. Maintenance will correct errors found by users, adapt the product to a new environment, enhance its functionalities to satisfy users needs, and even institute changes in the procedure to increase effectiveness and efficiency (Shooman, 1983). With relevant information obtained through reverse engineering, Code Restructuring follows. As the name implies, Code Restructuring is the process of restructuring the code of program modules identified to be difficult to understand, test and maintain due to programmer’s violation of structured programming constructs and software engineering standards. It is a process performed on a source code to yield a design that produces the same function as the original program but with higher quality and maintainability. To achieve this, the source code is analyzed using a restructuring tool to identify offensive modules which are then restructured automatically, and the restructured code reviewed and tested to ensure that no anomalies have been introduced. After this, the internal code documentation is updated accordingly.
However, each time maintenance is performed on a software, a new version or release is produced. For instance, MS Office 2005, 2008 and 2007 are versions of initial MS office Suite while Windows 2000, XP, Vista and 7 are also versions of the initial MS Windows Operating System produced through properly managed maintenance processes. The largest expense on software systems is not the initial purchase of the software, but the complexity of implementing and maintaining the system. According to Banker et al (2002), since software maintenance is an ongoing process required to keep software useful, poorly managed maintenance can result in a steady stream of errors throughout the life of the software thereby making it ineffective and unmaintainable.
The frequency of maintenance of a software used over a long period of time say 5 to 10 years could render the software unmaintainable due to the unexpected and serious side-effects of previous maintenance and the high maintenance costs required in due course (Jewell 1991). To be on the safe side, most clients/user organizations normally ask for warranty periods of say 3 years where the vendor maintains the software free of charge or with a negligible fee (Ekanem, 2002). This fear is further confirmed by a Nigerian Warehouse software developer, Kenneth Okpeki who disclosed that one of the challenges he was facing is how to make people buy into his warehouse software (Ojiego, 2011).