Métricas de Calidad
Uno de los temas del trabajo de final de materia de informática, es el modelo de calidad de software.
Bajo mi punto de vista, uno de los aspectos más complejos que identifique es el de las métricas para medir las características de calidad, por lo cual me permito compartir unos apartes que encontré en la web, respecto de este tema:
Durante el proceso de desarrollo de un software, es muy probable la aparición de problemas (bugs) causados por fallas humanas. Las exigencias cada vez se incrementan, exigiendo un mejor desempeño de las aplicaciones que creamos. La problemática va asociada a cómo mejorar la calidad de las aplicaciones. Justamente, es donde se deriva el de las métricas de software, las cuales son un "conjunto de medidas utilizadas para estimar la calidad de un proyecto a desarrollar", entre otros conceptos, y que permiten "comparar o planificar estas aplicaciones".
Aplicar métricas puede ser complejo, ya que no existe una precisión absoluta para determinar cuáles son los elementos o procedimientos relevantes que deben ser aplicados a la hora de escribir código.
A continuación se relacionan algunas métricas para determinar la calidad de un código.
Acoplamiento (Coupling) se refiere al nivel de "conectividad" de un módulo con otros módulos, datos globales y entorno exterior. Durante el desarrollo de la aplicación, uno de los objetivos es mantener una baja dependencia o acoplamiento, esto quiere decir que, un módulo debe ser capaz de interactuar con otro a través de una interfaz estable y sin depender de otros, para su correcta implementación.
Un problema común con este tipo de aplicaciones es que, en caso de un cambio en algún módulo, puede desencadenar un efecto dominó en otros módulos, por lo que será necesario rehacer código en el resto de los módulos dependientes.
Cohesión (Cohesion) define el grado de relación que existe entre los elementos de un módulo.
Un módulo que siga el Principio de Responsabilidad Única o SRP por sus siglas en inglés debe realizar una única cosa. Es muy habitual, si no prestamos atención a esto, que acabemos teniendo clases que tienen varias responsabilidades lógicas a la vez.
Cuando se tienen clases con baja cohesión implica, entre otras cosas, falta de comprensibilidad, Difícil mantención y reutilización de código.
Complejidad es una de las métricas más importantes con la que contamos en el desarrollo es la complejidad ciclomática, que puede ser usada en las fases de desarrollo o mantenimiento entre otras.
La complejidad ciclomática está fuertemente relacionada a un algoritmo claro y eficaz, que, a su vez, se relaciona a otro tipo de complejidad, la complejidad cognitiva.
La Complejidad Cognitiva mide qué tan difícil es entender intuitivamente un bloque de código, a diferencia de la Complejidad Ciclomática, que determina qué dificultad tiene probar el código.
Algunos estudios han probado una correlación directa entre la complejidad ciclomática y la cantidad de bugs de un trozo de código, o el número de líneas de este.
Code Churn es la frecuencia con la que se añade, quita o altera el código a través del tiempo. En palabras simples, es la cantidad de veces en la que el fichero ha sido modificado.
Esta métrica presenta una relación directa con código defectuoso. esto quiere decir, mientras más modificaciones sufra un código, mayor es la posibilidad de introducir un bug.
Code Coverage mide el porcentaje de código que se encuentra testeado. Tener test de calidad en nuestro proyecto, ayudará a incrementar el valor de esta métrica y, a su vez, será menos probable que el código contenga bugs.
El código muerto (Dead code) es código que no es ejecutado. Es difícil de identificar ya que, no siempre sabemos si cierto extracto de código se está ejecutando en producción o no. Esta métrica es útil para verificar la calidad del código, sin embargo, no existe ningún método que detecte este código muerto y sea infalible.
Código duplicado (Code duplication) es el término utilizado para una estructura de código que se declara más de una vez dentro de una aplicación. La existencia del código duplicado ocurre frecuentemente cuando el programador no está familiarizado con el código, lo que lo lleva a replicar trozos de código.
Una organización que aplica métricas en sus procesos busca incrementar el retorno de la inversión, identificar las áreas a mejorar, optimizar el tiempo invertido en el proceso, y reducir los costos de operación.
Al aplicar estas métricas, busca mejorar la comunicación, buscando conocer el estado de nuestros proyectos, ayudándonos a mejorar la estimación de tiempos de desarrollo, prevenir posibles fallos, reducir costos y mejorar el manejo del proceso priorizando los puntos realmente importantes.
Imagen Tomada de: https://marcribo.wordpress.com/2015/04/16/kpis-para-obtener-metricas-en-las-distintas-redes-sociales/
Cada vez es más común utilizar herramientas, con métricas mucho más exactas, que nos permiten optimizar nuestro código.
Ni siquiera las mejores métricas garantizarán una aplicación exitosa. Sin embargo, la combinación de estas métricas, un buen proceso de trabajo, la aplicación de buenas prácticas al programar, y pasión por nuestro proyecto, nos ayudará a entregar una aplicación de calidad al usuario final, dándole un valor adicional a nuestro trabajo.
Fuente: https://marcribo.wordpress.com/2015/04/16/kpis-para-obtener-metricas-en-las-distintas-redes-sociales/
Comentarios
Publicar un comentario