<< Chapter < Page | Chapter >> Page > |
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:
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:
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:
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) = 12 - 10 + 2 = 4
Complejidad ciclomática = 4
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:
Notification Switch
Would you like to follow the 'Métricas del mantenimiento de software' conversation and receive update notifications?