| Calidad del producto |
|
|
| Escrito por juanignacio.sanchez |
| Lunes, 29 de Junio de 2009 08:42 |
|
Esto es lo que se dice en el punto 1.2 del manifiesto ágil: "Valorar más el software que funciona que la documentación exhaustiva", y creo que es la tendencia adecuada. El software lo hacen las personas, no las máquinas, así que aplicar métodos industriales no es correcto. Por ejemplo, los muestreos aleatorios en las líneas de producción pueden detectar bastante bien problemas en la producción, pero no en el código: es frecuente encontrar errores aislados con consecuencias catastróficas; no todas las partes del código tienen el mismo peso; no todo el código es producido por la misma persona...
Valor añadido adicional: aprendizajeEl CexC está en un entorno universitario, formando parte de la UVa, y el aprendizaje es fundamental. Este aspecto, habitualmente obviado al hablar de herramientas de calidad, para nosotros es fundamental. Mediante herramientas de análisis estático de código como FindBugs o PMD, integradas en el entorno de desarrollo, el programador va dándose cuenta cada vez de más formas de mejorar el código. Aprende, por ejemplo, que debe declarar las referencias como final si no las va a modificar. Revisar los informes agregados en Hudson permite ver qué partes del código se deben revisar, qué está mejor, cómo estamos evolucionando... El coste son los tests
Las herramientas de calidad de código imponen buenas costumbres, buenas prácticas, así que una vez se convierten en hábito no suponen un problema. Las gráficas de Checkstyle, CPD, FindBugs y PMD crecerán de un modo moderado a lo largo de la vida del proyecto, y ya está. En el gráfico anterior podemos ver cómo sí hubo que realizar un serio correctivo respecto a PMD, lo cual sí implicó un esfuerzo extra, pero no es una consecuencia de la herramienta, sino de una relajación en la calidad del trabajo (y esta es una de las ventajas de tener una web que integre todo: la visibilidad).
Sin embargo, en metodologías ágiles sí que cobra una mayor importancia algo que sí es costoso: las pruebas. Programar pruebas, mal que me pese, no es trivial. Incluso pruebas esencialmente elementales, para probar el correcto funcionamiento de páginas de CRUDs son costosas. No por el código en sí, sino por el estado de la base de datos. Verificar que un algoritmo para un conjunto de entradas da los resultados correctos es muy potente y fácil. Sin embargo, probar consultas, por ejemplo no. ¿Cómo pruebas que una consulta a base de datos da los resultados esperados y sólo esos? Es muy difícil hacer -en un tiempo razonable- una prueba unitaria de esto. Al final en general lo que acaba ocurriendo es que no se hacen demasiadas pruebas, pero, si hablamos de aplicaciones de gestión, tampoco es tan grave. Realmente no aporta demasiado esforzarse en hacer pruebas que anden insertando y borrando en base de datos, ya que eso no es nuestro código, es sólo la infraestructura. ¿Cuándo hacemos pruebas, entonces?
La tendencia del sector en los últimos años han sido las metodologías ágiles, y en mi opinión suponen una mejora real en Ingeniería del Software porque se centran en que el producto realmente sea de calidad, relegando la documentación a un segundo plano: la documentación es importante, pero no debe ser el centro del desarrollo. |