Migration Delphi legacy software to up-to-date

Here we can have two use cases: 
 
  • Software migration from a legacy Delphi version like Delphi 5 or Delphi 3 to the latest Delphi version (today it’s Delphi 10.3 Rio); 
  • Software migration from a more widely-applied Delphi version, like XE3, XE3 and so on, to the latest Delphi version. 
The first case is much more highly-demanded and complicated than the second one. Let’s concentrate on software migration from a legacy Delphi version like Delphi 5 or Delphi 3 to the latest Delphi version. 
 

Why you have to migrate at all? 

Have you asked your clients about what they think about your app? – We believe that if you do it, you will get something like this. 

Non-technical factors: 
 
  • “Ugly” UI; 
  • Obsolete UX style; 
  • No experienced developers for Delphi 7; 
  • The  developers that the company has don’t want to use Delphi, because this is some “blast from the past”; 
  • And so on … 
Your customers see only the tip of the iceberg and notice only subjective factors. Here is what you may think about it. 

Non-technical factors: 
 
  • We cannot find experienced developers for Delphi 7; 
  • The developers we have don’t want to use Delphi use, because this is some “blast from the past”; 
  • And so on … 
Technical factors: 
 
  • A new version of Windows can get rid of some features, API methods or have some additional security improvements which may affect your application; 
  • UI works incorrectly for Windows 10; 
  • The 3rd-party components which you are using are not supported in your Delphi version and you don’t have a source code for it; 
  • The 3rd-party vendor that used to provide your components, extensions or libraries doesn’t exist anymore; 
  • Windows stopped support for your target Windows version; 
  • You current Delphi version knows nothing about new Windows features; 
  • You need a 64-bit support. Yes, nowadays, still not all applications support a 64-bit architecture; 
  • Re-engineering and source code reuse. For instance, you want to change the architecture and develop a REST API service using TMS XData – in this case you will need to write the same code twice , if you want to use the class models on the client and server sides, written in an up-to-date Delphi version; 
  • Code reuse for new client types (here clients – client applications, like for Windows, macOS, Linux or even for mobile platforms) – road to cross-platform using Firemonkey; 
  • It’s so difficult to support your legacy Delphi source code, which was written more than 10 years ago and even not by you (let’s be honest, the entry threshold was low. And that’s good as thanks  to RAD, Rapid Application Development, people could start developing programs, without professional programming education but they were even not familiar with OOP); 
  • Database (RDBMS) migration to modern and trendy RDBMS, like migration from DBExpress to Ms SQL Server or to the Ms Azure SQL Server; 
  • Adding support for high DPI screens. 

Migration pitfalls 

  • Migration of your strings to Unicode – this is what everybody is talking about; 
  • No backward compatibility for up-to-date Delphi versions components with your current version; 
  • Necessary components don’t exist at all for an up-to-date Delphi version; 
  • If you have seriously customized some 3rd-party components– it can be a real challenge to migrate such components to an up-to-date Delphi version – it’s one of the riskiest factors from our point of view; 

Get a free expert consultation about the Delphi legacy software migration services.

Migration framework 

At Softacom, we have developed our migration framework which we apply for legacy Delphi apps migration and modernization processes: 
  • Business analysis: 
    • Architecture overview;
    • Architecture re-engineering roadmap;
    • Enhancement specification and roadmap; 
  • Technical analysis: 
    • 3rd-party components migration roadmap;
    • Components migration mapping matrix;
    • Components backward compatibility analysis and migration roadmap;
    • Selecting of appropriate frameworks and tools for migration; 
  • Financial analysis: 
    • ROI; 
  • Preparing of final architecture design. Decision making; 
  • Migration: 
    • UI/UX re-design; 
    • Development; 
    • QA and testing; 
    • Backward compatibility testing; 
  • Deployment: 
    • Updating of software for existing  customers; 
    • Deployment of software for new customers; 
  • Software support.
The framework is not untouchable. We can change the steps, add some steps or remove them  – everything depends on your software, its characteristics, your current Delphi version, etc. 
 
Let’s go through all migration challenges together!

Delphi Development