Code Metrics Explained

You cannot control what you cannnot measure

Con la salida de Visual Studio 2008, salio un muy buen feature llamado “Code Metrics” en el cual se manejaban 5 metricas, las cuales ya formaban parte de la industria desde hace algún tiempo:

  • Lines of Code
  • Class Coupling
  • Cyclomatic Complexity
  • Depth of Inheritance
  • Maintainability Index

A continuación les anexo una referencia breve sobre para que deberían ser usadas cada una de estas métricas.

 

Lines of Code (LOC)

 

 

string textoPantalla = numeroPrimo == 3 ? “Cierto” : “Falso”

Creo que con esta linea de codigo podriamos definir que aunque el codigo sea muy pequeño en lineas de codigo este podria ser muy complejo.

Además si quicieramos medir la efectividad o la productividad en el numero de lineas de codigo que un desarrollador escribe por día podriamos caer en la siguiente pregunta:

“Un desarrollador escribe el codigo para el acceso a datos, el cual es el modulo más importante de nuestra aplicación y escribio 50 lineas por día y tenemos otro desarrollador que hizo toda la GUI utilizando el Visual Studio y genero 150. Entonces ¿Despedimos al que construyo el acceso a datos?”

Uso

  • Medir las lineas de código por Clase o Método

 

 

Class Coupling

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Entre menos numero de clases dependa nuestra clase, entonces será más estable. Por lo tanto deberá ser considerada digna de reutilización

Esta métrica esta basada en medir la estabilidad de la clase dependiendo del numero de dependencias que esta contenga, digamos que tenemos una baja dependencia de otros objetos; Por lo tanto nuestra clase será más estable. y entonces reutilizable.

 

 

Cyclomatic Complexity

 

 

Mide el numero de flujos independientes dentro de un modulo

Podriamos compararlo con un diagrama de flujo donde los nodos son los procesos y la medicion es realizada cada vez que el flujo pasa por un nodo.

Detalle Tecnico

La siguiente formula es aplicada en la medición:

Cyclomatic complexity (CC) = E - N + p

  • E = Numero de bordes en la grafica
  • N = Numero de nodos en la grafica
  • p = Numero de componentes conectados

Escala de Valores

Cyclomatic Complexity Risk Evaluation
1-10 A simple program, without much risk
11-20 More complex, moderate risk
21-50 Complex, High risk problem
Greater than 50 Unestable program (Very high risk)

Uso

  • Análisis de riesgos en la construcción y mantenimiento
  • Planeación del proceso de pruebas
  • Análisis de reingenieria

 

 

Depth of Inheritance

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Indica el numero de definiciones de clase que se extienden en la jerarquía de clases

  • Entre más profunda se encuentre la clase en la jerarquia, aumenta el numero de metodos que utilizan herencia, haciendo así que sea más complejo de predecir su comportamiento
  • Arboles de herencia mayores constituyen un diseño más complejo, esto debido a que más clases y metodos estan involucrados en el mismo
  • Entre más profunda este la clase en la jerarquia, es más probable la reutilización de methodos heredados

Uso

  • Medir la reusabilidad de los componentes
  • Definir la dificultad en el mantenimiento de la solucíon

 

 

Maintainability Index

 

 

 

 

 

Calcula un valor entre 0 y 100 con el cual indicara la facilidad con la que se le puede dar mantenimiento al codigo

Entre mayor es el valor más facil es la realización de mantenimiento.

  • Verde - 20 a 100
  • Amarillo - 10 a 19
  • Rojo - 0 a 9

Detalle Tecnico

Se obtiene el indice mediante la siguiente formula:

  • Maintainability Index = MAX(0,(171 - 5.2 * ln(Halstead Volume) - 0.23 * (Cyclomatic Complexity) - 16.2 * ln(Lines of Code))*100 / 171)

Uso

  • Medir la complejidad y la mantenibilidad de la solución, basandose en varias metricas

 

Saludos @ Traffic City

VSTS Usergroups

Hola!

Encontre gracias al blog de Chuck Sterling una lista a los “Usergroups”, les anexo la lista:

VSTS Usergroups Locales

VSTS Usergroups Internacionales


Referencia: Charles Sterling - Four new VSTS User Groups


Saludos @ Virtual VSTS User Group

Webcast 02 - Data Driven Unit Test

Hola!

Ya salió la segunda entrega del Webcast, en este caso es Data-Driven Unit Test:

Webcast 02 - Data Driven Unit Test

Espero lo disfruten.

this.TestContext.DataRow["Saludos"];