...
A study by Dan Sturtevant investigated the impact of software dependencies on defect rate, productivity and staff turnover. It classified modules into the following types:
Peripheral: Few dependencies
Utility: Many ingoing dependencies
Control: Many outgoing dependencies
Core : Many in- and outgoing dependencies
The outcome of the study was that software dependencies have the following impact:
Defect rate
3.1X increase between periphery and core
2.6X for McCabe
Combined effect 8.3X
Lower productivity
50% decline as developer moves from periphery to core (conservatively)
Higher staff turnover
10x increase in voluntary and involuntary terminations as developer moves from periphery to core
DSM-Design Structure Matrix
...
DSI file is a way to import 3rd-party analyzer DSM output to Quality Reviewer.
DSM Application Area
Some common usage scenarios for DSM visualization of the code architecture are:
Reduce defects
By helping to reduce complex software dependencies.
By improving the understanding the system and the implications of change. See the conclusion of chapter 25 ‘Where Do Most Software Flaws Come From?’ from the book ‘Making Software’. See oreilly,
Reduce learning time for unfamiliar code bases:
By allowing you to get a high level overview of a code base.
Asses software architecture:
Discovery of software architecture of undocumented software.
Checking if it is in line with the documented architecture.
Discovery of emergent architecture. See Scaled Agile on intentional versus emergent architecture.
Impact analysis of architecture refactoring:
Align implemented architecture with intended architecture.
Isolate parts of the software, so they can be outsourced.
Encapsulate third party software, so it can be easily replaced.
Separating critical software from non critical software, so only critical parts need to be developed using more formal processes e.g. in health domain.
DSM Advantages
DSM visualization is a technique for analysing, improving, and managing complex system architectures.
...
Powerful technique
Scales better than boxes and lines diagram.
Highlighting dependency cycles is a key strength.
Partitioning algorithms provide mechanism for architectural discovery in large code base.
It can be easily kept in sync with the code.
...
Proven technique
Has been used successfully in a wide variety of projects in many industries.
Can be adopted at any stage of the project.
Enforce architecture: Check if implemented software architecture conforms to defined one.
Architectural Discovery: Identify structure existing code base.
Re-engineer/refactor: Impact analysis of architectural refactoring scenarios prior to implementation.
Can be applied at multiple levels
...
Call Graph
Starting from source code, a Call Graph is automatically generated by Quality Reviewer showing how classes and functions call each other within an application:
...