Successful Software Reengineering Implementation

| Vasyl Soloshchuk

software reengineering

As technologies develop, more and more companies raise the question of updating their systems for better performance and easier maintenance. When making a decision, it may be interesting for you to learn some examples of successful reengineering. The following cases show both partial and entire reengineering.

Enterprise Knowledge Management System

The Enterprise Knowledge Management System was not considered for reengineering, however, when starting work on this project, the INSART team analyzed the code and system architecture and discovered that it would require reengineering. This idea was then suggested to the customer who understood the importance of this process after thorough justification of the necessary changes and the advent of opening new prospects.

The reengineering of this system included two stages: upgrading the programming language version (from Java 5 to Java 7) and gradually updating each component. This approach allowed us to save the operability of the system, improving its performance on the first stage and making more profound changes later on. The following technologies were used: Spring Framework, Ehcache, DHTMLX, JQuery, Maven, etc.

The Enterprise Knowledge Management System is still under development, however even now its performance and scalability have been improved greatly and its support and ability for further updates became much easier. Apart from that, the system is on production, therefore its architecture cannot be changed significantly, since such changes can influence business rules.

Online Marketing Platform

The Online Marketing Platform has a 10+ year history. Bad scalability and an overly complicated updating process for new requirements caused the need for full engineering. INSART took charge by implementing modern technologies like Java 8, PostgreSQL 9, Spring Framework, AngularJS, etc., and created a new system architecture. This allowed us to improve system performance, avoid multiple software faults found in the legacy system and add new functionality. As a result, the system became scalable and easy to update.

Legacy application architecture

New application architecture

Reengineering has been ongoing for two years and the revamped Online Marketing Platform is still being developed and improved. Nevertheless, it has already met almost all requirements for functionality, performance, scalability and reliability.

The Remote Device Management Project

Having worked with the Remote Device Management project for several years, the INSART team suggested a strategy of reengineering the system to the customer which would solve the performance and scalability problems caused by monolithic core architecture and using inconvenient database structure. The customer agreed with the presented arguments and as a result, the INSART team supports operability of the current system version and is simultaneously developing a new system.

Using new technologies (Spring Framework 4, MongoDB, AngularJS and Bootstrap) and creating new system architecture not only increased the performance of the system, but also reduced the terms of development. Additionally, using the modified data structure allows to significantly simplify data processing and to prevent damaging data as a result of inconsistencies in user actions (this problem occurred in the legacy system).

Conclusion

When you reengineer your system, you can get more than just improved performance and expanded functionality. You also benefit because your users will show their loyalty if you keep it up-to-date and it meets their expectations.