Publicado en
Los modelos de procesos para desarrollo de software tales como ISO/IEC 15504 de la Organización Internacional para la Estandarización (ISO) o CMMI® del CMMI Institute proporcionan un marco de trabajo que las organizaciones pueden adoptar para mejorar el desempeño de sus procesos. Ambos modelos cubren un amplio rango de actividades a través de una clasificación de procesos que, para muchas empresas, es difícil de implementar, debido al cruce de acciones y responsabilidades entre diferentes roles cubriendo varias disciplinas. Y este tipo de operación, típicamente resulta en un sistema documental complejo basado en prácticas muy robustas tipo RUP, PMI, estándares ISO o IEEE, que generan flujos de trabajo complicados y dependientes, así como la generación de muchos artefactos (documentación) que implican tiempo y esfuerzo a pesar de la adecuación (tailoring) que puedan hacer para cada tipo de proyecto.
En este artículo platicaremos sobre cómo podemos combinar este tipo de modelos formales con técnicas de las metodologías ágiles para mejorar y agilizar los resultados.
Principales características de las metodologías ágiles
Antes de continuar, demos un pequeño repaso acerca de métodos ágiles. Dichas metodologías surgieron como alternativa a los procesos tradicionales de desarrollo, retomando aspectos esenciales de los modelos de proceso formales, pero proporcionando una dimensión. Entre las metodologías más comúnmente usadas tenemos:
SCRUM: Define un conjunto de prácticas y roles que pueden ser consideradas como punto de partida para el proceso de desarrollo a usar. Indicado para proyectos con alto índice de volatilidad de los requerimientos. Se caracteriza por definir Sprints (iteraciones) de corta duración. Permite mostrar al cliente un producto que va incrementando funcionalidad con cada sprint ejecutado, permitiendo la validación continua del producto en construcción.
Programación Extrema (XP): Define un proceso iterativo e incremental con pruebas unitarias continuas y entregas frecuentes. El cliente o un representante se integran activamente al equipo de desarrollo. Promueve el desarrollo de las funciones del producto con dos personas en el mismo puesto: programación por pares. Considera la corrección de todos los defectos encontrados antes de incorporar nueva funcionalidad y realizar pruebas de regresión constantes para detectar los posibles errores.
Feature-Driven Development (FDD): Define un proceso iterativo, con iteraciones cortas de dos semanas como máximo. Consta de cinco pasos: 1. Desarrollo de un modelo global, 2. Construcción de una lista de funcionalidades, 3. Planeación por funcionalidad, 4. Diseño por funcionalidad y 5. Construcción por funcionalidad.
Test-Driven Development (TDD): Minimiza el número de defectos del código maximizando su calidad (código limpio). Su funcionamiento se basa en la escritura de una prueba, en la cual se verifican fallas. Posteriormente, se implementa el código que hace que la prueba pase satisfactoriamente, finalizando con la refactorización del código escrito.
Mapeo de procesos CMMI vs. métodos ágiles
Buscando en Internet podemos encontrar diversas propuestas de mapeos de correspondencia entre modelos de procesos y metodologías de software. Lo interesante no es esta descripción, sino la adaptación que cada organización hace de su proceso estándar para la adopción de nuevas técnicas o procesos. En el caso de métodos ágiles, considerando que se ha contado con experiencia en la implementación de un modelo como CMMI, se pueden aprovechar las actividades relacionadas con la eficiencia de los recursos y la estrecha colaboración con el cliente simplemente ajustando el ciclo de vida tradicional para incorporar prácticas ágiles en aquellas actividades donde tenga sentido. Generalmente los procesos más afectados son los de las categoría de administración de proyectos, ingeniería y soporte. La figura 1 muestra un panorama de esta arquitectura de procesos modificada.
Figura 1. Procesos de CMMI afectados por métodos ágiles.
En el caso de la administración de proyectos, Scrum es posible el método ágil que mayor influencia puede tener en esta categoría, ya que define prácticas relacionadas a Requirements Management (REQM), Project Planning (PP) y Project Monitoring and Control (PMC). Algunas actividades del proceso Product and Process Quality Assurance (PPQA) son cubiertas de forma natural por el Scrum Master al asegurar que el proceso Scrum es ejecutado por el equipo, sin embargo para obtener evaluaciones objetivas se debe definir desde el principio estándares y procedimientos que, luego a través de listas de verificación, puedan evaluarse. Para realizar la implementación robusta del proceso Measurement and Analysis (MA) se recomienda usar GQIM. Para el proceso Supplier Agreement Management (SAM) Scrum no considera prácticas relacionadas con el tema.
En cuanto a los procesos de ingeniería, Scrum recomienda prácticas que se pueden utilizar para Requirements Development (RD) y Requirements Management (RM). A su vez, tanto XP como FDD y TDD cubren varias actividades del resto de los procesos de ingeniería.
Los procesos de soporte como Process and Product Quality Assurance (PPQA) y Configuration Management (CM) sufren modificaciones, sin dejar de obtener las ventajas de su implementación. La velocidad de desarrollo implica implementar técnicas de integración continua que permitan ser más veloces en la realización de liberaciones parciales y formales diariamente. Uno de los retos principales es acoplar el proceso de auditorías al dinamismo y practicidad para documentar los aspectos técnicos que usa el equipo, ya que se ejecuta siempre de forma muy estricta a los artefactos documentados en detalle y generalmente en versiones que cubren al menos el 90% del alcance definido.
Beneficios y resultados de negocio
Dentro de los beneficios que se pueden obtener al implementar CMMI con técnicas ágiles podemos encontrar:
- Cumplir con las expectativas de los proyectos.
- Conservar la visibilidad de los proyectos hacia la Alta Gerencia pero con datos actualizados diariamente permitiendo una mejor toma de decisiones.
- Mejor comunicación entre todos los involucrados.
- Mejora de la planeación y mejor entendimiento del producto a construir.
- Reducción del re-trabajo (al menos un 50% en nuestro caso).
- Aumento de la productividad (al menos un 60% en nuestro caso).
- Reducción de defectos (al menos un 60% en nuestro caso).
- Disminución de los costos.
- Incremento del nivel de satisfacción del cliente.
Conclusiones y retos futuros
La implementación de CMMI usando técnicas ágiles trae consigo lo mejor de dos mundos: contar con procesos definidos y un buen nivel de control pero ahora sobre técnicas sencillas y eficientes enfocadas al cliente y al producto.
La implementación de las prácticas ágiles en un entorno de procesos riguroso, como el establecido a través del uso de CMMI, permite:
- Contar con una combinación poderosa para adaptarse rápidamente a los cambios así como la predictibilidad de los resultados y toma de decisiones oportuna.
- Considerar el time to market como factor de ventaja competitiva.
- Elevar los índices de satisfacción del cliente.
Hay que aprovechar ahora el enfoque de diversos grupos como PMI con administración ágil, RUP con su versión para desarrollo ágil y diversos modelos ágiles, para obtener mejores resultados en la producción de software. ¡Es cuestión de agilizar!
Elsa Ramírez Hernández es Directora de Innovación en Praxis. Es experta en implantación de CMMI habiendo dirigido esfuerzos para la acreditación en CMM 3, CMMI 4, CMMI 5 y CMMI 5 con ágiles para una empresa de desarrollo.
Fernando Rueda Téllez es consultor CMMI en Praxis. Es experto en procesos de administración, desarrollo y soporte. SEPG Manager y participó en SCAMPIs para CMM 3, CMMI 4, CMMI 5 y CMMI 5 con ágiles para una empresa de desarrollo.
- Log in to post comments