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
This package, DesignStructureMatrix offers tools for displaying and analysing DSM. For now, plotting DSM, clustering DSM and sequencing DSM are available.
In Pkg mode( Please hit ]
)
(v1.7) pkg> add DesignStructureMatrix
When you use this package, please type
julia> using DesignStructureMatrix
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"
To display DSM, please type
plotDSM(A,label)
then
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
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
- Implement Other algorithm for clustering DSM
- Implement Other algorithm for sequencing DSM
- Display Domain Mapping Matrices (DMMs), and MultiDomain Matrices (MDMs)
- Luxor.jl
- LinearAlgebra.jl
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
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