Wednesday, September 3, 2014

XE6 Upgrade Story, Now on to XE7...

We started the Delphi XE6 so early in the process we had to convert all the 3rd party components we used to XE6 without help from the vendors.  Our plan was to upgrade Delphi XE6, and move to ContinuaCI.  We also rewrote our FinalBuilder scripts from scratch, keeping in mind we would be upgrading more often.    This project was scheduled to go from April and release at the end of September.    We actually finished development in mid June and released after regression testing on Aug 7th.    The release went really well we had ONE new bug reported in Production    We also had less than 15 reported bugs during the development cycle.    Comparing it to our last major upgrade from Delphi 2007 to XE we were over schedule,  we lost count on the number development bugs, and we had many more problems in production.  
Testing our application suite takes apx 1.5 months to complete.    Due to the time it takes to completely retest the application we tend to have to isolate areas and focus on them for release.    This allows us to have faster testing time as we don't have to as thoroughly test all areas.   A luxury we don't get when upgrading Delphi as all area of the code need to be retested.

Because testing time is such a major part of development, we have been slowly but surely increasing the number of of unit tests.    We also have some research going on in GUI Automation Tools, but we are not pleased with our current options here.     We are also researching adding GUI testing to DUnitX.  Each has benefits and drawbacks that are obvious and others that we will only find out by trying.

That being said our team will not be able to upgrade our whole product suite to XE7 as 3 months of QA time a year to do Delphi Upgrades is too costly.     So we will have to wait for XE8  and maybe even XE9 for our whole product suite to be upgraded.  

That being said XE7 still appears to is a very compelling upgrade.

Our very first Delphi application that was developed here (long before I arrived) is showing it's age, it was originally developed in Delphi 3.    It came complete with every bad programming practice I have ever seen. Global variables, events containing all the business logic, the worst being it's desire to use hidden TEdit as variables.  Granted it was the first Delphi application written by that team, and they were learning the language on this project.... But it's just not worth trying to fix.  Not to mention that the business has evolved and wants something different that what it did.

The last version of Delphi that will touch this application is XE6.  

Today we are starting a project that will rewrite this application, were we will be using XE7.  


  1. Really good question. We are leaning to VCL but it's still up in the Air. I think I will publish another blog post with the list of pro's and con's to both that we internally identified. Maybe the community will be able post additional arguments one way or another that will help us in the decision.