Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Estimation

gmStudio was initially created to help us deliver large-scale custom migration services to our clients. Early in our discussions with these clients, we were always asked two questions:

  • What is this going to cost?  
  • How long is this going to take?

Unfortunately, most teams do not have a useful notion of how big or "complex" their systems are, let alone what they wanted their systems to become as a result of the migration. The requirements were typically little more than this:

  • Our legacy codebase is not well documented, but we have been adding functionality to it for a long time and it is "big";  
  • Our objective is to have a .NET application that does the same things as our legacy application.

Given the lack of good data, We had our work cut out for us to come up with accurate cost and time estimates. We leveraged our toolset to help us gather information on the source system -- the idea being that if we can build a sufficient knowledge base of what the system is in VB6/ASP, then we can use it as a framework for planning the work to reproduce it in .NET. The assessment process and tools described here were the results of this experience.

Some Thoughts on Estimation

Creating Estimates from metrics looks simple enough:

   R = X * Y

where:

   R = total amount of resources needed to "do the migration"

   X = number of "units" to be migrated (applications, components,
       fields, lines of code, etc.)

   Y = per unit cost (amount of resources needed to complete one
       unit of migration)

But take care, this is model is too simplistic. You will want to account for a few other factors to boost your accuracy:

  • First, the numbers for X generated from a thorough, systematic inventory of your codebase will probably be much bigger than you think.  
  • Second, Whether X is lines of code, forms, systems classes, whatever -- they are not going to require the same effort.  
  • Third, even if you set out to different effort levels based on complexity, there will be serious unknowns to contend with and the effort per unit will also decrease as you gain experience. This is particularly true with our methodology, which is specifically designed to be both improvable and repeatable.

No matter what, it is very likely that your initial estimtes will be very rough and depending on your style they may be very high or very low. You will certainly want to refine the numbers as you progress.

Fortunately, gmStudio can produce a collection of extremely detailed reports and do other types of analysis. These data can help you map out a set of finite migration tasks that can each be assigned a reasonable work estimate.

A final word of caution on estimation. There are many factors beyond size and complexity of the code conversion that drive the cost of a migration effort. Keep these in mind as you compute your estimates:

  • Increasing efficiency as the automated migration process is refined  
  • Increasing efficiency as the team climbs the .NET learning curve  
  • Scope and frequency of delivery cycles you will make or have to work around during the course of the migration effort  
  • Quality and volatility of the source codebase entering each cycle  
  • Development process and working environment efficiency (e.g., onsite, offsite)  
  • Ability to do testing, especially runtime testing in later stages of the methodology  
  • Consistency, depth and completeness of technical requirements for each cycle  
  • Size and skills of the migration team and their cost of their labor  
  • Amount of synergy between the migration and other work in progress
Panel
titleThe Role Of Design
You cannot know how far you have to travel until you know where you are starting from and decide where you are going.Beware that assessment work alone does not tell you how to solve your problems, it only helps you understand them better. You must still develop an understanding of what the new platform has to offer -- both the good and the bad -- and agree on which designs will work well with that platform. You will have to do this design work no matter if you plan to use tools or start from scratch. The source code assessment helps you know what you are getting into. Using tools helps you implement and experiment with new designs in a more systematic and efficient fashion. 

gmStudio Reporting Overview

gmStudio can produce a variety of useful reports to help you plan, execute, and measure the progress of your migration effort. There are four classes of reports:

...

The gmStudio report titles and output file names are listed below: 

TitleOutput File
Code Scan Reports 
Source Structure[MigName]-SrcStruct.tab
Source References[MigName]-SrcRef.tab
Source Members[MigName]-SrcMember.tab
Source GUI Scan[MigName]-SrcGUI.tab
Source Code Scan[MigName]-SrcScan.tab
Iceberg[MigName]-Iceberg.tab
Project Reports 
Project Summary[MigName]-MigStat.txt
Metrics Summary[MigName]-Metrics.htm
Migration Set[MigName]-MigSet.tab
Code Bundles[MigName]-Bundle.tab
.NET Build Logs[MigName]-BldLog.tab
Translation Logs[MigName]-TranLog.tab
All Logs[MigName]-AllLog.txt
Interface File Headers[MigName]-LibHeaders.tab
Interface File ProgIds[MigName]-LibProgIds.tab
Semantic Model Reports 
Semantic References[MigName]-AnaRef.tab
Semantic Definitions[MigName]-AnaDef.tab
Semantic Symbols[MigName]-AnaSym.tab
Semantic Audit[MigName]-Audit.txt
Utility Reports 
Migration Project ListgmProjects.tab
Multi-Unit Scripttran.[MigName]_MultiJob.xml
Target Code Scan[MigName]-BndScan.tab
Target Code Chanfges[MigName]-BndChanges.txt

...

Once you have your code into .NET, Visual Studio offers several useful reports. See Code Analysis and Code Metrics in the Visual Studio documentation. 

Tip

...

titleAutomated .NET Code Review

Note that the Build Log report will tabulate code analysis results if they are in the MSBuild log. This can be a convenient way to run an automated code review of your new .NET codebase. See MSDN for additional details on using MSBuild for code reviews.