A transition from a traditional COBOL environment to
an object oriented platform should enhance a system's
correctness, robustness, extendibility, and reusability,
the key factors affecting software quality.
Moreover, object technology is an enabler for componentization:
splitting a large application into reusable components,
such that they can be accessed independently,
and possibly replaced incrementally by commercial off-the-shelf
components.
Sneed discusses several other, highly practical, reasons for
renovation
[49].
In short, finding objects
in legacy systems
is a key research area in software renovation.
The literature reports several systematic approaches to object identification, some of which can be partially automated, such as [42,36,18,40,26,54]. These typically involve three steps: (1) identify legacy records as candidate classes; (2) identify legacy procedures or programs as candidate methods; (3) determine the best class for each method via some form of cluster analysis [34].
There are several problems, however, with the application of these approaches to actual systems.
In this section, we will look at three object identification issues in more detail: support for providing legacy system understanding (Section 2.2), ways to find types in a COBOL system (Section 2.3), and techniques for combining the types found with selected legacy functionality, thus arriving at candidate classes (Section 2.4).