## DesignStructureMatrix.jl

Tools for Design Structure Matrix
Author Otepipi
Popularity
8 Stars
Updated Last
1 Year Ago
Started In
June 2019

# DesignStructureMatrix.jl

## What is Design Structure Matrix?

Design Structure Matrix (DSM), also called Dependency Structure Matrix, is a simple and useful method to represent complex system architectures or projects.

https://en.wikipedia.org/wiki/Design_structure_matrix

## What is DesignStructureMarix.jl?

This package, DesignStructureMatrix offers tools for displaying and analysing DSM. For now, plotting DSM, clustering DSM and sequencing DSM are available.

## Installation

In Pkg mode( Please hit `]`)

`(v1.7) pkg> add DesignStructureMatrix`

When you use this package, please type

`julia> using DesignStructureMatrix`

## Displaying DSM

you need to prepare adjacency matrix A for systems or projects. for example

```##this is adjacency matrix
A = [0 1 0 0 0 1 0;
0 0 0 1 0 0 0;
1 0 0 0 0 0 1;
0 0 0 0 1 0 0;
0 1 0 0 0 1 0;
0 0 1 0 0 0 0;
1 0 0 0 1 0 0]```

then

```7×7 Array{Int64,2}:
0  1  0  0  0  1  0
0  0  0  1  0  0  0
1  0  0  0  0  0  1
0  0  0  0  1  0  0
0  1  0  0  0  1  0
0  0  1  0  0  0  0
1  0  0  0  1  0  0```

next, you need to prepare label for elements in this adjacency matrix.

`label = ["A", "B", "C", "D", "E", "F", "G"]`

then

```6-element Array{String,1}:
"A"
"B"
"C"
"D"
"E"
"F"```

`plotDSM(A,label)`

then

## Clustering DSM

One of useful ways for analysing DSM is Clustering.

Original DSM is below

```original_DSM = [ 0 1 0 0 1 1 0;
0 0 0 1 0 0 1;
0 1 0 1 0 0 1;
0 1 1 0 1 0 1;
0 0 0 1 0 1 0;
1 0 0 0 1 0 0;
0 1 1 1 0 0 0];

original_label = ["A","B","C","D","E","F","G"];

plotDSM(original_DSM,original_label)
```

original_DSM

To get Clustered DSM, please type

`clustered_DSM, clustered_label = Clustering(original_DSM,original_label)`

and

`plotDSM(clustered_DSM,clustered_label)`

then, you get clustered DSM

## Sequencing DSM

Another way for analysing DSM is seaquencing.

Original DSM is below

```original_DSM = [0 0 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 1 0 0 0 0 0 0 0 0 0;
1 0 0 1 1 0 0 1 0 1 0 0 1;
1 0 0 0 0 0 0 0 0 0 0 0 0;
1 1 1 1 0 0 1 1 0 1 1 0 1;
0 1 0 0 0 0 0 0 1 0 0 0 0;
0 0 1 1 1 0 0 1 0 1 0 0 1;
0 1 0 1 0 0 0 0 0 1 0 0 0;
0 0 1 1 0 0 0 0 0 1 0 0 1;
0 1 0 1 0 0 0 1 0 0 0 0 0;
0 0 1 1 1 0 0 1 0 1 0 0 1;
0 0 0 0 0 0 0 0 0 0 0 0 1;
0 1 1 1 1 0 1 1 1 1 1 1 0];

original_label = ["1", "2", "3", "4", "5", "6", "7", "8",
"9", "10", "11", "12", "13"];

plotDSM(original_DSM,original_label)
```

original DSM

To get Sequenced DSM, please type

```sequenced_DSM, sequenced_label = Sequencing(original_DSM, original_label);

plotDSM(sequenced_DSM, sequenced_label)```

then, you get sequenced DSM

## Future

• Implement Other algorithm for clustering DSM
• Implement Other algorithm for sequencing DSM
• Display Domain Mapping Matrices (DMMs), and MultiDomain Matrices (MDMs)

## Dependency packages

• Luxor.jl
• LinearAlgebra.jl

## Reference

#### Clustering algorithm

Figueiredo Damásio, J., Almeida Bittencourt, R., Dario, D., & Guerrero, S. (n.d.). Recovery of Architecture Module Views using an Optimized Algorithm Based on Design Structure Matrices. Retrieved from https://arxiv.org/ftp/arxiv/papers/1709/1709.07538.pdf

#### Sequencing algorithm

Warfield, J. N. (1973). Binary Matrices in System Modeling. IEEE Transactions on Systems, Man and Cybernetics, 3(5), 441–449. https://doi.org/10.1109/TSMC.1973.4309270

And original DSM in chapter `Sequencing DSM` is from the below article

Yassine, A. A. (2004). An Introduction to Modeling and Analyzing Complex Product Development Processes Using the Design Structure Matrix ( DSM ) Method. Urbana, (January 2004), 1–17. Retrieved from http://ie406.cankaya.edu.tr/uploads/files/Modeling and Analyzing Complex Product Development Processes Using the Design Structure Matrix.pdf

### Used By Packages

No packages found.