CMMI O METODOLOGÍAS ÁGILES DE DESARROLLO

En la actualidad existen varias metodologías abocadas a la problemática del desarrollo de software. Las mismas, si bien, tienen diferencias entre sí, también es cierto que en varios casos se complementan, e incluso abordan el tema de maneras similares. Básicamente son concepciones independientes, por el hecho de haber sido formuladas por personas o entidades con diferentes experiencias. El objetivo de presentarlas en este artículo, es brindarles un panorama general de las Metodologías tradicionales y de las Metodologías Ágiles, mostrando la importancia de elegir alguna que se adapte con las características de vuestra Compañía y sus necesidades.

Dentro de las Metodologías tradicionales que más exigencias requieren, podemos mencionar a CMMI (Capacity Maturity Model Integrated), que es un modelo de referencia sobre buenas prácticas maduras, consolidadas, y probadas para el desarrollo y mantenimiento de productos y servicios, cubriendo todo el ciclo de vida, desde la concepción a la entrega y mantenimiento. Las compañías que son evaluadas para los Niveles de Madurez que componen a CMMI, típicamente son de gran porte o tienen objetivos de venta de sus servicios de desarrollo o aplicaciones a terceros. Si bien, como mencionamos, encarar estas Metodologías tiene retornos de inversión positivos, demandan procesos de largo plazo que puedan tomar entre 12 y 48 meses, dependiendo del punto de inicio de cada compañía y del Nivel de Madurez a alcanzar. Claramente, CMMI se ha transformado en el “sello de facto” de calidad de D esarrollo de Aplicaciones para las Software Factories, o empresas de Outsourcing.

En relación a beneficios cuantificados de un Proceso de Implementación de CMMI, un informe publicado por el Software Engineering Institute (SEI) de la Universidad de Carnegie Mellon incluye los siguientes promedios de porcentajes de mejora:
• 20% de reducción de costos
• 37% de mayor probabilidad de entregar los proyectos en los tiempos estimados
• 67% de incremento de productividad
• 50% de baja de defectos en la codificación
• 14% de aumento la satisfacción de cliente

Pero… ¿qué existe para todo el resto de las compañías de menor tamaño o para las que no “venden” sus aplicaciones a terceros?

La respuesta a esta pregunta es la implementación de “Metodologías Ágiles. En febrero de 2001, tras una reunión celebrada en UTA, EEUU, nace el término Ágil aplicado al desarrollo de software. En esta reunión participaron un grupo de 17 expertos de la industria del software, incluyendo algunos de los creadores o impulsores de metodologías de software. Su objetivo fue esbozar los valores y principios que deberían permitir a los equipos desarrollar software rápidamente y respondiendo a los cambios que puedan surgir a lo largo del proyecto. Se pretendía ofrecer una alternativa a los procesos de desarrollo de software tradicionales, caracterizados por ser rígidos y dirigidos por la documentación que se genera en cada una de las actividades desarrolladas.
Estas son algunas de las más conocidas:
> XP – Extreme Programming
> Scrum
> Crystal Clear
> DSDM – Dynamic Systems Development Method
> FDD – Feature Driven Development
> ASD – Adaptive Software Development
> XBreed – Scrum wrapper for XP

Para ayudar a elegir entre una Metodología tradicional como CMMI y cualquier de las Metodologías Ágiles, veamos la siguiente Tabla:

Metodologías Ágiles Metodologías Tradicionales
Basadas en Heurísticas provenientes de practicas de producción de código Basadas en normas provenientes de estándares surgidos por el entorno de desarrollo
Especialmente preparados para cambios durante el proyecto Cierta resistencia a los cambios
Impuestas internamente (por el equipo) Impuestas externamente
Procesos menos controlado, con pocos principios Proceso mucho mas controlado, con numerosas políticas / normas
No existe el contrato tradicional o al menos es
bastante flexible
Existe un contrato prefijado
El cliente es parte del equipo de desarrollo El cliente interactua con el equipo de desarrollo mediante reuniones
Grupos pequeños (<10 integrantes y trabajando)
en el mismo sitio
Grupos grandes y posiblemente distribuidos
Pocos Artefactos Más artefactos
Pocos Roles Mas roles
Menos énfasis en la arquitectura del software La arquitectura del software es escencial y se expresa mediante modelos

Finalmente, queremos destacar que la elección entre las Metodologías tradicionales y las Ágiles, está directamente relacionada con el tipo de compañía en la cual usted está inserto, y los objetivos que se tengan con el desarrollo de aplicaciones, pero de cualquier manera, la decisión de aplicar una Metodología, transformará acciones repetitivas dependientes de “personas” en Procesos sistemáticos y “predecibles”, que redundarán en un aumento de calidad significativo, baja de costos y, sobre todo,  satisfacción de sus clientes.

…Nosotros, Estratega, podemos ayudarlo a…

» Realizar un Assessment para saber cuan maduros son sus procesos de Desarrollo
» Diagnosticar si su compañía debe implementar una Metodología clásica o una Metodología
ágil de Desarrollo
» Diseñar un Plan de Acción para eliminar las diferencias entre lo que “es”    hoy vs. lo que    “debería ser” o “podría ser”
» Gerenciar el Proyecto de Implementación de la nueva Metodología Gestionando el cambio y
» “Coachear” al equipo de trabajo.