Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

image-20240424-084601.pngImage Removed

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:

...