Pregunta

Recientemente utilicé NDepend y produjo un buen informe sobre mis ensamblados .net y pdbs relacionados.

Lo más interesante que encontré en el informe fue el gráfico de abstracción versus inestabilidad. Quería entender esto en detalle, leí sus documentos y metrices en línea, pero solo podía ayudar hasta cierto punto.

Principalmente deseo entender cómo evaluar el gráfico correctamente y las técnicas para controlar la abstracción con estabilidad.

Hay un muy buen artículo aquí que habla sobre esto pero lo que además de esto necesito es '¿cómo controlo esto? [control de la abstracción con estabilidad] '

texto alternativo ??

¿Fue útil?

Solución

La abstracción es una medida de la rigidez de un sistema de software. A mayor abstracción, menor rigidez (o mayor flexibilidad) y viceversa. Si los componentes del sistema dependen de clases o interfaces abstractas, dicho sistema es más fácil de extender y cambiar que si dependiera directamente de clases concretas.

La estabilidad es una medida de tolerancia al cambio, así como de qué tan bien el sistema de software permite cambios sin romperlo. Esto se determina analizando las interdependencias de los componentes del sistema.

El

Robert C. Martin artículo sobre métricas de OO describe estos conceptos en términos más cuantitativos términos.

Extracto del artículo:

La responsabilidad, independencia y estabilidad de una categoría se puede medir contando el dependencias que interactúan con esa categoría. Se han identificado tres métricas:

Ca: Acoplamientos aferentes: El número de clases fuera de esta categoría que dependen de las clases dentro de esta categoría.

Ce: Acoplamientos eferentes: El número de clases dentro de esta categoría que dependen de clases fuera de estas categorías.

I: Inestabilidad: (Ce ÷ (Ca + Ce)): Esta métrica tiene el rango [0,1]. I = 0 indica una categoría máximamente estable. I = 1 indica una categoría máximamente inestable.

A: Abstracción: (# clases abstractas en la categoría ÷ total # de clases en la categoría). Este rango métrico es [0,1]. 0 significa concreto y 1 significa completamente abstracto.

En cualquier sistema de software particularmente grande, el equilibrio es crítico. En este caso, un sistema debe equilibrar la abstracción con la estabilidad para ser "bueno". La posición en el gráfico A-I muestra esto. Por favor lea el artículo para la explicación.

Otros consejos

Tanto la abstracción como la inestabilidad se pueden usar solos para evaluar su código. Usted sabe de antemano cuán abstracto o estable debe ser algún módulo. Por ejemplo, desea que la capa de presentación sea moderadamente abstracta y altamente estable, porque los módulos inferiores dependen de ella. Por otro lado, desea que la capa de infraestructura sea altamente concreta (baja abstracción) y altamente inestable, ya que debe implementar lo que las capas superiores exigen.

Una vez que está claro, puede combinar abstracción e inestabilidad en un gráfico, y ese es el gráfico de inestabilidad-abstracción. Desea que su código muestre tanta abstracción como sea estable, a fin de equilibrar las necesidades para soportar futuros cambios en los requisitos.

Pero de todos modos, debe tener una sólida comprensión de las métricas de inestabilidad y abstracción solo antes de tratar de entender que trabajan juntas. Puede encontrar algunos ejemplos de lo que significa la inestabilidad en este artículo: Cómo utilizar el acoplamiento de módulos y las métricas de inestabilidad para guiar la refactorización

Hay un artículo relacionado que deriva una consulta CQLinq que mide la inestabilidad de todos los módulos en la aplicación: Cómo medir el acoplamiento y la inestabilidad del módulo usando NDepend

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top