Concepedia

Publication | Closed Access

A reverse‐engineering approach to subsystem structure identification

350

Citations

25

References

1993

Year

TLDR

Reverse‑engineering extracts system abstractions and design information from existing software by identifying artefacts, exploring their interactions, and aggregating them into higher‑level representations that aid program understanding. This paper presents an approach for constructing higher‑level abstract representations of a subject system by identifying related components and dependencies, building layered subsystem structures, and computing exact interfaces among subsystems. The method reconstructs top‑down decompositions through bottom‑up subsystem composition, grouping building blocks such as variables, procedures, modules, and subsystems using low‑coupling/high‑cohesion composition operations, and manipulates the resulting structures with the Rigi system—a distributed graph editor and parsing system that offers graph filters and clustering operations for interactive exploration of subsystem hierarchies. The approach yields a layered subsystem architecture, which the authors validate by applying Rigi to a detailed step‑by‑step analysis of a 30‑module software system.

Abstract

Reverse-engineering is the process of extracting system abstractions and design information out of existing software systems. This process involves the identification of software artefacts in a particular subject system, the exploration of how these artefacts interact with one another, and their aggregation to form more abstract system representations that facilitate program understanding. This paper describes our approach to creating higher-level abstract representations of a subject system, which involves the identification of related components and dependencies, the construction of layered subsystem structures, and the computation of exact interfaces among subsystems. We show how top-down decompositions of a subject system can be (re)constructed via bottom-up subsystem composition. This process involves identifying groups of building blocks (e.g., variables, procedures, modules, and subsystems) using composition operations based on software engineering principles such as low coupling and high cohesion. The result is an architecture of layered subsystem structures. The structures are manipulated and recorded using the Rigi system, which consists of a distributed graph editor and a parsing system with a central repository. The editor provides graph filters and clustering operations to build and explore subsystem hierarchies interactively. The paper concludes with a detailed, step-by-step analysis of a 30-module software system using Rigi.

References

YearCitations

Page 1