I will describe a general technique for identifying modules in programs that do not designate them explicitly. 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. I will open with a brief description of the modularization process. I will then introduce concept analysis. I will discuss how concept analysis can be employed to discover potential modularizations. I will present some results on this process applied to existing C programs. To conclude the talk, I will give a short demonstration of a prototype concept analysis tool.
The talk will assume very little: some basic facts about sets and lattices, minimal understanding of C and C++, and the notion of modular programming.
This is joint work with Tom Reps.