miércoles, 4 de diciembre de 2013

Metricas y valores esperados

Métricas y valores esperados

Qué es una métrica y para qué sirve?

De manera sencilla una métrica se puede definir como una medida o un conjunto de medidas que determinan una característica de un sistema.  Por ejemplo, en un sistema de aprendizaje una métrica podría estar dada por el número de estudiantes reprobados en un curso, este valor nos dará una idea de una característica de nuestro sistema escolar por ejemplo para la metodología de los docentes.   Las métricas al igual que en el resto de disciplinas, se utiliza en el software para cuantificar aspectos de interés de modo que nos permita tener una visión clara y objetiva de lo que estamos midiendo y establecer mecanismos para mejorar dicha característica.  En esta entrada nos centraremos en las métricas de rendimiento de las aplicaciones, que como se espera nos ayudarán identificar problemas de rendimiento y poder tomar acciones sobre los mismos.  Dentro de los beneficios de proporciona la utilización de métricas en cualquier área del conocimiento y consecuentemente en el software tenemos:         
  • Análisis: Podremos analizar y comprender las capacidades del sistema en cuestión de manera objetiva.
  •  Control: Se pretende poder realizar ajustes utilizando la información de dichas métricas para mantener las características en los estados deseados.
  •   Predicción: Una vez se ha iniciado un estudio con el uso de métricas sobre una característica de un sistema se hace más fácil predecir situaciones que de otra manera serían imposibles de entender.
  •  Mejora: Las métricas nos proporcionan herramientas para mejorar las características que cuantificamos.  Si se manejan objetivamente, mejorar una métrica en la mayoría de los casos es equivalente a mejorar la característica en cuestión.


Es importante tener en cuenta que solamente aquellas características que son susceptibles de ser medidas podrán manejarse utilizando métricas, por suerte, en la evaluación del performance de las aplicaciones casi todas las características se pueden medir.  Aunque parezca extraña esta aclaración, existen aspectos de la vida que no se pueden medir, como la moral , la felicidad y muchos otros aspectos relacionados con cuestiones humanas, en términos generales lo medible está asociado a unidades físicas, como tiempo, espacio, memoria, etc.  Las métricas están basadas en conceptos medibles que son relaciones abstractas entre las características de las entidades medidas.

En la evaluación del software existen algunos objetos o entidades de interés particular en el estudio del comportamiento de las aplicaciones.  A continuación presentamos algunas:

  •          Servicios
  •          Productos
  •          Procesos
  •          Recursos


Las características o atributos según su cercanía con los usuarios pueden ser internos o externos, dependiendo de si los usuarios son conscientes de la existencia de la característica.  Dentro de las características que nos interesan medir para el performance de aplicaciones encontramos dos que suelen ser importantes.

  •          Comportamiento en el tiempo
  •          Utilización de recursos


Usualmente el comportamiento en el tiempo es afectado por la utilización de los recursos y los recursos son retenidos por problemas de lógica con un rendimiento pobre.  Por ejemplo si una aplicación web utiliza una base de datos y la aplicación tiene problemas de desempeño, dicha aplicación podría provocar bloqueos en los recursos de la base de datos, de la misma manera si los recursos no fueran suficientes en el servidor de bases de datos se podrían presentar pérdidas de rendimiento en la aplicación web que la usa.  Casi todas las métricas de performance están asociadas a cuantificar aspectos que se relacionan con el tiempo o con los recursos. 

Una métrica consta de un método de medición por ejemplo una formula y una escala para los valores obtenidos a partir de dicho método.   Las métricas pueden ser directas si solo dependen de la característica o atributo que se está midiendo o indirectas si dependen adicionalmente de otras métricas y se formalizan a partir de una función de medición.

Las métricas de rendimiento por lo general son independientes de los escenarios, de las plataformas, del hardware y de la lógica de negocio que se esté probando.

Categorización de métricas

Según la cercanía con el usuario

  •          Internas: La característica que evalúa la métrica depende únicamente de factores internos del diseño y los usuarios no tienen consciencia de su existencia.


  •          Externas: Los Usuarios son conscientes o tienen un contacto directo con la característica que evalúa la métrica en cuestión y sus valores pueden depender de aspectos específicos de la lógica de negocio de la aplicación.

Según sus valores deseables

Las métricas de performance según los valores deseados se pueden categorizar en tres tipos:

  •          Deseablemente decrecientes: Este tipo de métricas son aquellas en las cuales esperamos que un mejor comportamiento de la característica que pretende medir en el sistema esté asociado con la disminución del valor de dicha métrica, es decir, mientras menor sea el valor será mejor.  Un ejemplo de esta categoría es el tiempo de respuesta de una aplicación, se espera que mejoras en el rendimiento se reflejen en la disminución de los valores de dicha métrica.


  •          Deseablemente crecientes: A diferencia de la categoría  anterior, a este conjunto de métricas pertenecen aquellas en las que un incremento de los valores obtenidos se asocia con una mejora en el rendimiento de la aplicación.  Como ejemplo podemos ver el throughput o la productividad del sistema mientras mayor sea su valor mayor mejor será el rendimiento del sistema.


  •          Valores nominales deseables: En ocasiones existen características de nuestras aplicaciones cuyos indicadores o métricas asociadas no convienen que sean demasiado bajas o demasiado altas sino que se encuentren en lo que llamamos un valor nominal, el cual es el valor óptimo o deseado para la característica analizada.  Un ejemplo de este tipo de métricas es la utilización de la CPU, si el valor es muy bajo para un gran volumen de transacciones, puede deberse a problemas de rendimiento de la aplicación en cuestión desperdiciando el recurso específico y si el uso de CPU es muy alto, la aplicación podría estar impactando otros aspectos del servidor como la estabilidad del propio sistema operativo haciendo que todo fluya de manera más lenta y riesgosa.  Podríamos decidir de manera arbitraria que el valor nominal fuera un 50%.

Según el marco de referencia

Dependiendo de si una característica se evalúa en un solo contexto o si existen valores de referencia con los cuales se contrastan las mediciones, las métricas se pueden clasificar en las siguientes categorías:

  •           Absolutas: Son aquellas métricas que dependen únicamente de mediciones realizadas en la aplicación que se está midiendo, por lo cual únicamente reflejan el comportamiento de la característica evaluada de manera individual o aislada. Un ejemplo de este tipo de métricas sería el tiempo de respuesta de un método en una clase.


  •           Relativas: Las métricas pertenecientes a este grupo definen el comportamiento de la característica evaluada en relación a un comportamiento base que en muchos casos corresponde a una segunda aplicación de referencia, por ejemplo, la diferencia entre los tiempos de respuesta de dos aplicaciones.  Las métricas pueden ser relativas a otras métricas o a valores nominales.

Según la naturaleza de la medición

  •          De recursos: La característica medida se relacionada con recursos del sistema, por ejemplo, el número de escrituras en disco debido a un evento dado.


  •          De tiempo: La característica evaluada es una duración o un valora asociado al tiempo como el periodo o la frecuencia de un evento.


  •          De complejidad: Este tipo de métricas pretende cuantificar la complejidad computacional del sistema, por ejemplo, para el número de ciclos en el código para una operación particular.  Aunque puede que estas no midan directamente temas de desempeño, puede que perdidas en el desempeño estén relacionadas directas o indirectamente con los aspectos medidos por las mismas.



  •          De calidad: Encontramos en algunas ocasiones métricas que no miden ni recursos, ni tiempos, ni temas de complejidad, sin embargo, el mejoramiento de las mismas puede representar un mejoramiento en el rendimiento del sistema. Un ejemplo podría ser la tendencia en un comportamiento de la aplicación como la estabilidad o cualquier aspecto del diseño.

No hay comentarios:

Publicar un comentario

Los comentarios son parte activa de este blog y no serán moderados. Siéntete cómodo al dar tu opinión. Esta es muy importante para nosotros.