Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Presentado por:
Tutores:
i
3.6 Satisfacción general del equipo.....................................................................................................................55
3.7 Resumen de análisis de las metodologías Scrum y Kanban.....................................................................56
3.7.1 Semejan zas...................................................................................................................................................56
3.7.2 Diferencias ...................................................................................................................................................57
3.8 Conclusiones ....................................................................................................................................................57
CAPÍTULO 4: DESA RROLLO DEL SISTEMA GESTOR DE CONEXIONES ..................................................59
4.1 Introducción......................................................................................................................................................59
4.2 Gestor de Conexiones .....................................................................................................................................59
4.3 Desarrollo con Scru m .....................................................................................................................................61
4.3.1 Artefactos .....................................................................................................................................................62
4.4 Conclusiones ....................................................................................................................................................69
CONCLUSIONES ..............................................................................................................................................................70
RECOM ENDACIONES....................................................................................................................................................71
REFERENCIAS BIBLIOGRÁFICAS ............................................................................................................................72
ANEXOS ..............................................................................................................................................................................74
Anexo A. Imágenes de los tableros de Scru m y Kanban...................................................................................74
Anexo B. Ejemp lo de tarjeta de historia de usuario ...........................................................................................76
Anexo C. Product Backlog inicial de Estimation Tool .....................................................................................77
Anexo D. Reglas para evaluar las iteraciones .....................................................................................................78
Anexo E. Principales interfaces de usuario de las aplicaciones Estimation Tool y Open Sky. .................79
ii
Índice de Tablas
Tabla 1.1Framework de Evaluación de Metodologías Ágiles .....................................................................................19
Tabla 1.2Aplicación del Framework a Scru m y XP ......................................................................................................21
Tabla 2.1Nivel académico y dedicación del equipo ......................................................................................................28
Tabla 2.2Med iciones del experimento.............................................................................................................................30
Tabla 2.3Síntesis del Product Backlog ............................................................................................................................33
Tabla 2.4Resumen sprint 1 ................................................................................................................................................35
Tabla 2.5Resumen sprint 2 ................................................................................................................................................37
Tabla 2.6Resumen sprint 3 ................................................................................................................................................38
Tabla 2.7Resumen sprint 4 ................................................................................................................................................39
Tabla 2.8Resumen sprint 5 ................................................................................................................................................40
Tabla 2.9Síntesis de la pila de producto..........................................................................................................................42
Tabla 2.10Resumen del desarrollo de Open Sky hasta la semana 4 ...........................................................................43
Tabla 2.11Resumen del desarrollo de Open Sky segunda iteración ...........................................................................44
Tabla 3.1Diferencias entre Scru m y Kanban..................................................................................................................57
Tabla4.1Personas y roles del proyecto ............................................................................................................................62
iii
Índice de Figuras
Figura 3.1Evolución del Product Backlog durante el desarrollo de Estimat ion Tool .............................................46
Figura 3.2Evolución de la pila de producto durante el desarrollo de Open Sky ......................................................47
Figura 3.3Evolución del porcentaje de realización del Product Backlog de Estimation Tool ...............................47
Figura 3.4Evolución del porcentaje de realización de la p ila de producto de Open Sky........................................47
Figura 3.5Evolución del código de Estimat ion Tool ....................................................................................................48
Figura 3.6Evolución del código de Open S ky................................................................................................................48
Figura 3.7Evolución del impacto en las clases de Estimat ion Tool ...........................................................................49
Figura 3.8Evolución del impacto en las clases de Open Sky ......................................................................................49
Figura 3.9Esfuerzo dedicado a Estimat ion Tool en cada sprint ..................................................................................50
Figura 3.10Esfuerzo dedicado a Open Sky en cada iteración .....................................................................................50
Figura 3.11Evolución de la productividad durante el desarrollo de Estimation Tool .............................................51
Figura 3.12Evolución de la productividad durante el desarrollo de Open Sky ........................................................51
Figura 3.13Evolución de la tasa de errores en el producto Estimation Tool ............................................................52
Figura 3.14Evolución de la tasa de errores en el producto Open Sky .......................................................................52
Figura 3.15Distribución del esfuerzo en tareas relacionadas con Scrum ..................................................................53
Figura 3.16Distribución del esfuerzo en tareas relacionadas con Kanban ................................................................53
Figura 3.17Evolución en la calificación de los sprints .................................................................................................54
Figura 3.18Evolución en la calificación de las iteraciones ..........................................................................................54
Figura 3.19Evolución de la satisfacción del equipo y del cliente durante el desarrollo de Estimation Tool ......55
Figura 3.20Evolución de la satisfacción del equipo y del cliente durante el desarrollo de Open Sky .................55
Figura 4.1 Diagrama esquemático de la interfaz de Gestor de Conexiones..............................................................60
Figura 4.2 Diagrama de clases. Gestor de Conexiones.................................................................................................61
Figura 4.3 Product Backlog inicial de Gestor de Conexiones.....................................................................................64
Figura 4.4 Sprint Backlog del Sprint 1 ............................................................................................................................65
Figura 4.5 Sprint Backlog del Sprint 2 ............................................................................................................................66
Figura 4.6 Gráfico de avance del Sprint 1 ......................................................................................................................67
Figura 4.7 Gráfico de avance del Sprint 2 ......................................................................................................................68
Figura A.1: Imagen del tablero de Scru m durante el Sprint 3 .....................................................................................74
Figura A.2: Imagen del tablero Kanban durante el desarrollo ....................................................................................75
Figura A.3: Formu lario para la creación de un nuevo modelo de bloques................................................................79
Figura A.4: Modelo sin estimar con 25181 muestras ...................................................................................................80
Figura A.5: Resultados de estimación .............................................................................................................................81
Figura A.6: Leyenda para los bloques estimados ..........................................................................................................82
Figura A.7: Menú para la generación de muestras aleatorias ......................................................................................83
Figura A.8: Aplicación del cono de restricción al modelo en Open Sky ...................................................................84
Figura A.9: Modelo luego de aplicar algorit mo de Lerch-Grossman en Open Sky ................................................85
iv
RESUMEN
v
INTRODUCCIÓN
1
Teniendo en cuenta el problema planteado con anterioridad y para llevar a cabo la
realización de este trabajo es preciso definir lo que se considera como objeto de estudio y
campo de acción.
Para dar solución al problema antes identificado se propone como objetivo general:
Evaluar las propuestas metodológicas de desarrollo ágil de Scrum y Kanban, con vistas a
su aplicabilidad práctica en el entorno de proyectos de desarrollo de la Dirección de
Soluciones Informáticas.
Como valor práctico, el presente trabajo brindará una comparación precisa entre las
metodologías Scrum y Kanban, exponiendo las fortalezas y debilidades de cada una, así
como las ventajas que traería aplicarlas. Además, se expone el uso de una serie de
prácticas ágiles, que al ser incorporadas en el flujo de trabajo, conformarían un proceso
de desarrollo de software con un elevado potencial de éxito, permitiendo culminar los
productos en periodos de tiempo relativamente más cortos que los procesos de
metodologías convencionales, lo que garantizaría la no existencia de retrasos en los
plazos de entrega a los clientes, logrando una mayor satisfacción en estos. El desarrollo
2
de un proyecto concreto bajo los principios y métodos identificados, servirá para validar en
el entorno real existente en la DSI, el uso de métodos ágiles para el desarrollo.
3
CAPÍTULO 1: FUNDAMENTOS TEÓRICOS
1.1 Introducción
4
que no se adapta a sus necesidades y que si lo hace repercute negativamente en costes
añadidos al presupuesto del proyecto. (28)
Por otro lado, en muchos casos el proceso de desarrollo convencional está oprimido por
excesiva documentación no siempre útil. Un porcentaje elevado del tiempo de desarrollo
de un producto de software se dedica o, desde el punto de vista de las metodologías
ágiles, se malgasta en crear documentación que finalmente no se utiliza y que, por tanto,
no aporta valor al negocio. Además, esta documentación innecesaria entorpece las
labores de mantenimiento de la propia documentación útil lo que provoca que se obvie
esta tarea agudizando, de este modo, el coste en los trabajos de documentación
posteriores. Evidentemente, estas circunstancias no se adaptan a las restricciones de
tiempo del mercado actual.
5
la satisfacción del cliente, considerando la gestión de cambios como un aspecto
característico del propio proceso de desarrollo de software.
Entrega continúa y en plazos breves de software funcional lo que permite al cliente
verificar el desarrollo del proyecto, ir disfrutando de la funcionalidad del producto
progresivamente y comprobando si satisface sus necesidades, mejorando de esta
forma su satisfacción. Además, el desarrollo en ciclos de corta duración favorece
que los riesgos y dificultades se repartan a lo largo del desarrollo del producto,
principalmente al comienzo del mismo y permite ir aprendiendo de estos riesgos y
dificultades.
Trabajo conjunto entre el cliente y el equipo de desarrollo con una comunicación
directa que pretende mitigar malentendidos, que constituyen una de las principales
fuentes de errores en productos de software, y exceso de documentación
improductiva.
Importancia de la simplicidad, eliminando el trabajo innecesario que no aporta
valor al negocio.
Atención continua a la excelencia técnica y al buen diseño para mantener una alta
calidad de los productos.
Mejora continua de los procesos y el equipo de desarrollo, entendiendo que el
éxito depende de tres factores: éxito técnico, éxito personal y éxito organizacional.
6
las organizaciones de punta comienzan a apostar por este nuevo enfoque para desarrollar
sus productos. (4)
Por tanto, el desarrollo ágil no especifica unos procesos o métodos que seguir, aunque
bien es cierto que han aparecido algunas prácticas asociadas a este movimiento. El
desarrollo ágil es más bien una filosofía de desarrollo de software. El punto de partida se
establece en las ideas emanadas del Manifiesto Ágil, un documento que resume la
filosofía ágil estableciendo cuatro valores y doce principios. (5)
Desarrollar software que funcione por encima de una completa documentación. Este valor
es utilizado por muchos detractores de las metodologías ágiles que argumentan que éstas
son la excusa perfecta para aquellos que pretenden evitar las tareas menos gratificantes
del desarrollo de software como las tareas de documentación. Sin embargo, el propósito
de este valor es acentuar la supremacía del producto por encima de la documentación. El
7
objetivo de todo desarrollador es obtener un producto que funcione y cumpla las
necesidades del cliente y la documentación es un artefacto que utiliza para cumplir su
objetivo. Por tanto, no se trata de no documentar sino de documentar aquello que sea
necesario para tomar de forma inmediata una decisión importante. Los documentos deben
ser cortos y centrarse en lo fundamental. Dado que el código es el valor principal que se
obtiene del desarrollo se enfatiza en seguir ciertos estándares de programación para
mantener el código legible y documentado. (5)
Responder a los cambios más que seguir estrictamente un plan. Planificar el trabajo a
realizar es muy útil y las metodologías ágiles consideran actividades específicas de
planificación a corto plazo. No obstante, adaptarse a los cambios es vital en la industria de
software actual y, por tanto, también consideran mecanismos para tratar los cambios de
prioridades. La regla es “planificar es útil. Seguir un plan es útil hasta que el plan se
distancia de la situación actual. Pender de un plan desactualizado es caminar por un
callejón sin salida”. (5)
Para cumplir estos valores se siguen doce principios que establecen algunas diferencias
entre un desarrollo ágil y uno convencional (5):
2. Dar la bienvenida a los cambios de requisitos. Se capturan los cambios para que el
cliente tenga una ventaja competitiva.
4. Los miembros del negocio y los desarrolladores deben trabajar juntos diariamente a lo
largo del proyecto.
8
5. Construir el proyecto en torno a individuos motivados. Darles el entorno y apoyo que
necesiten y confiar en ellos para conseguir finalizar el trabajo.
6. El diálogo cara a cara es el método más eficiente y efectivo para comunicar información
dentro de un equipo de desarrollo.
11. Las mejores arquitecturas, requisitos y diseños surgen de los equipos que se auto
organizan.
12. En intervalos regulares el equipo debe reflexionar sobre cómo ser más efectivo y
según estas reflexiones ajustar su comportamiento.
Estos principios marcan el ciclo de vida de un desarrollo ágil, así como las prácticas y
procesos a utilizar.
9
Con el objetivo de disminuir el coste que supone la etapa de planificación en las
metodologías convencionales, las ágiles simplifican las tareas de gestión y
documentación de las necesidades del sistema. Apuestan por involucrar de una forma
más intensa al cliente a lo largo de todo el proceso de desarrollo, de forma que, la
comunicación directa y frecuente retroalimentación son las prácticas más importantes
para la planificación y especificación de requisitos en estas metodologías. (8)
En este proceso de definición de las necesidades del sistema que guiará el desarrollo, se
utilizan las llamadas historias de usuario para detallar, en un lenguaje cercano al cliente,
la funcionalidad que debe satisfacer el sistema. Las historias de usuario se descomponen
en tareas que deberán ser realizadas para cumplir con la funcionalidad que se solicita.
Nótese que la estimación de tiempo no es una restricción fija, simplemente constituye una
aproximación inicial. Se considera que las historias de usuario deben cumplir seis
características: independientes, negociables, valorables, estimables, pequeñas y
comprobables. (2)
10
circunstancias, la propia complejidad de la codificación. El objetivo es integrar cada
cambio introducido, de tal forma que pequeñas piezas de código s ean integradas de
forma continua, ya que se parte de la base de que cuanto más se espere para integrar
más costoso e impredecible se vuelve el proceso. Así, el sistema puede llegar a ser
integrado y construido varias veces en un mismo día.
Para que esta práctica sea viable es imprescindible disponer de una batería de test,
preferiblemente automatizados, de tal forma, que una vez que el nuevo código está
integrado con el resto del sistema se ejecute toda la batería de pruebas. Si son pasados
todos los test del sistema, se procede a la siguiente tarea. En caso contrario, aunque no
falle el nuevo módulo que se quiere introducir en el sistema, se ha de regresar a la versión
anterior, pues ésta ya había pasado la batería de pruebas. (4)
1.5.4 Refactorización.
Actividad constante en los desarrollos ágiles cuyo objetivo es mejorar el diseño de un
sistema sin influir en su funcionalidad. Se pretende reestructurar el código para eliminar
duplicaciones, mejorar su legibilidad, simplificarlo y hacerlo más flexible de forma que se
faciliten los posteriores cambios. Recordemos que el código que funciona es el principal
aporte de valor para las metodologías ágiles, por encima de la documentación, por lo que
se enfatiza en que éste sea legible y permita la comunicación entre desarrolladores. (3)
11
Como se puede apreciar, a pesar de la reciente aplicación de las metodologías ágiles la
mayoría de las prácticas propuestas no son novedosas sino que de alguna manera ya
habían sido propuestas en ingeniería del software. El mérito de las metodologías ágiles es
proponer una aplicación conjunta, equilibrada y efectiva de forma que se complementen
con ideas desde la perspectiva del negocio, los valores humanos y el trabajo. (4)
1.6.1 Scrum
Scrum es el término que describe una forma para desarrollar productos iniciada en Japón.
No se trata de un concepto nuevo, sino que ya en 1987 Ikujiro Nonaka y Hirotaka
Takeuchi acuñaron este término, una estrategia utilizada en rugby en la que todos los
integrantes del equipo actúan juntos para avanzar la pelota y ganar el partido, para
denominar un nuevo tipo de proceso de desarrollo de productos. Escogieron este nombre
por las similitudes que consideraban que existían entre el juego del rugby y el tipo de
proceso que proponían: adaptable, rápido, auto-organizable y con pocos descansos. (6)
Scrum es un proceso para la gestión y control del producto que trata de eliminar la
complejidad en estas áreas para centrarse en la construcción de software que satisfaga
las necesidades del negocio. Es simple y escalable, ya que no establece prácticas de
ingeniería del software sino que se aplica o combina, fácilmente, con otras prácticas
ingenieriles, metodologías de desarrollo o estándares ya existentes en la organización. (6)
12
planes de proyecto formalmente definidos. La planificación detallada se realiza sobre
cortos espacios de tiempo lo que permite una constante retroalimentación que
proporciona inspecciones simples y un ciclo de vida adaptable. Así, el desarrollo de
productos se produce de forma incremental y con un control empírico del proceso que
permite la mejora continua. (7)
Las historias de usuario son el elemento base que utiliza Scrum para describir las
características que el usuario espera que tenga el software que se va a desarrollar. Por lo
tanto, pueden incorporar tanto cuestiones relacionadas con las funciones del sistema
como con cualquier otro aspecto del mismo (restricciones, rendimiento, etc.). Las historias
de usuario se presentan desde la perspectiva del usuario. Así, no se describen utilizando
una terminología técnica sino que se escriben utilizando un lenguaje cercano al dominio
de la aplicación que se está desarrollando de forma que sea comprensible por los clientes
y por los desarrolladores. Las historias de usuario se construyen bajo un mismo esqueleto
que centra el foco de las características del producto. (8)
El proceso comienza con la fase de Pre-game, en la que se realiza de forma conjunta con
el cliente una definición sencilla y clara de las características que debe tener el sistema
que vaya a ser desarrollado, definiendo las historias de usuario que van a guiar el proceso
de desarrollo. El resultado de esta fase de Pre-game es lo que se denomina en Scrum
“Product Backlog”, que contiene una lista de todas las historias de usuario priorizadas así
como de las tareas que se deben llevar a cabo para la realización del proyecto. (7)
13
Una vez identificadas y priorizadas las historias de usuario del Product Backlog, se realiza
la separación de historias de usuario en etapas de corta duración (no más de 30 días)
denominadas Sprint. Para cada sprint se realiza una reunión de planificación de lo que se
va a llevar a cabo en ese sprint y se establece la fecha de finalización del mismo. El
objetivo es mover aquellas historias de usuario con mayor prioridad para el cliente al
denominado “Sprint Backlog”, que contiene el conjunto de tareas a desarrollar en ese
sprint, incluyendo diseño, desarrollo, pruebas, integración, etc. Las historias de usuario se
congelan en el Sprint Backlog de forma que durante dicho periodo no puedan producirse
cambios sobre los aspectos que se encuentran en fase de desarrollo. (7)
De forma iterativa, todos los días que dure el sprint, se realiza una reunión operativa,
informal y ágil con el equipo de desarrollo, de un máximo de quince minutos, en la que a
cada integrante del equipo se le hacen tres preguntas:
Una vez finalizado el sprint se debería obtener parte del producto, un entregable o algo
que se pueda mostrar y que enseñe los avances acometidos en el Sprint. En este punto
se procede a una fase de revisión del proyecto para mostrar dichos avances e incorporar,
si fuera necesario, nuevas historias de usuario al Product Backlog. Para mantener la
calidad del producto se establece que una historia de usuario está 100% completa si
supera los test unitarios, pasa las pruebas de aceptación, supera los test adicionales para
mantener la calidad del producto, el código está construido e integrado satisfactoriamente,
está basado en un diseño construido sin duplicaciones, el código es claro, estructurado y
autodocumentado y, por supuesto, es aceptado por el cliente. (7)
Además, tras la realización de cada sprint se lleva a cabo una reunión retrospectiva que
permite aprender de los conocimientos y experiencias adquiridas hasta el momento y
mejorar de forma continua el proceso de desarrollo. Se revisará con el equipo los
objetivos marcados inicialmente en el Sprint Backlog concluido, se aplicarán los cambios y
ajustes si son necesarios, y se marcarán los aspectos positivos y los aspectos negativos
del sprint, que servirán de retroalimentación para el siguiente. Los elementos que servirán
14
de entrada y guiarán la planificación de un nuevo sprint serán el Product Backlog, las
capacidades o habilidades del equipo, las condiciones que en ese momento se den del
negocio, el avance tecnológico que se haya podido producir y el incremento que se
pretenda hacer al producto que se está desarrollando. De esta forma, en contraposición
con las metodologías convencionales, el proceso de desarrollo adquiere flexibilidad,
agilidad y capacidad para adaptarse a su entorno. (7)
15
pretende disminuir la curva exponencial del costo del cambio a lo largo del proyecto. Se
trata de doce prácticas: el juego de la planificación, entregas pequeñas, metáfora, diseño
simple, pruebas, refactorización, programación en parejas, propiedad colectiva del código,
integración continua, 40 horas por semana, cliente in-situ y estándares de programación.
(9)
Una posterior revisión de la metodología clasificó las prácticas en primarias, aquellas que
según Beck proporcionan una mejora inmediata independientemente de la metodología
que se esté siguiendo, y secundarias, que implican una mayor dificultad si no se tiene
experiencia en las prácticas primarias. Siguiendo esta clasificación, las prácticas primarias
consideradas fueron la adecuación del lugar de trabajo, sentarse juntos, entorno de
trabajo informativo, sentimiento de equipo, trabajo enérgico, programación en parejas,
historias de usuarios, iteraciones cortas, integración continua, pruebas primero, diseño
incremental y refactorización. El conjunto de prácticas secundarias quedó compuesto por
la involucración del cliente, continuidad del equipo, equipos retractiles, código compartido
y alcance del contrato negociado. (10)
1.6.4 Kanban
Kanban, surgida a partir del pensamiento lean, se basa en una idea muy simple: el trabajo
en curso (Work In Progress, WIP) debería limitarse, y sólo deberíamos empezar con algo
nuevo cuando un bloque de trabajo anterior haya sido entregado o ha pasado a otra
función posterior de la cadena. El Kanban (tarjeta señalizadora) implica que se genera
16
una señal visual para indicar que hay nuevos bloques de trabajo que pueden ser
comenzados porque el trabajo en curso actual no alcanza el máximo acordado. (12)
Dado que el WIP está limitado en un sistema Kanban, cualquier elemento que se bloquea
por cualquier razón tiende a atascar el sistema. Si un número suficiente de elementos se
bloquean, todo el proceso se detiene. Esto tiene el efecto de que todo el equipo y la
organización se concentran en resolver el problema, desbloqueando estos elementos
para permitir la restauración del flujo productivo. (12)
Kanban usa un mecanismo de control visual para hacer seguimiento del trabajo, conforme
este viaja a través del flujo de valor. Típicamente, se usa un panel o pizarra con notas
adhesivas o un panel electrónico de tarjetas. Las mejores prácticas apuntan
probablemente al uso de ambos. La transparencia que esto genera contribuye también al
cambio cultural. Las metodologías ágiles han obtenido buenos resultados proporcionando
transparencia respecto al trabajo en curso y completado, así como en el reporte de
métricas como la velocidad (cantidad de trabajo realizado en una iteración). Kanban sin
embargo va un paso más allá y proporciona transparencia al proceso y su flujo. Kanban
expone los cuellos de botella, colas, variabilidad y desperdicios. Todas las cosas que
impactan al rendimiento de la organización en términos de la cantidad de trabajo
entregado y el ciclo de tiempo requerido para entregarlo. Kanban proporciona a los
miembros del equipo y a las partes interesadas visibilidad sobre los efectos de sus
acciones o falta de acción y promueve la discusión sobre las posibles mejoras, con lo que
los equipos comienzan rápidamente a implementar mejoras en su proceso. (25)
Como resultado, Kanban propicia la evolución incremental de los procesos existentes, una
evolución que generalmente está alineada con los valores del “Agilismo”. Kanban no pide
una revolución radical de la forma en la que las personas trabajan, sino que sugiere un
17
cambio gradual. Es un cambio que surge del entendimiento y el consenso entre todos los
trabajadores y sus colaboradores. (12)
18
desarrollo será dividido en función a las características que debe cumplir el software e,
iterativamente, se diseñará cada una de estas características. Por tanto, cada iteración
consta de dos partes, diseño e implementación de cada característica. Este tipo de
metodología está dirigido al desarrollo de aplicaciones con un alto grado de criticidad. (15)
P1 Valorar al individuo y las interacciones del equipo por sobre el proceso y las herramientas
P1.1 Valorar al individuo y las interacciones P1.2 Valorar el proceso y las herramientas
19
P3 Valorar la colaboración con el cliente por sobre la negociación contractual
P3.1 Valorar la colaboración con el cliente P3.2 Valorar la negociación contractual
20
Postulado P3. Ambas metodologías obtienen el mejor valor en ambos atributos, 5
puntos para P3.1 y 0 punto para P3.2. Ambas consideran al cliente como un
miembro del equipo, que colabora desde la planificación de las iteraciones hasta la
escritura de requerimientos y pruebas funcionales. Ninguna de ellas utiliza la
relación contractual para agregar valor al producto.
Conclusión: Ambas satisfacen P3 de manera óptima.
Postulado P4. En el atributo P4.1 Scrum obtiene un valor 4 ya que si bien permite
introducir cambios, no se recomiendan en el sprint en curso. De ser prioritario el
cambio en el sprint en curso, se debe estimar nuevamente el esfuerzo requerido y
si es necesario, quitar tareas del sprint ya planificado. XP obtiene el m áximo valor
debido a que los cambios se pueden incorporar durante la iteración. Debido a que
un enfoque similar sucede con la planificación, Scrum obtiene un valor de -3 y XP -
2.
Conclusión: XP obtiene 3 puntos y Scrum 1. XP satisface P4 mejor que Scrum.
Postulados
Metodología P1 P2 P3 P4
P1.1 P1.2 Total P2.1 P2.2 Total P3.1 P3.2 Total P4.1 P4.2 Total
Scrum 5 -3 2 3 -2 2 5 0 5 4 -3 1
XP 5 -2 3 5 -2 3 5 0 5 5 -2 3
21
Debido a lo variable de los resultados de aplicar estos frameworks, se puede concluir que
ninguna metodología satisface totalmente los principios del Manifiesto Ágil, y que para
acercarse a este propósito, debería conformarse una metodología combinando aspectos
de varias.
De otro lado, la decisión de optar por Kanban como alternativa ante Scrum se debió a la
similitud observada inicialmente entre ambas metodologías, y las buenas opiniones de
equipos que la utilizaban, por ejemplo en (23) el autor describe la recuperación
experimentada durante el desarrollo de un proyecto luego de haber aplicado Kanban. En
(24), se hace referencia al uso de Kanban como parte de la mejora de proceso buscada
por un equipo que empleaba Scrum, mientras en (25) se expone su utilización como guía
para tareas referidas a pedidos de cambio, arreglos de defectos, mantenimiento de
aplicaciones productivas y todo aquello que no llega a una iteración de Scrum. Además, la
encuesta Ágil 2011 realizada por VersionOne, mostró un aumento de un 6% en la
utilización de Kanban respecto a la última encuesta (22).
22
1.9 Conclusiones
Tras una profunda revisión del estado de la investigación en este campo, se puede
concluir que las metodologías ágiles son sin duda uno de los temas destacados en la
ingeniería de software actualmente, que están acaparando gran interés por parte de los
investigadores. Aunque algunas críticas argumentan que no son más que viejo vino
presentado en botellas nuevas (26), otros estudios muestran que el desarrollo de
productos en entornos ágiles es muy diferente al desarrollo convencional, como ejemplo
en (27) se comparó la productividad de dos proyectos similares. Un equipo utilizó una
metodología tradicional y el otro XP, obteniendo como resultado que, en general, el
equipo XP obtuvo una productividad 42% mayor que la del equipo tradicional. La
utilización de metodologías ágiles es un tema que tiene sus detractores pero a la vez tiene
muchos seguidores, por tanto, se necesitan estudios que indaguen en el valor que
acarrearía su uso.
De otro lado, no existe una metodología ágil ideal, es conveniente tomar características
de las diferentes metodologías y combinarlas, obteniendo un paquete más completo que
sirva como base al equipo de desarrollo, que luego deberá hacer los ajustes necesarios
para lograr un rendimiento óptimo en su forma de trabajar.
Tras analizar las metodologías ágiles más populares se puede concluir que las candidatas
a ser aplicadas son Scrum y Kanban, por brindar un marco para la gestión de proyectos
además de la flexibilidad necesaria para el desarrollo en contextos variables.
23
CAPÍTULO 2: DISEÑO Y EJECUCIÓN DEL EXPERIMENTO
2.1 Introducción
Estimation Tool consiste en una herramienta para realizar pruebas prácticas que permitan
analizar y compararla estimación de recursos minerales mediante los algoritmos del
inverso de la distancia y el kriging ordinario, los que constituyen algoritmos muy utilizados
24
en la estimación minera. La aplicación debe proporcionar la posibilidad de seleccionar el
tipo de variograma a utilizar (esférico, gaussiano, exponencial) e indicar los valores de
meseta, rango y efecto pepita (estos son parámetros de entrada para los algoritmos de
estimación de recursos minerales). Además, debe permitir la definición de un modelo de
bloques de cualquier tamaño, la generación e inserción de muestras en este, así como
salvar y cargar todos los datos referentes a un modelo específico, útil en el trabajo y
experimentación con datos reales. Todas las opciones brindadas por la aplicación deben
efectuarse estableciendo una interactividad visual con el usuario, de manera que se
puedan apreciar en todo momento los cambios y operaciones realizadas sobre el modelo.
Open Sky consiste en una herramienta de soporte para el diseño de minas a cielo abierto.
La misma debe permitir la creación de un modelo de bloques personalizado, al que luego
se le aplicará un cono de restricción óptimo, dando origen al diseño de la mina, que debe
ser representado gráficamente, al igual que todos los cambios que en este ocurran. La
herramienta permitirá además, cargar los valores netos para cada bloque del modelo, es
decir, el valor ya estimado de cada bloque, utilizando esto como dato para la aplicación
del algoritmo de Lerch-Grossman, el que determina los mejores bloques para la
extracción de mineral. Finalmente la herramienta deberá reducir el modelo al conjunto de
bloques que fueron seleccionados por el algoritmo.
Una vez culminadas las aplicaciones, serán analizadas las métricas obtenidas durante el
proceso de desarrollo, con la intención de realizar una comparación profunda del
desempeño logrado con las metodologías utilizadas, Scrum y Kanban.
Los objetivos perseguidos con este experimento siguen principalmente seis líneas de
interés: características de los productos desarrollados con una y otra metodología durante
el período de desarrollo, aspectos de gestión en el equipo de desarrollo al utilizar las
metodologías Scrum y Kanban, calidad del producto obtenido, esfuerzo de adaptación de
cada metodología, satisfacción del cliente y de los desarrolladores durante y tras la
ejecución del proyecto, y por último, análisis de las metodologías tras la experiencia
alcanzada en la investigación.
25
Resulta necesario analizar la evolución del producto a lo largo del desarrollo y la
integración continua que será utilizada como práctica referente al movimiento
ágil, tomando en cuenta lo siguiente:
- ¿Cómo han evolucionado las clases del producto a lo largo del desarrollo?
- ¿Cuán ágiles hemos sido para dar solución a los defectos detectados?
26
- ¿Cuán grande es el esfuerzo de familiarización con las metodologías Scrum y
Kanban?
Definir el contexto es una labor extremadamente importante que permite garantizar que la
descripción es lo suficientemente específica para que otros investigadores puedan utilizar
los resultados obtenidos, haciendo posible la replicación del estudio, así como la
generalización de las conclusiones.
27
2.4.1 Equipo
El desarrollo de las aplicaciones, Estimation Tool y Open Sky, es llevado a cabo por un
equipo conformado por cinco personas, de las cuales dos contaban con algunas
experiencias previas trabajando en el dominio al que pertenecen las aplicaciones.
28
requiriera la tarea a realizar. En cuanto a las reuniones con el cliente, estas tenían lugar
cada vez que se reunía el equipo, pues como ya se ha mencionado, el cliente formaba
parte del mismo.
2.4.2 Roles
2.4.3 Herramientas
29
Las entidades de interés para dar respuesta a las cuestiones planteadas como objetivos
del experimento y que, por tanto, serán medidas en él, se pueden identificar como:
- Las entradas o recursos con los que cuenta el equipo para el desarrollo del
experimento, dado que influyen en los resultados.
Experiencia del equipo. Al inicio del experimento se medirá de cada uno de los
miembros del equipo, los siguientes factores: grado académico, experiencia en desarrollo
de software, experiencia en gestión de proyectos, experiencia en el lenguaje de
programación a utilizar (C++), y experiencia en desarrollo ágil y programación en parejas
(pair-programming). Además será de interés medir el grado de conocimiento sobre el
dominio de las aplicaciones a desarrollar, es decir, la estimación de recursos minerales.
La experiencia será medida en años o, en su defecto, en meses. Los niveles de
conocimiento podrán tomar los valores alto, medio o bajo.
30
Esfuerzo dedicado al proyecto. Resulta importante registrar el tiempo, las horas o
minutos, que se dedican a realizar cualquier actividad relacionada con el desarrollo de las
aplicaciones en cuestión. Estas mediciones servirán para analizar los objetivos obtenidos
durante el proceso respecto al esfuerzo dedicado al mismo. Además permitirá dar
seguimiento al proceso de aprendizaje de la metodología y la posible influencia del
esfuerzo dedicado a cada aspecto de la misma.
Defectos en cada iteración. Con objetivo de evaluar la calidad del producto, al concluir
cada iteración se medirán el número de defectos del mismo, así como la importancia de
estos defectos. De cada defecto se recogerá una descripción y una estimación de su
importancia (alta, media o baja). Esta tarea será ejecutada por la persona encargada de
hacer las pruebas.
Número de líneas de código del producto por iteración. Al finalizar cada iteración, se
anotarán el número de líneas de código del producto hasta ese momento, con el propósito
de valorar la evolución del producto.
Clases impactadas por cada historia de usuario. Con intención similar ala métrica
anterior, serán medidas las clases que sufren algún cambio durante la evolución del
producto. Esta medición se tomará en función de la historia de usuario que esté siendo
desarrollada. Se indicará el identificador de la historia de usuario y el nombre de la clase
que está siendo impactada, especificando el tipo de impacto sufrido (clase nueva, clase
modificada o clase eliminada).
31
- Elemento dela pila de producto (EP)
% realización pila =
pi: peso del elemento de la pila, ya que existen elementos priorizados respecto a
otros.
Número de iteraciones hasta completar una historia de usuario. Como puede suceder
que una historia de usuario no se complete en la iteración planificada, representando así
una demora, se medirán estos retrasos contabilizando el número de iteraciones que se
dedican a cada historia de usuario, ya que idealmente estas deberían ser definidas de
forma que fuese posible desarrollarlas en una única iteración. Esta medida será recogida
indicando la iteración en que se incorpora la historia de usuario y la iteración en que
finalmente es concluida.
2.6.1 Pre-Game
La fase de pre-game significa el comienzo del proyecto y tiene el objetivo de descubrir las
necesidades que debía satisfacer el sistema que iba a ser desarrollado. Se destinaron
32
unos días a esta primera fase, en la que utilizando la ayuda y documentación aportada
por el cliente, se realizó una primera definición sencilla y clara de las características que
debía cumplir el sistema a desarrollar. Como resultado se obtuvo el Product Backlog o pila
de producto de Scrum, artefacto que contiene las historias de usuario a alto nivel que
guiarán el proceso de desarrollo y que a medida que avancen los sprints, serán
descompuestas en un nivel mayor de detalle.
2.6.2 Sprint 1
33
constituido por la historia HIS-1 solamente y que además, el equipo profundizara un poco
en el dominio de la aplicación.
Durante la reunión de revisión del sprint se evidenciaron los retrasos ocurridos. Si bien se
mostraron al cliente algunos avances en tareas de diseño e implementación, no se logró
concluir la historia de usuario prevista, con lo cual los resultados en relación a la
planificación establecida fueron negativos.
34
rápida y segura. La práctica de pair-programming resultó positiva pues el código obtenido,
a pesar de no ser mucho, mostró gran calidad.
Elemento Valor
Duración 14 días en los que el equipo se reunió en su totalidad en 8 ocasiones
Objetivo Implementar la estructura para crear un modelo de bloques que represente
el terreno
Desarrollo Número de clases: 6 Líneas de código: 755
Objetivos Aunque se han producido avances en conocimiento del dominio del
logrados producto y en diseño e implementación, no se ha logrado completar la
historia de usuario planificada. Los avances más significativos se han
producido en la selección e implementación de la estructura de datos
espaciales que servirá de base al modelo de bloques, siendo esta un Octree.
Puntuación -10
retrospectiva
2.6.3 Sprint 2
Con el objetivo de mejorar los resultados obtenidos en el sprint 1 dio comienzo el sprint 2.
Durante la reunión de planificación el equipo centró su empeño en definir las historias de
usuario con un mayor nivel de detalle para realizar una planificación realista de acuerdo a
los recursos disponibles. El hecho de que en el sprint anterior se profundizase en el
dominio de la aplicación repercutió positivamente en este sentido. El objetivo propuesto
para este sprint fue completar la historia de usuario HIS-1, pendiente del sprint pasado.
Dicha historia de usuario fue descompuesta en un nivel mayor de detalle considerando los
elementos de interés del modelo de bloques. De este modo, aparecieron algunas historias
de usuario nuevas, constituyendo un subconjunto de la HIS-1. El equipo en su totalidad
estuvo de acuerdo en que era posible cumplir estas nuevas historias de usuario durante el
sprint, quedando el Sprint Backlog constituido por dichas historias.
35
la parte de pruebas, pues fueron realizadas manualmente debido a la falta de experiencia
en esta tarea.
La satisfacción tanto del cliente como del equipo aumentó notablemente durante este
segundo sprint, quedando reflejado en la reunión retrospectiva del mismo. En esta reunión
la mayor parte de aspectos tratados fueron positivos. Se valoró muy positivamente la
exactitud de la planificación del sprint, teniendo un gran avance en la definición de las
historias de usuario, principalmente por el incremento del conocimiento sobre el dominio
de desarrollo. Durante este sprint la motivación y comunicación entre el grupo de trabajo
se vio muy reforzada.
Como aspecto negativo se puede señalar el hecho de no haber congelado del todo el
Sprint Backlog, tal y como establece Scrum, pues a lo largo del sprint se añadieron
algunas variaciones del cliente, que no fueron contempladas en la planificación, aunque
estaban íntimamente relacionadas con el trabajo del mismo.
36
Tabla 2.5Resumen sprint 2
Elemento Valor
Duración 15 días en los que el equipo se reunió en su totalidad en 8 ocasiones
Objetivo Diseñar e implementar las clases para representar el modelo de bloques
con sus atributos.
Implementar algoritmo de subdivisión espacial para la creación del modelo
de bloques.
Desarrollo Número de clases: 11 Líneas de código: 1185
Objetivos Se han cumplido los objetivos del sprint, culminando finalmente la historia
logrados de usuario HIS-1, pendiente del sprint anterior.
Puntuación +20
retrospectiva
2.6.4 Sprint 3
En este punto, el modelo de bloques ya estaba listo para ser usado, resultaba necesario
poder crear muestras e introducirlas al modelo para llevar a cabo la estimación del mismo.
La planificación de este sprint contó con dos líneas de trabajo. De un lado, la realización
de la historia de usuario HIS-3, que debía crear la funcionalidad de insertar una muestra
especificando sus parámetros y además la generación e inserción en el modelo de un
número dado de muestras aleatorias. De otro lado, se decidió subdividir la historia de
usuario HIS-4 de acuerdo a los algoritmos a implementar, incluyéndose en este sprint la
implementación del inverso de la distancia.
El desarrollo del trabajo fue similar al del sprint 2, considerando prácticamente las mismas
características. Se constató un decremento en el número de líneas y de clases del
producto debido a que se comprobó que algunas de las clases de bibliotecas de terceros
que habían sido adaptadas en el sprint pasado fuesen erróneas, es decir, no se
necesitaban para conseguir la funcionalidad.
En la reunión de revisión del sprint se mostraron los avances del mismo. Se había
completado gran parte del trabajo previsto, señal del perfeccionamiento en la planificación
del sprint. La historia de usuario HIS-3 había sido completada y se tenía,
aproximadamente, un 70% de la implementación del algoritmo de estimación. Además, se
presentaron algunos retrasos en el caso particular de las pruebas, causados por el hecho
de que eran realizadas manualmente, debido a la falta de experiencia en esta labor.
En la reunión retrospectiva se comprobó que gracias al buen análisis realizado del punto
de partida, la planificación fue más realista, aunque se concluyó que el trabajo era mejor
37
sin planificaciones tan ajustadas. Por otro lado, la motivación y el compromiso del equipo
habían decaído un poco y fueron propuestos como puntos a mejorar. Cabe destacar que
las reuniones en este sprint comenzaban a acortarse en duración, manteniendo los
resultados conseguidos en las mismas, clara muestra de que se estaba consiguiendo una
adecuada adaptación de la metodología. La tabla 2.6 muestra un resumen del desarrollo
del sprint 3.
Elemento Valor
Duración 13 días en los que el equipo se reunió en su totalidad en 5 ocasiones
Objetivo Implementar funcionalidad que permita agregar muestras al modelo de
bloques.
Implementar algoritmo de estimación usando el método del inverso de la
distancia.
Desarrollo Número de clases: 8 Líneas de código: 920
%Objetivos Gestión de muestras(HIS-3): 100%
logrados Estimación mediante inverso de la distancia: 70%
Puntuación +10
retrospectiva
2.6.5 Sprint 4
A pesar de esta situación, los objetivos primarios alcanzados para este sprint fueron
excelentes. Al finalizar el sprint, las historias HIS-4 y HIS-5 estaban completas y se había
completado un 60% de las tareas planificadas de HIS-2.
38
La aplicación de Scrum fue clave para el éxito de este sprint, ya que una porción del
equipo debió atender a sus obligaciones docentes. El contradictorio valor de objetivos
alcanzados respecto a recursos disponibles puede explicarse por la ágil respuesta del
grupo, incrementando los esfuerzos de los integrantes comprometidos para suplir los de
aquellos que colaboraban de una forma menos activa. Sin esta ágil respuesta en la
distribución de tareas el resultado de este sprint hubiese sido muy negativo.
Elemento Valor
Duración 15 días en los que el equipo se reunió en su totalidad en 4 ocasiones
Objetivo Concluir implementación del algoritmo de estimación usando el método
del inverso de la distancia.
Implementar algoritmo de estimación usando el método del Kriging
ordinario.
Implementar métodos para salvar y cargar modelos desde ficheros.
Comenzar implementación para visualizar los modelos de bloques en 3D.
Desarrollo Número de clases: 18 Líneas de código: 1847
%Objetivos Implementar ambos métodos de estimación (HIS-4): 100%
logrados Guardar y cargar desde fichero (HIS-5): 100%
Visualizar modelo (HIS-2): 60%
Puntuación -40
retrospectiva
2.6.6 Sprint 5
El sprint 5 constituyó el fin del experimento con Scrum. El hecho de haber tocado fondo
respecto a los principios y valores que guían la metodología en el sprint anterior, resultó
muy positivo para este quinto sprint. El equipo estaba consciente del sobreesfuerzo que
supuso para algunos miembros lograr cumplir objetivos en el sprint anterior, y dispuesto a
mejorar y cambiar aquellos aspectos que les habían llevado a esa situación.
39
Este sprint se dedicó exclusivamente a concluir la historia de usuario HIS-2, referida a la
representación 3D del modelo de bloques, que era el único elemento pendiente en el
Product Backlog.
El desarrollo, con un comportamiento por parte del grupo similar al del sprint 2, transcurrió
con normalidad. Una vez completado el visualizador 3D, se llevó a cabo una
refactorización del código de la aplicación para mejorarlo y hacerlo más legible. Después
de la refactorización se realizaron pruebas de validación al sistema para comprobar el
correcto funcionamiento del mismo.
Los resultados obtenidos en el sprint fueron muy buenos. La planificación propuesta fue
cumplida sobradamente, realizando además una etapa de refactorización que no había
sido considerada en un principio.
Elemento Valor
Duración 15 días en los que el equipo se reunió en su totalidad en 8 ocasiones
Objetivo Concluir implementación de función para representar los modelos de
bloques en 3D.
Desarrollo Número de clases: 18 Líneas de código: 1914
%Objetivos Visualizar modelo (HIS-2): 100%
logrados Código refactorizado
Puntuación +20
retrospectiva
40
2.7 Desarrollo utilizando Kanban
Este acápite del documento describe el desarrollo de la aplicación Open Sky dividido en
dos iteraciones y guiado por los planteamientos de Kanban. Dichos planteamientos no
prescriben iteraciones de tiempo fijo, se debe elegir el momento de hacer la planificación,
la mejora de procesos, y la entrega, actividades que el equipo decidió ejecutar bajo
demanda y dirigido por eventos. Es decir, se haría una reunión de planificación cada vez
que se agotaran las tareas previstas. Se lanzaría una entrega cuando hubiese un conjunto
mínimo de características comercializables listo para entregar. Se haría una reunión para
tratar problemas de calidad siempre que apareciera un mismo problema por segunda vez.
Además se haría una retrospectiva más profunda cada cuatro semanas.
Se describirán los hechos más destacables ocurridos durante el desarrollo, así como la
influencia y resultado de las prácticas ágiles utilizadas y de los elementos para la gestión
del proyecto propuestos por Kanban.
2.7.1 Iteración 1
Dado que lo único que prescribe Kanban es que el flujo de trabajo debe ser visual, y que
el trabajo en curso debe estar limitado, resulta muy importante decidir las columnas a
manejar en el tablero, así como los límites para cada una, con tal de crear un flujo suave a
través del sistema y minimizar el tiempo de entrega. Inicialmente se decidió conformar el
tablero con las siguientes columnas:
- Listo para desarrollo. Muestra las historias de usuario priorizadas, con el nivel
de detalle necesario para su desarrollo. Se limita a cinco elementos
simultáneamente.
41
Durante unos días, ayudados significativamente por el cliente, se trabajó para obtener una
primera definición de las características que debía cumplir el sistema a desarrollar. Como
resultado se obtuvo la pila de producto, conformada por las historias de usuario que
guiarán el proceso de desarrollo.
42
hacia cada bloque del modelo. La utilización de pair-programming influía positivamente en
la rapidez y calidad con que se escribía el código.
La tabla 2.10 muestra un resumen del desarrollo del proyecto hasta la cuarta semana.
Elemento Valor
%Completado 62% completado, basado en las estimaciones por puntos de historia.
pila de productos
Lead Time La media fue de 6 días.
(tiempo de
entrega)
Desarrollo Número de clases: 17 (12 adaptadas) Líneas de código: 1173
%Tareas en curso Crear cono de restricciones (HIS-3): 80%
Puntuación +20
retrospectiva
2.7.2 Iteración 2
La segunda iteración constituyó la última del experimento dado. El trabajo pendiente era
concluir la historia de usuario HIS-3, con un 80% de completamiento hasta el momento, y
HIS-5, que fue analizada nuevamente para lograr mayor nivel de detalle en sus tareas.
43
Como resultado de este análisis se subdividió HIS-5 en dos nuevas historias más
pequeñas, HIS-6 que seleccionaría los mejores bloques según el algoritmo de Lerch-
Grossman y HIS-7 que simplemente acotaría el modelo, eliminando de la estructura de
datos los bloques obviados por HIS-6.
Elemento Valor
%Completado 100% Completado.
pila de productos
Lead Time La media fue de 9 días.
(tiempo de
entrega)
Desarrollo Número de clases: 20 (12 adaptadas) Líneas de código: 1256
Puntuación +15
retrospectiva
2.8 Conclusiones
A modo de conclusión parcial del capítulo se puede decir que se detallaron los procesos
de desarrollo de los sistemas Estimation Tool y Open Sky, los que fueron guiados por los
patrones que imponen Scrum y Kanban respectivamente. Ambas aplicaciones se
completaron en su totalidad permitiendo hacer un análisis del rendimiento del equipo al
utilizar cada metodología. Se observó una mayor organización al desarrollar con Scrum,
pues el hecho de que Kanban permite más libertades combinado con la heterogeneidad
institucional de los integrantes del equipo de desarrollo, propició un pequeño relajamiento
al emplear Kanban.
44
Finalmente los resultados de ambos desarrollos fueron positivos, pues los conocimientos
adquiridos por el equipo respecto al dominio de las aplicaciones durante la utilización de
Scrum, facilitaron el poder lidiar con los problemas surgidos durante el segundo
desarrollo. Se obtuvieron dos aplicaciones de calidad en el tiempo acordado, cumpliendo
con las expectativas del cliente.
45
CAPÍTULO 3: ANÁLISIS DE RESULTADOS
3.1 Introducción
En este capítulo se realiza el análisis del experimento que da base al estudio, con el
objetivo de dar respuesta a las cuestiones que guían la investigación y valorar el
desarrollo delos productos aplicando metodologías ágiles como Scrum y Kanban.
En esta sección se analiza la evolución de los productos, Estimation Tool y Open Sky,
durante el desarrollo hasta constituir los productos finales. Tratándose de dos procesos de
integración continua a pequeña escala, a través de los cuales, mediante historias de
usuario, se fueron incorporando funcionalidades. La figura 3.1 muestra gráficamente la
evolución del Product Backlog que guiaba el desarrollo de Estimation Tool, mientras la
figura 3.2 presenta la evolución de la pila de producto de Open Sky.
46
Figura 3.2Evolución de la pila de producto durante el desarrollo de Open S ky
En ambos proyectos el porcentaje final de realización de la pila de producto fue del 100%,
aunque con evoluciones distintas. Las figuras 3.3 y 3.4 muestran la evolución de estos
porcentajes a medida que avanzaba el desarrollo.
Figura 3.3Evolución del porcentaje de realización Figura 3.4Evolución del porcentaje de realización de
del Product Backlog de Estimation Tool la pila de producto de Open S ky
47
Claramente se observa una evolución estable del producto en ambos casos, debida, en
gran medida, a la aplicación de la integración continua como práctica ágil, pues al
conformar el producto con integraciones pequeñas, la evolución ha sido progresiva y sin
grandes problemas.
La evolución en líneas de código, tanto para el producto Estimation Tool como para Open
Sky, puede verse en las figuras 3.5 y 3.6, respectivamente. Del mismo modo las figuras
3.7 y 3.8 muestran la evolución en clases impactadas durante el desarrollo para ambos
productos. Cabe destacar la notable diferencia existente entre los dos productos. La
evolución de Estimation Tool mostró inestabilidad al principio del desarrollo, debido a que
al comienzo la falta de conocimiento sobre el dominio de la aplicación ocasionó que se
manipularan más clases de las que era necesario manipular. En Open Sky el incremento
de líneas de código al igual que las clases impactadas se comportó de forma normal.
Figura 3.5Evolución del código de Estimation Tool Figura 3.6Evolución del código de Open S ky
48
Figura 3.7Evolución del impacto en las clases de Figura 3.8Evolución del impacto en las clases de
Estimation Tool Open S ky
Podemos concluir que la experiencia adquirida por el equipo durante el desarrollo de este
experimento, tanto en las prácticas como en el dominio de las aplicaciones, ha sido crucial
en el volumen de funcionalidad integrada.
49
Figura 3.9Esfuerzo dedicado a Estimation Tool en Figura 3.10Esfuerzo dedicado a Open S ky en cada
cada sprint iteración
Productividad (Ix) =
Las figuras 3.11 y 3.12 muestran los resultados obtenidos para Estimation Tool y Open
Sky respectivamente.
50
Figura 3.12Evolución de la productividad durante el
Figura 3.11Evolución de la productividad durante el desarrollo de Open S ky
desarrollo de Estimation Tool
De manera general las gráficas muestran que con el transcurso del desarrollo aumenta la
productividad en el proceso, es decir, se cumplen más objetivos y se es más ágil. En el
caso específico de Estimation Tool, inicialmente el equipo mostró un rendimiento bajo,
causado fundamentalmente por el desconocimiento del dominio a desarrollar y la poca
experiencia en el uso de metodologías ágiles, teniendo que dedicar gran parte del
esfuerzo a conocer la metodología y habituarse a ella.
Uno de los aspectos que mayor satisfacción ha aportado tanto al cliente como al equipo
de desarrollo es la calidad de los productos obtenidos.
Durante el desarrollo de Estimation Tool y Open Sky, un integrante del equipo se dedicó
exclusivamente a realizar las pruebas de validación de los productos. No obstante, los
aspectos a probar resultaban tan obvios que ya habían sido probados por los propios
desarrolladores, obteniendo ventaja de la utilización de pair-programming. Gracias a un
trabajo incisivo en este aspecto, no se encontraron defectos en las distintas entregas de
los productos a los clientes.
La tasa de defectos encontrados durante las fases de pruebas en Estimation Tool y Open
Sky sigue la distribución que aparece en las figuras 3.13 y 3.14 respectivamente.
51
Figura 3.14Evolución de la tasa de errores en el
Figura 3.13Evolución de la tasa de errores en el producto Open S ky
producto Estimation Tool
Adaptarse a los nuevos hábitos establecidos por las metodologías Scrum y Kanban, es un
elemento cuya complejidad radica en el propio factor humano. La variación del esfuerzo
empleado en tareas vinculadas con aspectos metodológicos tales como la preparación y
realización de reuniones a lo largo del experimento, constituye una métrica que nos puede
dar una idea de esta situación. Las figuras 3.15y 3.16 muestran gráficamente esta
evolución.
52
Figura 3.15Distribución del esfuerzo en tareas Figura 3.16Distribución del esfuerzo en tareas
relacionadas con S crum relacionadas con Kanban
En el desarrollo de Estimation Tool, durante los primeros sprints la motivación del equipo
propicio que todas las tareas relacionadas con Scrum fueran llevadas a cabo, aunque la
falta de adaptación a la metodología hizo que consumieran un tiempo considerablemente
mayor al establecido teóricamente. A medida que avanzaba el desarrollo, el tiempo
dedicado a este tipo de tareas se fue estabilizando.
De otro lado, el desarrollo de Open Sky se caracterizó por una dedicación mucho menor a
las tareas relacionadas con la metodología Kanban, debido a la experiencia adquirida con
el uso de Scrum.
Otro elemento interesante resulta la puntuación con la que fue calificada cada iteración,
pues nos proporciona información sobre el grado de adaptación del equipo a la
metodología, ya que las reuniones retrospectivas se centraban principalmente en
aspectos metodológicos.
53
Figura 3.18Evolución en la calificación de las
Figura 3.17Evolución en la calificación de los sprints iteraciones
54
3.6 Satisfacción general del equipo
La satisfacción final fue positiva para todos los miembros del equipo incluido el cliente.
Las medidas de satisfacción han sido recogidas al finalizar cada iteración, cuando los
integrantes del proyecto debían valorar el grado con que se había ajustado la iteración a
sus necesidades, considerando tanto el resultado desde la perspectiva del producto como
sus sensaciones respecto a la metodología, otorgando a cada iteración un valor
comprendido entre 0 y 10.
Las figuras 3.19 y 3.20 muestran una media de la satisfacción del equipo a lo largo del
desarrollo junto a la satisfacción desde el punto de vista del cliente, para los productos
Estimation Tool y Open Sky respectivamente.
Figura 3.19Evolución de la satisfacción del equipo y Figura 3.20Evolución de la satisfacción del equipo y
del cliente durante el desarrollo de Estimation Tool del cliente durante el desarrollo de Open S ky
55
metodología y en el dominio del producto a desarrollar, se observó un aumento en la
satisfacción del equipo.
Finalmente, el desarrollo tanto con Scrum como con Kanban resultó muy satisfactorio
para los miembros del equipo.
3.7.1 Semejanzas
Ambos establecen límites para el trabajo en curso. Scrum lo limita por iteración,
mientras Kanban lo hace por los estados en el flujo de trabajo.
Ambos revisan y mejoran de forma continua el plan del producto en base a datos
empíricos como la velocidad y el tiempo de entrega.
56
3.7.2 Diferencias
Scrum Kanban
Las iteraciones deben ser de tiempo fijo. El tiempo fijo en las iteraciones es opcional. La
cadencia puede variaren función del plan del
producto y la mejora del proceso. Pueden estar
marcadas por la previsión de los eventos en lugar
de tener un tiempo pre-fijado.
Se emplea una limitación del trabajo en curso La limitación del trabajo en curso es directa,
indirecta (por sprint). marcada por el estado del trabajo dentro del flujo.
Deben emplearse gráficos Burndown. No se prescriben diagramas de seguimiento
concretos.
Se deben realizar estimaciones. Las estimaciones son opcionales.
No se pueden añadir tareas en medio de una Siempre que haya capacidad disponible, se pueden
iteración. añadir tareas.
Prescribe 3 roles: Product Owner, Scrum Master No hay roles prescritos.
y Scrum Team.
En cada sprint se limpia el tablero de El tablero Kanban es persistente.
seguimiento.
La pila del producto debe estar priorizada. La priorización es opcional.
La métrica por defecto para la planificación y la La métrica por defecto para la planificación y la
mejora del proceso es la Velocidad del equipo. mejora del proceso es el Lead Time (tiempo de
entrega o tiempo medio que tarda una petición en
salir del ciclo).
3.8 Conclusiones
Aunque los análisis realizados muestran un desarrollo más estable en todos los sentidos
con la metodología Kanban, se presume que sea producto de haber llegado a esa etapa
del experimento con la experiencia adquirida previamente en el uso de la metodología
Scrum, además, el hecho de que las iteraciones con Kanban fueran más largas
complejiza aún más la comparación en este sentido. Ambas metodologías demostraron
capacidad de adaptación ante los cambios surgidos en el proceso de ejecución del
proyecto, ostentando Kanban el liderazgo en velocidad de respuesta a las exigencias
emergentes del cliente, al ser más flexible en cuanto a cambios en el trabajo en curso
durante una iteración. De igual manera se constató que al emplear la metodología
Kanban, el equipo dispuso de más libertades para organizar y llevar a cabo el trabajo,
57
necesario para equipos cuyos integrantes se encuentran geográficamente dispersos,
mientras Scrum mostró un mayor rigor en la gestión, haciéndola ideal para equipos con
alto grado de profesionalismo y capacidad de contacto diario.
58
CAPÍTULO 4: DESARROLLO DEL SISTEMA GESTOR DE CONEXIONES
4.1 Introducción
1
Sistema operativo para dispositivos móviles basado en Linux.
2
Redes inalámbricas de área local que cumplen con estándares 802.11.
3
Redes de telefonía móvil que brindan servicios asociados con la tercera generación de este tipo de redes.
59
Figura 4.1 Diagrama esquemático de la interfaz de Gestor de Conexiones.
60
La figura 4.2 consiste en un diagrama de clases cuyo objetivo es brindar una visión más
clara de la estructura de la aplicación, desde un punto de vista ingenieril.
61
Desarrollo con Scrum
La principal razón del uso de un ciclo de desarrollo de tipo Scrum para la ejecución de
este proyecto es la petición por parte del cliente de que así fuera, sumado a la previsible
inestabilidad de requisitos, ya que:
Para el cliente resulta difícil precisar cuál será la dimensión completa del sistema,
y su crecimiento puede continuarse en el tiempo, suspenderse o detenerse.
La tabla 4.1 muestra las personas que componen el equipo de desarrollo y sus
respectivos roles.
4.2.1 Artefactos
En esta sección se enumeran los artefactos utilizados, y se exponen algunos de los más
importantes. Para la confección de los artefactos de gestión y monitorización del proceso
de desarrollo fue empleada una plantilla con características dinámicas, capaz de crear y
mantener actualizada las gráficas de avance según transcurre el desarrollo.
Documentos:
Sprint.
Incremento.
Pila de producto
Es el equivalente a los requisitos del sistema en esta metodología. El Product Owner debe
encargarse de su correcta gestión durante todo el proyecto, pidiendo el asesoramiento
que pueda necesitar para su redacción y gestión al Scrum Manager de este proyecto.
La figura 4.3 muestra las historias de usuario que fueron inicialmente identificadas durante
la planificación.
63
Figura 4.3 Product Backlog inicial de Gestor de Conexiones
64
Pila de Sprint
Las figura 4.4 y 4.5 muestran las respectivas pilas de los sprints 1 y 2, habiendo
transcurrido once días de desarrollo en ambos casos.
65
Figura 4.5 Sprint Backlog del S print 2
Sprint
Cada una de las iteraciones del ciclo de vida iterativo de Scrum, cuya duración se
determinó fuera de 15 días para el proyecto Gestor de Conexiones.
Incremento
Parte del sistema que se produce en un sprint y se entrega al gestor del producto
completamente terminada y operativa.
Gráfico que muestra el estado de avance del trabajo del sprint en curso. Sería actualizado
por el Scrum Manager al menos cada tres días en este caso.
Las figuras 4.6 y 4.7 muestran los respectivos gráficos de los sprints 1 y 2 al terminar las
iteraciones.
66
Figura 4.6 Gráfico de avance del S print 1
67
Figura 4.7 Gráfico de avance del S print 2
Reunión para determinar las funcionalidades o historias de usuario que se van a incluir en
el próximo incremento. El Product Owner debe exponer y explicarlas historias que
necesita para la próxima iteración y las posibles restricciones de fechas que pudiera tener.
Las tareas serán auto-asignadas, llegando a un compromiso por parte de cada
desarrollador.
68
Reunión técnica semanal
Reunión semanal de corta duración para brindar una visión actualizada del estado del
sprint a todo el equipo, como forma de suplir la ausencia de reuniones diarias. Cada
persona deberá brindar:
Por último se actualizará el gráfico de avance (Burn Down) para reflejar el estado de
avance del sprint.
Reunión para probar y entregar el incremento al Product Owner, y hacer un análisis sobre
el desempeño del equipo, proponiendo de ser posible, elementos capaces de mejorar el
proceso.
4.3 Conclusiones
El desarrollo del sistema Gestor de Conexiones demostró la efectividad del uso de Scrum
como metodología, ya que a pesar de contar solo con dos desarrolladores se avanzó
rápidamente durante los dos sprints terminados, llegando a completar el 75% del proyecto
antes de que fuera cancelado el proyecto.
El progreso durante cada sprint fue evidente, aunque en ambos casos quedaron tareas
sin concluir debido a la falta de recursos para probar el correcto funcionamiento del
sistema. Gracias al uso de Scrum el equipo pudo planificar de manera eficiente el trabajo,
asignando las tareas en correspondencia con la capacidad de cada integrante. Aunque la
comunicación con el cliente fue muy pobre, se puede destacar que entre los integrantes
del equipo la información fluyo de forma rápida y se respetó el criterio de cada
desarrollador.
69
CONCLUSIONES
El análisis de los resultados presentados nos lleva a pensar que las metodologías ágiles
propician la optimización progresiva de los procesos de desarrollo de software, y que
proporcionalmente hacen crecer la productividad del equipo, enfatizando en la calidad del
producto lo que deriva en satisfacción tanto para el cliente como para los desarrolladores.
- La similitud entre las metodologías Scrum y Kanban, propicia que puedan ser
utilizadas indistintamente con resultados positivos, a pesar de resultar Kanban un
tanto más flexible.
70
RECOMENDACIONES
Existen algunos aspectos que se desprenden de este trabajo investigativo en los cuales
sería útil seguir profundizando y otros que se recomiendan tener en cuenta como son:
71
REFERENCIAS BIBLIOGRÁFICAS
1. Qumer, A. y Henderson-Sellers, B.An evaluation of the degree of agility in six agile methods and its
applicability for method engineering. 2007.
2. Cao, L. y Ramesh, B.Agile Requirements Engineering Practices: An Empirical Study. 2008. págs. 60-67.
3. Robinson, H. y Sharp, L.The social side of technical practices in eXtreme Programming and Agile
Processes in Software Engineering. Berlin : s.n., 2005. págs. 139-147.
4. Canós, J. H., Letelier, P. y Penadés, M. C. Metodologías Ágiles en el Desarrollo Software. VIII Jornada
de Ingeniería de Software y Bases de Datos. 2003.
5. Fowler, M. The New Methodology. [En línea] 2005. [Citado el: 16 de octubre de 2011.]
http://martinfowler.com/articles/newMethodology.html.
6. Takeuchi, H. y Nonaka, I.The New Product Development Game. 1986. págs. 137-146.
7. Schwaber, K. y Beedle, M.Agile Software Development with Scrum. s.l. : Conchango, ISBN:
0130676349., 2006.
8. Cohen, M.User Stories Applied for Agile Software Development. s.l. : The Addison-Wesley Signature
Series, ISBN: 0321205685, 2004.
9. Beck, K. y Andres, C.Extreme Programming Explained: Embrace Change. Boston : Addison Wesley
Professional, 2004.
10. XP. Extreme Programming. [En línea] [Citado el: 21 de Noviembre de 2011.]
http://www.extremeprogramming.org.
11. Poppendieck, M. y Poppendieck, T.Lean Software Development - An Agile Toolkit for Software
Development Managers. Boston : Addison-Wesley, ISBN 0-321-15078-3., 2003.
12. Kniberg, H y Skarin, M.Kanban and Scrum making the most of both. s.l. : C4Media Inc, ISBN: 978-0-
557-13832-6., 2010.
13. Cockburn, A.Crystal Clear: A Human-Powered Methodology for Small Teams. s.l. : Addison-Wesley,
ISBN 0-201-69947-8, 2004.
14. Stapleton, J.DSDM: Business Focused Development. s.l. : Pearson Education, ISBN 978-0321112248,
2003.
15. Palmer, S. R. y Felsing, J. M.A Practical Guide to Feature-Driven Development. Upper Saddle River,
NJ : Prentice Hall, ISBN 0-13-067615-2., 2002.
16. MendesCalo, K, Estevez, E y Fillottrani, P.Un Framework para Evaluación de Metodologías Ágiles.
Bahía Blanca, Argentina : Departamento de Ciencias e Ingeniería de la Computación, Universidad Nacional
del Sur, 2010. Informe de Investigación.
17. Abrahansson, P., y otros.Agile Software Development Methods. s.l. : VTT Publications 478, 2002.
18. Iacovelli, A. y Souveyet, C. Framework for Agile Methods Classification. Workshop on Model Driven
Informat. Systems Eng.: Enterprise, User and System Models. 2008.
19. Strode, D. E.The Agile Methods: An Analytical Comparison of Five Agile Methods and an Investigation
of Their Target Environment. Palmerstin North, Nueva Zelanda : Massey University, 2005. MSc Thesis in
Information Systems.
20. Mackie, K.Lessons From a Yahoo Scrum Rollout. 2008.
21. CM Crossroads. CM Crossroads. [En línea] 2006. http://www.cmcrossroads.com/h.html.
22. VersionOne Team. Version One 3rd Annual State Of Agile. Version One. [En línea] 2011.
http://www.versionone.com/pdf/3rdAnnualStateOfAgile_FullDataReport.pdf.
23. Mazán, Manuel. Aplicando Kanban para Recuperar un Proyecto Caótico. SG Buzz. [En línea] SG #35.
Agilidad, 2012. http://sg.com.mx/.
24. Fernández, A. D. y Amodeo Rubio, E. J.Un caso real con equipos de trabajo en remoto. s.l. : Agile
Spain CAS2010. Ser Ágil en España, 2007.
25. Blatter, Claudia. Kanban vs. Scrum. Dos Ideas. [En línea] 2009.
http://www.dosideas.com/noticias/metodologias/555-kanban-vs-scrum.html.
26. Merisalo-Rantanen, H., Tuunanen, T. y Rossi, M.Is Exreme Programming Just Old Wine in New
Bottles: A Comparison of Two Cases. 2005. págs. 41-61.
27. Capiluppi, A., y otros.An empirical study of the evolution of an agile-developed software system. 2007.
págs. 511-518.
72
28. Endres, A. y Rombach, D.A Handbook of Software and Systems Engineering, Empirical Observations,
Laws and Theories. Fraunhofer : Institut Experimentelles Software Engineering. Ed. Pearson Addison
Wesley, 2003.
29. Williams, Laurie A., Layman, Lucas y Krebs, William.Extreme Programming Evaluation Framework
for Object-Oriented Languages Version 1.4. s.l. : NCSU Computer Science TR-2004-18, 2004.
30. Hartmann, D. y Dymond, R.Appropiate Agile Measurement: Using Metrics and Diagnostics to Deliver
Business Value. s.l. : Proceedings of AGILE 2006 Conference (AGILE’06), 2006.
31. Alfaro, Marco Antonio.Estimación de Recursos Mineros. 2007.
32. Godoy, Marcelo .Estimación de Recursos. 2009.
33. Ogayar, Carlos Javier.Optimización de Algoritmos Geométricos Básicos Mediante el Uso de
Recubrimientos Simpliciales. 2006.
34. ScrumAlliance. ScrumAlliance. [En línea] 2003. [Citado el: 7 de diciembre de 2011.]
http://www.scrumalliance.org.
35. Jacobson, Ivar, Booch, Grady y Rumbaugh, James.El Proceso Unificado de Desarrollo de Software.
s.l. : Addison Wesley, 2000.
36. Ambler, Scott W. Agile Modeling and the Rational Unified Process (RUP). [En línea] [Citado el: 15 de
enero de 2012.] http://www.agilemodeling.com/.
37. —. The Agile Unified Process (AUP). [En línea] [Citado el: 15 de enero de 2012.]
http://www.ambysoft.com/.
38. Schwaber, K.Agile Project Management with Scrum. 2004.
39. Cockburn, A.Selecting a Project's Methology, Humans and Technology. s.l. : IEEE SOFTWARE, 2000.
40. González Castellanos, Roberto A.Metodología de la Investigación Científica para las Ciencias
Técnicas. s.l. : Universidad de Matanzas, 2003.
41. Kniberg, Henrik. Scrum y XP desde las trincheras, Cómo hacemos Scrum. s.l. : C4Media Inc, ISBN:
978-1-4303-2264-1, 2007.
42. Estévez, Elmidio.Apuntes sobre estimación de recursos y reservas. 2009.
43. Palacio, J. Flexibilidad con SCRUM. [En línea] 2007.
http://www.navegapolis.net/files/Flexibilidad_con_Scrum.pdf.
44. Palacio, J. y Ruata, C. Scrum Manager: Gestión de proyectos. [En línea] 2009.
http://www.scrummanager.net/files/sm_proyecto.pdf.
73
ANEXOS
74
Figura A.2: Imagen del tablero Kanban durante el desarrollo
75
Anexo B. Ejemplo de tarjeta de historia de usuario
76
Anexo C. Product Backlog inicial de Estimation Tool
77
Anexo D. Reglas para evaluar las iteraciones
Los elementos realizados correctamente sumarán 5 puntos.
Un elemento realizado correctamente en una iteración que se realiza
incorrectamente en otra posterior restará 10 puntos.
Un elemento realizado correctamente en una iteración anterior que deba mejorarse
en la iteración actual restará 7 puntos.
Elementos positivos que se mantengan de una iteración ala siguiente sumarán 3
puntos.
Un elemento mejorable sumará 7 puntos si se mejora en la siguiente iteración y
restará 5 puntos si no se logra mejorar.
Un elemento que se pueda mejorar y se convierta en un error en la iteración
siguiente restará 7 puntos.
Cada error cometido restará 5 puntos.
Cada error corregido sumará 10 puntos.
Cada error no corregido restará 5 puntos.
Cada error corregido pero que se deba mejorar sumará 7 puntos.
78
Anexo E. Principales interfaces de usuario de las aplicaciones
Estimation Tool y Open Sky.
79
Figura A.4: Modelo sin estimar con 25181 muestras
80
Figura A.5: Resultados de estimación
81
Figura A.6: Leyenda para los bloques estimados
82
Figura A.7: Menú para la generación de muestras aleatorias
83
Figura A.8: Aplicación del cono de restricción al modelo en Open S ky
84
Figura A.9: Modelo luego de aplicar algoritmo de Lerch-Grossman en Open S ky
85