Managing Architecture Debt with Dependency Structure Matrix

Ali Zeynalli
3 min readJan 27, 2022
Photo by Vlado Paunovic on Unsplash

Technical Debt is a hot topic in all software development projects that over time gets more sophisticated as source code grows gradually. There are plenty of tools analyzing technical debt that basically concentrates on code quality. Architecture debt being subpart of technical debt is not that easy to determine, since there are no automated tools available as in case of technical debt.

When determining Architecture debt the one should look into architectural anti-patterns that are coupled in source code. Here are common architectural anti-patterns that need to be determined and eliminated:

  1. Unstable Interfaces: these are generally APIs or entry points to a system which have bunch of dependent components. Little changes in these interfaces cause lots of headache in all dependent components.
  2. Modularity violation: software systems should be structured in modular way. This means together changeable components should be structured in same modules to avoid inter-modular dependencies. If changes in one module influences other modules drastically the one should investigate what are root causes of these instability.
  3. Unhealthy inheritance: this happens when super class depends on its child class or caller class depends on both super and child instances.

--

--

Ali Zeynalli

IT-Architect | BMW Group | M.Sc. Technical University of Berlin