We improved performance and stability of a Payroll and tax system software, migrated it to the latest version of Delphi
We lost several features (desirable but not critical) during the past 2 years but we are expecting to start losing critical features if we do not revise the source code, fix bugs and update it to the up-to-date Delphi version.
Our old clients complain about outdated, convoluted and not user friendly interfaces. It takes us so much time to teach our new clients to use the system because of the same reasons.
We can not upgrade our system effectively because every new feature requires more and more time to be added. Not to mention the time required to fix issues emerging after every new system upgrade.
Our client is an expert in the Payroll, Tax, HCM industry and specializes in the automation of all the Payroll & Tax Filing processes. Their payroll and tax products are flexible, scalable, and reliable. With mobile, cloud-based software, and full-service options, users can manage both simple and complex payroll and tax management needs. Our client had its own custom software that had been built more than 20 years ago.
But everything is changing and evolving, so since the app has been created there are lots of changes in technology stack so each 2-3 years we have new trends in the IT sector, new tendencies in UI/UX design, security, frameworks etc. As our client works in the tax and payroll industry, it is crucial to have up-to-date secured software.
So, our client decided to migrate and modernize their core software application. By updating the version of Delphi and removing it from the technical debt we going to resolve the following issues:
The client had been working on this software over the last 20 years and the source code was not well-documented, well-structured and well-written. We performed source code research and analysis, tried to understand the sense of some parts of the source code and its logic. Also, we couldn’t leave the code “as is” without source code refactoring. During the project life cycle it is the commonly faced difficulty that the documentation routines are not liked by the development teams. It’s not so obvious that the information about the fixes and changes can be helpful and even crucial for follow-up work.
As far as the application had some updates, many of the test cases became obsolete. Big part of the test cases relied on specific databases with certain settings that were not described in the test cases but could affect test results. Many of the test cases were not described in detail, which made them difficult to understand for inexperienced users. Our team suggested a testing approach and testing tool that helped reach the testing goals.
As the sphere of payrolls and taxation is quite complex, in some cases it was quite difficult to “predict” the right application behaviour. Due to the lack of documentation, controversial moments were thoroughly discussed with the client and also compared with the old version.
Some of the components were not backward compatible due to the changes of business logic. These components had to be updated.
The team conducted the initial source code analysis to determine key project factors in order to select appropriate approach:
It was crucial to determine the dependencies between components and core modules to plan the work consistently and also prevent working in vain, time, and resources wasting.
We used next migration framework:
Analyze and describe at least 5 unit tests for the key functions of each project;
Develop unit tests for Delphi 7 version;
Check unit tests for the up-to-date Delphi version;
Analyze and describe at least 5 unit tests for each project for key functions for no-UI parts;
Develop unit tests for Delphi 7 version;
Checked unit tests for the up-to-date Delphi version;
For a common understanding of the functionality we organize all test cases in one list. After checking the tests’ relevance, it was found that many of them were obsolete and did not contain all the functionality parts. So, we expanded the initial list with the missing scenarios.
Some of the test cases that needed to be checked on a regular basis were automated. In the process of migration after finishing every phase a regression testing of the main functionality was made. In controversial cases the behaviour was compared with the unmigrated application.
Also, a special tool to test API was created. To see if the migration improved the software, a performance testing was conducted before and after the migration.
We applied the Agile software development methodology for the project migration. It gave us and to the customer the vision of the project speed, progress, deliverables and ability to test some parts in parallel to speed up the project migration itself. Our team tends to follow continuous delivery principles. Our client was completely informed of our speed, so it allowed them to increase/decrease the workload and the team scale according to each migration phase.
As far as the customer had their own established approach to the development, our team easily adapted to them to work collaboratively and productively.
As required by the agile approach we followed scrum activities such as:
During that kind of meetings the team was taking the tasks for the upcoming sprint according to the task scale, difficulty and priority and approved it with the customer’s PO
Day-to-day meetings where the day results, plans, questions were discussed;
The meeting where the teams validated current/valid/invalid tasks and cleaned the backlog up
The session where all the company teams (more than 60 people) conducted the presentation of performed work. Almost all of the company members participated there, including top management leaders, subdivisions, etc. Each participant was able to ask any question or request some clarifications that made the communication transparent and the atmosphere warm
The session where sprint results were discussed, the obtained knowledge was documented and stored for historical reasons.
Every sprint our project manager prepared bi-weekly reports to provide the customer with the project results, allotted time, tasks completion, difficulties, and any other helpful information. That approach prevented both sides from misunderstandings and allowed them to be in sync during the project timeline.
$ 50 000
After 1.5 years of work, our client’s team started to upgrade the updated application. This upgrade brought significant improvement of the performance and stability.
Our team got a unique experience that allowed us to increase our expertise significantly and found new friends.
The project management approach in completing the project has been impeccable and efficient. Softacom exhibits strong cultural understanding and communication skills, allowing them to tackle challenges effectively and speed up the submission of results.
VP of Engineering
SaaS Company, Austin, Texas
Delphi Software Migration
We work with you to determine the right migration strategy then help you execute a seamless & cost effective migration.
Legacy Software Modernization
We migrate, re-engineer, integrate and enhance all types of enterprise software built with Delphi.
Software engineering and development
Turn innovative ideas into business differentiation with custom capabilities.