Most legacy systems have been altered due to prolonged maintenance to the point that they deviate significantly from their original and intended design and consequently, they lack modularity. Static source code analysis techniques like concept assignment, formal concept analysis and program slicing, have been successfully used by researchers for program understanding and for restoring system design properties. In our approach we combine these three techniques, aiming to gain on their individual strengths and overcoming their weaknesses. In this paper we present a program representation formalism that we call the Lattice of Concept Slices and a program modularization technique that aims to separate statements in a code fragment according to the concept they implement or they may belong to. The lattice shows the relationship between the statements of a program and the domain concepts that might be implemented by the statements. Using the lattice as a primary data structure we present two algorithms for decomposing the program into appropriate modules. The goal is to achieve a modularization such that the modules are self-contained, side effect free and the code duplication among nodes is minimal. The modularization process is illustrated with an example C program.
Citation:
Raihan Al-Ekram, Kostas Kontogiannis, "Source Code Modularization Using Lattice of Concept Slices," csmr, pp.195, Eighth Euromicro Working Conference on Software Maintenance and Reengineering (CSMR'04), 2004