2009-06-23 4 views
18

J'ai récemment utilisé NDepend et il a produit un bon rapport sur mes assemblages .net et les pdb associés.Qu'est-ce que l'abscisse ou l'instabilité?

La chose la plus intéressante que j'ai trouvée dans le rapport était l'abstraction par rapport au graphique d'instabilité. Je voulais comprendre cela dans les moindres détails, j'ai lu leurs documents et leurs métriques en ligne, mais cela ne pouvait que nous aider dans une certaine mesure. Principalement, je souhaite comprendre comment évaluer correctement le graphique et les techniques pour contrôler l'abstraction avec la stabilité.

Il ya un très bon article here qui parle de cela mais quoi de plus en plus de cela j'ai besoin de 'comment contrôler cela? [Contrôle avec stabilité abstrait] »

alt text

Répondre

25

est une mesure Abstraction de la rigidité d'un système logiciel. Plus l'abstraction est élevée, moins la rigidité (ou plus la flexibilité) et vice versa. Si les composants du système dépendent de classes ou d'interfaces abstraites, 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, comme dans la mesure dans laquelle le système logiciel permet des modifications sans la casser. Ceci est déterminé en analysant les interdépendances des composants du système.

Le article de Robert C. Martin sur les métriques OO décrit ces concepts en termes plus quantitatifs.

Extrait de l'article:

La responsabilité, l'indépendance et la stabilité d'une catégorie peut être mesurée en comptant les dépendances qui interagissent avec cette catégorie. Trois métriques ont été identifiées:

Ca: Afférent Couplages: Le nombre de classes en dehors de cette catégorie qui dépendent des classes dans cette catégorie.

Ce: efférents Accouplements: Le nombre de classes à l'intérieur de cette catégorie qui dépendent des classes en dehors de ces catégories.

I: Instabilité: (Ce ÷ (Ca + Ce)): Cette mesure a l'intervalle [0,1]. I = 0 indique une catégorie au maximum stable. I = 1 indique une catégorie au maximum instable.

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

Dans tout système logiciel particulièrement important, l'équilibre est critique. Dans ce cas, un système doit équilibrer l'abstraction avec la stabilité pour être «bon». La position sur le graphique A-I le montre. S'il vous plaît lire l'article pour l'explication.

0

L'abstraction et l'instabilité peuvent être utilisées seules pour évaluer votre code. Vous savez d'avance à quel point un module devrait être abstrait ou stable.Par exemple, vous souhaitez que la couche de présentation soit modérément abstraite et très stable, car les modules inférieurs en dépendent. D'un autre côté, vous voulez que la couche d'infrastructure soit très concrète (faible abstraction) et hautement instable, car elle devrait implémenter ce que les couches supérieures exigent. Une fois que cela est clair, vous pouvez combiner l'abstraction et l'instabilité dans un graphique, et c'est le graphique d'instabilité-abstraction. Vous voulez que votre code affiche autant d'abstraction que de stabilité, afin d'équilibrer les besoins pour supporter les futurs changements dans les exigences. Mais de toute façon, vous devriez avoir une bonne compréhension des métriques d'instabilité et d'abstraction avant d'essayer de les comprendre en travaillant ensemble. Vous pouvez trouver quelques exemples sur ce que l'instabilité signifie dans cet article: How to Use Module Coupling and Instability Metrics to Guide Refactoring

Il y a un article connexe découlant d'une requête CQLinq qui mesure l'instabilité de tous les modules de l'application: How to Measure Module Coupling and Instability Using NDepend

Questions connexes