Identifying Modules Via Concept Analysis

Michael Siff and Thomas Reps

We describe a general technique for identifying modules in legacy code. The method is based on concept analysis---a branch of lattice theory that can be used to identify similarities among a set of objects based on their attributes. We discuss how concept analysis can identify potential modules using both ``positive'' and ``negative'' information. We present an algorithmic framework to construct a lattice of concepts from a program, where each concept represents a potential module. We define the notion of a concept partition, present an algorithm for discovering all concept partitions of a given concept lattice, and prove the algorithm correct.

(Click here to access the paper: paper, via IEEE Explore.)