====== Bunch Algorithm ====== ====== History ====== ====== Algorithm Intent ====== Bunch produces [[nested/flat decomposition|flat]] decompositions of a software system that exhibit high cohesion and low coupling. ====== Factbase Properties ====== The factbase is a module dependency graph (MDG). ====== Clustering Objectives ====== The Bunch algorithm constructs software decompositions with maximum cohesion and minimum coupling. ====== Process Description ====== The Bunch algorithm is an optimization search algorithm that finds a partition with the maximum value of the MQ objective function. ====== Decomposition Properties ====== The Bunch decomposition has a high value for its objective function MQ. ====== Algorithm Restrictions ====== ====== Failed Assumptions ====== ====== Detailed Algorithm Description ====== Bunch starts by generating a random partition of the module dependency graph. Then, [[terms|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. ====== Implementation ====== You can download the official Bunch implementation [[http://serg.cs.drexel.edu/redmine/projects/show/bunch|here]].