64
Vladimir Caballa Torres APLICACIÓN DE UNA METODOLOGIA DE DESARROLLO DE SOFTWARE USANDO CMMI-DEV Y SCRUM CASO: CROSLAND LOGISTICA S.A.C Tesis de Ingeniería

Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Embed Size (px)

DESCRIPTION

Metodologias agiles con cmmi

Citation preview

Page 1: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Vladimir Caballa Torres

APLICACIÓN DE UNA METODOLOGIA DE DESARROLLO DE SOFTWARE USANDO CMMI-DEV Y

SCRUM

CASO: CROSLAND LOGISTICA S.A.C

Tesis de Ingeniería

Lima, Junio 2012

Page 2: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Vladimir Caballa Torres

APLICACIÓN DE UNA METODOLOGIA DE DESARROLLO DE SOFTWARE USANDO CMMI-DEV Y

SCRUM

CASO: CROSLAND LOGISTICA S.A.C

Orientador: Percy de la Cruz Velez de Villa

UNMSM – LIMA

JUNIO, 2012

“Tesis presentada a la Universidad Nacional

Mayor de San Marcos, Lima, Perú, para obtener

el Título de Ingeniero de Sistemas”

Page 3: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

© Vladimir Caballa Torres, 2012.

Todos los derechos reservados.

Page 4: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Este trabajo está dedicado a toda mi familia

en especial a mi madre que todo me lo dio.

Page 5: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

AGRADECIMIENTOS

Al profesor Percy de la Cruz Velez de Villa por su orientación y dedicación para que este trabajo cumpla con los objetivos trazados.

A todas aquellas personas que indirectamente me ayudaron para culminar este trabajo y que muchas veces constituyen un invalorable apoyo.

Y por encima de todo doy gracias a Dios.

Page 6: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

APLICACIÓN DE UNA METODOLOGIA DE DESARROLLO DE SOFTWARE USANDO CMMI-DEV Y

SCRUM

CASO: CROSLAND LOGISTICA S.A.C

RESUMEN

El presente trabajo pretende brindar una solución al realizar los proyectos de software y

mantenimiento de estos basado en CMMI-DEV y Scrum. El modelo CMMI-DEV y el método de

desarrollo ágil Scrum son vistos como contradictorios u opuestos pero vamos a dar prueba que

juntos pueden trabajar muy bien y complementarse uno al otro. Para poder aplicar esta

metodología primero tenemos que evaluar el nivel de madurez que tiene actualmente la empresa

Crosland Logística S.A.C. para tal motivo tenemos que evaluarla a través del SCAMPI, Standard

CMMI Appraisal Method for Process Improvement, a partir de los resultados obtenidos nosotros

nos centraremos en las áreas de procesos que no cumplan con el nivel de madurez 2,que es el

nivel definido, para poder plantear las mejoras. Dichas mejoras se basaran sobre CMMI,

Capability Maturity Model Integration, que son una colección de las mejores prácticas que

ayuda a las organizaciones a mejorar sus procesos. El desarrollo de desarrollo de software se

realizara con Scrum y todos los artefactos que este involucra. El resultado mejorará

dramáticamente el rendimiento de tecnología de información de la empresa Crosland Logística.

Palabras Clave: CMMI, Scrum, SCAMPI

Page 7: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

APLICACIÓN DE UNA METODOLOGIA DE DESARROLLO DE SOFTWARE USANDO CMMI-DEV Y

SCRUM

CASO: CROSLAND LOGISTICA S.A.C

Abstract

Page 8: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

ÍNDICE

CÁPITULO 1: INTRODUCCIÓN.................................................................................................................. 11

1.1. ANTECEDENTES................................................................................................................................ 121.2. DEFINICIÓN DEL PROBLEMA............................................................................................................ 121.3. OBJETIVOS....................................................................................................................................... 121.3.1. OBJETIVO PRINCIPAL................................................................................................................... 121.3.2. OBJETIVOS ESPECÍFICOS.............................................................................................................. 121.4. JUSTIFICACIÓN................................................................................................................................. 131.5. PROPUESTA...................................................................................................................................... 131.6. ALCANCE......................................................................................................................................... 131.7. ORGANIZACIÓN DE LA TESINA......................................................................................................... 14

CAPÍTULO 2: MARCO TEÓRICO................................................................................................................ 15

2.1. SCRUM............................................................................................................................................. 152.1.1. Transparencia.......................................................................................................................................152.1.2. Inspección..............................................................................................................................................152.1.3. Adaptación.............................................................................................................................................15

2.2. CMMI-DEV.................................................................................................................................... 162.3. SCAMPI.......................................................................................................................................... 16

CAPÍTULO 3: ESTADO DEL ARTE............................................................................................................. 18

3.1. TAXONOMÍA..................................................................................................................................... 183.2. CMMI-DEV.................................................................................................................................... 18

3.2.1. Descripción Del Modelo CMMI-DEV.................................................................................................193.2.1.1. Aspectos claves......................................................................................................................................193.2.1.2. Implementación.....................................................................................................................................223.2.2. Áreas de Proceso del Nivel de Madurez 2...........................................................................................233.2.2.1. Gestión De Requerimientos (REQM)..................................................................................................233.2.2.2. Planificación De Proyecto (PP)............................................................................................................233.2.2.3. Monitorización Y Control De Proyecto (PMC)..................................................................................243.2.2.4. Gestión De Configuración (CM)..........................................................................................................253.2.2.5. Medición Y Análisis (MA)....................................................................................................................253.2.2.6. Aseguramiento De La Calidad De Proceso Y Producto (PPQA).....................................................26

3.3. SCRUM............................................................................................................................................. 273.3.1. Roles de Scrum......................................................................................................................................283.3.1.1. El ScrumMaster....................................................................................................................................283.3.1.2. El Propietario del Producto (Product Owner)...................................................................................293.3.1.3. El Equipo...............................................................................................................................................293.3.2. Bloques de Tiempo................................................................................................................................303.3.2.1. Reunión de Planificación de la Entrega..............................................................................................313.3.2.2. El Sprint.................................................................................................................................................32

Page 9: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

3.3.2.3. Reunión de Planificación del Sprint....................................................................................................333.3.2.4. Revisión del Sprint................................................................................................................................353.3.2.5. Retrospectiva del Sprint.......................................................................................................................363.3.2.6. Scrum Diario.........................................................................................................................................363.3.3. Artefactos de Scrum.............................................................................................................................373.3.3.2. Sprint Backlog y Sprint Burndown.....................................................................................................393.3.3.3. Hecho......................................................................................................................................................40

CAPÍTULO 4: APORTE TEÓRICO............................................................................................................... 42

CAPÍTULO 5: APORTE PRÁCTICO............................................................................................................ 43

CAPÍTULO 6: IMPLEMENTACIÓN............................................................................................................. 43

CAPÍTULO 7: CONCLUSIONES Y TRABAJOS FUTUROS........................................................................43

8. REFERENCIAS BIBLIOGRÁFICAS.....................................................................................................44

Page 10: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Índice de Figuras

Figura 1 Crecimiento del Grupo Crosland[Crosland 10]...........................................................................11Figura 2 Áreas de proceso del nivel 2 [SEI 10].........................................................................................21Figura 3 Medologia de Scrum [Schwaber, Sutherland 11].......................................................................31

Page 11: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 1: Introducción UNMSM

CÁPITULO 1: INTRODUCCIÓN

Desde hace ya unos años se ha notado, en nuestro país, un crecimiento sostenido en la economía

nacional, donde el sector de venta de vehículos ha ido incrementando. Eso ha llevado al Grupo

Crosland tener un crecimiento promedio de casi 30% por un periodo de 10 años como se ve en la

Figura 1. Desde el 2000 la demanda de las motos ha venido incrementándose gradualmente,

habiendo aumentado en gran medida los últimos 5 años.

El Grupo Crosland dedicado a la importación, ensamblado, venta por mayor y por menor de

motos ha sufrido grandes cambios en cómo administrar el negocio y por siguiente el área de

sistemas que da soporte a las áreas críticas del negocio ha tenido que gestionar la creciente

información.

Es por esta razón que se ha hecho indispensable aplicar una metodología de desarrollo de

software usando CMMI-DEV y Scrum, que nos permitirá gestionar los cambios realizados en el

sistema, canalizar los requisitos de los usuarios y llevar un manejo óptimo de los procesos que

tiene el área de sistemas.

1 2 3 4 5 6 7 8 9 100

10,000,000

20,000,000

30,000,000

40,000,000

50,000,000

60,000,000

Total Grupo Crosland

Total Grupo

Figura 1 Crecimiento del Grupo Crosland[Crosland 10]

11

Page 12: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 1: Introducción UNMSM

1.1. Antecedentes

Como se señala anteriormente, hace un tiempo se ha registrado un favorable escenario en la

venta de vehículos en el Perú, lo que ha provocado un crecimiento en los sistemas de

información y el crecimiento del grupo; dicho crecimiento ha generado que cada vez sea más

complejo su sistema actual, SAMI(Sistema Administrativo Modular Integrado), entonces al no

poseer un sistema formal de control de gestión de cambio, una canalización de los

requerimientos de los usuarios, una planificación de proyecto, se hace indispensable aplicar las

buenas prácticas para mejorar las áreas de procesos de la empresa y el uso del método de

desarrollo Scrum para complementarlo en la gestión de los proyectos de software y el

mantenimiento de los sistemas ya desarrollados hasta ahora.

1.2. Definición del Problema

El grupo Crosland no cuenta con una gestión de proyectos de software adecuada que permita

un buen desempeño del área de tecnología de información, la gestión de requerimientos no se

realiza adecuadamente lo que provoca que el analista-desarrollador no comprenda lo que

realmente quiere el usuario del sistema, la planificación de proyecto no está definida lo da

lugar a una falta de monitorización y control del proyecto y por ultimo todo eso repercute en

la calidad del producto resultante.

1.3. Objetivos

1.3.1. Objetivo Principal

El objetivo principal de la tesis es “Aplicación de una Metodología de Desarrollo de Software

usando CMMI-DEV y Scrum”. Caso:Crosland Logistica S.A.C.

1.3.2. Objetivos Específicos

Medir el nivel de madurez de la empresa Crosland Logistica S.A.C y evaluar las áreas

de proceso.

Mejorar las áreas de proceso que presentan debilidades.

Dar un enfoque a la cultura de equipo para que el proyecto de resultados.

Usar una metodología de desarrollo ágil que permita complementar el modelo que se

propone, CMMI-DEV, permitiendo una adecuada gestión de los proyectos a partir de

los artefactos que propone Scrum.

12

Page 13: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 1: Introducción UNMSM

Gestionar los requerimientos de los productos y de los componentes del producto.

Planificar el proyecto para que nos permita: establecer estimaciones de tiempo,

desarrollar un plan de proyecto y tener un compromiso con el plan.

Monitorizar y controlar el proyecto que permita comprender el progreso del proyecto.

Asegurar la calidad del producto y del proceso que proporcione una visión objetiva al

personal y la gerencia.

1.4. Justificación

Los procesos de gestión de los sistemas de software serán mejorados y medidos lo que

brindara al jefe de área, y por consiguiente a la gerencia, índices que permitan evaluar el

desempeño del área de TI. El software desarrollado con la metodología será de calidad y

también será entregada a tiempo. Con el desarrollo de la tesis nosotros vamos dar al Grupo

Crosland no solo la calidad del software sino que también lo vamos a hacer de manera

planificada. Con lo cual vamos a dar un cambio drástico a lo que es hoy la realidad actual.

1.5. Propuesta

Implementar una metodología desarrollo de software que permita al área de TI de la Empresa

Crosland Logística S.A.C. una planificación de los proyectos que realiza. Esto ayudaría a

sacar adelante, sin contratiempos, cumpliendo con los requisitos planteados inicialmente,

dentro de los tiempos requeridos y con una calidad aceptable, los proyectos que se llevaran a

cabo en esta área.

1.6. Alcance

La tesis se va a aplicar a la empresa Crosland Logística, que da soporte a todo el Grupo

Crosland la cual trabaja a nivel nacional, específicamente al área de TI. Se realizaran las

mejoras de seis de los siete procesos planteados por CMMI-DEV para el nivel de madurez 2.

Para la misma área aplicaremos también el Scrum como método de desarrollo agil.

13

Page 14: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 1: Introducción UNMSM

1.7. Organización de la Tesina

La tesis está organizada en siete capítulos, los cuales se mencionan a continuación:

En el capítulo 2, se realiza el estudio del marco teórico de la tesis, enfatizando la literatura

sobre CMMI-DEV y Scrum, dando conceptos que se requieren para dar entendimiento a la

tesis

En el capítulo 3, se realiza el estudio del estado del arte y la taxonomía a la que pertenece la

tesis.

En el capítulo 4, vamos a ver el aporte teórico, el Benchmarking, el por qué hemos elegido

CMMI-DEV y Scrum como base para la tesis.

14

Page 15: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 2: Marco Teórico UNMSM

CAPÍTULO 2: MARCO TEÓRICO

Para comprender algunos de los términos usados en la tesis, tenemos que presentar algunas definiciones. Esto permitirá al lector un mejor entendimiento de lo que tratamos en el presente documento.

2.1. Scrum

Scrum, que se basa en la teoría del control empírico del proceso, emplea un enfoque iterativo e

incremental para optimizar la previsibilidad y controlar los riesgos.

Scrum no es un proceso o una técnica para desarrollar o crear productos, sino que es un marco en

el que se pueden emplear diversos procesos y técnicas. El papel de Scrum es hacer aflorar la

eficacia relativa de las prácticas de desarrollo empleadas por usted, para que pueda mejorarlas, a

la vez que proporciona un marco dentro del cual se pueden desarrollar productos complejos.

Existen tres pilares que sostienen toda implementación del control empírico de procesos.

2.1.1. Transparencia

La transparencia garantiza que los aspectos del proceso que afectan al resultado, son visibles

para aquellos que administran dicho resultado. Estos aspectos no sólo deben ser transparentes,

sino también conocidos. Es decir, cuando alguien que inspecciona un proceso cree que algo está

hecho, esto debe ser equivalente a su definición de "hecho".

2.1.2. Inspección

Se deben inspeccionar con la frecuencia suficiente los diversos aspectos del proceso para que

puedan detectarse variaciones inaceptables en el mismo. La frecuencia de inspección debe tener

en cuenta que todos los procesos se cambian por el propio acto de inspección. El dilema se

presenta cuando la frecuencia de inspección requerida excede la tolerancia del proceso a ser

inspeccionado. Afortunadamente, esto parece no aplicar al desarrollo de software.otro factor es

la habilidad y la diligencia de la gente que inspecciona los resultados del trabajo.

2.1.3. Adaptación

15

Page 16: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 2: Marco Teórico UNMSM

Si el inspector determina, a través de la inspección, que uno o más aspectos del proceso están

fuera de los límites aceptables, y que el producto resultante será inaceptable, debe ajustar el

proceso o el material procesado. El ajuste debe realizarse lo más rápidamente posible para

minimizar una desviación mayor.

Hay tres puntos para la inspección y la adaptación en Scrum. La reunión diaria de Scrum se

utiliza para inspeccionar el avance hacia la meta de Sprint, y para hacer las adaptaciones que

optimicen el valor de la jornada de trabajo del día siguiente. Además, la Revisión de Sprint y las

Reuniones de Planificación se utilizan para inspeccionar el progreso hacia el Objetivo (la

liberación de una versión) y para hacer las adaptaciones que optimicen el valor del siguiente

Sprint. Por último, la Retrospectiva de Sprint se utiliza para revisar el Sprint pasado y determinar

qué adaptaciones harán el siguiente Sprint más productivo, satisfactorio y agradable. El

contenido de Scrum se compone de un conjunto de Equipos Scrum y sus roles asociados; así

como de Bloques de Tiempo, Artefactos, y Reglas [Schwaber, Sutherland 11].

2.2. CMMI-DEVCMMI para el desarrollo es un modelo de referencia que cubre las actividades para el desarrollo de productos y servicios. Organizaciones de muchas industrias, incluyendo la aeroespacial, la banca, hardware, software, la defensa, la fabricación de automóviles, y de las telecomunicaciones, hacen uso de CMMI para el Desarrollo.

CMMI para el Desarrollo contiene las prácticas que abarcan la gestión de proyectos, gestión de procesos, ingeniería de sistemas, ingeniería de hardware, ingeniería de software, y otros procesos de apoyo utilizados en el desarrollo y mantenimiento. Use su juicio profesional y el sentido común para interpretar el modelo para una organización. Es decir, aunque las áreas de proceso que se describen en este modelo representan conductas consideradas las mejores prácticas para la mayoría de los usuarios, las áreas de proceso y las prácticas deben ser interpretadas con un conocimiento en profundidad del modelo CMMI-DEV, con las limitaciones de la organización y su entorno empresarial.[SEI 10]

2.3. SCAMPIEl Estándar CMMI Appraisal Method for Process Improvement (SCAMPI) está diseñado para proporcionar clasificaciones de calidad de referencia en relación con los modelos de Capability Maturity Model Integration (CMMI). Es aplicable a una gran variedad de modos de uso de evaluación, incluyendo tanto la mejora del proceso interno y determinaciones externas de capacidad. SCAMPI cumple todos los requisitos de evaluación para CMMI (ARC), los requisitos

16

Page 17: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 2: Marco Teórico UNMSM

para una clase un método de evaluación y apoya el desarrollo de ISO / IEC 15504 evaluaciones [SEI 12].

SCAMPI  permite al patrocinador:

• Profundizar en la capacidad de ingeniería de una organización mediante la identificación de las fortalezas y debilidades de sus procesos actuales

• Relacionar estas fortalezas y debilidades del modelo CMMI

• Dar prioridad a los planes de mejora

• Centrarse en las mejoras (corregir las debilidades que generan riesgos) que resulten más beneficiosas para la organización, dado su nivel actual de madurez de la organización o las capacidades de proceso

• Derivar clasificaciones de capacidad a nivel, así como un índice de nivel de madurez

• Identificar los riesgos de desarrollo / adquisición con respecto a las determinaciones de la capacidad / madurez

.

17

Page 18: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

CAPÍTULO 3: ESTADO DEL ARTE

Las metodologías usadas actualmente en el desarrollo de software nos dan un entendimiento de

las mejores prácticas recopiladas a través de la práctica, formas y entornos de trabajo, que las

empresas pueden aplicar en la gestión de proyectos de software para crear mejores productos .

3.1. TaxonomíaLa taxonomía de la tesis está enmarcada en el Programa 5: Ingeniería de Software en la línea: P5.2 Proceso de Desarrollo de Software, de acuerdo Facultad de Ingeniería de Sistemas e Informática.

3.2. CMMI-DEV

Durante las últimas décadas, el desarrollo de software y de sistemas que integran otras

tecnologías, evidenció la necesidad de un marco en el cual ordenar y sistematizar los procesos de

desarrollo y gestión de los proyectos. Durante más de dos décadas el Departamento de Defensa

de EEUU financió numerosos estudios y apoyó la formación del SEI (Software Engineering

Institute, Carnagie Mellow University) para desarrollar modelos con ese objetivo. El modelo

CMM (Capability Maturity Model) para el software fue concebido con esta intensión y fue

adoptado por la industria convirtiéndose en el estándar más utilizado. Buena parte de su

expansión fue la adopción del mismo por parte de las “software factories” de la India, polo de

desarrollo de un crecimiento enorme en los últimos diez años. Con la aplicación del modelo

CMM y la experiencia acumulada se detectó la necesidad de contar con un modelo más

abarcativo que incluyera el concepto más amplio de sistema. Así surgió el modelo CMMI

(Capability Maturity Model Integration) [Paulk,Curtis 91].

El modelo CMM ha servido como marco de referencia para la implementación de mejoras de

procesos en organizaciones en muchas partes del mundo y se han gastado miles de millones de

dólares en estas implementaciones. Sin embargo, no todos los resultados han sido alentadores.

Algunos informes indican que la cantidad de fracasos es muy alta en la implementación de estos

procesos, llegando al 70 % de las intervenciones. Varias investigaciones han mostrado que buena

18

Page 19: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

parte de este porcentaje se debe a que el modelo no contempla los aspectos sociales de las

organizaciones que intentan llevar a cabo un proceso de mejoras [Ngwenyama, Nielsen 03].

La conclusión de estos trabajos es que resulta necesario complementar este modelo con otros que

contengan los aspectos mencionados. Los analistas coinciden en afirmar que el paradigma del

modelo se basa en una visión racional y mecanicista de las organizaciones. El modelo CMM

tiene como objetivo el logro de procesos óptimos repetibles en el desarrollo de software. Esto

implica un cambio en la forma de pensar y trabajar en el trabajo diario de los desarrolladores. Por

esta razón es necesario incorporar en estos procesos aspectos de la cultura de la organización

donde se implementará, basados en la idea de que “la cultura de una organización determina lo

que se podrá y no se podrá realizar cuando se plantean cambios” [Quinn,McGrant 85].

3.2.1. Descripción Del Modelo CMMI-DEV

3.2.1.1. Aspectos claves

Los aspectos claves del modelo son, por un lado, la clasificación de las organizaciones en

maduras e inmaduras y, luego, la prescripción del camino a seguir por una organización

inmadura para evolucionar y convertirse en una organización madura.

El modelo entiende por organización inmadura aquella que lleva adelante sus proyectos sin una

definición previa de los procesos a seguir. Estos proyectos frecuentemente sobrepasan sus

presupuestos y tiempos de terminación debido a que son iniciados con estimaciones poco

realistas, sin una planificación adecuada, y son llevados adelante sin ningún tipo de gestión. En

general estos proyectos no terminan o terminan con una disminución importante en la calidad

esperada del producto.

Por organizaciones maduras el modelo entiende a aquellas que desarrollan sus proyectos en

forma planeada. El logro de los objetivos del proyecto son asignados al cumplimiento de las

reglas preestablecidas. Los presupuestos asignados y el tiempo previsto son los necesarios

porque se parte de estimaciones metódicas y basadas en datos de proyectos previos, con roles y

responsabilidades bien definidos.

19

Page 20: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

Para que una organización se convierta en madura debe evolucionar con el tiempo alcanzando

sucesivos niveles de madurez.

El modelo CMM identifica los siguientes niveles de madurez:

Nivel de Madurez 1 - Inicial – Ausencia total de procesos definidos.

Nivel de Madurez 2 - Gestionado – Procesos de administración establecidos para lograr el

seguimiento de los costos, tareas y funcionalidad. La disciplina está dada por la repetición en

proyectos con aplicaciones similares.

Nivel de Madurez 3 - Definido – Además de las definiciones del nivel anterior, son

incorporadas actividades de administración de ingeniería en forma documentada, estandarizada e

integradas en una familia de procesos normalizados de la organización. Los proyectos utilizan

una versión adaptada de esas normas para su desarrollo.

Nivel de Madurez 4 - Administrado – Se llevan adelante los proyectos en forma controlada

con métricas que permiten mediciones confiables de los procesos y productos.

Nivel de Madurez 5 - Optimizado – Incluye la mejora continua de procesos a partir de la

comparación y análisis de mediciones sucesivas de los proyectos.

20

Page 21: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

Figura 2 Áreas de proceso del nivel 2 [SEI 10]

El modelo CMMI incorpora al modelo por niveles de madurez de las organizaciones una vista de

niveles de capacidad por área de procesos. La misma está orientada a incluir los casos en los

cuales las organizaciones necesitan una capacidad diferenciada por área de proceso debido a los

objetivos de sus negocios. Además, este modelo enfatiza a lo largo de sus definiciones la

relación de cada una de sus áreas de proceso con los objetivos de negocio mencionados.

Estos niveles de capacidad son caracterizados genéricamente de la siguiente manera:

Nivel de Capacidad 0 – Incompleto: Área de proceso sin objetivos.

Nivel de Capacidad 1 – Ejecutada: Objetivos específicos del área de proceso son satisfechos.

Nivel de Capacidad 2 – Administrada: Área de proceso institucionalizada a partir de una política organizacional de uso de los procesos.

Nivel de Capacidad 3 – Definida: Área de proceso institucionalizada a partir de un proceso definido.

21

Page 22: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

Nivel de Capacidad 4 – Cuantitativamente Administrada: Área de proceso institucionalizada a partir de una política organizacional de la administración cuantitativa de procesos.

Nivel de Capacidad 5 – Optimizada: Área de proceso institucionalizada a partir de la optimización de sus procesos.

En el modelo CMMI las áreas de proceso son clasificadas en las siguientes categorías:

1. Process Management

2. Project Management

3. Engineering

4. Support

3.2.1.2. Implementación La implementación de un proceso de mejoras según el modelo CMMI está compuesto de las siguientes fases:

Inicio, en esta fase se relevan los procesos, tareas, actividades y activos con que cuenta la organización, así como las políticas generadas por la conducción de la organización. El método que CMMI propone para la realización de este relevamiento es SCAMPI (Standard CMMI Assessment Method for Process Improvement). Consiste de un conjunto estructurado de actividades tales como entrevistas, revisión de documentos, presentaciones y análisis de respuestas a cuestionarios. El resultado de esto es la obtención de las fortalezas y debilidades, sobre las cuales se elaborará el Plan de Mejoras. El objetivo de esta fase es determinar las fortalezas, debilidades y oportunidades de mejora de la organización. Todo esto conducido por los objetivos de negocio de la organización.

Diseño, basados en las debilidades y fortalezas encontradas en el SCAMPI se elabora el Process Improvement Plan (PI Plan) y los Action Plan (PAs).

Piloto, de acuerdo a los objetivos planteados en cada PATs (Process Action Team) y al producto resultante de su trabajo (proceso, tarea, actividad, estándares), se capacita a los miembros del grupo del proyecto piloto y se prueba las prácticas correspondientes.

Implementación, en esta fase se extiende al resto de la organización las prácticas llevadas adelante en todos y cada uno de los proyectos piloto.

3.2.2. Áreas de Proceso del Nivel de Madurez 2

22

Page 23: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

3.2.2.1. Gestión De Requerimientos (REQM)

El propósito de Gestión de Requerimientos (REQM = Requirements Management) es gestionar

requerimientos de los productos y componentes de producto del proyecto y asegurar

alineamiento entre dichos requerimientos y los planes y productos de trabajo del proyecto. Los

objetivos son:

Los requerimientos se gestionan y las inconsistencias con planes y productos de trabajo

se identifican.

Desarrollar un entendimiento con quienes proporcionan requerimientos acerca del

significado de los requerimientos.

Obtener compromiso con los requerimientos de los participantes del proyecto.

Gestionar cambios a los requerimientos conforme ellos evolucionan durante el proyecto.

Mantener trazabilidad bidireccional entre los requerimientos y productos de trabajo.

Asegurar que los planes y productos de trabajo del proyecto permanecen alineados con

los requerimientos.

3.2.2.2. Planificación De Proyecto (PP)

El propósito de Planificación de proyecto (PP = Project Planning) es establecer y mantener

planes que definan las actividades del proyecto. Sus objetivos son:

Establecer y mantener estimaciones de parámetros de planificación de proyecto.

Establecer una estructura de división del trabajo (EDT) de alto nivel para estimar el

alcance del proyecto.

Establecer y mantener estimaciones de atributos de productos de trabajo y tareas.

Definir las fases del ciclo de vida del proyecto sobre las cuales delimitar el esfuerzo de

planificación.

Estimar el esfuerzo y costo del proyecto para los productos de trabajo y tareas con base

en una justificación de estimación.

23

Page 24: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

Establecer y mantener un plan de proyecto como la base para gestionar el proyecto.

Establecer y mantener el presupuesto y cronograma del proyecto.

Identificar y analizar riesgos del proyecto.

Planificar la gestión de datos del proyecto.

Planificar los recursos para ejecutar el proyecto.

Planificar los conocimientos y habilidades necesarias para ejecutar el proyecto.

Planificar la involucración de las partes interesadas identificadas.

Establecer y mantener el plan completo del proyecto.

Establecer y mantener los compromisos con el plan de proyecto.

Revisar todos los planes que afectan el proyecto para comprender los compromisos del

proyecto.

Adaptar el plan de proyecto para conciliar recursos disponibles y estimados.

Obtener compromiso con las partes interesadas relevantes responsables de ejecutar y

apoyar la ejecución del plan.

3.2.2.3. Monitorización Y Control De Proyecto (PMC)

El propósito de Monitorización y Control de Proyecto (PMC = Project Monitoring and Control)

es proporcionar un entendimiento del avance del proyecto de modo que se puedan tomar

acciones correctivas apropiadas cuando el desempeño del proyecto se desvía significativamente

del plan. Sus objetivos son:

El desempeño y avance real del proyecto se monitoriza versus el plan del proyecto.

Monitorizar valores reales de parámetros de planificación de proyecto versus el plan de

proyecto.

Monitorizar compromisos versus aquellos identificados en el plan de proyecto.

Monitorizar riesgos versus aquellos identificados en el plan de proyecto.

Monitorizar la gestión de datos del proyecto versus el plan de proyecto.

Monitorizar la involucración de las partes interesadas versus el plan de proyecto.

Revisar periódicamente el avance del proyecto, desempeño y problemas.

Revisar los logros del proyecto y resultados en hitos seleccionados del proyecto.

Las acciones correctivas se gestionan hasta su cierre cuando el desempeño o resultados

del proyecto se desvían significativamente del plan.

24

Page 25: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

Recolectar y analizar problemas y determinar acciones correctivas para resolverlos.

Tomar acción correctiva sobre problemas identificados.

Gestionar acciones correctivas hasta su cierre.

3.2.2.4. Gestión De Configuración (CM)

El propósito de Gestión de Configuración (CM = Configuration Management) es establecer y

mantener la integridad de productos de trabajo usando identificación de configuración, control de

configuración, contabilizar el estado de la configuración y auditorias de configuración.

Se establecen líneas base de entregables identificados de proceso.

Identificar elementos de configuración, componentes y productos de trabajo relacionados

a ser colocados bajo gestión de configuración.

Establecer y mantener un sistema de gestión de configuración y un sistema de gestión de

cambios para controlar productos de trabajo.

Crear ó liberar líneas base para uso interno y para entregar al cliente.

Realizar seguimiento y control a los cambios a los productos de trabajo bajo gestión de

configuración.

Realizar seguimiento a solicitudes de cambio de los elementos de configuración.

Controlar cambios a los elementos de configuración.

Establecer y mantener la integridad de las líneas base.

Establecer y mantener registros que describen los elementos de configuración.

Realizar auditorias de configuración para mantener la integridad de las líneas base de

configuración.

3.2.2.5. Medición Y Análisis (MA)

El propósito de Medición y Análisis (MA = Measurement and Analysis) es desarrollar y sostener

una capacidad de medición usada para apoyar las necesidades de información para gestión. Sus

objetivos son:

Los objetivos y actividades de medición están alineadas con las necesidades y objetivos

identificados de información.

25

Page 26: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

Establecer y mantener objetivos de medición derivados de las necesidades y objetivos

identificados de información.

Especificar mediciones para resolver objetivos de medición.

Especificar cómo los datos de medición se obtienen y almacenan.

Especificar cómo los datos de medición se analizan y comunican.

Proporcionar los resultados de medición, que resuelven las necesidades y objetivos

identificados de medición.

Obtener datos de medición especificados.

Analizar e interpretar datos de medición.

Gestionar y almacenar datos de medición, especificaciones de medición y resultados de

análisis.

Comunicar los resultados de medición y las actividades de análisis a todas las partes

interesadas relevantes.

3.2.2.6. Aseguramiento De La Calidad De Proceso Y Producto (PPQA)

El propósito del Aseguramiento de la Calidad de Proceso y Producto (PPQA = Process and

Product Quality Assurance) es proporcionar al equipo y administración visibilidad objetiva de

los procesos y productos de trabajo asociados. Sus objetivos son:

Evaluar objetivamente adherencia del proceso ejecutado y productos de trabajo asociados

con las descripciones de proceso, estándares y procedimientos aplicables.

Evaluar objetivamente procesos ejecutados seleccionados versus descripciones de

proceso, estándares y procedimientos aplicables.

Evaluar objetivamente productos de trabajo seleccionados versus descripciones de

proceso, estándares y procedimientos aplicables.

A los problemas de no conformidad se les hace seguimiento objetivamente y se

comunican y se asegura su solución.

26

Page 27: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

Comunicar problemas de calidad y asegurar la solución de problemas de no conformidad

con el equipo y gerentes.

Establecer y mantener registros de actividades de aseguramiento de la calidad.

3.3. Scrum

El marco de Scrum se compone de un conjunto de Equipos Scrum y sus roles asociados; así

como de Bloques de Tiempo, Artefactos, y Reglas.

Los Equipos Scrum están diseñados para optimizar la flexibilidad y la productividad, para lo

cual, son auto-gestionados, multifuncionales, y trabajan en iteraciones. Cada Equipo Scrum tiene

tres roles:

1) El ScrumMaster, que es responsable de asegurar que el proceso es comprendido y seguido

2) El Propietario del Producto (Product Owner), que es responsable de maximizar el valor

del trabajo realizado por el Equipo Scrum,

3) El Equipo, que hace el trabajo. El equipo está formado por desarrolladores con todos los

conocimientos necesarios para convertir los requerimientos del Propietario del Producto en un

incremento potencialmente utilizable del producto al final del Sprint. [Schwaber, Sutherland 11]

Scrum emplea bloques de tiempo para crear regularidad. Los elementos de Scrum basados en

bloques de tiempo son: la Reunión de Planificación de la Entrega, la Reunión de Planificación

del Sprint, el Sprint, el Scrum Diario, la Revisión del Sprint, y la Retrospectiva del Sprint. El

corazón de Scrum es un Sprint, que es una iteración de un mes de duración o menos. La duración

de cada Sprint se mantiene constante a lo largo de todo el esfuerzo de desarrollo. Todos los

Sprints utilizan el mismo marco de referencia de Scrum, y proporcionan un incremento de

funcionalidad potencialmente utilizable al producto final. Cada Sprint se inicia inmediatamente

después del anterior.

Scrum emplea cuatro Artefactos principales. El Product Backlog es una lista priorizada de todo

lo que podría ser necesario en el producto. El Sprint Backlog es una lista de tareas para convertir

el Product Backlog correspondiente a un Sprint, en un incremento del producto potencialmente

entregable. Un Burndown es una medida del backlog restante a través del tiempo. Un Burndown

27

Page 28: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

de Versión mide el Product Backlog restante durante el tiempo correspondiente a una liberación

de una versión. Un Sprint Burndown mide los elementos restantes del Sprint Backlog en el

transcurso de un Sprint.

Las Reglas sirven de unión para los bloques de tiempo, los roles y los artefactos de Scrum, y se

describen en el cuerpo de este documento. Por ejemplo, una regla de Scrum es que sólo los

miembros del equipo - la gente comprometida a convertir el Product Backlog en un incremento -

pueden hablar durante un Scrum Diario. En las secciones de "Consejos" que encontrará en este

documento se describen formas de aplicar Scrum que no son reglas, sino más bien sugerencias.

3.3.1. Roles de Scrum

El Equipo Scrum consiste en el ScrumMaster, el Propietario del Producto, y el Equipo. A los miembros del equipo Scrum se les llama "cerdos". El Propietario del Producto es el "cerdo" del Product Backlog. El equipo es el "cerdo" del trabajo del Sprint. El ScrumMaster es el "cerdo" del proceso de Scrum. Todo el resto de personas involucradas son "gallinas". Las "gallinas" no pueden decir a los "cerdos" cómo hacer su trabajo. El símil de las "gallinas" y los "cerdos" viene de la siguiente historia:

"Están juntos una gallina y un cerdo, cuando la gallina dice:" ¡Vamos a abrir un restaurante! " El cerdo se lo piensa y dice, "¿Cómo llamaremos al restaurante?" La gallina, dice, "¡Huevos con Jamón!" El cerdo dice: "No, gracias, yo estaría comprometido, pero tú solamente estarías involucrada"

3.3.1.1. El ScrumMaster

El ScrumMaster es responsable de asegurar que el equipo Scrum se adhiere a los valores,

prácticas y normas Scrum. El ScrumMaster ayuda a que el Equipo Scrum y la organización

adopten Scrum. El ScrumMaster enseña al Equipo Scrum mediante entrenamiento y liderándolo

para que sea más productivo y a construya productos de mayor calidad. El ScrumMaster ayuda a

que el Equipo Scrum comprenda y utilice la auto-gestión y a ser multidisciplinar. El

ScrumMaster también debe ayudar al Equipo Scrum a entregar lo mejor de sí mismo, en un

entorno de organización que posiblemente aún no esté optimizado para el desarrollo de

productos complejos. Cuando el ScrumMaster ayuda a realizar estos cambios, esto recibe el

nombre de "eliminar impedimentos." El papel del ScrumMaster es el de servidor y líder del

equipo de Scrum. Sin embargo, el ScrumMaster no gestiona al Equipo Scrum; el equipo Scrum

es auto-gestionado.

28

Page 29: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

3.3.1.2. El Propietario del Producto (Product Owner)

El Propietario del Producto es la única persona responsable de gestionar el Product Backlog y

asegurar el valor del trabajo que el equipo lleva a cabo. Mantiene el Product Backlog y asegura

la visibilidad del mismo para todos. Todo el mundo sabe qué elementos tienen la máxima

prioridad, por lo que todo el mundo sabe en qué se va a trabajar.

El Propietario del Producto es una persona, no un comité. Pueden existir comités que le

aconsejen o le influencien, pero aquellos que quieran cambiar la prioridad de un elemento

tendrán que convencerle. Las empresas que adoptan Scrum, pueden encontrarse con el hecho de

que Scrum influye en sus métodos para establecer las prioridades y los requisitos a través del

tiempo.

Para que el Propietario del Producto tenga éxito, todos en la organización deben respetar sus

decisiones. Nadie está autorizado a obligar al Equipo a trabajar bajo un conjunto diferente de

prioridades, y a los Equipos no se les permite prestar atención a nadie que diga lo contrario. Las

decisiones del Propietario del Producto se hacen visibles en el contenido y la priorización del

Product Backlog. Esta visibilidad requiere que el Propietario del Producto dé lo mejor de sí

mismo, y hace que Propietario del Producto sea un rol exigente además de gratificante.

3.3.1.3. El Equipo

Los Equipos de desarrolladores convierten el Product Backlog en incrementos de funcionalidad

potencialmente entregables en cada Sprint. Los Equipos también son multifuncionales; los

miembros del equipo deben tener todas las habilidades necesarias para crear un incremento de

trabajo. Los miembros del Equipo a menudo tienen habilidades especializadas, como la

programación, el control de calidad, el análisis de negocio, la arquitectura, el diseño de la

interfaz de usuario o el diseño de bases de datos. Sin embargo, las habilidades que el miembro

del Equipo comparte - es decir, la habilidad de tratar con un requisito y convertirlo en un

producto utilizable - tienden a ser más importantes que aquellas que no comparte. Las personas

que se niegan a escribir código, ya que son arquitectos o diseñadores, no se ajustan bien a los

Equipos. Todo el mundo interviene, incluso si eso requiere aprender nuevas habilidades o

recordar las antiguas. No hay títulos en los Equipos, y no hay excepciones a esta regla. Los

29

Page 30: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

equipos tampoco contienen sub-Equipos dedicados a áreas particulares, como pruebas o análisis

de negocio.

Los Equipos también se auto-organizan. Nadie - ni siquiera el ScrumMaster - dice al Equipo

cómo convertir el Product Backlog en incrementos de funcionalidad entregable. El Equipo busca

por su cuenta la mejor forma de hacerlo. Cada miembro del equipo aplica su experiencia a todos

los problemas. La sinergia resultante mejora la eficiencia global de todo el Equipo, y la eficacia.

El tamaño óptimo para un equipo es de siete personas, más o menos dos. Cuando hay menos de

cinco miembros en el Equipo, hay menos interacción y como resultado hay menos aumento de la

productividad. Es más, el Equipo puede encontrar limitaciones de habilidad en ciertos momentos

del Sprint y no poder entregar una porción entregable del producto. Si hay más de nueve

miembros, el problema simplemente es que se necesita demasiada coordinación. Los equipos

grandes generan demasiada complejidad como para que pueda ser gestionada por un proceso

empírico. Sin embargo, nos hemos encontrado con algunos Equipos exitosos que han superado

los límites superior e inferior de este rango de tamaño. Los roles del Propietario del Producto y

del ScrumMaster no se computan en este rango a menos que sean también cerdos, que trabajen

en las tareas del Sprint Backlog.

La composición del Equipo puede cambiar al final de un Sprint. Cada vez que se cambian los

miembros del Equipo, la productividad obtenida de la auto-organización se ve disminuida. Por

esta razón se debe tener cuidado al cambiar la composición del equipo.

3.3.2. Bloques de Tiempo

Los Bloques de Tiempo en Scrum son la Reunión de Planificación de la Entrega, el Sprint, la

Reunión de Planificación del Sprint, la Revisión del Sprint, la Retrospectiva del Sprint, y el

Scrum Diario.

30

Page 31: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

Figura 3 Medologia de Scrum [Schwaber, Sutherland 11]

3.3.2.1. Reunión de Planificación de la Entrega

El propósito de la planificación de la entrega es establecer un plan y unas metas que los Equipos

Scrum y el resto de las organizaciones puedan entender y comunicar. La planificación de la

entrega responde a las preguntas: "¿Cómo podemos convertir la visión en un producto ganador,

de la mejor manera posible? ¿Cómo podemos alcanzar o mejorar la satisfacción del cliente

deseada y el Retorno de la Inversión?”. El plan de entrega establece el objetivo de la entrega, el

Product Backlog de mayor prioridad, los principales riesgos, y las características generales y la

funcionalidad que va a contener la entrega. También establece una fecha probable de entrega, y

el coste, que debería mantenerse si no cambia nada. La organización puede inspeccionar el

avance y hacer cambios a este plan de entrega en cada Sprint.

La planificación de entrega es completamente opcional. Si los Equipos Scrum empiezan a

trabajar sin esta reunión, la ausencia de los artefactos generados en ella se revelará en la forma de

31

Page 32: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

impedimentos que hay que resolver. El trabajo necesario para resolver cada impedimento se

convertirá en un elemento del Product Backlog.

Los productos se construyen utilizando Scrum de forma iterativa, de modo que cada Sprint crea

un incremento del producto, empezando por lo más valioso y de mayor riesgo. Más y más

Sprints van generando incrementos adicionales del producto. Cada incremento es una parte

potencialmente entregable de todo el producto. Cuando se han creado los suficientes incrementos

de valor para el producto, de utilidad para sus inversores, la versión del producto es entregada.

La mayoría de las organizaciones ya tienen un proceso de planificación de entregas, y en la

mayoría de estos procesos, la mayor parte de la planificación se realiza al comienzo del proceso,

y no se modifica a lo largo del tiempo. En la planificación de la entrega en Scrum, se definen un

objetivo general y los resultados probables. Esta planificación de entrega por lo general no

requiere más de un 15-20% del tiempo consumido por una organización para construir un plan

de entrega tradicional. Sin embargo, durante el trabajo en una entrega con Scrum, se realizará

planificación sobre la marcha en cada Revisión del Sprint y Reunión de Planificación del Sprint,

así como diariamente en cada reunión diaria de Scrum. En total, los esfuerzos de planificación de

una entrega de Scrum probablemente consumen muy poco esfuerzo más que los de la

planificación de entrega tradicional.

La planificación de una entrega requiere estimar y priorizar los elementos del Product Backlog

para dicha entrega. Hay muchas técnicas para hacer esta estimación y priorización, que se

encuentran fuera del ámbito de Scrum, pero que son útiles cuando se utilizan en combinación

con Scrum.

3.3.2.2. El Sprint

Un Sprint es una iteración. Los Sprints están limitados en bloques de tiempo. Durante el Sprint,

el ScrumMaster asegura que no se realizan cambios que afecten al Objetivo del Sprint. Tanto la

composición del Equipo como los objetivos de calidad se mantienen constantes durante todo el

Sprint. Los Sprints se componen de: la Reunión de Planificación de Sprint, el trabajo de

desarrollo, la Revisión del Sprint, y la Retrospectiva del Sprint. Los Sprints ocurren uno tras

otro, sin tiempo entre ellos.

32

Page 33: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

Un proyecto se utiliza para lograr un resultado; en desarrollo de software, se utiliza para crear un

producto o sistema. Cada proyecto consiste en una definición de lo que se va a construir, un plan

para construirlo, el trabajo realizado de acuerdo con el plan, y el producto resultante. Cada

proyecto tiene un horizonte, es decir, el plazo para el que el plan es bueno.

Si el horizonte es demasiado lejano, la definición puede haber cambiado, pueden haber

intervenido demasiadas variables, el riesgo puede ser demasiado grande, etc. Scrum es un marco

para un proyecto cuyo horizonte no es superior a un mes, y en el cual hay suficiente complejidad

para que un horizonte más largo sea demasiado arriesgado. La previsibilidad del proyecto tiene

que ser controlada por lo menos cada mes, y el riesgo de que el proyecto pueda descontrolarse o

volverse impredecible, debe contenerse por lo menos cada mes.

Un Sprint puede ser cancelado antes de que el bloque de tiempo del Sprint se haya terminado.

Sólo el Propietario del Producto tiene la autoridad para cancelar el Sprint, aunque puede hacerlo

bajo la influencia de los interesados, del Equipo, o del ScrumMaster. ¿Bajo qué tipo de

circunstancias puede un Sprint ser cancelado? La gerencia puede necesitar cancelar un Sprint si

el objetivo del Sprint se queda obsoleto. Esto podría ocurrir si la empresa cambia de dirección, o

si cambia el mercado o las condiciones de la tecnología. En general, un Sprint debe ser cancelado

si dadas las circunstancias ya no tiene sentido. Sin embargo, debido a la corta duración de los

Sprints, rara vez tiene sentido hacer esta cancelación.

Cuando un Sprint se cancela, cualquier elemento del Product Backlog que haya sido completado

y "hecho", es revisado. Estos elementos son aceptados si representan un incremento

potencialmente entregable. Si no es así, el elemento se vuelve a colocar en el Product Backlog

con sus estimaciones iniciales. Cualquier trabajo realizado en él se asume como perdido. La

cancelación de un Sprint consume recursos, ya que todo el mundo tiene que reagruparse en otra

Reunión de Planificación de Sprint para iniciar otro Sprint. Las cancelaciones de Sprints son a

menudo traumáticas para el equipo, y muy poco frecuentes.

3.3.2.3. Reunión de Planificación del Sprint

Durante Reunión de Planificación del Sprint la iteración es planificada. La reunión se restringe a

un bloque de tiempo de ocho horas para un Sprint de un mes. Para Sprints más cortos, se debería

33

Page 34: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

reservar para esta reunión un tiempo proporcionalmente menor, aproximadamente el 5% de la

longitud total del Sprint (por ejemplo, para un Sprint de dos semanas sería una Reunión de

Planificación de cuatro horas). La Reunión de Planificación del Sprint y consta de dos partes. La

primera parte, un bloque de cuatro horas, es cuando se decide lo que se hará durante el Sprint. La

segunda parte (otro bloque de cuatro horas para un Sprint de un mes), es cuando el equipo

determina cómo se va a convertir esta funcionalidad en un incremento del producto durante el

Sprint.

Hay dos partes en la Reunión de Planificación del Sprint: la parte del "¿Qué?" y la parte del

"¿Cómo?". Algunos Equipos Scrum combinan las dos. En la primera parte, el Equipo Scrum

aborda la cuestión del "¿Qué?". El Propietario del Producto presenta al equipo la parte más

prioritaria del Product Backlog. Trabajan juntos para determinar qué funciones se van a

desarrollar durante el próximo Sprint. La información de entrada para esta reunión es el Product

Backlog, el último incremento del producto, la capacidad del Equipo y el rendimiento anterior

del Equipo. La cantidad de Backlog que el Equipo selecciona es una decisión del Equipo. Sólo el

Equipo puede evaluar lo que puede lograr en el próximo Sprint.

Una vez seleccionado el Product Backlog, se define un Objetivo para el Sprint. El Objetivo del

Sprint es una meta que se alcanzará mediante la implementación del Product Backlog. Es una

declaración que sirve de orientación al equipo acerca de por qué se está construyendo el

incremento. El Objetivo del Sprint es un subconjunto del objetivo de la entrega.

La razón para tener un Objetivo del Sprint es dar al equipo un margen de maniobra respecto a la

funcionalidad. Por ejemplo, el Objetivo para un Sprint podría ser: "Automatizar la funcionalidad

de modificación de la cuenta del cliente mediante de un middleware de transacciones seguras y

recuperables." A medida que el Equipo trabaja, mantiene este objetivo en mente. A fin de

satisfacer el objetivo, implementa la funcionalidad y la tecnología. Si el trabajo resulta ser más

duro de lo que el equipo había previsto, entonces, el equipo colabora con el Propietario del

Producto y sólo implementa parcialmente la funcionalidad.

En la segunda parte de la Reunión de Planificación del Sprint, el equipo aborda la cuestión del

"¿Cómo?". Durante la segunda mitad de la Reunión de Planificación del Sprint (bloque de cuatro

horas para un Sprint de un mes), el Equipo debe determinar cómo convertirá en un incremento, el

34

Page 35: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

Product Backlog (el "Qué") seleccionado durante la reunión de planificación de Sprint. El

Equipo por lo general comienza por el diseño del trabajo. Mientras diseñan, identifican tareas.

Estas tareas son las porciones detalladas del trabajo necesario para convertir el Product Backlog

en software que funciona. Las Tareas se deben descomponer para que se puedan completar en

menos de un día. Esta lista de tareas se llama Sprint Backlog. El Equipo se organiza para asignar

y realizar el trabajo contenido en el Sprint Backlog, ya sea durante la Reunión de Planificación

del Sprint, o sobre la marcha durante el Sprint.

El Propietario del Producto está presente en la segunda parte de la Reunión de Planificación del

Sprint para aclarar el Product Backlog y ayudar a llegar a posibles acuerdos. Si el Equipo

determina que tiene demasiado trabajo, o demasiado poco, puede renegociar el Product Backlog

con el Propietario del Producto. El Equipo también puede invitar a otras personas a estar

presentes, con el fin de proporcionar asesoramiento técnico o de dominio. En esta reunión, un

Equipo nuevo a menudo se da cuenta de que, o bien se hundirá, o saldrá a flote como un equipo,

no individualmente. El Equipo se da cuenta de que debe apoyarse en sí mismo. Al aceptar esto,

comienza a auto-organizarse para llegar a tener las características y el comportamiento de un

verdadero equipo.

3.3.2.4. Revisión del Sprint

Al final del Sprint, se lleva a cabo una reunión de Revisión de Sprint. Esta es una reunión

restringida a un bloque de tiempo de cuatro horas para un Sprint de un mes. Para Sprints de

menor duración, hay que asignar proporcionalmente menos tiempo de la longitud total para esta

reunión (por ejemplo, para dos semanas, la Revisión del Sprint sería de dos horas); esta reunión

no debe consumir más de 5% del total del Sprint. Durante la Revisión de Sprint, el Equipo

Scrum y las partes interesadas debaten sobre lo que se acaba de hacer. En base a eso, y a los

cambios en el Product Backlog que se hayan hecho durante el Sprint, colaboran para determinar

las próximas cosas que se podrían hacer. Se trata de una reunión informal, en la que la

presentación de la funcionalidad está destinada a fomentar la colaboración para determinar qué

hacer a continuación.

La reunión incluye por lo menos lo siguiente: El Propietario del Producto identifica lo que se ha

hecho y lo que no se ha hecho. El Equipo analiza lo que salió bien durante el Sprint y cuáles son

35

Page 36: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

los problemas que encontró, y cómo resolvió estos problemas. El Equipo entonces muestra el

trabajo que ha sido completado y responde preguntas. El Propietario del Producto a

continuación, analiza el Product Backlog en su estado actual. Proyecta las fechas probables de

finalización con distintos supuestos de velocidad. Todo el grupo colabora entonces sobre lo que

ha visto y lo que esto significa en cuanto a qué hacer a continuación. La Revisión de Sprint

ofrece una valiosa aportación a la siguiente Reunión de Planificación de Sprint.

3.3.2.5. Retrospectiva del Sprint

Después de la Revisión del Sprint, y antes de la próxima Reunión de Planificación de Sprint, el

Equipo Scrum mantiene una reunión Retrospectiva del Sprint. Es una reunión restringida a un

bloque de tiempo de tres horas para Sprints de un mes (asignar tiempo proporcionalmente menor

para Sprints de longitud menor). En esta reunión, el ScrumMaster alienta al Equipo Scrum a

revisar, en el marco de proceso y prácticas de Scrum, su proceso de desarrollo, para que sea más

eficaz y agradable para el próximo Sprint. Muchos libros documentan técnicas que son útiles

para su uso en las Retrospectivas.

El propósito de la Retrospectiva es inspeccionar cómo fue el último Sprint en lo que respecta a

las personas, relaciones, procesos y herramientas. La inspección debería identificar y priorizar

los principales elementos que hayan ido bien y aquellos elementos que si se hiciesen de forma

diferente, podrían producir mejoras. Entre estos elementos se incluyen la composición del equipo

Scrum, la organización de las reuniones, las herramientas, la definición de "hecho", los métodos

de comunicación, y los procesos para convertir los elementos del Product Backlog en algo

"hecho". Al final de la Retrospectiva del Sprint, el Equipo Scrum debería haber identificado

acciones concretas de mejora que se implementarán en el próximo Sprint. Estos cambios se

convierten en la adaptación derivada de la inspección empírica.

3.3.2.6. Scrum Diario

Cada Equipo se reúne todos los días 15 minutos en una reunión de inspección y adaptación

llamada Scrum Diario. El Scrum Diario se lleva a cabo a la misma hora y en el mismo lugar a lo

largo de todos los Sprints. Durante la reunión, cada miembro del equipo, explica:

1. Lo que ha conseguido hacer desde la última reunión;

36

Page 37: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

2. Lo que va a hacer hasta la próxima reunión, y

3. Qué obstáculos tiene en su camino.

Los Scrums Diarios mejoran las comunicaciones, eliminan otras reuniones, identifican y

eliminan los impedimentos al desarrollo, destacan y promueven la rápida toma de decisiones y

mejoran el nivel de conocimiento de los proyectos.

El ScrumMaster se asegura de que el Equipo mantiene la reunión. El Equipo es responsable de

conducir el Scrum Diario. El ScrumMaster enseña al Equipo a mantener el Scrum Diario breve,

mediante la aplicación de las reglas, y asegurándose de que la gente es breve. El ScrumMaster

también hace cumplir la regla de que a las gallinas no se les permite hablar ni de ninguna manera

interferir en el Scrum Diario.

El Scrum Diario no es una reunión de seguimiento del estado del proyecto. No es para

cualquiera, sino sólo para la gente que trabaja en transformar los elementos del Product Backlog

en un incremento (el Equipo). El Equipo se ha comprometido a un Objetivo del Sprint, y a los

correspondientes elementos del Product Backlog. El Scrum Diario (con las tres preguntas)

constituye una inspección de los progresos hacia ese Objetivo del Sprint. Por lo general se

mantienen reuniones subsiguientes, para adecuar el trabajo futuro en el Sprint. La intención es

optimizar la probabilidad de que el equipo logre su Objetivo. Ésta es una reunión clave de

revisión y adaptación en el proceso empírico de Scrum.

3.3.3. Artefactos de Scrum

Los Artefactos de Scrum incluyen: el Product Backlog, el Burndown de entrega, el Sprint

Backlog, y el Sprint Burndown.

3.3.3.1. Product Backlog y Burndown de Entrega

Los requisitos para el producto, que el/los Equipo/s está/n elaborando, están listados en el

Product Backlog. El Propietario del Producto es responsable del Product Backlog, de su

contenido, disponibilidad y priorización. El Product Backlog nunca está completo. La primera

versión para el desarrollo, tan sólo establece los requisitos inicialmente conocidos, y que son

entendidos mejor. El Product Backlog evoluciona a medida que el producto y el entorno en el

37

Page 38: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

que se utilizará evoluciona. El Product Backlog es dinámico, ya que cambia constantemente para

identificar qué necesita el producto para ser adecuado, competitivo y útil. Mientras existe un

producto, el Product Backlog también existe.

El Product Backlog representa todo lo necesario para desarrollar y lanzar un producto exitoso. Se

trata de una lista de todas las características, funciones, tecnologías, mejoras y correcciones de

errores que constituyen los cambios que se harán al producto para futuras versiones. Los

elementos del Product Backlog deben tener los siguientes atributos: una descripción, una

prioridad, y una estimación. La prioridad está guiada por el riesgo, el valor y la necesidad. Hay

muchas técnicas para evaluar estos atributos.

El Product Backlog está ordenado por prioridad. La parte más prioritaria del Product Backlog

determina las actividades de desarrollo que se llevarán a cabo de forma inmediata. Cuanto mayor

sea la prioridad, el elemento es más urgente, es sobre el que más se ha pensado, y es el que

atesora mayor consenso en cuanto a su valor. La parte más prioritaria del Product Backlog está

más clara, y tiene información más detallada que el Product Backlog de menor prioridad. Recibe

mejores estimaciones, basadas en la mayor claridad y el mayor detalle. Cuanto menor sea la

prioridad, menor es el detalle, hasta el punto de que puede hacerse difícil distinguir claramente

un elemento de baja prioridad.

A medida que se utiliza un producto, que aumenta su valor, y que el mercado proporciona

retroalimentación, el Product Backlog se va revelando como una lista más amplia y exhaustiva.

Los requisitos nunca dejan de cambiar. El Product Backlog es un documento vivo. Los cambios

en los requisitos de negocio, las condiciones del mercado, la tecnología, y el personal, causan

cambios en el Product Backlog. Para minimizar la repetición del trabajo, sólo se deben detallar

los elementos de más alta prioridad. Los elementos del Product Backlog que ocuparán a los

Equipos en los próximos Sprints tienen un alto nivel de detalle, habiendo sido descompuestos

para que cualquier elemento pueda completarse dentro de la duración del Sprint.

A menudo, varios equipos Scrum trabajan juntos en el mismo producto. En ese caso, se utiliza un

solo Product Backlog para describir el trabajo futuro en el producto. Se utiliza entonces un

atributo del Product Backlog que agrupa a los elementos. La agrupación puede hacerse por

38

Page 39: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

conjunto de características, por tecnología o por arquitectura, y es utilizada a menudo por el

Equipo Scrum como una forma de organizar el trabajo.

El gráfico de Burndown de la Entrega registra la suma del esfuerzo restante estimado del Product

Backlog a lo largo del tiempo. El esfuerzo se estima en cualquier unidad de trabajo que el Equipo

Scrum, y la organización, hayan decidido. La unidad de tiempo que se utiliza generalmente es el

Sprint.

Durante la Planificación de la Entrega se calculan inicialmente las estimaciones de los elementos

del Product Backlog y, también posteriormente, a medida que los elementos son creados.

Durante la preparación del Product Backlog las estimaciones son examinadas y revisadas. Sin

embargo, pueden ser actualizadas en cualquier momento. El equipo es responsable de todas las

estimaciones.

El Propietario del Producto puede influir en el Equipo, ayudando a comprender y optar por

soluciones de compromiso, pero la estimación final la hace el Equipo. El Propietario del

Producto mantiene publicados el Product Backlog y la gráfica de Burndown de Entrega

actualizados en todo momento. Se puede trazar una línea de tendencia en la gráfica, basándose

en el cambio en el trabajo restante.

3.3.3.2. Sprint Backlog y Sprint Burndown

El Sprint Backlog se compone de las tareas que el Equipo realiza para convertir los elementos

del Product Backlog en un incremento "hecho". Muchas de ellas se desarrollan durante la

Reunión de Planificación del Sprint. Constituyen todo el trabajo que el equipo identifica como

necesario para cumplir con el Objetivo del Sprint. Los elementos del Sprint Backlog deben

descomponerse. La descomposición debe ser suficiente para que los cambios en curso puedan ser

entendidos en el Scrum Diario. El tamaño normal para un elemento del Sprint Backlog en el que

se está trabajando es de un día o menos.

El equipo modifica el Sprint Backlog a lo largo de todo el Sprint, así como la parte de Sprint

Backlog adicional que surja durante el Sprint. A medida que se van concretando tareas

individuales, se puede descubrir que se necesitan más o menos tareas, o que una determinada

tarea llevará más o menos tiempo de lo previsto. A medida que es necesario nuevo trabajo, el

39

Page 40: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

Equipo lo añade al Sprint Backlog. A medida que se va trabajando o se terminan tareas, se

actualizan las horas de trabajo estimado restante para cada tarea. Cuando alguna tarea se revela

como innecesaria, es eliminada. Sólo el Equipo puede cambiar su Sprint Backlog durante un

Sprint. Sólo el Equipo puede cambiar el contenido, o las estimaciones. El Sprint Backlog es una

instantánea muy visible y en tiempo real del trabajo que el equipo tiene previsto realizar durante

el Sprint, y pertenece exclusivamente al Equipo.

3.3.3.3. Hecho

Scrum requiere que los Equipos construyan un incremento de la funcionalidad del producto en

cada Sprint. Este incremento debe ser potencialmente entregable, ya que el Propietario del

Producto puede decidir liberar la funcionalidad de forma inmediata. Para ello, el incremento

debe constituir una porción completa del producto. Debe estar "hecho". Cada incremento debería

ser aditivo a todos los incrementos anteriores, y debería ser probado exhaustivamente, de modo

que se asegure que todos los incrementos funcionan en conjunto.

Durante el desarrollo del producto, asegurar que una determinada funcionalidad está completada,

podría llevar a alguien a asumir que ha sido al menos codificada limpiamente, refactorizada,

sometida a pruebas unitarias, construida y sometida a pruebas de aceptación. Alguien distinto

podría asumir tan solo que el código ha sido construido. Si alguien no conoce cuál es la

definición de “hecho”, los otros dos pilares del control empírico de procesos no funcionan.

Cuando alguien describe algo como hecho, todo el mundo debe entender qué significa hecho.

Hecho define lo que el equipo quiere decir, cuando se compromete a “hacer” un elemento del

Product Backlog en un Sprint. Algunos productos no contienen documentación, por lo que la

definición de “hecho” no incluye a la documentación. Un incremento totalmente “hecho” incluye

todo el análisis, diseño, refactorización, programación, documentación y pruebas para el

incremento, y para todos los elementos del Product Backlog correspondientes al incremento. Las

pruebas incluyen testeo unitario, de sistema, de usuario y de regresión, así como pruebas no

funcionales como pruebas de rendimiento, de estabilidad, de seguridad y de integración. Hecho

incluye cualquier internacionalización. Algunos Equipos no son capaces en un principio de

incluir todo lo requerido para la implementación en su definición de hecho. Esto debe quedar

40

Page 41: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 3: Estado del Arte UNMSM

muy claro para el Propietario del Producto. Este trabajo restante deberá ser hecho antes de que el

producto pueda ser implementado y utilizado.

41

Page 42: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 4: Aporte Teórico UNMSM

CAPÍTULO 4: APORTE TEÓRICO

42

Page 43: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

Capítulo 5: Aporte Práctico UNMSM

CAPÍTULO 5: APORTE PRÁCTICO

CAPÍTULO 6: IMPLEMENTACIÓN

CAPÍTULO 7: CONCLUSIONES Y TRABAJOS FUTUROS

43

Page 44: Aplicacion de Una Metodologia de Desarrollo de Software Usando Cmmi y Scrum

8. REFERENCIAS BIBLIOGRÁFICAS

Libros

[Ngwenyama,Nielsen 03]. Ojelanki Ngwenyama and Peter Axel Nielsen, “Competing Values in Software Process Improvement: An Assumption Analysis of CMM From an Organizational Culture Perspective”, 2003, Richmond-USA.

[Quinn, McGrant 85] R. E. Quinn and M. R. McGrath, “The transformation of organizational

cultures: A competing values perspective,” CA: Sage, Newbury Park, 1985,

[Paulk, Curtis 91] M.C.Paulk, B. Curtis, “Capability Maturity Model for Software”, Software Engineering Institute, 1991, Carnegie Mellon-EEUU.

[Schwaber, Sutherland 11] Ken Schwaber and Jeff Sutherland, Scrum Guide,2012,USA

[SEI 10] Software Engineering Institute, CMMI for Development, SEI Administrative Agent,

2010, USA

URL

[SEI 12] Software Engineering Institute, Standard CMMI Appraisal Method for Process Improvement (SCAMPI), Version 1.1: Method Definition Document, http://www.sei.cmu.edu/library/abstracts/reports/01hb001.cfm, consultado el 20 abril del2012.

Documentos

[Crosland 10] Área de finanzas, Estados financieros, 2012, Lima, Perú

44