Herramientas para evaluar la Calidad de nuestro Software
mayo 16, 2012Buenas a todos, hoy vengo a hablar de la Calidad Software. Antes de empezar os soy sincero, soy un principiante en este mundillo, no obstante he aprendido unas cuantas cosas que me han hecho recapacitar sobre mis aptitudes como desarrolladores y porque no, como gestor software.
En el Grado de Ingeniería Software somos un tanto "especiales", no somos Informáticos, ni somos hombres del Hardware, somos un grupo independiente de desarrollo software cuya nuestra principal cualidad es tener una percepción global de todo el sistema de procesos que engloba el desarrollo de software. Una de las cosas que nos hace "diferentes" es que tenemos consciencia de lo que implica realizar las labores con una cierta calidad por definición, y es que se nos han enseñado una herramientas de evaluación muy buenas y que todo el mundo debería conocer.
En España como (ya sabréis) lamentablemente no se valora el desarrollo software como se merece, casi desde ningún área, ya que el esfuerzo que requiere realizar algo relacionado con nuestra carrera es inversamente proporcional a la valoración de los resultados por el mundo que nos rodea, lo que hace que en las empresas nos presionen para realizar las tareas sin una debida metodología o un modelo de proceso adecuado, además de generar código de poca calidad.
· ¿Qué quiere decir que un software es de una cierta calidad u otra?
A ver, vamos por partes:
1. Calidad interna del SW: el software debe ser mantenible, legible, seguro, evolucionable, eficiente y eficaz.
2. Calidad externa del SW: el software debe ser exactamente lo que pide el cliente, realizando las tareas de forma óptima y ofreciendo a ser posible un pequeño extra.
· Por otra parte deberíamos conocer un concepto sencillo y clave, la complejidad ciclomática (C.C.). La C.C. es dado un algoritmo la C.C. se corresponde con el total de saltos que tiene el código (búcles, if´s ...). Esto conlleva un impacto:
· Comprensión: cuanto más saltos, es más difícil de comprender.
· Fiabilidad: por cada salto habrá que hacer una prueba.
· Diseño: un alto número de saltos indica una baja calidad de diseño.
A partir de la C.C. y el tamaño total del software (líneas de código) se puede sacar la Densidad Ciclomática, que nos ayuda a entender en que punto se encuentra el software. Esto se puede tomar como un indicador y el estado óptimo variará según el proyecto (incluso dentro de una misma empresa, la densidad ciclomática óptima variará entre proyectos) y puede servir para establecer estudios y estadísticas e intentar que todo funcione mejor.
Existen muchas más métricas que nos pueden decir cómo de fiable,seguro,eficiente...es nuestro software, y para eso hay herramientas ya preparadas que nos capacitan de manera rápida y sencilla, a tener una perspectiva de la calidad.
· A continuación os pongo algunas herramientas que permiten evaluar la calidad del software. No hace falta compilar, se pueden hacer las pruebas en caja blanca estática (yo soy un poco cazurro como ya sabréis e intentaba hacer cosas muy raras...recordad, con un archivo .java o .c le pasáis los siguientes programas y os devuelven métricas). Se pueden descargar u obtener como pluggin en el IDE (al menos en Netbeans 7.0 si funciona correctamente).
- PMD: Herramienta que nos dá métricas sobre el código repetido, el código muerto, la seguridad, la mantenibilidad...se pueden personalizar las métricas y es uno de los programas más utilizados en el mundillo. Al principio me costó configurarlo y hacerlo andar, pero luego nos dio bastantes buenos resultados.
Link
- Google CodePro Analytics: esta herramienta además de lo anterior nos proporciona gráficas, quizás un poco toscas e incluso sobre saturadas, pero funciona muy bien y para mi ha sido una gran ayuda.
Link
Conclusión:
Soy un mejor diseñador software y tengo una perspectiva más amplia sobre los problemas a largo plazo. Además tener una consciencia de la calidad nos permite captar los problemas principales y solucionarlos en un corto espacio de tiempo, lo que se traduce en dinero.
Si alguno quiere saber más sobre calcular D.C. o similar, aquí estoy para servirle.
Post basado en clases de Calidad Software en la URJC.
2 comentarios
Alguien conoce la herramienta Kuscos para certificación y detención de módulos críticos y de riesgo en las aplicaciones?
ResponderEliminarAlguien conoce la herramienta Kuscos para certificación y detención de módulos críticos y de riesgo en las aplicaciones?
ResponderEliminarSé respetuoso/a, en este blog caben todo tipo de opiniones con respeto y serenidad.