mdg_generator
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| mdg_generator [2009/06/20 21:43] – mark | mdg_generator [2010/03/21 20:53] (current) – mark | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== | + | ====== |
| - | Random | + | Simulated |
| ====== History ====== | ====== History ====== | ||
| Line 10: | Line 10: | ||
| * Every node in the graph starts with a current in- and out- degree of 0. | * Every node in the graph starts with a current in- and out- degree of 0. | ||
| - | * Every node in the graph is assigned a target in- and out-degree, so that the sequence | + | * Every node in the graph is assigned a target in- and out-degree, so that the seqence |
| - | * Let $I$ be the set of nodes whose current in-degree is less than | + | * Let <m>I</ |
| - | their target in-degree. Let $O$ be the set of nodes whose current out-degree is less than their target out-degree. While $I$ and $O$ are not empty, randomly select a node from each set. Create an edge between the two nodes. | + | |
| Random dependency graph generator algorithm is a modified version of the above process, since the user may need to apply additional constraints so that the end result resembles more closely an MDG derived from a software system. The implementation allows for two types of constraints: | Random dependency graph generator algorithm is a modified version of the above process, since the user may need to apply additional constraints so that the end result resembles more closely an MDG derived from a software system. The implementation allows for two types of constraints: | ||
| * Edge constraints. These are applied after each edge creation. If the constraint is violated, the edge creation is cancelled, and a new pair of nodes is selected. The current implementation includes three possible edge constraints: | * Edge constraints. These are applied after each edge creation. If the constraint is violated, the edge creation is cancelled, and a new pair of nodes is selected. The current implementation includes three possible edge constraints: | ||
| - | * * No multiple edges: Only one edge is allowed between two modules. | + | * No multiple edges: Only one edge is allowed between two modules. |
| - | * * No cycles: The new edge should not result in a cycle | + | * No cycles: The new edge should not result in a cycle |
| - | * * No loops: The new edge should not connect a node to itself | + | * No loops: The new edge should not connect a node to itself |
| - | + | | |
| - | | + | * Connectivity: |
| - | created. If the constraint is violated, an effort will be made to | + | * Low Clustering Coefficient: |
| - | satisfy it if possible by reshuffling some of the edges. If that is not | + | |
| - | possible, the graph generation process needs to be repeated. The current | + | |
| - | implementation includes two possible graph constraints: | + | |
| ====== Implementation ====== | ====== Implementation ====== | ||
| + | Random dependency graph generator uses some classes from other Java libraries. | ||
| + | |||
| + | ===== Dependency ===== | ||
| + | The [[JRET]], developed at the York University , is a large library that provides a wide range of facilities for reverse engineering | ||
| + | |||
| + | ===== Download ===== | ||
| - | {{:sample.tar.gz|}} | + | {{:src_samples.jar|}} |
mdg_generator.1245534195.txt.gz · Last modified: by mark
