Legacy Software Upgrade for energy sector
The project description
30 March 2019
Natural Gas Company
Control Room Software, Nuclear Power Plant, Gas Pipeline
This project was mainly the up-gradation of ‘legacy software’ which was developed for energy company back in 2001. This control room management software was built on pretty robust but old technology that is outdated now. This was the biggest concern for the client as they may not be able to expand this application further and might end up with the best workflow application unusable. Our goal was to keep the whole application workflow the same as it was. And upgrade the back-end as well as front-end with the latest technology stack (Java Spring, Angular) so after up-gradation is completed they can use the same workflow but with a much more intuitive and interactive user interface with the highest speed and performance. There were some additions to the functionalities which they wanted to implement but couldn’t due to the old technology stack being much more complicated.
- The technology stack was pretty old and was expected to be discontinued very soon.
- The user interface was based on WEB 1.0 standards hence it was not compatible with the latest browsers and devices.
- Web 1.0 fundamentals were making an application so heavy that it was taking 3-5 minutes to load the dashboard.
- Customizing the application was very time-consuming and costly too.
The client had to manage multiple code repositories for each customer.
- Programming libraries were not available anymore as the companies had deprecated them.
- The old system contain multiple databases and it was slow.
- The application was not capable to communicate with third-party software.
- To adhere to the latest data security compliance it was impossible to make this software available on the internet and had to implement it on Intranet behind firewalls only.
- It was impossible to launch this legacy software as a standard product package because it was not configured as per users’ needs hence it had to be launched then they must manage a separate repository (with customer-specific requirements) for each consumer using this application.
Project Execution Challenges
- Requirement elicitation VS Estimation
This legacy software was being pretty large enterprise solution with more than 30 different modules and almost 4 new modules to be developed and tightly coupled with the system. Also, we were expecting around 15%-20% of new change requests so completing the project in time was quite a challenge. We used various processes and project management tools & Methodology along with correct communication methods as follows
We were following the SCRUM methodology.
- Task assignment was managed by Jira.
- Daily SCRUM meeting as well Biweekly status update meeting on completion of each sprint.
- If Change Requests or Additional Requests are explored; we mutually decided to implement them during the project or after considering completion time priority.
- Consideration of technology stack (Angular 5 VS 1)
Initially, the client’s main concern was for the front-end up-gradation within timelines. We recommended that the back-end should be kept intact and only upgrade the front-end with the technology supported by the latest browsers and devices. Hence, the quickest and easiest way was just removing the old WEB 1.0 front-end framework and implementing Angular JS as Front End with HTML and Bootstrap. Later during requirement elicitation client disclosed they will also need APIs to interact with third-party software and multiple frameworks (Eg Mobile Apps), we decided to move ahead with Angular 5 and upgrade the back-end as it was a necessity to produce JASON APIs / Web Services.
- Deployment & Testing in Live Environment without access
At times as development providers, we need to have access to a live environment to implement certain functionality like Microsoft Active Directory (LDAP), and Data Migration from Legacy App to New Application. But the client’s legacy system was running in their INTRANET behind the firewall hence we replicated a new environment where we did implementation and provided training to the client so they can do it in their network themselves. We were following the SCRUM methodology.
- Understanding logical programming is done in an old version
Since this project was built on WEB 1.0 Technologies and frameworks the SDKs & Coding Tools were already deprecated and were impossible to get the Source and licenses. Hence we had to request the previous developer to provide all the frameworks and licenses configuration along with development libraries, and then we were able to set up the development environment. The biggest challenge was the learning curve of outdated technology and scripting language which was used. Also, architecture wise it was managed differently Eg. all the ‘back-end’ ‘front-end’ communication was happening via AJAX requests
- Using Third-party script to Data Table
To amplify the development progress and reduce the overall timeline/budget; We implemented third-party proprietor scripts for Data-tables, Calendars, etc. We customized the further and received some Change Requests afterward. It required an immense amount of brainpower to customize and meet the client’s expectations. There were two scenarios where our developers hit the wall and finally we make good use of free support from the original developer and explored those capabilities that can be unlocked only by activating the license in the scripts.
- Software Performance Optimization
After finishing the alpha version of the newly upgraded software it was time for a test run to check and optimize the performance. And we realize it was better but not the best yet; so, we did the QA for coding standard again and found a few things that can be optimized more Eg. Component Routing, Increasing re-usability of components, and improvise queries for data requests more efficiently, and finally we were able to exceed the client’s expectations.
- Replace the whole Front-End for all the existing modules. Using Angular 5, CSS sass/less.
- Upgrade the whole back-end with the latest version of Java Spring 4.0 instead of Traditional J2EE.
- Optimization of DB to improve performance and increase DB security by implementing data encryption.
- Make data much more secure by implementing private key-based encryption of API response.
- Add exception handling and do proper logging of all the abnormal or normal events.
- Implement SSO functionality to make it easy to access and more secure too.
- Additional Functionalities: Live Chat, Map View, Dynamic Data Tables (JQWidget) with Filters, Sorting, Search, Pagination, export.
- Backend System
- Frontend System
- Reduced Safety Department efforts by 22% through Automation
This legacy application was not more than an in-house outdated application. It had all the charm from its legacy with much higher user interactivity, configuration capability, and lightweight too. The additional modules which were not possible with the older system are now functional. They had reduced safety department responsibility up to 22% as now it was automated and no more constant manual tracking.
- Finally, this legacy software became a product for multiple verticals.
With the newer standardized flow as per industry compliance, new modules, and configuration capability it was possible to distribute the software as a standard bundle package. Now this new version of the Software Bundle was ready to assist power plants, chemical manufacturing plants, refineries, and traffic control.
- Future development can be rapid and less expensive
As this software is built using trending technologies it is easier to get programming references and ready-to-use scripts and functions. And outsourcing getting software developers who can manage further development became child’s play.