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
editar- 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[1]
- 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[2]
- 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
editarAlgunos profesionales o practicantes de desarrollo de software puntualizan que mediciones simplistas pueden causar más daño que beneficio.[3] Otros han notado que las métricas se han ido convirtiendo en parte integral del proceso de desarrollo del software.[4] 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,[5] 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)[6] 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,[7] consultores de TI, instituciones académicas,[8] y software de estimación de desarrollo comercial y académico.
Limitaciones
editarAsí 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.[9][10] 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.
Véase también
editarReferencias
editar- ↑ «Descriptive Information (DI) Metric Thresholds». Land Software Engineering Centre. Archivado desde el original el 6 de julio de 2011. Consultado el 19 de octubre de 2010.
- ↑ «OMG Adopts Automated Function Point Specification». Omg.org. 17 de enero de 2013. Consultado el 19 de mayo de 2013.
- ↑ Kaner, Dr. Cem, Software Engineer Metrics: What do they measure and how do we know?.
- ↑ Binstock, Andrew. «Integration Watch: Using metrics effectively». SD Times. BZ Media. Consultado el 19 de octubre de 2010.
- ↑ Lincke, Rüdiger; Lundberg, Jonas; Löwe, Welf (2008), «Comparing software metrics tools», International Symposium on Software Testing and Analysis 2008: 131-142.
- ↑ DeMarco, Tom. Controlling Software Projects: Management, Measurement and Estimation. ISBN 0-13-171711-1.
- ↑ «NASA Metrics Planning and Reporting Working Group (MPARWG)». Earthdata.nasa.gov. Archivado desde el original el 22 de octubre de 2011. Consultado el 19 de mayo de 2013.
- ↑ «USC Center for Systems and Software Engineering». Sunset.usc.edu. Archivado desde el original el 11 de diciembre de 2017. Consultado el 19 de mayo de 2013.
- ↑ Binstock, Andrew. «Integration Watch: Using metrics effectively». SD Times. BZ Media. Consultado el 19 de octubre de 2010.
- ↑ Kolawa, Adam. «When, Why, and How: Code Analysis». The Code Project. Consultado el 19 de octubre de 2010.
Enlaces externos
editar- Asociación Española de Métricas del Software
- NESMA (Netherlands Software Metrics Users Association)
- COSMIC(Common Software Measurement International Consortium)
- UKSMA (United Kingdom Software Metrics Association)
- Definitions of software metrics in .NET
- Software Metrics Archivado el 3 de marzo de 2016 en Wayback Machine.
- Software Engineering Metrics: What do they measure and how do we know Archivado el 7 de abril de 2009 en Wayback Machine.