dison que "ça sert à rien", on fait de l'héritage et on constate que dire B hérite de A c'est mettre une relation (d'ordre : antisymétrique, transitive, éventuellement réflexive, suivant le moment) entre A et B donc tracer un lien donc il existe un graphe. Pour prendre un peu de hauteur dans le discours, on peut parler du graphe d'héritage, mais ce n'est qu'une facilité de langue.
On peut analyser un peu de graphe d'héritage mais ça va rerament super loin (au-delà de conster que Eiffel est plus propre que C++ parce qu'il possède un type None qui hérite de toutes les feuilles de l'arbre par ex. ça va pas hyper loin).
Par contre, d'un point de vue qualité, on peut faire un peu de mesure dessus par ex. on dit qu'on peut avoir des hiérarchies abstraites longues mais qu'on doit avoir des hiérarchies concrètes courtes. La longueur, dans ce cas, fait référence à la profondeur de l'arbre dh'éritage, l'aspect abstrait ou concret fait référence au fait que la classe (le "classifier" au sens d'UML, ça peut être une "interface" de java, et d'autres conneries comme, par ex. des "actors", en UML) possède au moins une méthode abstraite (virtuelle pure en C++) ou non.
On peut aussi parler et donner des critères sur l'arbre des packages.
Les métriques de Martin qui se fondent en partie sur l'héritage :
http://www.objectmentor.com/resour [...] dmetrc.pdf