DSM-Optimizer

Open-source DSM clustering, sequencing, partitioning and change propagation.

DSM-Optimizer is aimed at engineers and researchers who want to apply DSM methods without a commercial licence or a scripting project. It handles component/architecture DSMs, where the goal is to find modules, and process/activity DSMs, where the goal is to sequence work and expose iteration. It has been used on product architectures, software module structures, and development processes. Because it runs entirely on the user’s own machine and sends nothing over a network, it is usable on matrices that could not be uploaded to a hosted service.

• Cluster a component DSM into candidate module structures and compare the results of four independent algorithms

• Assess how robust a proposed module structure is by measuring clustering stability across random seeds

• Sequence elements within clusters to minimise feedback marks, subject to cluster-size constraints

• Partition a process DSM: order activities, identify iteration loops, and evaluate tearing options

• Estimate how a change to one element propagates through the rest of the system

• Edit a matrix directly, test what-if changes to cluster membership, and compare revisions across design reviews

• Export analysed matrices, metrics and reports to Excel for circulation and archiving

• Four clustering algorithms run on every matrix: spectral clustering on the Fiedler vector with a swept cluster count, Markov clustering with a swept inflation parameter, Thebeau’s simulated annealing, and Louvain modularity maximisation. All four are scored on Thebeau coordination cost and external coupling ratio, and all four are shown.

• No automatic commitment to a partition. The lowest-cost candidate is labelled as recommended, and the engineer chooses. The reasoning is that the cost function cannot see supplier arrangements, team boundaries or legacy constraints that the engineer can, so the choice belongs to the engineer while the arithmetic belongs to the tool.

• Clustering stability analysis. Three of the four algorithms are stochastic, so the tool runs the chosen one repeatedly across seeds and builds a co-clustering matrix, reporting a per-element consistency score that separates settled assignments from unstable ones.

• Bus and hub detection before clustering, so that highly connected elements do not smear across every module and degrade the algorithms.

• Pareto view of coordination cost against cluster count across the candidates, and a Fiedler vector view of the underlying spectral structure.

• Process mode with Tarjan strongly connected component detection, topological sequencing into parallel levels, simulated annealing within loops, and tearing suggestions ranked by impact and edge weight.

• Change propagation analysis along the strongest path with per-hop attenuation, out to four hops.

• Matrix editor for building or correcting a DSM in place, with undo and redo, element renaming, and an explicit statement of the mark convention so that the direction of a dependency is never left to guesswork.

• Optional random seed for fully reproducible output, alongside cluster-count and cluster-size constraints and an advisory external coupling target.

• What-if editing of cluster membership, project files that save an entire session, and a diff mode that compares two DSM revisions to show which dependencies were added, removed or changed and how the propagation picture moved.

• Excel and CSV input, including edge lists; colour-coded Excel export and a print-ready report collecting matrices, comparison tables, cluster membership and tearing suggestions.

• Runs locally as a browser-based application. No account, no upload, no network access. Installs with a single pip command, or as a packaged desktop application for users without Python.

• Architecture review: propose a modular decomposition of an existing product or codebase, and check which element assignments are robust enough to base a team or supplier boundary on.

• Method comparison and teaching: show students or colleagues how four established clustering methods behave differently on the same matrix, and discuss why.

• Process improvement: sequence a development process, find the iteration loops, and evaluate which dependencies are worth tearing.

• Change impact assessment: estimate which components are exposed to a proposed change, including at second and third hand.

• Tracking architecture over time: save a project per design revision and compare revisions to see which dependencies changed and how the propagation picture moved.

The tool is new and the developer would rather state its limits plainly than have users discover them.

• No industrial validation. There is no published case study and no controlled comparison against the commercial tools. Testing so far covers more than a hundred matrices between 12 and 80 elements, including synthetic block-structured matrices with injected noise, but this is not the same as field evidence.

• Untested at large scale. Behaviour and runtime on matrices of several hundred elements or more have not been characterised.

• Single-objective ranking. Candidates are ranked by Thebeau coordination cost, which is also the objective that one of the four candidate algorithms optimises directly. External coupling and the Pareto view give a partial second opinion, but this is not a neutral comparison and additional objectives would improve it.

• Whether letting the engineer choose the algorithm produces better architectural decisions, rather than simply a greater sense of involvement, has not been demonstrated. It is a design position, not a validated result.

• Change propagation uses a fixed per-hop attenuation rather than empirically derived likelihoods, so it should be read as a relative risk ordering and not an absolute probability.

• Developed and maintained by one person, without institutional backing. The project is active and versioned publicly, and contributions are welcome.

The tool is under active development and is versioned publicly, so the feature set described here is a snapshot rather than a final state. Work in progress falls into three areas: additional scoring objectives so that candidates are not ranked on coordination cost alone, better support for large matrices, and machine-learning assistance for the interpretation steps that currently sit with the user, such as proposing names for discovered modules and suggesting element groupings from a natural-language description of the system. The intention throughout is that any such assistance stays advisory and explainable. Deciding the architecture remains the engineer’s job, and a suggestion the user cannot interrogate would defeat the point of the tool.

Feedback, bug reports, feature requests and criticism are all welcome, and are the main reason the tool is public at this stage. Issues can be opened on GitHub, or sent directly by email if that is easier. Reports from people applying the tool to real matrices are especially valuable, since that is exactly the evidence the project currently lacks. Contributions and pull requests are welcome under the same licence.

dsm-optimizer is free. There is no licence fee, no subscription, no account, no registration, and no paid tier; the full feature set described above is available to everyone. It is released under the MIT licence, which permits academic, commercial and personal use, modification and redistribution. It runs entirely on the user’s own machine and transmits nothing over a network, so matrices never leave the computer they are analysed on.

Developer: Chanchal Dhiman, Independent Researcher Email: cdhiman@mtu.edu ORCID: 0009-0002-6183-3017 Source code: github.com/Chanchaldhiman/dsm-optimizer Install: pip install dsm-optimizer (Python package index: pypi.org/project/dsm-optimizer)

Desktop build: available from the GitHub releases page, for users without Python Issues and feedback: github.com/Chanchaldhiman/dsm-optimizer/issues

Licence: MIT. Free for academic, commercial and personal use.