We helped a healthcare equipment manufacturer to modernize software system built with Delphi 20 years ago

Science Equipment Manufacturing

Engineering

Professional services

It’s more and more risky and more and more expensive for us to use our software system built tens years ago without keeping it up-to-date.

Should we migrate it to the up-to-date version of the Delphi framework or re-engineer (develop the software from scratch with a totally different technology) ?

250 000
lines of code
150
sheets database system
35
3rd party components
in-built
complex math model
Project manager
UI/UX designer
2 Backend developers
Front-end developer
Programming languages
Delphi ( Object Pascal )
IDEs
Delphi 5, Delphi 10.2
DBMS
Firebird
Frameworks
VCL, FMX
Libraries
DCPcrypt, sgcWebSockets, HanSoft Barcode, IBOjects, Jedi, LMD Tools, Quick Report, tsiLanguage
TMS components
TMS VCL Instrumentation Workshop, TMS VCL UI Pack

Description

We know a lot of different software development areas and domains. Some of them are well-known and not so hard for work from an expertise point of view, for instance, ERP and CRM software, different office and company/business process management software, mobile applications, web and enterprise portals and so forth. But another type of software which is totally different and too hard for the kick-off and even understanding – we are talking about different scientific software.

It’s impossible to start developing or improving such a kind of software without the deep technical expertise and understanding of the necessary technological domain. You cannot just start development if you don’t understand what you are doing, but from the other side – it’s almost impossible to find an outsourcing company with available resources with the necessary unique expertise and skills in the past. What to do in a similar situation? – We suggest finding a balance between existing expertise, developer’s education expenses and QA routines for comparing functionality before and after modernization.

Our client is a transnational corporation and an expert and manufacturer of healthcare diagnostics equipment for scientific and medical purposes with 200 years of history. Client has its own custom developed software complex for diagnostics equipment developed 22 years ago (for 2021).

Software complex was developed a lot of years ago and nowadays these technologies are obsolete and for the customer it was too risky to keep the software on legacy and unsupported development tools. It was even too risky and not easy to maintain and improve software, because their in-house developers were not familiar with legacy frameworks.

Client’s team came to us and asked us to perform business analysis and research and made a decision: what’s the best solution – perform software actualization and migration to an up-to-date version of the framework or develop the software from scratch with totally different technology.

Our company has deep expertise in software migration, this is why after one of the international conferences we met with a client’s team and made a decision to start working together. It was the start of the long way of successful cooperation.

Solutions

Preparations for migration. Software actualization

As it was mentioned above, a software complex has a huge amount of different mathematical and scientific calculations, formulas and so forth. UI is only a part of the whole complex, around 25% of all migration work. This is why it was so important to prepare existing software for migration by covering all mathematical and scientific parts with unit tests. Nobody can give a guarantee that after “as is” migration from Delphi 5 to Delphi 10.2 everything will work correctly. “As is” migration is only the first step of migration, because we also had a plan to use Unicode for the strings, add 64-bit support, and add multi-threaded calculations. Each improvement from thу mentioned before can bring to us a lot of risks of broken functionality. This is why we made a decision to develop as many unit tests as possible for the existing Delphi 5 projects.

We extracted almost ~1500 test cases. Here we also had some difficulties, because we cannot find actual input parameters and get correct expected results, because even the client didn’t have such information. Some knowledge was lost, some features were not documented well and some of them we could get only with connected equipment.

The second main challenge was about component migration. Software complex had it’s own BI engine, based on TChart components and had almost nothing coming with the initial version of TChart. Of course we couldn’t migrate BI engine “as is” – TChart components in Delphi 10.2 are not compatible with Delphi 5 version. Finally we made a decision to extract BI to a separate branch, remove any connections to TChart and migrate it to Delphi 10.2 as a separate product.

Migration

Migration was split to multiple steps:

Prepare unit tests

Components migration

Different components have different migration roadmaps – some of them were replaced, some of them where migrated “as is”, some of them were updated to up-to-date versions with adding support for the differences (imagine how differently components can be for Delphi 5 and Delphi 10.2 – yes, that’s totally different worlds, but we still can have good possibilities for source code compatibility);

Mathematical modules migration

Some of them are DLLs and that’s the best opportunity for faster migration;

UI/UX migration

Writing test cases

We wrote automation tests scenarios using Selenuim testing tool;

QA/Testing

Testing with equipment (client’s side);

Re-engineering and improvements

As it was mentioned before, client asked us to add an Unicode support, implement multi-threading for some slow calculations;

Deployment to existing customers

Our client operates a lot of devices and equipment using the software. Of course it was impossible to provide for our team all these devices, especially the cost of some of them are hundred thousands US dollars. This is why we organized the QA process with equipment together with the client’s QA team.

Project budget:

$ 40 000

Outcome

At the end of the migration project our client got a fully functional migrated project, migrated to up-to-date Delphi 10.2 (actual RAD Studio version for the project’s period). Nowadays the client can support and maintain the project using their own software development team. Technological risks were decreased, now our client can work with supported development tools adapted to up-to-date OS.

Migrated project also has internal (internal functionality) and UI improvements. Because of parallel calculations on multiple CPU cores, the speed of some operations were improved by 600%. Because of these improvements client’s customers got a fast solution, adapted to up-to-date computers.

Talk to us and get your project moving
Book a free consultation with a solution expert.
Name
This field is required
E-mail
Company web site
This field is required
Phone Number
This field is required