Design Structure Matrix (DSM)
A Design Structure Matrix (DSM) is a visual model for expressing dependencies that has been used in many engineering disciplines for decades. It is an N X N matrix (see the sample below), in which the rows and columns consist of the same set of elements. An element can be a file, class, function, developers, requirement, or other design decisions. Elements are arranged in the same order as rows and columns. Symbols in a cell, such as "x" below, indicate that the row element "depends" on the column element. Dependencies can be calls, inheritance, code-to-requirement implementations, and so on.
A DSM can visualize the following general relations:
- Cyclic dependency: Markings in a DSM that are symmetric across the diagonal indicate dependency
- Hierarchical dependency: Non-symmetric markings in a DSM indicate hierarchical dependency
- Prototype module (or module for short): A square block along a diagonal that contains a group of elements is called a proto-module
- Hierarchical structure: If there is no dependency outside the module in the upper right triangle of the DSM, this indicates that the system does not have a cyclic dependency and hence is strictly hierarchical.
For example, the above DSM illustrates that (1) B and C are Inter-dependent; (2) E hierarchically depends on D, (3) A, B-C, D-E are three proto-modules.
Cells in a DSM can also indicate other information, such as the number of dependencies among elements, as shown below:
DV8 employs DSMs as its fundamental visualization of software systems. In DV8, the cells can be expanded to show concrete dependency types:
A DSM can also be used to represent evolutionary coupling between files, i.e., the number of times two files were changed together, as recorded in the project’s revision history. For example, if cell(x, y) is marked with ",4", it means there is no structural relation between x and y but they have been changed and committed together 4 times (according to the project's revision history). A cell with both a textual annotation and a number means that the two files have both structural and evolutionary coupling relations. For example, if cell(x, y) is marked with "call, 3", it means that x calls y, and they were changed together 3 times.
Using DV8, the user can reorder the elements in a DSM or cluster them into modules, using the tree view on the left, as shown below. Please refer to the DV8 Explorer User Guide for details.