Las mediciones del mundo físico se pueden categorizar de dos
maneras; medidas directas (por ejemplo: la longitud de un tomillo) y
medidas indirectas (por ejemplo: la «calidad» de los tomillos
producidos, medidos contando los artículos defectuosos). Las
métricas del software se pueden categorizar de forma similar. Entre
las medidas directas del proceso de la ingeniería del software se
incluyen el coste y el esfuerzo aplicados. Entre las medidas directas
del producto se incluyen las líneas de código (LDC) producidas,
velocidad de ejecución, tamaño de memoria, y los defectos
informados durante un período de tiempo establecido. Entre las
medidas indirectas se incluyen la funcionalidad, calidad, complejidad,
eficiencia, fiabilidad, facilidad de mantenimiento y muchas otras
«capacidades».
¿Cuál es la diferencia entre medidas directas e indirectas? El coste y
el esfuerzo requerido para construir el software, el número de líneas
de código producidas, y otras medidas directas son relativamente
fáciles de reunir, mientras que los convenios específicos para la
medición se establecen más adelante. Sin embargo, la calidad y
funcionalidad del software, o su eficiencia o mantenimiento son más
difíciles de evaluar y sólo pueden ser medidas indirectamente.
El dominio de las métricas del software se dividen en métricas de
proceso, proyecto y producto. También se acaba de destacar que las
métricas de producto que son privadas para un individuo a menudo se
combinan para desarrollar métricas del proyecto que sean públicas
para un equipo de software. Las métricas del proyecto se consolidan
para crear métricas de proceso que sean públicas para toda la
organización del software. Pero cómo combina una organización
métricas que provengan de particulares o proyectos? Puesto que
muchos factores influyen en el trabajo del software, no utilice las
métricas para comparar personas o equipos. Para ilustrarlo, se va a
tener en consideración un ejemplo sencillo. Personas de dos equipos
de proyecto diferentes registran y categorizan todos los errores que
se encuentran durante el proceso del software