Major Non-Admitted Insurance Carrier -- Core System (VB6)
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.
Project Highlights
System Metrics
Metric | Comments |
CODE | 315K LOC Logic and 64K LOC GUI in 1,035 Files: |
BINARIES | 4 EXEs, 13 DLLs |
MEMBERS | 24,224 unique subprograms: |
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 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 C# translation generated from the VB6 code and a C# stub framework generated for the external COM platform dependencies
Two Proof-Of-Concept experiments demonstrating how the Standard Upgrade process can be improved to produce 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 from HMB, and one part-time developer from the client staff as well as PM support from the client's IT managers. In a parallel effort, our consulting partner, worked closely with the client to confirm functional scope, develop an automated UI testing process, and prepare for the transition to production.
Custom Upgrade Features
The collection of features integrated and delivered by the Custom Upgrade Solution are summarized below:
COM API/Control Upgrades
ADODB: upgrade to System.Data and SqlClient [+]
fpSpread: upgrade to WinForms.DataGridView [+]
In-House .NET Interop Code: 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: remove
[+] .NET classes and controls were extended for better application compatibility and cleaner application code
Language Upgrades
Class_Terminate: simplify
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 and 3,700 functions were removed
Integrate hand-coded content: 13 whole files were replaced and 55 functions were re-authored
Generate a VS2017 Solution integrating the full application stack: 14 generated projects and more than 60 preexisting, in-house .NET projects were integrated
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 updates of the VB6/COM code corresponding to four (4) maintenance releases
Create and maintain a Source Metrics Database in SQL Server 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 (of upgrading the full set of VBPs to an integrated Visual Studio Solution) runs, from start to finish, in under 2 minutes.
Testimonial