Analyze and Redesign vs.
Automated Conversion of MUMPS Code to C++
Analysis and Redesign
Short term costs are high
Long term / maintenance costs are low
Documented system
Stable design
Database design
Automated conversion of MUMPS to C++
Short term costs are moderate
MUMPS uses internal hierarchical database
C++ must have an interface to a database manager (SQL)
C++ code can be no better than the MUMPS code it was derived from
C++ does not execute comments
C++ does not execute data
Requires proprietary C++ library
May require manual intervention
Database design
Considerations
MUMPS has only one data type (and they are all different)
MUMPS will create a new variable if one is misspelled (for a set statement)
C++ has strong data typing
MUMPS vendor specific functions
C++ implementation must provide MUMPS vendor functionality
C++ implementation will have to provide MUMPS functionality
Database manager must be selected
Side effects (some programmers rely on side effects)
MUMPS code has GOTOs
MUMPS code is sometimes self modifying
Trade-Off
|
|
Analyze / Redesign
|
Automated Conversion
|
|
Short term costs
|
High
|
Moderate
|
|
Long term / maintenance
|
Low
|
Moderate
|
|
Documentation
|
Current design
|
`As was' design (extracted from code)
|
|
Design stability
|
High
|
Moderate
|
|
Data base design
|
Required
|
Required
|
|
Implementation of sparse arrays
|
No
|
Required
|
|
Implement context sensitive data typing
|
No
|
Required
|
|
Implement MUMPS functionality
|
No
|
Required
|
|
Parse MUMPS code
|
Required
|
Required
|
|
Run mflow analysis
|
Required
|
Required
|
|
Run naked analysis
|
Required
|
Required
|
|
Run metrics analysis
|
Required
|
Required
|
|
Transform script
|
No
|
Required
|
|
Transform filter
|
No
|
Required
|
|
Class library
|
No
|
Required
|
|
Header Files for Proprietary Classes
|
No
|
Required
|