<< Chapter < Page Chapter >> Page >
Definición y tipos de Métricas de Complejidad con ejemplos para calcular la complejidad.

Son todas las métricas de software que definen de una u otra forma la medición de la complejidad; Tales como volumen, tamaño, anidaciones, costo (estimación), agregación, configuración, y flujo. Estas son los puntos críticos de la concepción, viabilidad, análisis, y diseño de software.

Los 2 tipos de métrica para calcular la complejidad es:

  • Complejidad ciclomática de McCabe
    McCabe,T.J., y A.H. Watson, “Solftware Complexity”, Crosstalk.
  • Ciencia del Software de Halstead
    Halstead, M., “Elements of Software Science”, Holland.

Complejidad ciclomática de mccabe

La complejidad ciclomática se basa en el recuento del número de caminos lógicos individuales contenidos en un programa. Para calcular la complejidad del software, Thomas McCabe utilizó la teoría y flujo de grafos. Para hallar la complejidad ciclomática, el programa se representa como un grafo, y cada instrucción que contiene, un nodo del grafo. Las posibles vías de ejecución a partir de una instrucción (nodo) se repesentan en el grafo como aristas. Por ejemplo, el código que se muestra a continuación con 2 sentencias selectivas anidadas genera el siguiente grafo:

1 if (condicion){ 2 if (condicion){ 3 A; B; } else { 4 C; D; 5 } 6 }

Si se realizase el grafo, se observaría que se encuentran 3 caminos posibles para llegar de la sentencia 1 a la sentencia 6:

Camino 1 (si ambos IF’s son verdad): Sentencias 1, 2, 3, 6

Camino 2 (si el primer IF es verdad y el segundo es falso): Sentencias 1, 4,6

Camino 3 (si el primer IF es falso): Sentencias 1, 6

Este programa tiene una complejidad ciclomática de 3.

La complejidad ciclomática se puede calcular de otras maneras. Se puede utilizar la fórmula:

v(G) = e - n + 2

donde e representa el número de aristas y n el número de nodos.

Otra forma de calcular la complejidad ciclomática consiste en aplicar la siguiente fórmula:

v(G) = número de regiones cerradas en el grafo + 1

Ejemplo de calcular la complejidad ciclomática

Calcular la complejidad ciclomática del método de ordenación de la Burbuja siguiendo el siguiente código:

Public static void bubbleSort2 (Sequence S) {

Position prec, succ;

int n = S.size();

for (int i = 0; i<n; i++) {

prec = S.first();

for (int j=1; j<n - i; j++) {

succ = S.after(prec);

if (valAtPos(prec)>valAtPos(succ))

S.swapElements(prec, succ);

rec = succ;

}

}

}

El código da como resultado el siguiente grafo:

v(G) = e - n + 2

v(G) = 12 - 10 + 2 = 4

Complejidad ciclomática = 4

Ciencia del software de halstead

Durante el final de los años 70 y principios de los 80, Maurice Halstead desarrolla un conjunto de métricas llamadas Halstead Software Science, métricas basadas en el cálculo de palabras clave (reservadas) y variables.

Su teoría está basada en un simple cuenta (muy fácil de automatizar) de operadores y operandos en un programa:

  • Los operadores son las palabras reservadas del lenguaje, tales como IF-THEN, READ, FOR,...; los operadores aritméticos +, -, *,..... los de asignación y los operadores lógicos AND, EQUAL TO,....
  • Los operandos son las variables, literales y las constantes del programa.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Métricas del mantenimiento de software. OpenStax CNX. Jan 09, 2009 Download for free at http://cnx.org/content/col10583/1.9
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Métricas del mantenimiento de software' conversation and receive update notifications?

Ask