This section introduces the concepts of our methodology.

The Great Migrations Methodology

The Great Migrations Methodology (GMM) is a collection of tools and techniques for migrating software from the VB6/ASP/COM platform to the .NET platform. The GMM enables a new approach to software migration that we call the Tool-Assisted Rewrite. The GMM is a systematic approach to converting a software application or group of applications from one language to another. It is designed to integrate with other development activities, including ongoing maintenance, manual programming, refactoring, and architecture advancement.

The hallmark features of the GMM are the following:

ScalableThe GMM works equally well with small efforts to upgrade a single, simple VBP on up to mammoth-size programs involving hundreds of inter-related VBPs and millions of lines of code. Of course, the ROI for using migration tools increases as the size of the codebase. Very large, mature codebases (>500K lines of code) can contain 100s of person-years of investment and leveraging migration tools to help you rewrite the code can dramatically reduce the cost, risk, and disruption of a migration effort. 
IterativeThe migration is done via a series of tuning cycles. Each tuning cycle produces a more effective conversion process by resolving a (diminishing) number of migration issues with each iteration. The end result is a highly efficient process that balances manual work with automated re-engineering. When the Migration Team agrees that the automated translation is "good enough" and the only manual issues left are those that were identified as being easier to do by hand, they do a final Cut-Over translation. Cut-Over is followed by a short Fit & Finish phase to certify the new system and deploy it to production. 
Test-DrivenTesting is a crucial activity in each iteration. The effort required to do a migration is driven by the issues found and resolved during the tuning process. 
AdaptiveWe assume a working source codebase, not a frozen codebase. Throughout the migration, the legacy application may be maintained and enhanced for ongoing maintenance. Updated versions of the VB6/ASP/COM codebase may enter the migration process as they become available – typically on the established release cycle of the legacy application. 
MeasurableThe use of automated translation, build, and code-review procedures (along with test-driven refinement of the process) facilitates an ongoing collection of metrics relating to code quality and progress. Migration progress is predictable, incremental, and easy to track. 
RepeatableThe gmStudio can be calibrated to produce a variety of .NET outputs by a user-defined configuration. The configuration files, translation scripts, and other artifacts provide a detailed record of the rewrite rules and other information that document the transformation and make it repeatable.

Repeatability is an extremely valuable capability if you have many components to migrate and you want to eliminate repetitive tasks or if you must be able to redo conversions on a changing source codebase. 

BalancedWe certainly do not expect to completely automate every aspect of every possible upgrade requirement in a general way. Instead of pursuing this impossible goal, we developed an extremely fast, flexible, and extensible upgrade solution development platform. gmStudio can help you reliably produce customized translations that integrate hand-written code with automated transformation. This makes improving upgrade results a repeatable, iterative process. 
Tool-AssistedWe leverage gmStudio -- our proprietary software re-engineering tool -- to facilitate work in all phases of a migration effort. 

Tools, Inputs, and Outputs

It is useful to think about the GMM in terms of Tools, Inputs, and Outputs:  


The primary tool for executing the GMM is gmStudio, which is an Integrated Development Environment (IDE) for developing and managing migration projects. gmStudio is a desktop/console application that can be used both interactively and in batch to facilitate GMM activities:

  • Setting up and verifying your Migration Projects, workspaces, and configurations 
  • Running translations, deployments, and .NET builds 
  • Helping you fine tune the translation process by comparing the codes generated with different configurations 
  • Reporting project status, migration environment status, source code analytics, etc.

The gmStudio orchestrates the execution of a number of tools to perform specific migration and development tasks. The most crucial of these tools is gmBasic.exe, which is a highly configurable VB6/ASP/COM compiler that produces .NET code as its output. 

 Inputs: Source Codes in Migration Projects

The most important input to the tool-assisted migration process is the source code of the legacy applications . If you do not have the legacy source code, the GMM is not for you.

Your code may be a single set of files referenced by one VBP that builds to a stand-alone application or it may be a collection of dozens of inter-related VBPs that build to many different libraries (DLLs), controls (OCXs), and executables (EXEs). Alternatively, the source codes may be a set of ASP pages that make up one or more web sites which might depend on VBPs that build to COM components. Whatever the size and structure of your legacy source codebase, you must create an inventory of that codebase in a form that can help you manage and measure your migration effort. In the GMM, we call this inventory aMigration Project.

A Migration Project is the primary unit of work in the Great Migrations Methodology. Conceptually, a Migration Project contains one or more related Migration Units (MUs) and their properties along with directives on how to manage each unit through the migration process. There are two basic types of Migration Projects:

  • VB6 Migration Project, consisting of one or more VBPs destined for migration to .NET 
  • Web Migration Project, consisting of the ASP pages, HTML scripts, and other files (images. style sheets, etc.) comprising a web site (or a sub-section of it) destined for migration to ASP.NET (with C# or VB.NET code-behind).

A Migration Project can be created, loaded, saved, and modified by gmStudio in the form of an XML file, a text file with a gmproj extension. A gmproj file specifies the translation settings for the project as a whole and for each migration unit contains. 

 Inputs: ASP Sites

ASP.NET offers a very different programming paradigm from the script-oriented classic ASP model. ASP.NET is based on the concept that "a page is a class" and it is much stricter regarding matters of scope and the separation of HTML from declarative logic. Despite these differences, your ASP application source code can be extremely useful as a specification of a .NET web application.

By default, gmStudio provides an accurate and effective transformation to the ASP.NET platform. This allows you to begin developing and running your site on the ASP.NET platform which has immediate benefits in terms of maintainability, robustness, security, and performance. 

 Inputs: External COM Components

Real-world VB6/ASP applications make extensive use of external COM libraries and controls. During the initial preparation process, gmStudio creates Interface Description Files (IDFs) to store information about external COM components and then uses this information to improve the quality of translation. Creating IDFs is an automated process as long as the referenced COM components are properly installed on the migration workstation. 

 Inputs: Configuration

Legacy applications are a diverse bunch and so are the various target architecture and development standards required by different migration teams. Consequently, the GMM is designed to be highly configurable so that the resulting translations can be improved to meet different types of technical and functional standards. The goal is to develop a configuration that produces codes of "good enough quality" that can be finished to production quality quickly and then maintained efficiently on the .NET platform going forward. 

 Outputs: Upgrade Solution

The output of an Upgrade Effort is an Upgrade Solution that automatically transforms the legacy system into a .NET system that meets requirements. Each Upgrade effort consumes and produces a number of different input and output files which are organized into a directory tree called a Migration Workspace.