Software Documentation Tools

For the reengineering of legacy programs that verify the consistency of production data, the software competence center Hagenberg developed a reverse engineering tool to automatically generate high-level representations of the source code which facilitate the analysis of the legacy programs with respect to external behavior. The high-level representation serves as input for stakeholders to manually analyze the external behavior of the legacy programs, to identify obsolete and missing business cases, and, finally, for the re-implementation of a new system.

SCCH Tools for Software Reverse Engineering

The motivation for the selected reengineering approach is manifold:

  • Changes in business cases over the last years were not reflected in verification logic of the legacy code.
  • For a new production plant, additional requirements must be incorporated.
  • The maintenance of the legacy programs was complicated by the retirement of original developers.
  • Legacy code is not extensible in a safe and reliable way.
  • Stakeholders estimated high effort for manual analysis of the legacy code.

„The goal for our reverse engineering tool was to support stakeholders to comprehend the verification logic implemented in the legacy programs. Whereas, comprehension requires that stakeholders can identify the business cases currently checked by the software as well as that stakeholders are able to extend the verification logic with respect to new requirements.“, Dr. Pichler

SoRing Evolution Tool Set

The SoRing software evolution tool set consists of 16 interrelated software tools to support the

  • Measurement,
  • Maintenance,
  • Migration and
  • Testing

of existing business application systems. The tools run on a MS-Windows platform under all Windows operating systems, with a graphical user interface and various backend processes implemented in COBOL and C++. The languages processed range from natural language for writing requirements to assertion language for writing test scripts and include both procedural and object-oriented programming languages as well as the most widely used database and interface description languages.