Application & Data Migration Blog Posts | Mobilize.Net

Compilation delivery level

Written by Will Vasquez | Jan 13, 2020 5:46:21 PM

Migration Methodology

Besides our migration tools, one of the most important things in our project execution is our methodology; which has been developed and improved over the years that our company has been dedicated to software modernization (since 1993!).

Here's a high-level overview of the stages of a modernization project as well as the different delivery levels which we can provide.

Most of the tasks on the top timeline are necessary, the only thing that changes is how much you want us to do and how much you want to do with your team.

Compilation

Back in October I wrote about our Visual Equivalence delivery level (the blue bar in the diagram above).

Now, I'm going to focus on the previous delivery level: Compilation.

The most important things we bring to the table when we deliver compilation are:

  • Our product team, that can modify the tool and increase the automation for your specific application.
  • Our experience, which allows us to perform the initial set of manual changes to the migrated code in the best possible way; ensuring the compiled application will be a great starting point for your team to take over and begin the stabilization process.

As part of a compilation project, our team will receive a full source environment from yours. Including the source code for the original application and all third party components that are required to compile it.

Our team then sets up the migration tools and migrates the code, reviewing the results with different migration options. The compilation errors are reviewed and potentially the team enhances the migration tools to increase automation.

Once the best version of the automatically generated code is identified, manual changes are applied to the code to get it to compile. These changes can include:

  • Fixes to references to third party libraries.
  • Addition or replacement of invalid cast operations. These are common when late-binding was used in the source application.
  • Fixes for unsupported code patterns.Including things such as unsupported goto statements or uses of gosub.
  • Creation of stubs for unsupported properties, methods or events.
  • Other migration issues.

All of these changes are documented by our team and applied consistently across all the migrated application to ensure the best possible code.

Remaining Work

Once the application is compiling, it is delivered to the client but there's still work to be done.

The remaining work includes:

  • Implementation of upgrade stubs.
  • Revision of EWIs.
  • Refactoring of error handling.
  • Testing of the application and bug fixing. The client needs to test the entire application since all the code has been generated anew. The bug fixes might include:
    • Invalid casting of elements.
    • Inconsistent uses of array indexes.
    • Differences in visual components behavior.
    • Look and feel adjustments.
    • Unsupported third party components.
    • Invalid late-binding invocations.
    • Incorrect type inference.
    • Changes to Windows API calls.

Most of the changes will be small but require a good understanding of the existing application. It is thus recommended to have access to the source application to perform side-by-side debugging and testing.

The changes should also be made across the entire application. This will help ensure consistency in the code base and will take advantage of the knowledge achieved during the research of each specific fix.

Summary

The compilation delivery level will give the migration project a great jump-start, taking advantage of Mobilize's experience.

This solution is better suited for companies that have available resources to complete the project and have sufficient knowledge of the code base.

Let us know if you have any questions about this or any of our other offerings.