protected:template
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| protected:template [2009/05/08 17:20] – created mark | protected:template [2009/05/08 17:36] (current) – mark | ||
|---|---|---|---|
| Line 2: | Line 2: | ||
| ====== History ====== | ====== History ====== | ||
| ====== Algorithm Intent ====== | ====== Algorithm Intent ====== | ||
| + | A description of the goals behind this | ||
| + | software clustering algorithm. | ||
| + | |||
| + | |||
| + | * To decompose a software system into subsystems | ||
| + | * To recover the architecture of a software system | ||
| + | * To discover possible ways to restructure the software | ||
| + | |||
| + | |||
| + | Explicitly stating algorithm intent can simplify selecting a software | ||
| + | clustering algorithm for reverse engineers, as well as understanding a | ||
| + | clustering algorithm for software clustering researchers. | ||
| + | |||
| ====== Factbase Properties ====== | ====== Factbase Properties ====== | ||
| + | A description of the input that the software clustering algorithm expects (an algorithm' | ||
| + | extracted from the software system). | ||
| + | algorithms often expect that the factbase includes only dependencies | ||
| + | between modules. | ||
| + | |||
| ====== Clustering Objectives ====== | ====== Clustering Objectives ====== | ||
| + | A description of the ideal output | ||
| + | of the software clustering algorithm. Based on experience or heuristics, | ||
| + | the designer of the algorithm decides what a meaningful decomposition of | ||
| + | a software system should look like. For example, a software decomposition with maximum cohesion and minimum coupling. | ||
| + | |||
| ====== Process Description ====== | ====== Process Description ====== | ||
| + | A brief description of the main idea | ||
| + | behind the algorithm' | ||
| + | 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 ====== | ====== Decomposition Properties ====== | ||
| + | A description of the properties | ||
| + | of the decompositions that the software clustering algorithm creates. | ||
| + | These properties are either a direct result of the clustering objective | ||
| + | (e.g. Bunch creates decompositions whose value of the objective function | ||
| + | is higher than that for other algorithms) or an | ||
| + | artifact of the algorithm' | ||
| + | decompositions that are more balanced than most algorithms). | ||
| + | |||
| ====== Algorithm Restrictions ====== | ====== Algorithm Restrictions ====== | ||
| + | Since software clustering | ||
| + | algorithms are heuristic algorithms, their performance | ||
| + | may depend on the type of software system being clustered. Such dependencies | ||
| + | need to be documented here. For example, Bunch may not be well-suited | ||
| + | for event-driven systems. | ||
| + | |||
| ====== Failed Assumptions ====== | ====== Failed Assumptions ====== | ||
| + | A description of ideas that did not | ||
| + | work very well while developing the algorithm. This information is | ||
| + | often omitted in publications but could be invaluable to the software | ||
| + | clustering researcher. | ||
| + | |||
| ====== Detailed Algorithm Description ====== | ====== Detailed Algorithm Description ====== | ||
| + | The nuts and bolts of the | ||
| + | algorithm' | ||
| + | only section of significant length in an algorithm description. | ||
| + | |||
protected/template.1241803223.txt.gz · Last modified: by mark
