Trends in Software Systems Reengineering

| Vasyl Soloshchuk

Reengineering Trends

If your software product or solution was created several years ago and has not been upgraded or updated since then, it may need reengineering. To make a decision, you need to analyze the current solution, whether it is maintainable, meets your requirements, copes with the workload and has adequate functionality. If you are not satisfied with any of these points, then your system may need profound analysis and good expertise in reengineering.

Reengineering a software product or solution may involve the following trends:

  • Source code translation or upgrade – If your system was created recently, but the programming language used or its version is not the latest one, source code translation or upgrade can help to increase system performance and expand system capabilities by using new features and libraries. For example, Java 5 has been upgraded to Java 7 or Java 8 in some INSART projects on reengineering.
  • Database optimization – Not only does using new databases and reorganizing data structure let us increase performance, but also allows us to simplify data processing and provide data safety. Modern technologies that can be used for this purpose are: databases MySQL, PostgreSQL, Oracle DB, MongoDB; caching technologies Ehcache, HazelCast; ORM technologies Hibernate, etc. Depending on project needs, INSART successfully provides partial or radical changes of database structure and data processing logic using the technologies mentioned above.
    DB optimization
  • Modifying system architecture – Over time, not only technologies change, but also approaches used for creating a system. Modern systems are mainly modularized, components are independent of each other and interact by data exchange. Such an approach significantly improves the system’s scalability as each component can be developed and updated separately from others, new components can be added to the system and unused components can be removed from it. Additionally, development is expedited and becomes simpler. INSART has experience in modularizing complex systems and customizing clustering solutions.
    Reengineering Architecture
  • Using cloud computing services – These technologies considerably simplify data storage and processing and facilitate communication between end users, components (services, applications) and used data. The most often used technology is Amazon Elastic Compute Cloud (EC2).
    Cloud Computing
  • UI/UX upgrade – Your users will not tolerate poor user interface and clumsy navigation. That’s why UI/UX upgrade is one of the most important steps in reengineering. Using the best technologies, which proved their effectiveness in many other projects helps improve UI/UX. Moreover, these technologies increase system performance. The most often used technologies are the following: CSS front-end framework Bootstrap; JS frameworks Angular.js, Ember.js; JS GUI widget library DHTMLX.
    UI/UX
  • Business logic enhancement – Reengineering does not involve changing business logic. It can only be enhanced by adding, upgrading or removing business processes. Business logic enhancement helps achieve business goals and reduce costs by means of saving human and technical resources.
    Business Process Reengineering

 

 

Conclusion

Generally, reengineering is not just a popular thing to do, it is a necessity. As your life changes and new technologies are developed, your business and a user’s expectations change as well. If your business depends on a software system, then, to stay afloat and even increase business value, the software system should be flexible and in sync with contemporary trends and technologies.

Still, reengineering deprecated software not only adds business value, but also gives you certain benefits when you need to perform maintenance. Expanding the system with new features takes less time, the learning curve for new developers becomes shorter, less rework and lower regression are needed. The cost of reengineering the system and maintaining a new one can be much less than the cost of maintaining the current system over time.