Métricas del software 1Figura 1. Métricas del software

Autor: Arnold Torrell Delgado / arnold.torrell@gtm.jovenclub.cu 

Resumen

 En el presente trabajo se abordan los principales apuntes sobre las Métricas de Software, se presentan distintos grupos de métricas, se pone de manifiesto la ayuda que ellas constituyen para la evaluación de modelos y análisis de diseño y se señalan las ventajas de su utilización para mejorar la calidad de los software elaborados.

 Palabras claves:  Atributo, Calidad de Software, Métricas, Métricas de Software

 Abstract

In the present work the main notes on the Software Metrics are addressed, different groups of metrics are presented, the help that they constitute for the evaluation of models and design analysis is shown, the advantages of their use to improve the quality of the software developed.

Key words: Attribute, Software Quality, Metrics, Software Metrics

 

Introducción

Las métricas según el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) se definen como una medida cualitativa, del grado en que un sistema, componente o proceso posee un atributo determinado.

Si realmente se desea conseguir la calidad de un software la medición es esencial, es por eso que existen distintos tipos de métricas para poder evaluar, mejorar y clasificar el software final, en donde serán manejadas dependiendo del entorno de desarrollo al cual pretendan orientarse.

Las mediciones son fundamentales para cualquier especialidad de la ingeniería y la ingeniería de software no se excluye de esto. Un ingeniero de software puede utilizar las mediciones para evaluar la calidad en los resultados del proyecto y para ayudar a tomar las decisiones más acertadas para contribuir a la mejora del producto.

Métricas de software 1
Figura 1. Métricas del software

 

 Desarrollo

Las métricas son la maduración de una disciplina, que, según Pressman van a ayudar a la (1) evaluación de los modelos de análisis y de diseño, (2) en donde proporcionarán una indicación de la complejidad de diseños procedimentales y de código fuente, y (3) ayudaran en el diseño de pruebas más efectivas; Es por eso que propone un proceso de medición, el cual se puede caracterizar por cinco actividades:

(1) Formulación: La obtención de medidas y métricas del software apropiadas para la representación de software en cuestión.

(2) Colección: El mecanismo empleado para acumular datos necesarios para obtener las métricas formuladas.

(3) Análisis: El cálculo de las métricas y la aplicación de herramientas matemáticas.

(4) Interpretación: La evaluación de los resultados de las métricas en un esfuerzo por conseguir una visión interna de la calidad de la representación.

(5) Realimentación: Recomendaciones obtenidas de la interpretación de métricas técnicas trasmitidas al equipo de software.

Con esto alcanzamos a responder tres preguntas fundamentales deseadas de una métrica

¿Cuánto mide? – la complejidad en la medida

¿Qué tan bien mide? – la calidad en la medida

¿Qué tanto tiempo mide? – la predicción

Se puede resumir que son cualquier medida o conjunto de medidas destinadas a conocer o estimar el tamaño u otra característica de un software o un sistema de información, generalmente para realizar comparativas o para la planificación de proyectos de desarrollo.

Métricas de software 2
Figura 2. Guía para determinar las métricas de software

 

Las métricas de software se caracterizan porque se recopilan en el transcurso de todos los proyectos y durante largos períodos.

Su objetivo es proporcionar un conjunto de indicadores que conduzcan a la mejora del proceso.

  • Deben ser cuantificables, es decir, deben basarse en hechos, no en opiniones.
  • Independientes, los recursos no deben poder ser alterados por los miembros que las apliquen o utilicen.
  • Explicables, debe documentarse información acerca de las métricas y de su uso.
  • Precisas, porque no se debe perder información en los redondeos ya que la información se desvirtúa.

El uso de las mismas tiene grandes ventajas ya que se podrán realizar comparaciones con otros proyectos, se podrá mejorar el producto ya que las métricas sirven para detectar defectos y se tendrá un soporte para la estimación y planificación.

Las métricas de software pueden ayudar a la evaluación de los modelos de análisis y diseño, en donde proporcionarán una indicación de la complejidad de diseños procedimentales y de código fuente y ayudarán en el diseño de pruebas más efectivas.

Esta se aplica en todos los aspectos de calidad de software, los cuales deben ser medidos desde diferentes puntos de vista y están presentes prácticamente en todo el proceso de desarrollo del software. Son muy útiles en el entorno de desarrollo para la reutilización, pues sirven para controlar la reusabilidad y factores de calidad asociados a este.

A la hora de realizar un software, es importante cuidar cada uno de los pasos desde su análisis inicial, hasta la implementación del proyecto, su evaluación y especialmente su control. La importancia del uso y análisis de las métricas reside en que nos aportan toda la información que necesitamos para llevar a cabo las medidas más adecuadas al proyecto.

Existen diversos tipos de métricas que se pueden evaluar en un software, entre los tipos de métricas disponibles son de especial importancia las métricas a nivel de código fuente, estas son un conjunto de medidas de software que proporcionan a los programadores una mejor visión del código que están desarrollando y se determinan examinando las líneas de código de los módulos que lo conforman.

Al aprovechar las métricas de código, los programadores pueden entender qué tipos y métodos se deben rehacer o probar más a fondo. Los equipos de desarrollo pueden identificar los riesgos potenciales, entender el estado actual de un proyecto y seguir el progreso durante el desarrollo del software.

Las métricas a nivel de código fuente se determinan examinando los atributos de calidad que se encuentran en las líneas de código. Un atributo de calidad es una característica diferencial que posee el producto como rango distintivo de otro producto similar, cuyo proceso de elaboración y condiciones finales de calidad, cumplen con las normas establecidas en el protocolo correspondiente.

A continuación, se presentan distintos grupos de métricas que por ser los más conocidos, representativos o utilizados, son los que se han considerado para este trabajo.

  • Métricas CK Chidamber y Kemerer: Son métricas orientadas a clases: clases individuales, herencia y colaboraciones. Es uno de los conjuntos de métricas más referenciado. (Chidamber, Shyam R y Kemerer, Chris F, 1994)
  • Métricas de Halstead: son un conjunto de medidas primitivas que determinan el tamaño del software asumiendo que el programa está compuesto por un conjunto de elementos que se clasifican en operadores u operandos. (Patton, 2006)
  • Líneas de código: es el atributo más usado para interpretar el tamaño de un programa. No existe una definición exacta de qué se considera realmente una línea de código pudiendo excluir o incluir las líneas de comentario, las líneas declarativas y las líneas en blanco. (Chidamber, Shyam R y Kemerer, Chris F, 1994)
  • Métricas de Li Henry: consideran cinco de las métricas de Chidamber y Kemerer: WMC, DIT, NOC, RFC, LCOM. (Arregui, 2005)
  • Métricas de Lorenz y Kidd (1994): dividen las métricas basadas en clases en cuatro categorías: tamaño, herencia, valores internos y valores externos. (González, 2001)
  • Métricas R. Martin (1994):

Ca: Afferent Couplings: número de clases de otros paquetes que dependen de las clases del propio paquete.

Ce: Efferent Couplings: número de clases dentro del propio paquete que dependen de clases de otros paquetes.

I: Instability = Ce / (Ca + Ce), métrica comprendida entre [0,1], siendo 0 la máxima estabilidad y 1 máxima inestabilidad.  (Martin, 1994)

 El objetivo primordial de las métricas de software es contribuir a producir un sistema, aplicación o producto de alta calidad. Para lograr este objetivo, los ingenieros de software deben emplear métodos efectivos junto con herramientas modernas dentro del contexto de un proceso maduro de desarrollo del software. Al mismo tiempo, un buen ingeniero del software y buenos administradores de la ingeniería del software deben medir si la alta calidad se va a llevar a cabo.

Las métricas de software permiten:

  1.  El marco de trabajo proporciona al administrador identificar en el proyecto lo que considera importante, como: facilidad de mantenimiento y transportabilidad, atributos del software, además de su corrección y rendimiento funcional  teniendo un impacto significativo en el costo del ciclo de vida.
  2. Proporciona un medio de evaluar cuantitativamente el progreso en el desarrollo de software teniendo relación con los objetivos de calidad establecidos.
  3. Facilita más interacción del personal de calidad, en el esfuerzo de desarrollo. Por último, el personal de calidad puede utilizar indicaciones de calidad que se establecieron como” pobres” para ayudar a identificar estándares “mejores” para verificar en el futuro

Esto facilita recoger datos que midan el desempeño de cada proceso y analizar el desempeño que implica:

Guardar y utilizar los datos para evaluar la estabilidad y la capacidad del proceso, interpretar los resultados de observaciones y análisis estimar coste y desempeño futuros, establecer tendencias e identificar oportunidades de mejora

Esto permite valorar los siguientes aspectos:

Comunicación – ¿Los métodos utilizados para definir las medidas y para describir valores medidos permiten que otros conozcan lo que está siendo medido? – ¿Todos los usuarios conocen cómo los datos son recogidos de manera a interpretar los resultados correctamente?

Repetibilidad – ¿Otra persona podría ser capaz de repetir las medidas y obtener los mismos resultados?

Rastreabilidad – ¿Hay un origen de los datos recogidos? (contexto y circunstancias de la medición)

Por tanto, las métricas de software permiten a un gestor de proyectos valore el estado de un proyecto en curso, rastree los riesgos potenciales, descubra las áreas problemas antes que se vuelvan críticas, ajuste el flujo de trabajo o las tareas y evalúe la habilidad del equipo de proyecto para controlar la calidad de los productos de trabajo de software.

Conclusiones

 Durante el desarrollo del presente trabajo se llegó a la conclusión que el control de las métricas es fundamental dentro de la ingeniería de software ya que estas proporcionan indicadores para las características del diseño Orientado a Objeto como herencia, acoplamiento, tamaño de clases, además los equipos de desarrollo pueden identificar los riesgos potenciales, establecer comparaciones con otros proyectos y tomar las decisiones oportunas para lograr un resultado satisfactorio.

 Bibliografía

Arregui, J. J. (2005). Revisión Sistemática de Métricas de Diseño Orientado a Objetos». Madrid.

Chidamber, Shyam R y Kemerer, Chris F. (1994). A Metric Suite for Object Oriented Design: IEEE TRANSACTIONS ON SOFTWARE ENGINEERING.

Desarrolloweb. (s.f.). Métricas de software. Recuperado el 19 de octubre del 2017 de https://desarrolloweb.com/articulos-copyleft/articulo-metricas-de-software.html

Ecured. (s.f.). Métricas de software. Recuperado el 19 de octubre del 2017 de https://www.ecured.cu/M%C3%A9tricas_de_software

González, H. D. (2001). Las Métricas de Software y su uso en la Región. Cholula, Puebla, México.

Martin, R. (1994). OO Design Quality Metrics.

Patton, A. L. (2006). «Student portfolios and software qualitu metrics in computer science education». Journal of Computing Science in College.

Pressman, R. (s.f.). Ingeniería de Software. Un enfoque práctico. México: Mc Graw – Hill.

Wikipedia. (s.f.). Métricas de software. Recuperado el 19 de octubre del 2017 de https://es.wikipedia.org/wiki/M%C3%A9trica_del_software

 

Enlaces relacionados

Proceso de Mejora de Software en las Empresas / Software process improvement in Enterprises  en el Número 49 de Tino

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *