En ingeniería y desarrollo de software , una métrica de software es un estándar de medida del grado en que un sistema o proceso de software posee alguna propiedad. [ 1 ] [ 2 ] Aunque una métrica no es una medición (las métricas son funciones, mientras que las mediciones son los números obtenidos mediante la aplicación de métricas), a menudo ambos términos se usan como sinónimos. Dado que las mediciones cuantitativas son esenciales en todas las ciencias, existe un esfuerzo continuo por parte de profesionales y teóricos de la informática para aplicar enfoques similares al desarrollo de software. El objetivo es obtener mediciones objetivas, reproducibles y cuantificables, que pueden tener numerosas aplicaciones valiosas en la planificación de cronogramas y presupuestos, la estimación de costos, el aseguramiento de la calidad, las pruebas, la depuración de software, la optimización del rendimiento del software y la asignación óptima de tareas al personal.
Mediciones de software comunes
Las mediciones de software comunes incluyen:
- 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 [ 3 ]
- Componentes de software conocidos
- Modelo de costos constructivo
- Enganche
- Complejidad ciclomática (complejidad de McCabe)
- Densidad de complejidad ciclomática [ 4 ] [ 5 ]
- Densidad de defectos: defectos encontrados en relación con el tamaño de un componente, a menudo expresados como defectos por cada mil líneas de código (KLOC) [ 6 ].
- Potencial de defectos: número esperado de defectos en un componente en particular.
- Tasa de eliminación de defectos
- DSQI (índice de calidad de la estructura de diseño)
- Puntos de función y puntos de función automatizados, un estándar del Object Management Group [ 7 ]
- Complejidad de Halstead
- longitud de la ruta de instrucción
- Índice de mantenibilidad
- Líneas de código fuente - número de líneas de código
- Tiempo de ejecución del programa
- Tiempo de carga del programa
- Tamaño del programa (binario)
- Puntuación WEAVE
- Puntos de microfunción ponderados
- Tiempo de ciclo (software)
- Rendimiento de primera pasada
- Probabilidad de compromiso correctivo [ 8 ]
Limitaciones
Dado que el desarrollo de software es un proceso complejo, con una gran variabilidad tanto en metodologías como en objetivos, resulta difícil definir o medir las cualidades y cantidades del software, así como determinar una métrica de medición válida y concurrente, especialmente al realizar dicha predicción antes del diseño detallado. Otra fuente de dificultad y debate radica en determinar qué métricas son relevantes y qué significan. [ 9 ] [ 10 ] Los investigadores argumentan que las métricas de software de uso común, promovidas frecuentemente en la investigación académica, no son prácticamente útiles para la toma de decisiones de los profesionales del software. [ 11 ] Por lo tanto, la utilidad práctica de las mediciones de software se ha limitado a los siguientes dominios:
- Programación
- Dimensionamiento del software
- Complejidad de la programación
- Estimación del esfuerzo de desarrollo de software
- Calidad del software
Una medición específica puede centrarse en uno o más de los aspectos mencionados anteriormente, o en el equilibrio entre ellos, por ejemplo, como indicador de la motivación del equipo o del rendimiento del proyecto.
Además, las métricas varían entre el código de programa estático y dinámico, así como para el software orientado a objetos (sistemas). [ 12 ] [ 13 ]
Aceptación y opinión pública
Algunos profesionales del desarrollo de software señalan que las mediciones simplistas pueden causar más daño que beneficio. [ 14 ] Otros han observado que las métricas se han convertido en una parte integral del proceso de desarrollo de software. [ 9 ] El impacto de la medición en la psicología del programador ha generado preocupación por los efectos perjudiciales en el rendimiento debido al estrés, la ansiedad de rendimiento y los intentos de engañar a las métricas, mientras que otros encuentran que tiene un impacto positivo en el valor que los desarrolladores le dan a su propio trabajo y evita que sean subestimados. Algunos argumentan que la definición de muchas metodologías de medición es imprecisa y, en consecuencia, a menudo no está claro cómo las herramientas para calcularlas llegan a un resultado particular, [ 15 ] mientras que otros argumentan que la cuantificación imperfecta es mejor que ninguna ("No puedes controlar lo que no puedes medir"). [ 16 ] La evidencia muestra que las métricas de software están siendo ampliamente utilizadas por agencias gubernamentales, el ejército de los EE. UU., la NASA, [ 17 ] consultores de TI, instituciones académicas, [ 18 ] y software de estimación de desarrollo comercial y académico .
Lecturas adicionales
- J. Smith, Introducción a la programación lineal , Acme Press, 2010. Un texto introductorio.
- Reijo M.Savola, Calidad de las métricas y mediciones de seguridad, Computers & Security, Volumen 37, septiembre de 2013, Páginas 78-90. [ 19 ]
Véase también
Referencias
- ↑ Fenton, Norman E. (2014). Métricas de software : un enfoque riguroso y práctico . James Bieman (3.ª ed.). Boca Raton, FL. ISBN 978-1-4398-3823-5OCLC 834978252
{{cite book}}: CS1 mantenimiento: falta el editor de ubicación ( enlace ) - ↑ Timóteo, Aline Lopes; Álvaro, Re; Almeida, Eduardo Santana De; De, Silvio Romero; Meira, Lemos. Métricas de software: una encuesta . CiteSeerX 10.1.1.544.2164 .
- ↑ "Umbrales métricos de información descriptiva (DI)" . Centro de Ingeniería de Software de Tierras . Consultado el 19 de octubre de 2010 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ Gill, GK; Kemerer, CF (diciembre de 1991). "Densidad de complejidad ciclomática y productividad del mantenimiento de software". IEEE Transactions on Software Engineering . 17 (12): 1284– 1288. doi : 10.1109/32.106988 . ISSN 1939-3520 .
- ↑ "Mantenibilidad: ¿Tiene sentido calcular la relación complejidad ciclomática/líneas de código?" . Software Engineering Stack Exchange . Consultado el 1 de marzo de 2021 .
- ↑ "¿Qué es la densidad de defectos?" . Testing Radar . 2 de junio de 2026 . Consultado el 5 de junio de 2026 .
- ↑ "OMG adopta la especificación de puntos de función automatizados" . Omg.org. 17 de enero de 2013. Consultado el 19 de mayo de 2013 .
- ↑ Amit, Idan; Feitelson, Dror G. (2020-07-21). "The Corrective Commit Probability Code Quality Metric". arXiv : 2007.10912 [ cs.SE ].
- 1 2 Binstock, Andrew (marzo de 2010). "Integration Watch: Uso eficaz de las métricas" . SD Times . BZ Media . Recuperado el 19 de octubre de 2010 .
- ↑ Kolawa, Adam (7 de agosto de 2008). "Cuándo, por qué y cómo: análisis de código" . The Code Project . Recuperado el 14 de febrero de 2021 .
- ↑ Tempero, Ewan; Ralph, Paul (16 de marzo de 2026). "Cómo hacer útiles las métricas de software" . arXiv.org . Recuperado el 20 de marzo de 2026 .
- ↑ Gosain, Anjana; Sharma, Ganga (2015). "Métricas de software dinámicas para software orientado a objetos: una revisión" . En Mandal, JK; Satapathy, Suresh Chandra; Kumar Sanyal, Manas; Sarkar, Partha Pratim; Mukhopadhyay, Anirban (eds.). Diseño de sistemas de información y aplicaciones inteligentes . Avances en sistemas inteligentes y computación. Vol. 340. Nueva Delhi: Springer India. pp. 579–589 . doi : 10.1007/978-81-322-2247-7_59 . ISBN 978-81-322-2247-7.
- ↑ S, Parvinder Singh; Singh, Gurdev. Métricas dinámicas para el polimorfismo en sistemas orientados a objetos . CiteSeerX 10.1.1.193.4307 .
- ↑ Kaner, Dr. Cem (2004), Métricas de ingeniería de software: ¿Qué miden y cómo lo sabemos ?, CiteSeerX 10.1.1.1.2542
- ↑ Lincke, Rüdiger; Lundberg, Jonás; Löwe, Welf (2008), "Comparación de herramientas de métricas de software" (PDF) , Simposio internacional sobre pruebas y análisis de software 2008 , págs .
- ↑ DeMarco, Tom (1982). Controlling Software Projects: Management, Measurement and Estimation . Yourdon Press. ISBN 0-13-171711-1.
- ↑ "Grupo de Trabajo de Planificación e Informes de Métricas de la NASA (MPARWG)" . Earthdata.nasa.gov. Archivado del original el 22 de octubre de 2011. Consultado el 19 de mayo de 2013 .
- ↑ "Centro de Ingeniería de Sistemas y Software de la USC" . Sunset.usc.edu . Consultado el 19 de mayo de 2013 .
- ↑ Savola, Reijo M. (2013-09-01). "Calidad de las métricas y mediciones de seguridad" . Computers & Security . 37 : 78–90 . doi : 10.1016/j.cose.2013.05.002 . ISSN 0167-4048 .
Enlaces externos
- Métricas de software (SQA.net)
- Métricas de ingeniería de software: ¿Qué miden y cómo lo sabemos?
- Norma de la NASA NASA-STD-8739.8 (Norma de garantía y seguridad del software)
- Métricas del código fuente de HIS ( obsoletas, pero a modo de referencia ; véase también AUTOSAR para información relacionada ).
- Métricas del código fuente HIS versión 1.3.1 01.04.2008 ( obsoleta pero de referencia ; véase AUTOSAR para información relacionada )
- Un marco de trabajo para métricas de código fuente
- NASA.gov
- Definiciones de métricas de SonarQube
- Métricas del software orientado a objetos (2010)
- Métricas de software
- Métrica