Defining Agile Software Quality Assurance . E. Mnkandla, Member, IEEE, . B. Dwolatzky, Member, IEEE 2006 Agilidad y Calidad Esta parte comienza por resumir la definición de calidad y presenta un resumen del trabajo que se ha hecho en el área de la calidad versus la agilidad. Calidad según la ISO 9000 esta definida como “la totalidad de características de una entidad la cuales se encargan de satisfacer lo pactado o las necesidades implícitas de su usuario. En la literatura ágil existente, no se ha dado una definición clara de cuales características de calidad de software son mejoradas por el uso de los procesos agiles en el desarrollo de este. En este papel una innovadora técnica es introducida para la evaluación de metodologías con el fin de determinar cuales factores de la calidad de software hay para mejorar. Si hablamos y tratamos de abordar, la calidad de los procesos y su agilidad al momento de gestarlo, vamos a encontrarnos, con que uno no se hace independiente de otro, ya que esto se encarga de definir la eficacia y eficiencia, que las guía metodológicas proporcionan a los procesos y de cómo estos pueden responder a las necesidades implícitas que los clientes tienen al igual que el tiempo a medida que transcurre nos exige mayor velocidad en la producción de una actividad y una mejor calidad en los resultados que proporcione. Desarrollo ágil y factores de Calidad Las practicas agiles que aseguran costo-efectividad de un sistema incluyen lo siguiente: control de los ámbitos de influencia Utilizando sistemas de iteración que permitan hacer cambios en los requerimientos de los clientes. Compatibilidad. Las practicas agiles que aseguran correcciones en un sistema incluyen lo siguiente: Una característica general de todos los objetos orientados al desarrollo de aplicaciones. Posibles mejoras en el enfoque de la agilidad incluyen consideraciones de diseño y arquitectura que apuntan a la independencia de la plataforma. Costo Efectividad. Las practicas que posean esta característica incluyen lo siguiente: Control de los ámbitos de trabajo. Esta técnica es usada para prevenir la introducción de cambios en los requerimientos hasta el fin de la iteración. Posibles mejoras son evitar que esos ámbitos de trabajo tengan cierres o bloqueos en los cambios de requerimientos; es generalmente difícil convencer a un cliente de firmar un contrato para un proyecto en el cual su costo esta basado en el costo de cada iteración, por otra parte, la ventaja de esto es que teniendo en cuenta que las iteraciones se generan por periodos de tiempo cortos, el costo del proyecto también obtendrá frecuentes comentarios que sustentaran los costos de inversión. Correcciones. Las prácticas agiles que aseguran correcciones en un sistema incluyen lo siguiente como provocación de los principios genéricos que guían los desarrollos agiles: Inscripción codificada de requerimientos mininos; especificaciones, las cuales son obtenidas por la comunicación constante y directa con el cliente, permitiendo al cliente hacer cambios en los requerimientos, historial de usuarios y pruebas de desarrollo. Desde que todos el desarrollo en practicas agiles este hecho iterativamente, estas tecnicas aseguraran las correcciones en los niveles de iteración antes tomar desiciones a cerca de continuar o cancelar el proyecto. Estas practicas agiles puenden ser mejoradas a partir de lo siguiente: considerar la posibilidad de el uso de especificaciones en el desarrollo agila si como también la posibilidad de uso de escenarios generales que permiten definir requerimientos. Facilidad de uso. Las tecnicas agiles que aseguran la facilidad de uso de los sistemas deben: hacer al cliente parte del equipo de trabajo y clientes que proporcionen comentarios frecuentemente, ya que ellos probablemente recomendaran un sistema de fácil utilización. Los frecuentes comentarios visuales que obtengan los clientes durante la distribución de una iteración les permitirá proporcionar comentarios utiles para mejorar la utilización del sistema. Eficiencia. Las tecnicas que posean esta característica deben inlcuir lo siguiente: la aplicación buenos códigos normativos. Para mejorar en las tecnicas hay que fomentar los diseños basados en los algoritmos mas eficientes Integridad. Este característica esta basa en el nivel del sistema operativo y también el nivel del la plataforma de desarrollo. Mejorando la integridad de las tencicas que definen el producto mejoraría la integridad del sistema. Mantenimiento. La aplicación de los principios de Objetos Orientados al diseño conduce al mantenimiento informatico. Desarrollar que mejoren las interfaces entre los diferentes modulos de objetos pueden tener un impacto positivo en el mantenimiento. Portabilidad. Originalmente definida como la parte mas importante de los objetos orientados al diseño. Y ahora promovido por los conceptos de sistemas distribuidos y web service, este factor de calidad es generalmente implementado a través del concepto de los Objetos Orientados al diseño. Reutilidad. Este factor de calidad es generalmente implementado a través del concepto de los Objetos Orientados a la tecnología. Mas agilidad en el trabajo y la arquitectura de Software, asi como patrones que pueden mejorar la reutilización de los productos agiles. Puntualidad. Las tencicas agiles que posean esta característica deben incluir lo siguiente: Desarrollo iterativo, rápida distribución y ciclos cortos. Esto puede ser mejorado en la reducción del tiempo para el despliegue de procesos. Verificación y Validacion. Las técnicas agiles que manejen esta característica deben incluir: Desarrollo Basado en Pruebas, unidades de prueba y frecuente integración. Para mejorar en estas técnicas, mas herramientas podrían ser desarrolladas para vincular las pruebas existentes a cerca de los conceptos basados en el Desarrollo Basado en Pruebas.