Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »


Herbert-ABS offers leading edge loading and salvage analysis software packages as well as software design tools to the maritime and offshore industries. It owns, markets and supports the existing suite of Herbert software products including its shipboard loading software (CargoMax), salvage response software (HECSALV), and load management software for offshore structures (LMP). Its latest software solutions include an enhanced containership stowage module, performance monitoring and optimization tools, and a load management, condition monitoring, and emergency response package for offshore vessels and structures.

Great Migrations worked with HerbertABS to accelerate upgrading their VB6 to .NET. Great Migrations used gmStudio to generate a C# system containing 22 application projects generated from the VB6 codes and also containing a COM stub framework generated from the COM dependencies. All projects were cross-referential and organized into a VS2015 project for subsequent refactoring, verification and optimization by the HerbertABS development team.  The development of this "Phase 1" upgrade solution took about 10 weeks.

Project Highlights

System Metrics

FILES693K LOC Logic and 79K LOC GUI in 1,712 Files: 411 Forms, 9 MDIForm, 1,040 Classes, 124 UserControls, 102 Modules, 0 PropertyPages, 0 Designers organized into 22 VBPs.
BINARIES12 EXEs, 7 DLLs, 2 Controls, 1 OLE EXEs
MEMBERS41,918 unique subprograms: 11,893 subroutines, 9,439 functions, 10,695 properties, 1,084 externs, 8,808 event handlers. 
UI535 unique UI containers containing 8,183 instances of 178 different kinds of controls.  
COM19,076 calls to external COM components. The diversity of COM members is 1,690 unique members from 316 classes in 37 COM components.
WIN321,169 calls to 445 unique entry-point APIs from 17 libraries. API Calls are made from 98 different user procedures.

COM Upgrades

All COM dependencies were satisfied by a COM stub framework generated automatically from actual COM usage found in the source codebase. The generated stub framework contained 40 assemblies generated for third-party COM components as well as a dozen in-house .NET assemblies (not listed).  This framework was subsequently upgraded to implemented  .NET components by the in-house development team as part of their overall effort to verify and optimize the C# generated by the gmStudio upgrade solution.  

  1. ComponentOne Chart 8.0 2D Control
  2. Microsoft Excel 14.0 Object Library
  3. Microsoft Windows Common Controls 6.0 (SP6)
  4. Microsoft Common Dialog Control 6.0 (SP6)
  5. Microsoft FlexGrid Control 6.0
  6. Microsoft XML, v6.0
  7. Microsoft Rich Textbox Control 6.0
  8. Sax Basic Engine v6 - Enterprise Library
  9. Microsoft Scripting Runtime
  10. Microsoft SysInfo Control 6.0
  11. Microsoft Tabbed Dialog Control 6.0
  12. ComponentOne VSFlexGrid 8.0 (DAO/RDO)
  13. Automated Solutions Modbus Slave Control
  14. ComponentOne Chart 8.0 3D Control
  15. Microsoft CDO for Windows 2000 Library
  16. Microsoft Windows Common Controls-3 6.0
  17. Microsoft Windows Common Controls 5.0 (SP2)
  18. Microsoft Excel 14.0 Object Library
  19. MarkCtrl ActiveX Control module
  20. Microsoft Calendar Control 8.0
  21. Microsoft Chart Control 6.0 (OLEDB)
  22. Microsoft Windows Common Controls-2 6.0 (SP6)
  23. Microsoft Windows Common Controls 6.0 (SP6)
  24. Microsoft Common Dialog Control 6.0 (SP6)
  25. Microsoft Comm Control 6.0
  26. Microsoft FlexGrid Control 6.0
  27. Microsoft Hierarchical FlexGrid Control 6.0 (OLEDB)
  28. Microsoft MAPI Controls 6.0
  29. Microsoft XML, v6.0
  30. OPCWare Client Developer OPC ActiveX Toolkit
  31. OptiGen Library for COM 2.0 Type Library
  32. Microsoft Rich Textbox Control 6.0
  33. Sax Basic Engine v6 - Enterprise Library
  34. Microsoft Scripting Runtime
  35. Microsoft Tabbed Dialog Control 6.0
  36. Visual Basic For Applications
  37. Visual Basic runtime objects and procedures
  38. ComponentOne VSPDF 8.0 Control
  39. ComponentOne VSPrinter 8.0 Control
  40. Microsoft Word 14.0 Object Library

Upgrade Features

The core features of the translation engine were improved in several ways for this project including the following features:

  • multi-dimensional array rank inference
  • precision of mixed precision calculations
  • interfaces/Implements for a complex application object model with hundreds of classes
  • support for generating an integrated build configuration 
  • refactoring GoSub blocks into separate functions
  • optimization of byref parameter passing
  • with blocks using instances of user-defined types (structs)
  • handling optional parameter default values based on private constants


  • No labels