### Table of Contents

# Bunch Algorithm

# History

# Algorithm Intent

Bunch produces 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, 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 here.