# Métrica del software

En el campo de la ingeniería del software, una métrica es un estándar de medida de un grado en el que un sistema o proceso de software posee alguna propiedad. Aunque una métrica no es una medida (las métricas son roles o funciones, mientras que las mediciones son números obtenidos por aplicación de tales métricas), con frecuencia ambos términos son usados como si fueran sinónimos. Ya que las mediciones cuantitativas son esenciales en todas las ciencias, hay un continuo esfuerzo de parte de practicantes de la informática y teoréticos para lograr acercamientos similares para el desarrollo de software. La meta, es obtener mediciones objetivas, reproducibles y cuantificables, que posibilitan tener valiosas y numerosas aplicaciones, en planificación de calendarios y presupuestos, planificación presupuestaria, aseguramiento de calidad, pruebas, depuración de software, optimización del rendimiento del software y asignaciones óptimas de tareas del personal.

## Mediciones Comunes de Software

* Métrica de Software ABC
* Cuadro de mando integral
* Errores por línea de código
* Cobertura de código
* Cohesión
* Densidad de comentarios
* Componentes de software connascente
* Modelo de costo constructivo COCOMO
* Acoplamiento
* Complejidad ciclomática ( complejidad de McCabe)
* Densidad de defectos: defectos encontrados en un componente
* Potencial de defecto: número esperado de defectos en un componente en particular
* Tasa de eliminación de defectos
* DSQI Design Structure Quality Index (índice de calidad de la estructura del diseño)
* Puntos de función y puntos de función automatizados, un estándar de grupo de gestión de objetos
* Complejidad de Halstead
* Longitud de la ruta de instrucción
* Índice de mantenibilidad
* Número de líneas de código
* Tiempo de ejecución del programa
* Programa de tiempo de carga
* Tamaño del programa (binario)
* Puntos de función micro ponderados
* CISQ medidas de características de calidad automatizadas

## Aceptación y Opinión Pública

Algunos profesionales o practicantes de desarrollo de software puntualizan que mediciones simplistas pueden causar más daño que beneficio. Otros han notado que las métricas se han ido convirtiendo en parte integral del proceso de desarrollo del software. El impacto de la medición en la psicología del programador ha levantado preocupaciones a causa de los efectos dañinos para el rendimiento a causa del estrés, ansiedad por rendimiento e intentos de engañar a las métricas, mientras que otros encuentran que tiene un impacto positivo en su valor como desarrolladores hacia su propio trabajo y previene que ellos sean devaluados o sobrevalorados. Algunos argumentan que la definición de muchas metodologías de medición es imprecisa y consecuentemente, frecuentemente es poco claro, cómo las herramientas para hacer esos cálculos llegan a un resultado particular, mientras otros argumentan que la cuantificación imperfecta es mejor que no contar con ninguna "You can’t control what you can't measure" (No puedes controlar lo que no puedes medir) Se puede evidenciar, que las métricas de software están siendo ampliamente usadas por agencias gubernamentales, el ejército de los EE. UU., La NASA, consultores de TI, instituciones académicas, y software de estimación de desarrollo comercial y académico.

## Limitaciones

Así como el desarrollo de software es un proceso complejo, con alta variabilidad en metodologías y objetivos, es difícil definir o medir cualidades y cantidades del software y determinar una métrica de medición válida y concurrente, especialmente cuando se hace tal predicción antes del diseño detallado. Otra fuente que origina dificultad y debate es determinar qué métricas son importantes y que significan ellas. La utilidad práctica de las mediciones de software, por lo tanto, se limita a los siguientes dominios:
* Planificación
* Dimensionamiento de software
* Complejidad de programación
* Estimación del esfuerzo de desarrollo de software.
* Calidad del software
Una medición específica puede elegir como destino uno o más de los aspectos de dominio explicados anteriormente, o el balance existente entre cada uno de ellos, por ejemplo, como indicador de motivación del equipo o desempeño del proyecto.