1

Whilst evaluating NDepend I attached a NDepend project to all the Visual Studio projects that comprise our company's software suite. Particularly striking is the result of the Abstractness vs Instability graph. Almost all of the projects are crammed into the bottom-right corner of the graph, indicating a very high level of "instability".

The NDepend documentation's definition of instability is:

The ratio of efferent coupling (Ce) to total coupling. I = Ce / (Ce + Ca). This metric is an indicator of the assembly's resilience to change. The range for this metric is 0 to 1, with I=0 indicating a completely stable assembly and I=1 indicating a completely instable assembly.

However, I have been unable to find a clear definition of "resilience to change" in this context. Would anyone like to try to produce a definition?

Added

Obviously, the sentence in which "resilience to change" appears gives a loose definition of this concept as the "ratio of efferent coupling (Ce) to total coupling". But that leaves open the question of what the significance of this ratio is and how it relates to change.

David Brower
  • 2,888
  • 2
  • 25
  • 31

1 Answers1

2

See the documentation in report. stable means painful to modify hence instable is a positive things, it means it can be changed with few pain, it means the assembly is resilient to changes.


Excerpt from the documentation in the report: Abstractness versus Instability Diagram

The Abstractness versus Instability Diagram helps to detect which assemblies are potentially painful to maintain (i.e concrete and stable) and which assemblies are potentially useless (i.e abstract and instable).

  • Abstractness: If an assembly contains many abstract types (i.e interfaces and abstract classes) and few concrete types, it is considered as abstract.

  • Stability: An assembly is considered stable if its types are used by a lot of types of tier assemblies. In this conditions stable means painful to modify.

Patrick from NDepend team
  • 13,237
  • 6
  • 61
  • 92
  • 1
    Well, I can't think of a better person to answer my question! Thank you, Patrick. – David Brower Jul 08 '14 at 13:45
  • 1
    Well, maybe Robert C Martin, the inventor of these metrics :) You can read its original article on the topic: http://www.objectmentor.com/resources/articles/oodmetrc.pdf – Patrick from NDepend team Jul 08 '14 at 15:35
  • "stable means painful to modify" - I have not stumbled across this claim in the NDepend documentation so far. What I found was a graphic that basically states "stable + concrete" = pain, instable + abstract = useless". Meaning abstract code must be stable, concrete code must be "instable". That's exactly what your excerpt says - it only contradicts your first statement. – chiccodoro Jul 22 '15 at 06:17