{"id":15195138,"url":"https://github.com/otepipi/designstructurematrix.jl","last_synced_at":"2025-10-27T23:31:40.451Z","repository":{"id":44907961,"uuid":"191374711","full_name":"Otepipi/DesignStructureMatrix.jl","owner":"Otepipi","description":"Tools for Design Structure Matrix","archived":false,"fork":false,"pushed_at":"2022-01-25T11:06:31.000Z","size":23,"stargazers_count":9,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-10-11T14:41:18.618Z","etag":null,"topics":["designstructurematrix","designsystem","julia"],"latest_commit_sha":null,"homepage":"","language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Otepipi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-11T13:13:57.000Z","updated_at":"2024-04-07T06:48:32.000Z","dependencies_parsed_at":"2022-08-26T09:10:38.915Z","dependency_job_id":null,"html_url":"https://github.com/Otepipi/DesignStructureMatrix.jl","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Otepipi%2FDesignStructureMatrix.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Otepipi%2FDesignStructureMatrix.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Otepipi%2FDesignStructureMatrix.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Otepipi%2FDesignStructureMatrix.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Otepipi","download_url":"https://codeload.github.com/Otepipi/DesignStructureMatrix.jl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219860467,"owners_count":16556017,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["designstructurematrix","designsystem","julia"],"created_at":"2024-09-27T23:06:42.018Z","updated_at":"2025-10-27T23:31:40.150Z","avatar_url":"https://github.com/Otepipi.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DesignStructureMatrix.jl\n[![Build Status](https://travis-ci.com/Otepipi/DesignStructureMatrix.jl.svg?branch=master)](https://travis-ci.com/Otepipi/DesignStructureMatrix.jl)\n[![Codecov](https://codecov.io/gh/Otepipi/DesignStructureMatrix.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/Otepipi/DesignStructureMatrix.jl)\n[![Coveralls](https://coveralls.io/repos/github/Otepipi/DesignStructureMatrix.jl/badge.svg?branch=master)](https://coveralls.io/github/Otepipi/DesignStructureMatrix.jl?branch=master)\n\n## What is Design Structure Matrix?\n\n**D**esign **S**tructure **M**atrix (**DSM**), also called **D**ependency **S**tructure **M**atrix, is a simple and useful method to represent complex system architectures or projects.\n\nhttps://en.wikipedia.org/wiki/Design_structure_matrix\n\n\n## What is DesignStructureMarix.jl?\n\nThis package, DesignStructureMatrix offers tools for displaying and analysing DSM.\nFor now, plotting DSM, clustering DSM and sequencing DSM are available.\n\n## Installation\n\nIn Pkg mode( Please hit `]`)\n\n`(v1.7) pkg\u003e add DesignStructureMatrix`\n\nWhen you use this package, please type\n\n`julia\u003e using DesignStructureMatrix`\n\n## Displaying DSM\nyou need to prepare adjacency matrix A for systems or projects.\nfor example\n```julia\n##this is adjacency matrix\nA = [0 1 0 0 0 1 0;\n    0 0 0 1 0 0 0;\n    1 0 0 0 0 0 1;\n    0 0 0 0 1 0 0;\n    0 1 0 0 0 1 0;\n    0 0 1 0 0 0 0;\n    1 0 0 0 1 0 0]\n```\nthen\n```julia\n7×7 Array{Int64,2}:\n 0  1  0  0  0  1  0\n 0  0  0  1  0  0  0\n 1  0  0  0  0  0  1\n 0  0  0  0  1  0  0\n 0  1  0  0  0  1  0\n 0  0  1  0  0  0  0\n 1  0  0  0  1  0  0\n ```\n\nnext, you need to prepare label for elements in this adjacency matrix.\n```julia\nlabel = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\"]\n```\nthen\n\n```julia\n6-element Array{String,1}:\n \"A\"\n \"B\"\n \"C\"\n \"D\"\n \"E\"\n \"F\"\n ```\n\nTo display DSM, please type\n\n```julia\nplotDSM(A,label)\n```\nthen\n\n![](https://user-images.githubusercontent.com/35882132/150873248-843737c8-6619-4816-b54d-bec151d5ee69.svg)\n\n\n## Clustering DSM\n\nOne of useful ways for analysing DSM is Clustering.\n\nOriginal DSM is below\n```julia\noriginal_DSM = [ 0 1 0 0 1 1 0;\n                0 0 0 1 0 0 1;\n                0 1 0 1 0 0 1;\n                0 1 1 0 1 0 1;\n                0 0 0 1 0 1 0;\n                1 0 0 0 1 0 0;\n                0 1 1 1 0 0 0];\n\noriginal_label = [\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\"];\n\nplotDSM(original_DSM,original_label)\n\n```\noriginal_DSM\n\n![ClusteroriginalDSM](https://user-images.githubusercontent.com/35882132/150873257-5ccd5a7d-76ad-41e5-a98a-505f22266146.svg)\n\n\n\nTo get Clustered DSM, please type\n```julia\nclustered_DSM, clustered_label = Clustering(original_DSM,original_label)\n```\nand\n```julia\nplotDSM(clustered_DSM,clustered_label)\n```\nthen, you get clustered DSM\n\n![Clustered_DSM](https://user-images.githubusercontent.com/35882132/150873258-69098483-9722-4b7c-ac24-cfc6e3675728.svg)\n\n## Sequencing DSM\n\nAnother way for analysing DSM is seaquencing.\n\nOriginal DSM is below\n``` julia\noriginal_DSM = [0 0 0 0 0 0 0 0 0 0 0 0 0;\n                0 0 0 1 0 0 0 0 0 0 0 0 0;\n                1 0 0 1 1 0 0 1 0 1 0 0 1;\n                1 0 0 0 0 0 0 0 0 0 0 0 0;\n                1 1 1 1 0 0 1 1 0 1 1 0 1;\n                0 1 0 0 0 0 0 0 1 0 0 0 0;\n                0 0 1 1 1 0 0 1 0 1 0 0 1;\n                0 1 0 1 0 0 0 0 0 1 0 0 0;\n                0 0 1 1 0 0 0 0 0 1 0 0 1;\n                0 1 0 1 0 0 0 1 0 0 0 0 0;\n                0 0 1 1 1 0 0 1 0 1 0 0 1;\n                0 0 0 0 0 0 0 0 0 0 0 0 1;\n                0 1 1 1 1 0 1 1 1 1 1 1 0];\n\n\noriginal_label = [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\",\n                \"9\", \"10\", \"11\", \"12\", \"13\"];\n\nplotDSM(original_DSM,original_label)\n\n```\noriginal DSM\n\n![SequencingoriginalDSM](https://user-images.githubusercontent.com/35882132/150873259-5f4942f8-73bd-45ee-9fa2-34d6a006a4c6.svg)\n\nTo get Sequenced DSM, please type\n\n```julia\nsequenced_DSM, sequenced_label = Sequencing(original_DSM, original_label);\n\nplotDSM(sequenced_DSM, sequenced_label)\n```\n\nthen, you get sequenced DSM\n\n![SequencedDSM](https://user-images.githubusercontent.com/35882132/150873260-80546e4f-040d-4485-9c43-a79c821b89ea.svg)\n\n\n\n## Future\n\n* Implement Other algorithm for clustering DSM\n* Implement Other algorithm for sequencing DSM\n* Display **D**omain **M**apping **M**atrices (**DMMs**), and **M**ulti**D**omain **M**atrices (**MDMs**)\n\n## Dependency packages\n* Luxor.jl\n* LinearAlgebra.jl\n\n\n## Reference\n\n#### Clustering algorithm\n\n\u003eFigueiredo Damásio, J., Almeida Bittencourt, R., Dario, D., \u0026 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\n\n#### Sequencing algorithm\n\n\u003eWarfield, 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\n\n\nAnd original DSM in chapter `Sequencing DSM` is from the below article\n\n\n\u003eYassine, 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\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fotepipi%2Fdesignstructurematrix.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fotepipi%2Fdesignstructurematrix.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fotepipi%2Fdesignstructurematrix.jl/lists"}