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.