Versions Compared

Key

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

Overview

A major non-admitted insurance carrier maintains and runs a comprehensive Insurance Information Management System (IIMS).  IIMS is a business-critical desktop application supporting Non-Admitted Insurance operations -- Policies, Claims, Agents, and Accounts -- for several hundred users across eight departments.   The IIMS application has been in active use and ongoing maintenance since the late-1990s. 

System Metrics

Metric

Comments

FILES

315K LOC Logic and 64K LOC GUI in 1,035 Files:
213 Forms, 1 MDIForm, 707 Classes, 4 UserControls, and 92 Modules organized into 17 VBPs.

BINARIES

4 EXEs, 13 DLLs

MEMBERS

24,224 unique subprograms:
2,543 subroutines, 2,574 functions, 14,751 properties, 506 externs, 3,821 handlers, and 29 events. 

UI

216 unique UI containers containing 6,737 instances of 55 different kinds of controls.

COM

85,714 calls to external COM components. The diversity of COM members is 1,554 unique members of 117 classes from

255 classes in

30 COM components.

WIN32

256 calls to 98 unique entry-point APIs from 14 libraries. API Calls are made from 119 different user procedures.

GM assisted with the following four phases of the project:

  • An Assessment, Definition, and Planning engagement
  • A Standard Upgrade Phase resulting in an integrated build-complete code of the entire system using a direct translation generated from the VB6 code and a stub framework generated for the external COM platform dependencies
  • Two Proof-Of-Concept experiments demonstration how the Standard Upgrade process could be improved to an upgrade replacing parts of the stub framework with .NET assemblies resulting in a runnable application with limited functionality
  • A Custom Upgrade Phase implementing over 60 custom upgrade features and providing a clean, runnable .NET system ready for functional testing and transition to production

All four phases were completed in one year with a staffing level of one full-time GM resource, one full-time external .NET technical consultant, and one part-time client developer as well as support from client IT managers.  In a parallel effort, our consulting partner, worked closely with the client to confirm functional scope, develop an automated UI testing processes, and prepare for the transition to production. 

Custom Upgrade Features

The collection of features integrated and delivered by the Custom Upgrade Solution and summarized below:

COM API/Control Upgrades

  • ADODB: upgrade to System.Data and SqlClient [+]
  • fpSpread: upgrade to WinForms.DataGridView [+]
  • In-House .NET Interop: upgrade to direct Assembly References
  • MSComCtl2.DTPicker: upgrade to WinForms.DateTimePicker
  • ListView: upgrade to WinForms.ListView
  • StatusBar: upgrade to WinForms.StatusBar [+]
  • ToolBar: upgrade to WinForms. ToolBar
  • TreeView: upgrade to WinForms.TreeView
  • MSComDlg: upgrade to WinForms CommonDialog classes
  • MSMAPI: upgrade to Microsoft.Office.Interop.Outlook
  • MSMask: upgrade to WinForms.MaskedTextBox [+]
  • MSXML: upgrade to System.Xml
  • Outlook: upgrade to Microsoft.Office.Interop.Outlook
  • RichTextBox: upgrade to WinForms.RichTextBox
  • Scripting: upgrade to System.IO; Dictionary upgrade to strongly-typed Generic Dictionary<K,T>
  • SysInfo: upgrade to .NET Framework calls
  • TabControl: upgrade to Winforms.TabControl [+]
  • Microsoft Word: removed

[+] .NET classes and controls extended for better application compatibility and cleaner application code

Language Upgrades

  • Class_Terminate: simplifify
  • VB6 Collections and Scripting.Dictionary: upgrade to strongly typed List<T>, Dictionary<K,T>, OrderedDictionary<K,T>
  • Conditional Compilation: simplify
  • Custom Data Binding: rework
  • Error handling: upgrade to Try/Catch with new logging component
  • Null/IsNull: upgrade to null or DBNull
  • Variant/Object Type Inference: Optimize

Structural Matters

  • Remove unused content: 75 whole files removed, and 3,700 functions removed
  • Integrate hand-coded content: 13 whole files replaced, and 55 functions reauthored
  • Generate a VS2017 Solution integrating the full application stack: 14 generated projects and more than 60 pre-existing in-house .NET projects

Win32

  • Replace Win32 wrapper functions with functionally equivalent Hand-coded functions using .NET APIs 

Value Added Features

  • Integrate gmStudio batch upgrade processing with a TFS DevOps Continuous Integration Pipeline
  • Rework or remove various cases of technical debt
  • Accept four updates of the VB6/COM code corresponding to maintenance releases
  • Source Metrics Database in SQL server used for ongoing optimization of the work plan

At the end of the Custom Upgrade Phase, which was completed in six months, the gmStudio Upgrade Solution could be used to automatically rewrite the entire IIMS codebase to C# applying all of the custom upgrade features listed above.  On a typical Windows 10 development machine, the entire process runs, from start to finish, upgrading all 14 VBPs and 440K LOC in under 2 minutes,.