The authors address the common problem of transforming legacy source code into modernized, modularized code, which may include translating it from one programming language to another. They discuss the implementation of tools to partially automate this tedious software engineering work using a new approach: concept analysis, which embeds both positive and negative information. In their terms, negative information shows what variables or parameters a module does not depend on.
After introducing the problem, the authors provide a thorough tutorial on concept analysis, based on a simple example that is used throughout the paper. They follow this with a paragraph on the use of concept analysis to identify modules. Next, they introduce concept partitioning, keeping in mind that, potentially, not every group of concepts will represent a valid modularization. They thoroughly discuss the results obtained, applying their approach to several programs, including a large software system already in industrial use. A subsequent paragraph details related work by other researchers and compares the different approaches. The last paragraph summarizes the authors’ contributions to the problem and suggests some directions for future research.
All important definitions are formalized, and proofs of theorems related to the paper’s theme are given in an appendix. The paper ends with acknowledgments and a large reference section.