As computing and electronic hardware become more sophis­ti­cated, the complex­ities and costs of software development will continue to become harder to control. The on-going rapid evolution of hardware capac­ities and capabil­ities presents a double edged sword for software appli­ca­tions. Hardware advance­ments boost perfor­mance and function­ality, but also multiply complex­ities. This leads to expanded software require­ments that in turn can add expense and fragility to the system development.

Doubling processor throughput or memory capacity may lead to only a slight increase in the cost of the hardware, but altering the software so that you can take advantage of the increased capacity can elevate the costs tremen­dously. Additionally, if the technology that was used to create the software doesn’t scale well, the software appli­ca­tions will be error prone and difficult to maintain.

Through software modern­ization, the software systems can benefit from the migration of legacy approaches to more current and modern approaches. If it is conducted success­fully, software modern­ization makes sure that software engineering is able to keep pace with the ongoing development of hardware capabilities.

Approaches Towards Software Modernization

Software modern­ization can imply different things in different circum­stances. In some situa­tions, it’s desirable to retain a well-designed and successful legacy appli­cation, while improving its function­ality by integrating new compo­nents. In other cases, it is best to transform the existing system that was written in an older language, running on an older hardware, to a more COTS (commercial off-the-shelf) friendly platform and language.

Overall, there are 4 different approaches towards software modern­ization, and depending on the enter­prise require­ments, one or a combi­nation of the following 4 can be selected:

1. Upgrade — The technologies and languages used in the old-legacy systems can be upgraded to the greatest and latest versions.

2. Replacement — The core-complex rigid software or technology used in the legacy appli­ca­tions is first identified and then replaced with a better version of the same or equiv­alent technology. The replacement can be as uncom­pli­cated as replacing the legacy database or backend system with modern technologies, such as SQL (Struc­tured Query Language) or Oracle at the top line, or replacing the static-user screen in the bottom line to a user-friendly interface.

3. Redesign — The core framework of the system is retained, with the front-end and middleware being redesigned and developed using the greatest and latest version of a recent technology, as a result giving the appli­cation a new feel and look and improving its performance.

4. Migration — The whole legacy appli­cation (including its core framework) is migrated to a SOA (service-oriented archi­tecture) or Web 2.0 enabled appli­cation. This approach involves identi­fying the software/technology that is suitable for the business process, archi­tecting and designing, devel­oping, testing and imple­men­tation. A good migration plan should weigh the technical and program­matic drivers for system development against the prior­ities of the customers.

In order to prevent repeating mistakes from the past, it’s desirable to upgrade not just the specific appli­cation, but the whole thinking behind the development of software. By doing this, the development process of new compo­nents of the legacy appli­ca­tions or new appli­ca­tions will become more productive, error incidences will be reduced, and the reuse and scala­bility of the software will be heightened.