Wednesday, March 7, 2012

DTangler's DSM Algorithm

You should note that DTangler, unlike many other Dependency Structure Matrix (DSM) tools, can have entries above the diagonal, even for non-circular graphs:
(...) a DSM may contain entries above the diagonal even when there are no cycles between the analysed items. With dtangler, this is rather an indication that the items are not properly layered.

Non-circular DSM
According to the DTangler authors, the DSM arranging principle was a conscious decision: You can be cycle-free and still have non-optimal layering of modules. If you have items in the upper-right triangle it is not necessarily a problem, but it sort of gives you a nagging feeling: "Why do we have stable components depending on less stable components?"

The philosophy originates from Robert C. Martins' (Uncle Bob) articles on object-oriented software. In particular, the article about "Stability" is relevant.

To fully understand how the DTangler's DSM is created, please read the full thesis. You should concentrate on section 5.5.4 “Generating DSMs”.

No comments: