Métricas de calidad
Las métricas del software se aplican para valorar cualitativa mente algún factor relativo al mismo. No existen métricas generales y únicas, aún menos para la calidad, ya que se puede examinar el software a través de múltiples perspectivas y con diferentes objetivos.
Métrica bang
Esta métrica, propuesta por De Marco, sirve para calcular el tamaño del software a desarrollar a partir del modelo de análisis.
Métrica de calidad de especificación
Propuesta por Pressman, mide la calidad del análisis y de los requisitos capturados. A pesar de medir factores cualitativos, propone métricas como por ejemplo el número de requisitos donde los revisores han interpretado lo mismo.
Métrica de complejidad de Card y Glass
Esta métrica se basa en dos factores, calculados para cada módulo a partir del diagrama de estructuras:
- Complejidad estructural: número de módulos que controla un módulo dado
- Complejidad de datos: suma de variables de entrada y salida de un módulo (dividido por el número de módulos que controla, para que no influya la complejidad estructural)
La complejidad del sistema se calcula como la suma de la complejidad estructural y la complejidad de datos de cada módulo
Métrica de cohesión y acoplamiento
Estas métricas sirven para cuantificar la cohesión y acoplamiento de los módulos en programación estructurada. A partir de los parámetros de entrada, los parámetros de salida, las variables globales utilizadas y el fan-in y fan-out de los módulos, genera un valor que es menor cuanto mejores son la cohesión y el acoplamiento.
Métricas orientadas a objetos
Las técnicas estructuradas no se aplican fácilmente en la POO. Para ello, se han diseñado otras métricas basadas en clases, no en módulos, que dan una idea
Profundidad árbol de herencia
Esta métrica se basa en la media de profundidad de la jerarquía de herencias: cuanto mayor es la profundidad, menor es la calidad del software
Fase de codificación
Las métricas de la fase de codificación intentan dar una medida de la complejidad del software construido. Algunas de ellas son las siguientes:
Complejidad ciclomática y esencial
Las métricas de complejidad ciclomática y esencial fueron desarrolladas por McCabe para medir la complejidad lógica de un programa. Se basan en pintar el flujo de control como un grafo, donde los nodos son instrucciones y están conectadas si una se puede ejecutar después de otra.
La complejidad ciclomática mide el número de ciclos que existen en el grafo de control. La complejidad esencial, el máximo número de anidamiento de estructuras de control.
Métricas orientadas a objetos
En programación orientada a objetos, además de las métricas de programación estructurada pueden utilizarse otras como el número de métodos de la clase, el número de métodos que pueden invocarse desde otras clases, o la cohesión entre los métodos de la clase.