Bunch produces flat decompositions of a software system that exhibit high cohesion and low coupling.
The factbase is a module dependency graph (MDG).
The Bunch algorithm constructs software decompositions with maximum cohesion and minimum coupling.
The Bunch algorithm is an optimization search algorithm that finds a partition with the maximum value of the MQ objective function.
The Bunch decomposition has a high value for its objective function MQ.
Bunch starts by generating a random partition of the module dependency graph. Then, entities from the partition are regrouped systematically by examining neighbouring partitions in order to find a better partition. When an improved partition is found, the process repeats, i.e. the found partition is used as the basis for finding the next improved partition. The algorithm stops when it cannot find a better partition.
You can download the official Bunch implementation here.