views:

82

answers:

2

How would you describe DSM in simple terms?

+1  A: 

The basic idea behind a DSM is that it represents the "dependency" or "uses" relationship in a tabular form. Parnas defined the "uses" relation between A and B so that when B "uses" A, it means B depends on A's correct operation for its own correct operation.

The uses relation forms a graph in a real system. The DSM is a matrix representation of that graph, what's called an "incidence matrix", where each cell is marked if there is a uses relation between the components. So if there are n components in a DSM D, Di,j = 1 iff j "uses" i.

Charlie Martin
Good translation into something that everyone *should* be more familiar with (namely, graph theory) but I do think you meant adjacency matrix, since it's representing a relation from vertices to vertices.
Edmund
+2  A: 

In simple terms, a DSM is a different visual way than boxes and arrows diagram to represent a graph. The interesting thing, is that, while boxes and arrows diagrams are good at showing small graphs with a few dozens of node and not too many connections (sparse graph), DSM are better than boxes and arrows diagram at showing larger graph. For that we say that DSM scales. The downside is that DSM is not as intuitive as boxes and arrows diagram and come with a learning curve.

Compare to boxes and arrows diagrams, DSM is especially good to make structural patterns obvious. Concretely, on this blog post Identify Code Structure Patterns at a Glance it is explained how to use a Dependency Structure Matrix to identify Code Structure Patterns. The screenshots are done with the Dependency Structure Matrix of the tool NDepend. Here are a few patterns:

Layered code (code with no cycle, certainly the coolest thing that a DSM can show you at a glance)
alt text

Code with dependency cycles
alt text

High Cohesion / Low-Coupling
alt text

Hungry Caller
alt text

Popular Callee
alt text

Mutual Coupling
alt text

Data Object
alt text

Patrick Smacchia - NDepend dev
Its a good writeup, but I think the key to my question was "simple terms" -- like if you were going to explain DSM to your spouse.
MikeNereson