Scrum y CMMI
Scrum y CMMI
Scrum y CMMI
ABSTRACT: Scrum is a reference model that defines a set of practices and roles, and can be
taken as a starting point to define the development process to be executed during a project. The
CMM - CMMI (Capability Maturity Model ® Integration) is a software quality model that classifies
companies in maturity levels. This paper presents the key features of both and an analysis of how
they can be combined in the same company to achieve maturity level 2 of CMMI. It also presents
the current status of the Scrum implementation in Geocuba Oriente Sur.
INTRODUCCIÓN
El desarrollo de software hoy en día es acelerado debido a la alta demanda del mercado y por
tal motivo deben utilizarse una serie de metodologías, modelos de calidad, procesos, que permitan
organizar, administrar y controlar todo el proceso de desarrollo del mismo. Es importante tener en
cuenta las características principales de cada Empresa o Grupo de desarrollo de software para
aplicar el proceso de desarrollo adecuado. Entre los aspectos a tener en cuenta están estructura,
cantidad de especialistas involucrados, velocidad de desarrollo de cada miembro del equipo de
desarrolladores y del grupo en general, entre otros.
El Grupo de Desarrollo de Software (GDS) de la Unidad de Desarrollo Científico Tecnológica
(UDCT) de GEOCUBA Oriente Sur (GEOCUBA OS) es un equipo pequeño y multidisciplinario que
usa SCRUM como proceso para el desarrollo de software y que busca obtener productos con
mejor calidad y organizar mejor el trabajo antes, durante y después del desarrollo del software.
Jakob Nielsen quien es una de las personas más respetadas en el ámbito mundial sobre
usabilidad en la web, planteó:
…Lanzar un software difícil de usar no sólo significa perder a sus mejores clientes, aquellos
dispuestos a usar sus servicios, sino que estos le advertirán a otros para que no utilicen su
software…
Como se aprecia es muy importante el factor usabilidad y calidad del producto ya que son
fundamentales en el mercado del software para atraer a los mejores clientes y que estos se sientan
satisfechos con el producto final.
CMMI enseña el camino para alcanzar un nivel de madurez de la organización o un nivel de
capacidad de un área de proceso. Su propósito es proporcionar una guía para mejorar los
procesos de la organización y su habilidad para administrar el desarrollo, adquisición y
mantenimiento de productos y servicios.
CMMI es un modelo que trata sobre qué buenas prácticas mejoran una organización, mientras
que Scrum aporta un cómo implantar esas, u otras, buenas prácticas. CMMI dice, por ejemplo, qué
espera encontrar que se estime, pero no cómo estimar. CMMI dice que espera encontrar un ciclo
de vida, pero no cuál. Scrum aporta, entre otros, un cómo implantar un ciclo de vida iterativo e
incremental.
Con este trabajo se pretende combinar SCRUM con CMMI y adaptarlos al GDS con el objetivo
de mejorar los procesos para entregar productos y servicios de calidad. CMMI define “que” hacer y
SCRUM el “como”.
1. QUÉ ES SCRUM?
Scrum es un modelo de referencia que define un conjunto de prácticas y roles, y que puede
tomarse como punto de partida para definir el proceso de desarrollo que se ejecutará durante un
proyecto.
La pila del producto es un documento de alto nivel para todo el proyecto. Contiene amplias
descripciones de todas las características requeridas, funcionalidades en la wish-list, etcétera.
La pila de la iteración es un documento con gran detalle donde se describe el cómo el equipo va
a implementar los requisitos durante el siguiente sprint. Las tareas se rompen en horas con
ninguna tarea de duración superior a 16 horas. Si una tarea es mayor de 16 horas, deberá ser rota
en mayor detalle.
El gráfico de avance es mostrado públicamente en la que aparecen el número de tareas restantes
para el sprint actual, o el número de items en la pila de iteración.
Los roles principales en Scrum son el director de SCRUM (ScrumMaster), que mantiene los
procesos y trabaja de forma similar al director de proyecto, el dueño del producto (ProductOwner),
que representa a los interesados externos o internos (stakeholders), y el equipo de desarrollo.
(Palacio, 2008)
En Scrum un proyecto se ejecuta en bloques temporales cortos y fijos (iteraciones de un mes
natural y hasta de dos semanas, si así se necesita). Cada iteración tiene que proporcionar un
resultado completo, un incremento de producto final que sea susceptible de ser entregado con el
mínimo esfuerzo al cliente cuando lo solicite.
Inicial o Nivel 1: Este es el nivel en donde están todas las empresas que no tienen procesos. Los
presupuestos se disparan, no es posible entregar el proyecto en fechas, te tienes que quedar
durante noches y fines de semana para terminar un proyecto. No hay control sobre el estado del
proyecto, el desarrollo del proyecto es completamente opaco, no sabes lo que pasa en él.
Repetible o Nivel 2: Quiere decir que el éxito de los resultados obtenidos se pueden repetir. La
principal diferencia entre este nivel y el anterior es que el proyecto es gestionado y controlado
durante el desarrollo del mismo. El desarrollo no es opaco y se puede saber el estado del proyecto
en todo momento.
Los procesos que hay que implantar para alcanzar este nivel son:
Gestión de requisitos
Planificación de proyectos
Seguimiento y control de proyectos
Gestión de proveedores
Aseguramiento de la calidad
Gestión de la configuración
Definido o Nivel 3: Alcanzar este nivel significa que la forma de desarrollar proyectos está
definida, que quiere decir que está establecida, documentada y que existen métricas para la
consecución de objetivos concretos.
Los procesos que hay que implantar para alcanzar este nivel son:
Desarrollo de requisitos
Solución técnica
Integración del producto
Verificación
Validación
Desarrollo y mejora de los procesos de la organización
Definición de los procesos de la organización
Planificación de la formación
Gestión de riesgos
Análisis y resolución de toma de decisiones
Este nivel proporciona muchos beneficios y por tal motivo muchas empresas al llegar a este nivel
no ven la necesidad de ir más allá porque sienten que sus necesidades están cubiertas.
Cuantitativamente Gestionado o Nivel 4: Los proyectos usan objetivos medibles para alcanzar
las necesidades de los clientes y la organización. Se usan métricas para gestionar la organización.
Los procesos que hay que implantar para alcanzar este nivel son:
Los procesos que hay que implantar para alcanzar este nivel son:
Innovación organizacional
Análisis y resolución de las causas
El nivel 1 de CMMI es el nivel en el que están todas las empresas, ya que solo por el hecho de
existir como empresa de software están en el nivel 1.
Por lo tanto todas aquellas empresas que quieren mejorar su manera de trabajar para conseguir
mejores resultados quieren implantar CMM-CMMI hasta el nivel 2.
Lo que pretende el nivel 2 de CMM-CMMI es conseguir que en los proyectos de la organización
haya una gestión de los requisitos y que los procesos estén planeados, ejecutados, medidos y
controlados.
A continuación se explicarán cada una de las áreas de proceso de este nivel con un poco más de
detalle.
Planificación de proyectos
El objetivo de la planificación de proyectos es establecer y mantener planes que definen las
actividades del proyecto.
Las tareas que conlleva la planificación de proyectos son:
El plan incluye estimación de los elementos de trabajo y tareas, recursos necesarios, negociación
de compromisos, establecimiento de un calendario, e identificación y análisis de los posibles
riesgos que pueda tener el proyecto.
El plan de proyectos es una herramienta de trabajo viva que se debe de actualizar con mucha
frecuencia ya que los requisitos cambiarán, habrá que reestimar, habrá riesgos que desaparezcan
y otros que surjan nuevos, habrá que tomar acciones correctivas.
El documento del plan de proyecto es la base para monitorizar las actividades, comunicar el estado
y tomar acciones correctivas. El progreso se determina comparando los actuales elementos de
trabajo: tareas, horas realizadas, coste y calendario actual, con los estimados en el plan de
proyecto. Una apropiada visibilidad nos permitirá tomar acciones correctivas antes de que el
trabajo real se desvíe mucho del plan.
Estas acciones que se toman, harán que se tenga que rehacer/ajustar nuestro plan de proyectos.
Medición y Análisis
El objetivo de la medición y el análisis es desarrollar y sostener una capacidad de medición que
sea usada para ayudar a las necesidades de información de la gerencia.
Los datos tomados para la medición deben estar alineados con los objetivos de la empresa para
proporcionar información útil a la misma.
Se ha de implantar un mecanismo de recogida de datos, almacenamiento y análisis de los mismos
de forma que las decisiones que se tomen puedan estar basadas en estos datos.
Este sistema tiene que permitir además:
Planificación y estimación objetiva
Comparar el rendimiento actual contra el rendimiento esperado en el plan
Identificar y resolver problemas relacionados con los procesos
Proporcionar una base para añadir métricas en procesos futuros
Aseguramiento de la calidad
El objetivo del aseguramiento de la calidad es proporcionar personas y gestión con el objetivo de
que los procesos y los elementos de trabajo cumplan los procesos.
Gestión de la configuración
El objetivo de la gestión de la configuración es establecer y mantener la integridad de los
elementos de trabajo identificando, controlando y auditando dichos elementos.
Gestión de requisitos
Planificación de proyectos
Monitorización y control de proyectos
Medición y análisis
Aseguramiento de la calidad
Gestión de configuración
Ahora surge como interrogante ¿Cómo SCRUM desarrolla cada uno de los procesos de CMMI
Nivel 2?
El primero de los procesos (Gestión de requisitos) se lleva a cabo llenando la pila del producto
donde se describen cada una de las funcionalidades del sistema.
La pila del producto está compuesta por historias de usuarios las cuales son desarrolladas y
mantenidas por el dueño del producto y se debe mantener a nivel de negocio.
Las historias no son requerimientos, son expresiones cortas, fáciles de leer y entendibles por todos
que representan pequeños incrementos de funcionalidad desarrollables en días o semanas.
Además las historias no necesitan ser documentadas extensivamente.
Ejemplo de historia de usuario: “Como administrador del sistema debo poder adicionar militantes
para crear el listado de militantes del Comité de Base”
Además de la pila del producto en esta área aparece la pila de la iteración donde se describe con
gran detalle el como el equipo va a implementar los requisitos durante el próximo sprint y se sitúa
en el área de especificación de los requisitos de software necesarios para dar respuesta a las
funcionalidades esperadas por el cliente.
Los requisitos en SCRUM parten de la visión del resultado que se desea obtener; y evolucionan
durante el desarrollo.
Es una reunión conducida por el responsable del funcionamiento de Scrum, a la que deben asistir
el propietario del producto y el equipo al completo. La reunión comienza con la presentación del
propietario del producto, en la que expone los resultados que por orden de prioridad necesita.
El objetivo es que todo el equipo conozca las razones y los detalles con el nivel necesario para
poder estimar el trabajo necesario.
En esta reunión se determinan cuáles y cómo van a ser las funcionalidades que se van a
incorporar al producto con el próximo sprint.
En realidad esta reunión consiste en dos: En la primera, se decide qué elementos de la pila del
producto se van a desarrollar. En la segunda se desglosan éstos para determinar las tareas
necesarias, estimar el esfuerzo que necesita cada una y asignarlas a las personas del equipo. La
planificación del sprint no debe durar más de un día. (Palacio, 2008)
Revisión diaria del sprint
Dicha reunión no debe de pasar los 15 minutos de duración en la que todos los miembros del
equipo comentan las tareas en las que están trabajando, si se han encontrado o prevén
encontrarse con algún impedimento y actualizan sobre el sprint backlog las tareas ya terminadas o
los tiempos de trabajo que les quedan.
Reunión realizada al final del sprint en la que, el equipo presenta al propietario del producto,
clientes, usuarios, gestores… el incremento construido en el sprint, es decir, entrega el resultado
del desarrollo del sprint. Además genera retro-información entre todos los participantes para
preparar la pila del producto para el inicio del siguiente sprint.
Es una reunión informal donde el equipo no debe invertir más de una hora en prepararla, y lo que
se muestra es el resultado final: terminado, probado y operando en el entorno del cliente. (Palacio,
2008)
En el cuarto de los procesos (Medición y análisis) el cual está pensado en cubrir las necesidades
de la gerencia, es donde se especifican los datos necesarios para proporcionar información útil
para llevar a cabo la medición de manera satisfactoria.
SCRUM considera tres fondos de escala, o de zoom con los que se puede medir el trabajo:
Desarrollo y gestión de la solución técnica.
Gestión de proyecto.
Gestión de la organización.
En el primero se puede medir, por ejemplo, complejidad y estructura del código de un programa, en
el segundo, el porcentaje de trabajo realizado, y en el tercero, también por ejemplo, el nivel de
satisfacción laboral.
A partir de las mediciones realizadas se pueden realizar una serie de análisis en correspondencia
con el buen fin del producto y el de los profesionales implicados.
De forma general las mediciones se realizan en correspondencia con el área específica, por
ejemplo: de la organización se mide rendimiento, eficiencia, satisfacción del cliente; del proyecto se
mide esfuerzo, costo y tamaño del mismo; por ultimo del desarrollo en si se mide disponibilidad,
complejidad del diseño y cantidad de fallos.
Es importante destacar que no se deben implantar procesos de medición tan sólo porque sí. Se
deben seleccionar una serie de métricas que sean adaptables a la empresa para poder
incorporarlas a la misma de la manera más fácil posible. Hay que tener en cuenta que cuantas
menos métricas es mejor pues medir el costoso, añade burocracia y el objetivo de SCRUM es
trabajar con la mejor relación valor-simplicidad.
El quinto de los procesos (Aseguramiento de la calidad) persigue entre otras cosas evaluar la
ejecución de los procesos, identificar, documentar y arreglar los elementos no conformes.
Esta área en ocasiones no se le da la suficiente importancia pero sin ella un modelo de calidad no
sería posible.
En Scrum, el equipo se focaliza en una única cosa: construir software de calidad. Por el otro lado,
la gestión de un proyecto Scrum se focaliza en definir cuáles son las características que debe tener
el producto a construir y en remover cualquier obstáculo que pudiera entorpecer la tarea del equipo
de desarrollo. Se busca que los equipos sean lo más efectivos y productivos que sea posible.
SCRUM exhibe una serie de beneficios que a la vez contribuyen a la calidad y la competitividad:
1. Gestión regular de las expectativas del cliente y basada en resultados tangibles.
2. Resultados anticipados.
3. Flexibilidad y adaptación respecto a las necesidades del cliente, cambios en el mercado,
etc.
4. Gestión sistemática del Retorno de Inversión (ROI).
5. Mitigación sistemática de los riesgos del proyecto.
6. Productividad y calidad.
7. Alineamiento entre el cliente y el equipo de desarrollo.
8. Equipo motivado.
3. Flexibilidad y adaptación.
De manera regular el cliente redirige el proyecto en función de sus nuevas prioridades, de los
cambios en el mercado, de los requisitos completados que le permiten entender mejor el producto,
de la velocidad real de desarrollo, etc.
Al final de cada iteración el cliente puede aprovechar la parte de producto completada hasta ese
momento para hacer pruebas de concepto con usuarios o consumidores y tomar decisiones en
función del resultado obtenido. (Replanificación en el inicio de la iteración).
4. Retorno de Inversión.
De manera regular, el cliente maximiza el ROI del proyecto. Cuando el beneficio pendiente de
obtener es menor que el coste de desarrollo, el cliente puede finalizar el proyecto. (Priorización de
requisitos por valor).
5. Mitigación de riesgos.
Desde la primera iteración el equipo tiene que gestionar los problemas que pueden aparecer en
una entrega del proyecto. Al hacer patentes estos riesgos, es posible iniciar su mitigación de
manera anticipada. "Si hay que equivocarse o fallar, mejor hacerlo lo antes posible".
La cantidad de riesgo a que se enfrenta el equipo está limitada a los requisitos que se puede
desarrollar en una iteración. La complejidad y riesgos del proyecto se dividen de manera natural en
iteraciones. (Desarrollo iterativo e incremental).
6. Productividad y calidad.
De manera regular el equipo va mejorando y simplificando su forma de trabajar. (Mejora continua,
comunicación diaria del equipo, time boxing, equipo multidisciplinario, estimación de fuerza
conjunta, compromiso del equipo, demostración de resultados).
8. Equipo motivado.
Las personas están más motivadas cuando pueden usar su creatividad para resolver problemas
y cuando pueden decidir organizar su trabajo. (Equipo auto-gestionado, Demostración).
El último de los procesos del Nivel 2 de CMMI (Gestión de Configuración) se define como el
conjunto de procesos destinados a asegurar la calidad de todo producto obtenido durante
cualquiera de las etapas del desarrollo de un Sistema de Información (S.I.), a través del estricto
control de los cambios realizados sobre los mismos y de la disponibilidad constante de una versión
estable de cada elemento para toda persona involucrada en el citado desarrollo. Estos dos
elementos (control de cambios y control de versiones de todos los elementos del S.I.) facilitan
también el mantenimiento de los sistemas al proporcionar una imagen detallada del sistema en
cada etapa del desarrollo. La gestión de la configuración se realiza durante todas las fases del
desarrollo de un sistema de información, incluyendo el mantenimiento y control de cambios, una
vez realizada la puesta en producción. (Wikipedia. Gestión de la Configuración, 2013)
Cuando se plantea una política de gestión de fuentes, es una buena idea es enumerar los objetivos
que persigue. Los objetivos que persigo, en esta ocasión, por considerarles comunes a todo equipo
ágil son:
Como se puede observar en la Empresa se realizan una serie de cambios para aplicar SCRUM y
para obtener productos con calidad y debidamente documentados. Estos cambios fueron
realizados para adaptar la metodología sin realizar cambios bruscos en la estructura de trabajo
anteriormente implementada en la misma.
CMMI tienen una fortaleza importante, que a la vez es debilidad de las prácticas ágiles: se trata de
las prácticas genéricas, que están presentes en todas las áreas de procesos para que en todas se
consiga:
CONCLUSIONES
Los modelos de calidad dicen el QUÉ hay qué hacer, pero no CÓMO hacerlo. CMMI prescribe
formas sobre CÓMO hacer la gestión de la configuración, la planificación del proyecto o la gestión
de los requisitos. También dice: hágalo como usted quiera, siempre y cuando alcance el fin del
área de proceso que venga al caso. Ya en el momento de certificarse es otra cosa porque
entonces hay que demostrarlo y pudiera complicarse.
Una gran empresa, o una pequeña que quiera asentar principios para dar el salto: de personas que
saben programar a empresa que sabe programar, debe incluir procesos para explicitar e
institucionalizar su saber hacer, independientemente de que sean procesos o agilidad.
BIBLIOGRAFIA
Comex Grupo Ibérica. (2008, Diciembre). Implantación del Modelo CMMI nivel 2. Retrieved from
[http://www.grupocomex.com/caso-exito-metodologia-cmmi.aspx?menu=3]
Carballo Escalona, M. (2012). Proceso de desarrollo ágil con Scrum y XP., (pp. 2-87). Santiago de
Cuba.
CMMI Institute. (2009, Mayo 13). CMMI and Scrum. Retrieved from [http://cmmiinstitute.com/cmmi-
getting-started/cmmi-compability/cmmi-and-agile/cmmi-and-scrum/]
Gracia, J. (14 de Agosto de 2005). CMM - CMMI. Calidad. Ingeniería de software. Obtenido de
[http://www.ingenierosoftware.com/calidad/cmm-cmmi.php]
Potter, N., & Sakry, M. (2011). Implementing Scrum (Agile) and CMMI. Together.