User Tools

Site Tools


protected:acdc

This is an old revision of the document!


ACDC Algorithm

History

Algorithm was developed by Vassilios Tzerpos.

Algorithm Intent

ACDC algorithm produces flat or nested decomposition from a software system. The algorithm assignees a name for identified clusters.

Factbase Properties

The factbase includes only dependencies between entities.

Clustering Objectives

The produced decomposition has the following properties:

  1. Effective cluster name
  2. Bounded cluster cardinality
  3. File-level granularity

Process Description

ACDC creates clusters by detecting established subsystem patterns in the given software system. Software entities that are not clustered this way are assigned to the subsystem that depends the most on them.

Decomposition Properties

  1. The cluster name is one of the following options:
    • Directory name
    • Module name with large out-degree
    • “Support” for cluster contains all utilities
    • Module name of dominator node
  2. All utilities modules belong to one cluster
  3. A large number of cluster contains a dominator node

Algorithm Restrictions

The algorithm is not suitable for systems with less than 100 source files.

Failed Assumptions

Detailed Algorithm Description

ACDC produces software decomposition from a software system into stages:

  1. Skeleton construction
  2. Completion of clustering using Orphan Adoption

The Skeleton construction phase creates a skeleton of the final decomposition by identifying subsystems using a pattern-driven approach. Depending on the pattern used, the subsystems are given names. In the second stage algorithm completes decomposition by using Orphan Adoption algorithm.

Skeleton construction

The Skeleton contraction phase has seven steps:

  1. Create the potential dominator list
  2. Create a support library and dispatcher list
  3. Iterate the sub-graph dominator pattern including modules from the support library and dispatcher list
  4. Apply both the support library pattern and the dispatch pattern to modules from corresponding list

All apply pattern steps are straight forward grouping entities according to the pattern rule. The other steps are described below.

Create the potential dominator list

Create a support library and dispatcher list

Iterate the sub-graph dominator pattern including modules from the support library and dispatcher list

Completion of clustering using Orphan Adoption

In the previous phase, the skeleton of software decomposition was constructed. Some modules are left unassigned from the first phase. In this phase algorithm assigns all non-clustered modules to some subsystem.

The Orphan Algorithm attempts to assign all unassigned modules to some subsystems. The skeleton decomposition serves as the existing structure, while the non-clustered modules are the orphans. Orphan Algorithm will not assign module if the module follows the leaf pattern, and it cannot be assigned to any subsystem with sufficient level of confidence. Finally, ACDC applies the leaf pattern for all unassigned modules.

protected/acdc.1241986208.txt.gz · Last modified: 2009/05/10 20:10 by mark