Question

J'ai récemment utilisé NDepend et il a généré un bon rapport sur mes assemblages .net et les pdbs associés.

La chose la plus intéressante que j'ai trouvée dans le rapport était le graphique abstrait / instabilité. Je voulais comprendre cela dans les moindres détails, je lisais leurs docs et leurs métrices en ligne, mais cela ne pouvait qu’aider dans une certaine mesure.

Je souhaite avant tout comprendre comment évaluer correctement le graphe et les techniques permettant de contrôler l’abstrait avec stabilité.

Il existe un très bon article, ici , qui en parle mais qu'est-ce que j'ai besoin de plus? Comment puis-je contrôler cela? [contrôler l'abstrait avec stabilité] '

alt text

Était-ce utile?

La solution

L'abstrait est une mesure de la rigidité d'un système logiciel. Plus l'abstraction est élevée, plus la rigidité est basse (ou plus la flexibilité est grande) et inversement. Si les composants du système dépendent de classes abstraites ou d’interfaces, un tel système est plus facile à étendre et à modifier que s’il dépendait directement de classes concrètes.

La stabilité est une mesure de la tolérance au changement en fonction de la mesure dans laquelle le système logiciel permet de le modifier sans le casser. Ceci est déterminé en analysant les interdépendances des composants du système.

L’article de de Robert C. Martin décrit ces concepts de manière plus quantitative. termes.

Extrait de l'article:

La responsabilité, l’indépendance et la stabilité d’une catégorie peuvent être mesurées en comptant les les dépendances qui interagissent avec cette catégorie. Trois indicateurs ont été identifiés:

Ca: Couplages afférents: nombre de classes en dehors de cette catégorie qui dépendent des classes de cette catégorie.

Ce: Couplages Efferents: nombre de classes de cette catégorie qui dépendent de classes en dehors de cette catégorie.

I: Instabilité: (Ce ÷ (Ca + Ce)): Cette métrique a la plage [0,1]. I = 0 indique une catégorie à stabilité maximale. I = 1 indique une catégorie à instabilité maximale.

A: Résumé: (# classes abstraites dans la catégorie nombre total de classes dans la catégorie). Cette plage métrique est [0,1]. 0 signifie concret et 1 signifie complètement abstrait.

Dans tous les systèmes logiciels, en particulier ceux de grande taille, l’équilibre est essentiel. Dans ce cas, un système doit équilibrer l’abstraitité avec la stabilité pour être "bon". La position sur le graphique A-I le montre. Veuillez lire l'article pour l'explication.

Autres conseils

L'abstrait et l'instabilité peuvent être utilisés seuls pour évaluer votre code. Vous savez à l'avance à quel point un module devrait être abstrait ou stable. Par exemple, vous voulez que la couche de présentation soit modérément abstraite et très stable, car les modules inférieurs en dépendent. D'autre part, vous voulez que la couche d'infrastructure soit très concrète (abstention réduite) et très instable, car elle doit mettre en œuvre ce que les couches supérieures exigent.

Une fois que cela est clair, vous pouvez combiner l’abstrait et l’instabilité dans un graphique, c’est le graphe instabilité-abstraite. Vous souhaitez que votre code présente autant d'abstrait qu'il soit stable, afin d'équilibrer les besoins afin de prendre en charge les modifications futures des exigences.

Mais de toute façon, vous devriez avoir une solide compréhension des métriques d’instabilité et d’abstrait avant d’essayer de les comprendre en travaillant ensemble. Vous trouverez quelques exemples de ce que signifie l'instabilité dans cet article: Comment utiliser les métriques de couplage et d'instabilité pour guider la refactorisation

Un article connexe dérive une requête CQLinq qui mesure l'instabilité de tous les modules de l'application: Comment mesurer le couplage et l'instabilité de module à l'aide de NDepend

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top