Visual Equivalence on a migration project
by Will Vasquez, on Oct 18, 2019 6:06:31 PM
What is Visual Equivalence?
As you probably know, Mobilize.Net creates tools to modernize legacy applications. Along with the tools we can help you execute the migration project, and there are several levels of engagement.
You can see the details about these different levels here: https://www.mobilize.net/pricing.
One of those levels is what we call Visual Equivalence. It typically includes the following:
- Setup and (when required) customization of the migration tools based on the client's code.
- Execution of the automated migration.
- Revision of the generated code to identify any potential issues.
- Fixes of all compilation errors.
- Execution of the application and basic smoke testing. This testing typically involves logging into the application, loading the main MDI or menu screen and basic navigation of the menus, ensuring the screens accessible from the main menu look the same and load the same data as in the original application.
Visual Equivalence might be a good option for companies that have a development team that will continue maintaining the modernized application but don't want to learn all the details about a migration project and prefer to leave that to someone who does it every day and has for 25 years (that's us, BTW).
Is the project done after Visual Equivalence?
I'm glad you asked.
Short answer: Not really, far from it.
Here's the long answer.
We like to say that Visual Equivalence is close to the mid point in a migration project.
Yes, it's true, all the code has been migrated and the main screens of the application can be displayed with their corresponding data, however, loading those screens probably executed a small percentage of the entire application (typically 10 to 20%) and since all the code is new, it all needs to be tested.
These are some of the typical tasks that you can expect to perform when you get a "Visual Equivalence" deliverable (some of these will only apply for VB6 migrations, but most of them are applicable for all platforms):
- Implementation of stubs: Mobilize will implement the stubs required to achieve Visual Equivalence and in some cases other common stubs, but some might remain.
- Revision of EWIs: Most of the EWIs (Errors, Warnings and Issues) will not require a lot of modifications, but it's worth reviewing them and once addressed, remove the comment to have cleaner code.
- Verification of error handling: The migration tools convert most of the error patterns correctly but some scenarios need manual refactoring (think an on error resume next in C#).
- Memory leaks verification: Not a common problem but a possibility if you are relying on a 3rd party COM component or unmanaged calls in the migrated application.
- Visual Tweaking: The controls in the new platform will not be pixel-by-pixel the same as in the original application since the libraries are completely different. Some small changes might be required to make the app look as good as the original one.
- Other platform differences: Things such as COM components that don't work in a 64-bit environment, lack of direct access to the user's file system (for Web migrations), more limited environments (the app might no longer run with admin privileges), etc.
- Code clean-up: Once you're done with the stabilization of the app, you might have some unnecessary references and dead code that you might want to remove.
- Testing, testing, testing!: Last but not least. This is going to be the most important part of the whole project and should be planned accordingly.
Even if you got everything migrated perfectly, you still want to make sure that's the case and execute a full testing plan.
As you can see, a Visual Equivalence project takes advantage of Mobilize's technology and expertise, but it will still require some effort from your team.
Should I go the Functional Equivalence route?
That is something only you can answer.
With a Functional Equivalence project Mobilize will not only execute all those tasks, but will also do it at a fixed price and provide a warranty period to completely take the risk out of the equation for you.
As usual, call us if you have any questions.