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: 2009/06/20 21:43 by mark