Customer: Natural Gas Company
Category: Legacy App Reformation, Custom Software
Date: 30 March 2019
Tags: Control Room Software, Nuclear Power Plant, Gas Pipeline
This project was mainly up-gradation of ‘legacy software’ which was developed for energy company back in 2001. This control room management software was actually built on pretty robust but old technology that is outdated now. The biggest concern for customer was they may not be able to expand this application further and possibly might end up having a best workflow application unusable. Our goal was to keep the whole application workflow same as it was and upgrade whole back-end as well as front-end with latest technology stack (Java Spring, Angular) so after up-gradation is completed they can continue using the same workflow but with much more intuitive and interactive user interface with highest speed and performance. There were some additions to the functionalities which they wanted to implement but couldn’t due to old technology stack was much more complicated.
- The technology stack was pretty old and was expected to be discontinued very soon.
- User interface was based on WEB 1.0 standards hence it was not compatible with latest browsers and devices.
- Web 1.0 fundamentals was making application so heavy that it was taking 3-5 minutes to load the dashboard.
- Customizing the application was very time consuming and costly too.
- Customer had to manage multiple code repository for each customer
- Programming libraries were not available anymore as they were deprecated by the companies.
- Old system contain multiple databases and it was slow.
- App was not capable to communicate with third party software.
- To adhere to latest data security compliance it was impossible to make this software available on the internet and had to implement in Intranet behind firewalls only.
- It was impossible to launch this legacy software as standard product package because it was not configuration as per users needs hence if it has to be launched then they must manage separate repository (with customer specific requirement) for each consumer using this application.
- Replace whole Front-End for all the existing modules. Using Angular 5, CSS sass/less.
- Upgrade whole back-end with 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 is easy to access and more secure too.
- Additional Functionalities: Live Chat, Map View, Dynamic Data Tables (JQWidget) with Filters, Sorting, Search, Pagination, export
Project Execution Challenges
Requirement elicitation VS Estimation
This legacy software was being pretty large enterprise solution which consist of more than 30 different modules and almost 4 new modules to be developed which were tightly coupled with the system. Also, we were expecting around 15%-20% of new or change request 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 follow:
- We were following 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 during project or after considering completion time priority.
Consideration of technology stack (Angular 5 VS 1)
Initially customers main concern was to front-end while having very stiff deadline; Hence, we had recommended just to keep the back-end intact and upgrade only front-end and use the technology that can be supported to latest browsers and devices hence quickest and easiest way was Just removing old WEB 1.0 front-end framework and implement Angular JS as Front End with HTML and Bootstrap. Later during requirement elicitation client disclosed they will also needs APIs to interact with third party software and multiple frameworks (Eg Mobile Apps) Hence then we had decided to go ahead with Angular 5 and upgrading back-end too which was necessity in order to produce JASON APIs / Web Services.
Deployment & Testing in Live Environment without access
At times as development provider we need to have access of live environment to implement certain functionality Eg. Microsoft Active Diretory (LDAP), Data Migration from Legacy App to New Application. But customers legacy system was running in their INTRANET behind the firewall hence we replicated new environment where we actually did implementation and provided training to customer so they can do it in their network themselves.We were following SCRUM methodology.
Understanding logical programming done in old version
Since this project was build on WEB 1.0 Technologies and frameworks the SDKs & Coding Tools were already deprecated and was impossible to get the Source and licenses too. Hence we had to request previous developer to provide all the frameworks, licenses configuration along with development libraries and then we were able to setup development environment. Biggest challenge was learning curve of outdated technology and scripting language which was used. Also, the 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
In order to amplify the development progress and reduce the overall timeline/budget; We had implemented third party proprietor scripts for Data-tables, Calendars and then we received some Change Request which was actually customization. It required immense amount of brain power to customize and meet the client’s expectation. There were two scenarios where our developers hit the wall and finally we take good use of free support from the original developer; Finally we explored those capabilities can be unlocked only by activating the license in the scripts.
Software Performance Optimization
After finishing the alpha version of newly upgraded software it was time for test run to check and optimize the performance. And we realize it was better but not best yet; so, we did the QA for coding standard again and found there are few things which can be optimized more Eg. Component Routing, Increasing re-usability of components and improvise queries for data request much more efficiently and finally we were able to exceed the client’s expectations.
Reduced Safety Department efforts by 22% through Automation
This legacy application was no more just in-house outdated application; rather it was having all the charm from its legacy but with much high user interactivity, configuration capability, Light weight too. Also additional modules which was not possible with older system are now functional which 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 standardize flow as per industry compliance, new modules and configuration capability it was possible to distribute the software as standard bundle package. Now this new version of the Software Bundle was ready to assist power plants, chemical manufacturing plants, refineries, traffic control,
Future development can be rapid and less expensive
As this software is built using with technologies currently in trend hence getting programming references and ready to use scripts and functions are much more easy. And outsource getting software developer who can manage further development became child’s play.