64
UNIVERSIDAD DE MAGALLANES FACULTAD DE INGENIER ´ IA DEPARTAMENTO DE INGENIER ´ IA EN COMPUTACI ´ ON Prototipo para Scrum Desarrollado en Mono Pedro Antonio Bustos Estay 2010

Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

UNIVERSIDAD DE MAGALLANES

FACULTAD DE INGENIERIA

DEPARTAMENTO DE INGENIERIA EN COMPUTACION

Prototipo para Scrum Desarrollado

en Mono

Pedro Antonio Bustos Estay

2010

Page 2: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

La presente Memoria de Titulacion ha sido aprobada con la siguiente calificacion:

Pedro Antonio Bustos Estay

Memoria :

Examen de Tıtulo :

Nota Final :

MSc. Eduardo Pena Jaramillo

Director Departamento

de Ingenierıa en Computacion

13 de julio de 2010

Page 3: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

UNIVERSIDAD DE MAGALLANES

FACULTAD DE INGENIERIA

DEPARTAMENTO DE INGENIERIA EN COMPUTACION

Prototipo para Scrum Desarrollado en

Mono

Trabajo de titulacion presentado en

conformidad a los requisitos para

obtener el tıtulo de Ingeniero en Com-

putacion e Informatica.

Profesor Guıa: Sr. Jose Canuman

Chacon.

Pedro Antonio Bustos Estay

2010

Page 4: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

Resumen

En el presente documento se encuentran variados analisis acerca del desarrollo del Pro-

totipo para Scrum Desarrollado en Mono, que van desde el detalle de la base de datos hasta

las bases sobre las cuales comenzo el estudio, lo cual esta abarcado en el marco teorico con

explicaciones en detalle de lo que se trata todo este trabajo de tıtulo en terminos generales.

Tambien hay imagenes de la implementacion del prototipo junto con los digramas de casos

de uso y de colaboracion para ver y analizar desde un enfoque de ingenierıa de software a

traves de herramientas UML. El documento deja en claro los problemas que se encontraron

en la implementacion y los trabajos futuros que se dejaron fuera de este trabajo de Tıtu-

lo por diversos motivos; se explica detalladamente la base de datos en la seccion anexos y

para finalizar las conclusiones senalaran los puntos altos y bajos a traves de opiniones y

observaciones de este trabajo de tıtulo.

Page 5: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

Indice general

I. Introduccion 1

1.1. Objetivo general del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2. Objetivos especıficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.3. Descripcion de la memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

II. Marco Teorico 4

2.1. Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.2. Pila de producto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.3. Una planificacion de Sprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.3.1. Dividiendo las historias en tareas . . . . . . . . . . . . . . . . . . . . 10

2.3.2. Trabajando las historias . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.3.3. Informar los Sprints . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.3.4. Tabla de Sprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3.5. Actualizacion de tareas . . . . . . . . . . . . . . . . . . . . . . . . . . 16

i

Page 6: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

2.3.6. ¿Como funciona el diagrama Burndown? . . . . . . . . . . . . . . . . 16

2.3.7. El encargado de pruebas . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.4. Retrospectiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.5. Umbrales de aceptacion y planes de entrega . . . . . . . . . . . . . . . . . . 18

2.5.1. Importancias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.5.2. Estimaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.5.3. Estimar la velocidad . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.5.4. Adaptar el plan de entregas a la realidad . . . . . . . . . . . . . . . . 23

2.6. Herramientas utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.6.1. Microsoft .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.6.2. Mono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.6.3. Monodevelop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.6.4. El lenguaje C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.6.5. Caracterısticas de C# . . . . . . . . . . . . . . . . . . . . . . . . . . 26

III. Desarrollo 28

3.1. Implementacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.2. Diagramas UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.3. Dificultades en la implementacion . . . . . . . . . . . . . . . . . . . . . . . . 40

IV. Conclusiones 41

ii

Page 7: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

Trabajos Futuros 43

Anexos 46

A. Tablas de la base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

Referencias y Bibliografıa 51

iii

Page 8: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

Indice de figuras

2.1. Pila de producto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2. Prioridad de historias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.3. Historias y tareas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.4. Historia pendiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.5. Historia en curso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.6. Historia terminada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.7. Informe Sprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.8. Tabla de Sprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.9. Tabla Sprint avanzado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.10. Burndown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.11. Retrospectiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.12. Importancia de historias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.13. Estimacion de historias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.14. Estimacion de velocidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

iv

Page 9: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

3.1. Menu principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.2. Listado de miembros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.3. Eliminar proyectos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.4. Ingresar historias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.5. Ingresar tarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.6. Ver retrospectiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.7. Editar tarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.8. Casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.9. Ingresar miembros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.10. Eliminar sprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.11. Editar tarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.12. Ver retrospectiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.1. Creacion de una aplicacion didactica basica en sistema Sugar . . . . . . . . . 43

v

Page 10: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

Indice de cuadros

1. hist descrip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

2. hist estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

3. hist estimacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4. hist importancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

5. historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

6. miembros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

7. proyectos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

8. retrospectiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

9. scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

10. sprints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

11. tarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

12. tarea descrip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

13. tarea estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

14. tarea estimacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

vi

Page 11: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

15. tarea miembros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

vii

Page 12: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

Capıtulo I

Introduccion

Page 13: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

2

Trabajar en grupos puede ser muy complicado en muchos ambitos, ya que surgen muchas

dudas en relacion a los objetivos individuales y grupales o los recursos con que se contara,

la division de tareas de forma equitativa para que nadie se sienta perjudicado puede ser el

mayor de los dolores de cabeza, especialmente para quien esta a cargo de evaluar y hacer

que estos grupos rindan de forma eficiente. Para asistir a estas personas se creo un marco

de trabajo llamado Scrum, el cual pareciera ser agil para desarrollo, no solo de proyectos de

software sino que de cualquier tipo de proyectos. La ventaja es que permite valorar o medir el

rendimiento de las personas y mantener claros los objetivos, ademas de optimizar los recursos

con los que cuentan quienes desarrollen ideas con este marco de trabajo.

Aun no sabemos a ciencia cierta en el medio en que se desenvuelve Scrum, ni la forma

en que las personas se relacionan con este y entre sı cuando lo utilizan como sistema base de

trabajo y medidor de productividad. Entonces para iniciarnos en esto diremos que Scrum es

un modelo de referencia, que define un conjunto de practicas y roles que puede tomarse como

punto de partida para definir el proceso de desarrollo que se ejecutara durante un proyecto.

Ademas Scrum es un framework o conjunto de herramientas, para la gestion y desarrollo

de tareas utilizado mayormente por personas ligadas a la informatica. Esta basado en un

proceso iterativo e incremental utilizado comunmente en entornos de desarrollo de software.

Al parecer en la practica, para muchos equipos de desarrollo, ante las dificultades para

utilizar metodologıas tradicionales, se llego a la resignacion de prescindir del “buen hacer” de

la ingenierıa del software con el objetivo de ajustarse a restricciones. Ante esta situacion, las

metodologıas agiles aparecen como una posible respuesta para llenar este vacıo metodologico.

Por estar especialmente orientadas para proyectos pequenos, las metodologıas agiles consti-

tuyen una solucion a medida, con una elevada simplificacion, que a pesar de ello no renuncia

a las practicas esenciales para asegurar la calidad del producto[1].

1.1. Objetivo general del proyecto

Crear un prototipo que sirva para gestionar a traves de Scrum cualquier tipo de trabajo

en equipos.

Page 14: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

3

1.2. Objetivos especıficos

Utilizar el proyecto impulsado por Novell Mono a traves de su interfaz Monodevelop y

programar la aplicacion con el lenguaje C#

Implementar el gestor de Scrum como un prototipo

Poner a prueba este prototipo para un trabajo

Promover la utilizacion de Mono y su interfaz Monodevelop

1.3. Descripcion de la memoria

Capıtulo I: Abarca la introduccion al documento, una breve presentacion de lo que se

vera con el correr de las hojas.

Capıtulo II: Muestra todos los enfoques teoricos que se requirieron durante el desarrollo de

este trabajo de Tıtulo.

Capıtulo III: Es el desarrollo del prototipo, se analiza la implementacion del prototipo.

Capıtulo IV: Se analizara el prototipo entregando conclusiones.

Page 15: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

Capıtulo II

Marco Teorico

Page 16: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

5

2.1. Scrum

Scrum no tiene relacion directa con algo computacional, no es un software o un algoritmo,

tampoco es una base de datos, Scrum es un marco de trabajo que en simples palabras ayuda

a grupos y/o personas en cualquier ambito que deseen desenvolver sus energias, ya sea en

algun proyecto muy importante o para la ayuda de actividades cotidianas. Scrum no dice

que se debe hacer, ya que no es una receta, Scrum lo crean a su medida quienes lo usan,

lo ajustan a sus necesidades, pero sı deben tomar en cuenta previas utilizaciones de otras

personas que digan haber optimizado sus recursos, esto para tener una experiencia valida, la

cual sea deseable de imitar, esto es muy importante porque Scrum lo hacen las experiencias.

La ejecucion correcta de Scrum se esta convirtiendo en un factor cada vez mas impor-

tante para los equipos que buscan inversion de capital, pero antes de invertir siempre hay que

preguntarse muchas cosas, y una de las preguntas de mayor relevancia que se hace cuando se

consulta al encargado del desarrollo de un proyecto es: ¿cuando terminaran el producto?, en

otras palabras se esta preguntando si conocen la velocidad de sus equipos. Actualmente se

tiene dificultad para responder esta pregunta. Las oportunidades de inversion en el futuro re-

queriran que los equipos de desarrollo comprendan el concepto de su velocidad de produccion

de software o de cualquier tipo de producto.

Los equipos de trabajo deben conocer los principios de Scrum. ¿Como se crea y se estima

una pila de producto?, ¿Como se gestiona un grafico de Burndown y se calcula la velocidad

del equipo?

¿Por que es esto tan importante? Si los equipos no conocen su velocidad, el Dueno de

producto no puede crear una hoja de ruta del producto con fechas de lanzamiento creıbles.

Sin fechas de lanzamiento fiables, la companias podrıan fracasar y los inversores perder su

dinero.

Scrum requiere que los equipos completen algun tipo de producto potencialmente liberable

al final de cada iteracion. Estas iteraciones estan disenadas para ser cortas y de duracion

fija. Este enfoque en entregar codigo funcional cada poco tiempo significa que los equipos

Scrum no tienen tiempo para teorias. No se persigue dibujar el modelo UML perfecto en

Page 17: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

6

una herramienta CASE, escribir el documento de requisitos perfecto o escribir codigo que se

adapte a todos los cambios futuros imaginables. En vez de eso, los equipos Scrum se enfocan

en que las cosas se hagan. Estos equipos aceptan que puede que se equivoquen por el camino,

pero tambien son conscientes de que la mejor manera de encontrar dichos errores es dejar de

pensar en el software a un nivel teorico de analisis y diseno, y sumergirse en el, ensuciarse

las manos y comenzar a construir el producto.

No hay y nunca habra una lista de “mejores practicas” en Scrum, porque el contexto

de cada equipo y proyecto impera sobre cualquier otra consideracion. En lugar de mejores

practicas, lo que se necesita conocer son mejores practicas y el contexto en que fueron exitosas.

En palabras de Ken Schwaber, “Scrum no es una metodologıa, es un marco de trabajo. Eso

quiere decir que Scrum no te va a decir exactamente lo que se debe hacer, es un proceso de

aprendizaje continuo”[4].

Tan importante como lo anterior es saber como se desglosa y como se trabaja Scrum,

para esto se analiza a continuacion la pila de producto y el plan de Sprint.

2.2. Pila de producto

La pila de producto es el corazon de Scrum. Es donde empieza todo. La Pila de producto

es, basicamente, una lista priorizada de requisitos, a los cuales llamaremos historias, es decir,

1 requisito = 1 historia. En simples palabras las historias son las cosas que el cliente quiere,

descritas usando la terminologıa del cliente. A varias historias juntas pertenecientes a un

Sprint se les llama elementos de pila del Sprint, siendo un Sprint un proceso iterativo el cual

se explicara mas adelante.

Los datos que contiene una historia son:

ID – un identificador unico, simplemente un numero auto-incremental. Esto nos permite

no perder la pista a las historias cuando se cambia su nombre.

Nombre – una descripcion corta de la historia. Por ejemplo, “Ver tu historial de transac-

Page 18: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

7

ciones”. Suficientemente claro como para que el cliente, al cual comenzaremos a llamar,

Dueno del producto comprenda aproximadamente de que estamos hablando, y suficien-

temente clara como para distinguirla de las otras historias.

Importancia – el ratio de importancia que el Dueno de producto da a esta historia. Por

ejemplo, 10 o 150. Mas alto = mas importante.

Estimacion inicial – la valoracion inicial del equipo acerca de cuanto trabajo es necesario

para implementar la historia, comparada con otras historias. La unidad son “puntos

de historia” y usualmente corresponde a “dıas-persona ideales”. Se pregunta al equipo:

“si tuvieras el numero optimo de personas para esta historia (ni muchos ni pocos,

tıpicamente 2) y si se encerraran en una habitacion con cantidad de comida, y traba-

jasen sin distracciones, ¿en cuantos dıas saldrıas con una implementacion terminada,

demostrable, testeada y liberable?”. Si la respuesta es “con 3 personas encerrados en

una habitacion nos llevarıa 4 dıas”, entonces la estimacion inicial son 12 puntos. Lo

importante no es que las estimaciones absolutas sean correctas (es decir, que una his-

toria de 2 puntos deba durar 2 dıas), lo importante es que las estimaciones relativas

sean correctas (es decir, que una historia de 2 puntos deberıa durar la mitad que una

historia de 4 puntos).

Como probarlo – una descripcion a alto nivel de como se demostrara esta historia en

la Demo al final del Sprint. Se trata, esencialmente, de una simple especificacion de un

test: “Haz esto, entonces haz lo otro, y entonces deberıa ocurrir aquello”. Si se practica

TDD (Test-Driven Development, desarrollo orientado a test) esta descripcion puede

usarse como pseudo-codigo para un test de aceptacion.

Notas – cualquier otra informacion, clarificacion, referencia a otras fuentes de informa-

cion, etc. Normalmente muy breve.

Page 19: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

8

Figura 2.1: Pila de producto

Estos seis campos son los importantes Sprint tras Sprint. Esta tabla es un documento

que muchos usuarios pueden editar. Oficialmente, el Dueno de producto es el propietario del

documento, pero es mejor no dejar al resto de usuarios fuera. Muchas veces un desarrollador

necesita abrir el documento para clarificar algo o cambiar una estimacion.

2.3. Una planificacion de Sprint

La planificacion de Sprint es una reunion crıtica, probablemente la mas importante de

Scrum. Una planificacion de Sprint mal ejecutada puede arruinar por completo todo el Sprint.

El proposito de la planificacion de Sprint es proporcionar al equipo suficiente informacion

como para que puedan trabajar en paz y sin interrupciones durante unas pocas semanas, y

para ofrecer al Dueno de producto suficiente confianza como para permitırselo.

A continuacion se muestran los campos recomendables con los que debe contar un Sprint:

Page 20: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

9

Una meta de Sprint.

Una lista de miembros (y su nivel de dedicacion, si no es del 100%)

Una Pila de Sprint (lista de historias incluidas en el Sprint)

Una fecha concreta para la Demo del Sprint.

Un lugar y momento definidos para el Scrum Diario.

Figura 2.2: Prioridad de historias

En la Figura 2.2 se muestran ordenadas de mas a menos importantes las historias y sus

tareas.

Page 21: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

10

2.3.1. Dividiendo las historias en tareas

¿Cual es la diferencia entre historias y tareas? Una pregunta muy valida. La diferencia

es muy simple, las tareas son divisiones de una historia. Las historias son entregables de

los que el Dueno de producto se preocupa, pero no se preocupa de las tareas ya que son

creadas por quienes las trabajaran para ası ir dividiendo en pequenas metas. Las tareas son

no-entregables, o aspectos de los que el Dueno de producto no se preocupa.

La figura 2.3 muestra un ejemplo de division de una historia llamada gestion de usuarios,

en dos post-its amarillos que representan tareas llamadas anadir/modificar usuario y buscar

usuario:

Figura 2.3: Historias y tareas

2.3.2. Trabajando las historias

Figura 2.4: Historia pendiente

Page 22: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

11

En la Figura 2.4 vemos como una historia (papel o post-it blanco) y sus tareas (papel o

post-it amarillo) aun no han comenzado a trabajarse por el equipo. Las columnas marcan el

estado en que se encuentran.

Figura 2.5: Historia en curso

El trabajo ya ha comenzado, debemos notar que algunas tareas ya estan siendo analizadas

por miembros del equipo, y esta imagen ya puede verse reflejado luego del primer Scrum.

Page 23: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

12

Figura 2.6: Historia terminada

Posteriormente y luego de mucho trabajo vemos como la historia ha sido terminada com-

pletamente, entonces podemos escoger otra y repetir los pasos.

2.3.3. Informar los Sprints

Es importante mantener a toda la compania informada sobre lo que esta ocurriendo.

De otra forma, la gente se quejarıa constantemente o, incluso peor, podrian hacer falsas

presunciones sobre lo que esta ocurriendo. Entonces se puede usar algo como esto:

Page 24: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

13

Figura 2.7: Informe Sprint

La Figura 2.7 muestra el detalle de un equipo trabajando en un Sprint, se indican fechas,

quienes trabajan, quien es el encargado, las historias y el objetivo que tiene este Sprint, solo

se muestran cosas generales con el fin de informar y no se entran en detalles tecnicos como

podrıan ser las tareas.

Page 25: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

14

2.3.4. Tabla de Sprint

Sirve para tener un orden en cada Sprint. Entre otras cosas nos muestra el avance de cada

historia perteneciente a un Sprint y sus tareas. Como se muestra a continuacion en la Figura

2.8.

Figura 2.8: Tabla de Sprint

Y luego de unos cuantos dias:

Page 26: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

15

Figura 2.9: Tabla Sprint avanzado

Como puede observarse, se ha completado la historia “Deposit” (es decir, ha sido chequea-

da en el repositorio de codigo fuente, testeada, refactorizada, etcetera). La herramienta de

migracion (segunda historia) esta parcialmente completada. La tercera historia (“backoffice

login”) ha comenzado, y la cuarta (“backoffice user admin”) no ha empezado aun. Se tiene

tres elementos no planificados, como puede verse abajo a la derecha. Esto es util para recor-

dar cuando se haga retrospectiva del Sprint. Aquı se tiene un ejemplo de una Pila de Sprint

real casi al final de un Sprint. Se vuelve bastante liosa conforme el Sprint progresa, pero no

pasa nada, ya que tiene una vida muy corta. En cada nuevo Sprint, se crea una limpia, fresca

y nueva Pila de Sprint.

Page 27: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

16

2.3.5. Actualizacion de tareas

El tablon de tareas se actualiza durante los Scrum diarios. Conforme cada persona describe

lo que hizo el dıa anterior y lo que hara hoy, mueve los post-it en el tablon y describe los

elementos no planificados, pone un post-it nuevo para cada uno de ellos. Y actualiza sus

estimaciones en el post-it correspondiente y tacha la anterior estimacion.

2.3.6. ¿Como funciona el diagrama Burndown?

Figura 2.10: Burndown

El diagrama de la Figura 2.10 muestra que:

En el primer dıa del Sprint, 1 de agosto, el equipo estimo que habıan aproximadamente

70 puntos de historia en los que trabajar. Esta era, consecuentemente, la velocidad

estimada para todo el Sprint.

Page 28: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

17

El 16 de agosto el equipo estima que quedan aproximadamente 15 puntos de historia

por hacer. La lınea de puntos muestra que se esta incluso algo avanzados respecto a la

planificacion, es decir, que a este paso se completarıa todo al final del Sprint.

2.3.7. El encargado de pruebas

Ademas de ser solo un miembro del equipo, el encargado de pruebas tiene una labor

importante. Es el que da el visto bueno. Nada se considera terminado hasta que el dice que

esta terminado.

2.4. Retrospectiva

Consiste en ver cuales son las fortalezas y debilidades de un trabajo, para el caso de Scrum

esto se debe realizar al finalizar cada Sprint. Lo mas importante de las retrospectivas es

asegurarse de que tienen lugar. Sin las retrospectivas puede que los equipos sigan cometiendo

los mismos errores una y otra vez. En el siguiente ejemplo se muestra como se genera una

tabla en donde se ponen historias y/o tareas en cada columna, con el fin de que quienes

tienen alguna relacion con el Sprint interpreten visualmente lo que se ha hecho bien o mal.

Page 29: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

18

Figura 2.11: Retrospectiva

Bien: si se hiciera el Sprint otra vez, se volverıa a hacer estas cosas igual.

Mejorable: si se hiciera otra vez el Sprint, se harıa estas cosas de forma diferente.

Mejoras: ideas concretas sobre como se puede mejorar en el futuro.

2.5. Umbrales de aceptacion y planes de entrega

2.5.1. Importancias

Ademas de la Pila de producto habitual, el Dueno de producto define una lista de umbrales

de aceptacion, que son una simple clasificacion de que significan los niveles de importancia

de la Pila de producto en terminos del contrato.

He aquı un ejemplo de umbrales de aceptacion:

Todos los elementos con importancia >=100 deben estar incluidos en la version 1.0

Page 30: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

19

Todos los elementos de importancia entre 50 y 99 deberıan estar incluidos en la version

1.0, pero se podrıa pasar sin ellos si se les incluyese en otra entrega poco despues.

Los elementos con importancias entre 25 y 49 son requisitos, pero se pueden incluir en

una version 1.1.

Los elementos con importancia <25 son puramente especulativos y puede que ni siquiera

hagan falta.

Y he aquı en la Figura 2.12 un ejemplo de Pila de producto con un codigo de colores

basado en las reglas anteriores:

Figura 2.12: Importancia de historias

Rojo = debe incluirse en la version 1.0 (platano - pera)

Amarillo = deberıa incluirse en la version 1.0 (pasa - cebolla)

Page 31: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

20

Verde = puede hacerse mas tarde (uva - melocoton)

Ası que si lo entregamos todo desde platano a cebolla en la fecha lımite, estamos a salvo.

Si el tiempo se nos acaba, podrıamos salir adelante abandonando pasa, cacahuete, donut o

cebolla. Cualquier cosa por debajo de cebolla es un plus.

2.5.2. Estimaciones

Para poder hacer la planificacion de entregas el Dueno de producto necesita estimaciones,

al menos para todas las historias incluidas en el contrato. Al igual que en la planificacion

de Sprint, se trata de un esfuerzo cooperativo entre el Dueno de producto y el equipo. El

equipo estima, el Dueno de producto describe los elementos y responde a las preguntas. Una

estimacion de tiempos es valiosa si resulta ser casi correcta, menos valiosa si resulta que falla

por, digamos, un 30% y completamente inutil si no tiene ninguna conexion con la realidad.

Todo esto no ha sido mas que una forma complicada de decir:

Hay que dejar que el equipo haga las estimaciones.

No hay que dejar que le dediquen demasiado tiempo.

Se debe asegurar de que entiendan que se trata de estimaciones, no compromisos.

He aquı en la Figura 2.13 un ejemplo de como podrıan acabar las estimaciones (en puntos

de historia):

Page 32: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

21

Figura 2.13: Estimacion de historias

2.5.3. Estimar la velocidad

Esto significa que debemos decidir nuestro factor de dedicacion. El factor de dedicacion

significa, basicamente, “cuanto del tiempo del equipo se emplea en las historias a las que

se ha comprometido”. Nunca es el 100%, ya que el equipo gasta tiempo en elementos no

planificados, haciendo cambios de contexto, ayudando a otros equipos, chequeando el correo,

arreglando sus computadores rotos, discutiendo de polıtica en la cocina, etc.

Digamos que se determina que el factor de dedicacion del equipo es del 50% (lo cual es

bastante bajo). Y digamos que la duracion del Sprint es de 3 semanas (15 dıas) y el tamano

del equipo es 6 personas. Ası que cada Sprint tendrıa 90 dıas-hombre ideales, pero solo se

puede pretender producir el equivalente a 45 dıas-hombre ideales (debido al factor del 50%).

En la Figura 2.14 vemos como queda que la velocidad estimada sea de 45 puntos de historia.

Page 33: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

22

Figura 2.14: Estimacion de velocidad

Cada Sprint incluye tantas historias como sea posible sin exceder la velocidad estimada

de 45. Ası, se puede ver que probablemente se necesite 3 Sprints para finalizar todos los

“debe” y los “deberıa”. 3 Sprints = 9 semanas de calendario = 2 meses. Ası que esa es la

fecha de entrega. Ahora bien, ¿es la fecha que se prometio al cliente? depende enteramente

de la naturaleza del contrato. Usualmente se anade un buffer o colchon significativo para

protegerse contra las malas estimaciones, problemas inesperados, etc. Ası que en este caso

se podrıa acordar fijar la fecha de entrega dentro de 3 meses, ası se da un mes de “reserva”.

Lo bonito es que se puede mostrar algo usable al cliente cada tres semanas e invitarle a

introducir cambios en los requisitos conforme se avanza (dependiendo por supuesto de lo que

permita el contrato).

Page 34: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

23

2.5.4. Adaptar el plan de entregas a la realidad

La realidad no se adaptara ella sola al plan, ası que se debe hacer al reves. Despues de

cada Sprint se comprueba la velocidad real de dicho Sprint. Si la velocidad real ha sido muy

diferente de la estimada, se revisa la velocidad estimada para proximos Sprints y se actualiza

el plan de entregas. Si esto es una situacion problematica, puede que el Dueno de producto

empiece a negociar con el cliente o se dedique a averiguar como se puede reducir el alcance sin

romper el contrato. O quizas el y el equipo encuentren una forma de aumentar la velocidad

eliminando algun impedimento severo que se haya identificado durante el Sprint. El Dueno

de producto podrıa llamar al cliente y decirle “hola, vamos un poco retrasados respecto a

la planificacion, pero creo que podrıamos cumplir con la fecha de entrega si eliminasemos

la funcionalidad “comecocos embebido” que nos llevarıa un monton de tiempo construir.

Podrıamos anadirla en la siguiente entrega, 3 semanas despues de la primera version, si ası lo

quieres”. Quizas no sean buenas noticias para el cliente, pero al menos se esta siendo honesto

y se le esta dando al cliente opciones muy pronto: “podemos entregar las funcionalidades mas

importantes en fecha o entregarlo todo pero tarde”. Normalmente no suele ser una decision

muy difıcil[2].

2.6. Herramientas utilizadas

Ya explicado anteriormente lo mas trascendente de Scrum, entonces ya es hora de poner

en claro lo que se desea realizar que para este trabajo de tıtulo, que es desarrollar un gestor

de scrum y con como se hara, para esto es necesario describir las mas importantes herra-

mientas que fueron investigadas y que se utilizaron en este trabajo de tıtulo, para aquello se

comenzara de lo mas general a lo mas especıfico describiendo en terminos amplios Microsoft

.Net, Mono, MonoDevelop y el lenguaje C#.

Page 35: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

24

2.6.1. Microsoft .NET

.NET es un framework de Microsoft que hace un enfasis en la transparencia de redes, con

independencia de plataforma de hardware y que permita un rapido desarrollo de aplicaciones.

Basado en ella, la empresa intenta desarrollar una estrategia horizontal que integre todos sus

productos, desde el sistema operativo hasta las herramientas de mercado.

.NET podrıa considerarse una respuesta de Microsoft al creciente mercado de los negocios

en entornos Web, como competencia a la plataforma Java de Sun Microsystems y a los diversos

framework de desarrollo web basados en PHP. Su propuesta es ofrecer una manera rapida

y economica, a la vez que segura y robusta, de desarrollar aplicaciones (o como la misma

plataforma las denomina, soluciones) permitiendo una integracion mas rapida y agil entre

empresas y un acceso mas simple y universal a todo tipo de informacion desde cualquier tipo

de dispositivo[9].

2.6.2. Mono

Mono es el nombre de un proyecto de codigo abierto iniciado por Ximian y actualmente

impulsado por Novell (tras la adquisicion de Ximian) para crear un grupo de herramientas

libres, basadas en GNU/Linux y compatibles con .NET[11].

Mono posee importantes componentes utiles para desarrollar software:

Una maquina virtual de infraestructura de lenguaje comun (CLI) que contiene un

cargador de clases, un compilador en tiempo de ejecucion (JIT), y unas rutinas de

recoleccion de memoria.

Una biblioteca de clases que puede funcionar en cualquier lenguaje que funcione en el

CLR (Common Language Runtime).

Un compilador para el lenguaje C#, MonoBasic (la version para mono de Visual Basic),

Java y Python.

Page 36: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

25

El CLR y el Sistema de tipos comun (CTS) permite que la aplicacion y las bibliotecas

sean escritas en una amplia variedad de lenguajes diferentes que compilen para byte

code.

Esto significa que si, por ejemplo, se define una clase que realice una manipulacion

algebraica en C#, esta pueda ser reutilizada en cualquier lenguaje compatible con

CLI. Puede crear una clase en C#, una subclase en C++ e instanciar esa clase en un

programa en Eiffel.

Un sistema de objetos unico, sistema de hilos, bibliotecas de clases y sistema recolector

de memoria pueden ser compartidos por todos estos lenguajes.

Es un proyecto independiente de la plataforma. Actualmente Mono funciona en

GNU/Linux, FreeBSD, UNIX, Mac OS X, Solaris y plataformas Windows.

2.6.3. Monodevelop

MonoDevelop es el editor rapido de aplicaciones libre oficial de GNOME disenado princi-

palmente para C# y otros lenguajes de la plataforma .NET. Las principales caracterısticas

son:

Finalizacion de codigo automatica: Intenta completar tipos, metodos y nombres de campos

que estan siendo escritos. Se intentara obtener informacion de la clase de manera au-

tomatica de los archivos del codigo fuente y de las librerias que son referenciadas en el

proyecto abierto.

Ayuda integrada: La documentacion de .NET y de GTK# esta integrada dentro de Mono-

Develop para su facil acceso.

Respaldo a los proyectos: MonoDevelop te guıa en los proyectos que vas a comenzar ya sea

una aplicacion de consola, Gnome# o una aplicacion con Gtk#.

Extensiones y complementos: MonoDevelop posee un potente motor de extensiones, el cual

junto con el API modular y un completo puntos extendibles, te permite crear tus propias

Page 37: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

26

herramientas de desarrollo. MonoDevelop incluye un panel de control para instalar tus

extensiones y complementos desde repositorios online[3].

Desde la version 2.2 MonoDevelop ya dispone de un instalador para Windows y MacOS

Ofreciendo ası un completo soporte multiplataforma. MonoDevelop se distribuye juntamente

con Mono para Mac OS X funcionando ambos de manera nativa (sin requerir otro software

adicional). MonoDevelop es empaquetado para Solaris sobre SPARC y x86 pero es mantenido

por grupos de la comunidad OpenSolaris. Finalmente, MonoDevelop es tambien mantenido

por la comunidad FreeBSD[10].

2.6.4. El lenguaje C#

C# o C Sharp, es un lenguaje orientado a objetos con enfasis en Internet se basa en las

lecciones aprendidas de los lenguajes C, C++, Java y Visual Basic. Por ello se trata de un

lenguaje que combina todas las cualidades que se pueden esperar de un lenguaje moderno

(orientacion a objetos, gestion automatica de memoria, etc.) a la vez que proporciona un

gran rendimiento.

En junio de 2000, Microsoft libero la especificacion de un nuevo lenguaje llamado C#. A

esto le siguio rapidamente la primera version de prueba del entorno de desarrollo estandar

(SDK) .NET, que incluıa un compilador de C#. El nuevo lenguaje estaba disenado por Anders

Hejlsberg (creador de Turbo Pascal y arquitecto de Delphi), Scott Wiltamuth y Peter Golde.

Entonces describieron el lenguaje como ”...simple, moderno, orientado a objetos, seguro y

con una fuerte herencia de C/C++”[8].

2.6.5. Caracterısticas de C#

Algunas de las mas importantes caracterısticas de C# son:

Orientacion a objetos: Como todo lenguaje de programacion de proposito general actu-

al, C# es un lenguaje orientado a objetos. Una diferencia del enfoque orientado a objetos

Page 38: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

27

respecto al de otros lenguajes como C++ es que el de C# es mas puro en tanto que no

admite ni funciones ni variables globales sino que todo el codigo y datos han de definirse

dentro de definiciones de tipos de datos, lo que reduce problemas por conflictos de nombres y

facilita la legibilidad del codigo. C# soporta todas las caracterısticas propias del paradigma

de programacion orientada a objetos: encapsulacion, herencia y polimorfismo.

Sencillez: C# elimina muchos elementos que otros lenguajes incluyen y que son innecesarios

en .NET. Por ejemplo:

El codigo escrito en C# es autocontenido, lo que significa que no necesita de ficheros

adicionales al propio fuente tales como ficheros de cabecera o ficheros IDL

El tamano de los tipos de datos basicos es fijo e independiente del compilador, sistema

operativo o maquina para quienes se compile (no como en C++), lo que facilita la

portabilidad del codigo.

No se incluyen elementos poco utiles de lenguajes como C++ tales como macros, heren-

cia multiple o la necesidad de un operador diferente del punto (.).

Eficiente: En principio, en C# todo el codigo incluye numerosas restricciones para asegurar

su seguridad y no permite el uso de punteros. Sin embargo, y a diferencia de Java, en C#

es posible saltarse dichas restricciones manipulando objetos a traves de punteros. Para ello

basta marcar regiones de codigo como inseguras (modificador unsafe) y podran usarse en

ellas punteros de forma similar a como se hace en C++, lo que puede resultar vital para

situaciones donde se necesite una eficiencia y velocidad procesamiento muy grandes.

Extensibilidad de modificadores: C# ofrece, a traves del concepto de atributos, la posibil-

idad de anadir a los metadatos del modulo resultante de la compilacion de cualquier fuente

informacion adicional a la generada por el compilador que luego podra ser consultada en

tiempo ejecucion a traves de la librerıa de reflexion de .NET . Esto, que mas bien es una

caracterıstica propia de la plataforma .NET y no de C#, puede usarse como un mecanismo

para definir nuevos modificadores[5].

Page 39: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

Capıtulo III

Desarrollo

Page 40: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

29

En este capıtulo se abordan todas las variables que se vieron mientras se trabajaba en

la implementacion del prototipo, se empiezan a asimilar resultados y analisis, es decir, todos

los terminos que se encuentran en el marco teorico toman una forma tangible con muestras

del software o prototipo

Implementacion, diagramas UML y problemas en la implementacion son las tres secciones

en las cuales se veran en profundidad los analisis del prototipo con herramientas de diseno

UML y figuras de la implementacion, esto quiere decir que se mostrara varias imagenes del

prototipo en funcionamiento, todas y cada una con su explicacion pertinente. Finalmente se

mencionara los trabajos futuros que se basan en lo que no se pudo implementar por problemas

que se explicaran y fundamentaran.

Page 41: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

30

3.1. Implementacion

Figura 3.1: Menu principal

La Figura 3.1 muestra el menu principal del programa en donde se ven una serie de

botones divididos en dos grupos. El primer grupo es el superior, se divide en tres columnas

con un boton en lo mas alto que marca las opciones con las que se cuenta, al marcar una

columna no se puede trabajar en las otras. En la Figura esta marcada la opcion Proyectos y

se ven los botones de Ingresar, Eliminar y el combobox en el cual se selecciona el Proyecto

Page 42: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

31

en el que se desea trabajar.

El segundo grupo trabaja sobre las opciones seleccionadas en los combobox de Proyectos

y Sprints, para este ejemplo serıa Proyecto: ’BBB’, Sprint: ’B’, entonces por ejemplo en el

segundo grupo o menu es en donde se deberıa ingresar una historia que pertenezca al Sprint

’B’. En el segundo menu especificamente se trabaja sobre las retrospectivas, Scrum diarios,

historias y tareas. Para esto siempre se debe tener seleccionado un Sprint.

Figura 3.2: Listado de miembros

La Figura 3.2 muestra el listado de miembros que se encuentran ingresados a la base

de datos, en la imagen se ven los nombres de las personas y sus codigos, los cuales son

automaticamente asignados a cada miembro por la base de datos. Al querer eliminar un

miembro se debe verificar antes el codigo del miembro en esta lista ya que sera pedido. Para

ver esta ventana se debe presionar los botones Miembros y luego Lista.

Page 43: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

32

Figura 3.3: Eliminar proyectos

La Figura 3.3 muestra la confirmacion o negacion de la peticion de eliminar un proyecto,

cabe destacar que el combobox de Proyectos senala cual proyecto se desea eliminar y se

confirma luego en la nueva ventana, para este caso el proyecto que se desea eliminar es ’bbb’.

Tambien se advierte que se eliminaran los derivados: historias, tareas, etc. para que ası no

quede basura en la base de datos.

Page 44: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

33

Figura 3.4: Ingresar historias

La Figura 3.4 muestra como llenar los datos para ingresar historias, se ingresa un nombre,

la estimacion, importancia y descripcion. El estado esta por defecto ya que siempre tiene el

mismo valor inicial. Para ver esta ventana se debe presionar el boton historia en la columna

Ingresar, se debe tener escogido un Sprint para poder ingresar una historia.

Page 45: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

34

Figura 3.5: Ingresar tarea

En la Figura 3.5 vemos como se ingresa informacion para una tarea, se le da un nombre,

estimacion y descripcion. Ademas se escoge un estado y una historia a la cual pertenece.

Para ingresar una tarea se debe presionar el boton tarea en la columna Ingresar, se debe

tener al menos una historia ingresada, sino se mostrara un aviso.

Page 46: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

35

Figura 3.6: Ver retrospectiva

En la retrospectiva se ven los datos almacenados en la base de datos cuando esta se creo,

no se puede editar el contenido. Para acceder a ver la ventana que se muestra en la Figura

3.6 presione el boton retrospectiva en la columna Ver.

Page 47: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

36

Figura 3.7: Editar tarea

En la Figura 3.7 se pueden modificar datos de la tarea cuando fue ingresada. Aparecen

dos botones; el primero de ellos es Miembros; este boton abre una nueva ventana en la cual

puedo asociar o desasociar miembros, el segundo boton presenta la opcion Eliminar la tarea.

Para Editar una tarea se debe marcar la opcion tarea en la columna Editar del segundo

menu.

3.2. Diagramas UML

En ingenierıa del software, un caso de uso es una tecnica para la captura de requisitos

potenciales de un nuevo sistema o una actualizacion de software. Cada caso de uso propor-

ciona uno o mas escenarios que indican como deberıa interactuar el sistema con el usuario o

con otro sistema para conseguir un objetivo especıfico. Normalmente, en los casos de usos se

evita el empleo de jergas tecnicas, prefiriendo en su lugar un lenguaje mas cercano al usuario

Page 48: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

37

final[6].

Un diagrama de colaboracion es esencialmente un diagrama que muestra interacciones

organizadas alrededor de los roles. A diferencia de los diagramas de secuencia, los diagramas

de comunicacion muestran explıcitamente las relaciones de los roles[7].

Esta seccion de diagramas UML sirve para que a traves de estos se entienda desde

una nueva perspectiva el prototipo, se mostraran figuras que muestran variados diagramas

de colaboracion que son representativos de todo la aplicacion. La totalidad de acciones

que puede realizar el Scrum Master se ven en la Figura 3.8 que corresponde a los casos de

uso. Se presenta el analisis de algunos diagramas de colaboracion que dicho ya antes son

representativos ya que tienen gran porcentaje de similitud con el resto de los diagramas.

Figura 3.8: Casos de uso

Page 49: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

38

En la Figura 3.8 vemos los casos de uso del prototipo, se exponen todas las posibilidades o

funcionalidades que tiene el Scrum Master para hacer alguna actividad dentro del prototipo.

Figura 3.9: Ingresar miembros

Para ingresar miembros a la base de datos se debe hacer a traves del prototipo, y

el diagrama de colaboracion muestra que lo primero es obtener los miembros para luego

almacenarlos.

Figura 3.10: Eliminar sprint

Para poder eliminar un Sprint lo primero es obtener el codigo identificador del Sprint,

luego se procede a eliminar todas las dependencias del Sprint y el Sprint en sı mismo.

Page 50: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

39

Figura 3.11: Editar tarea

Para poder editar una tarea se debe conseguir el codigo identificador del Sprint, luego

el de la historia, con eso ya se encuentra la tarea y se puede modificar. El paso final es

sobreescribir la base de datos.

Figura 3.12: Ver retrospectiva

Para poder ver una retrospectiva se debe conseguir el codigo identificador del Sprint y

luego obtener de la base de datos los campos que se necesitan ver.

Page 51: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

40

3.3. Dificultades en la implementacion

Monodevelop aun no es una herramienta globalizada en comparacion con Visual Studio,

su sımil de Microsoft, lo que deriva en menor cantidad de consumidores de Monodevelop y

por tanto en pocos manuales, tutoriales, etc. Esto era un tanto predecible, pero cabe volver

a mencionar que uno de los objetivos especıficos de este trabajo de Tıtulo era de caracter

investigativo y se describıa como promover la utilizacion de Monodevelop.

En busqueda de mayor informacion a falta de tutoriales, los foros oficiales de Mono y Mo-

nodevelop no son de gran ayuda ya que no estan actualizados, lo cual se presenta como una

nueva barrera para adquirir mas conocimientos. Y sumado a todo lo anterior la comunidad

Mono no respondio ninguno de los correos enviados por mı ni por el profesor guıa de este

trabajo de Tıtulo.

No es ningun misterio que Microsoft siempre tiene mas documentacion acerca de la uti-

lizacion de sus herramientas que cualquier software libre, pero Monodevelop aun pareciera no

tener gente encargada de la documentacion y de promover y mostrar las bondades de su sis-

tema mas alla de ser software libre, lo que termina perjudicandolo, ya que los programadores

corren el riesgo de enfrentarse a una duda y no tener donde solucionarla. Esto ultimo es

el caso en este trabajo de Tıtulo, ya que no existieron respuestas ni fuentes para encontrar

solucion al problema de generar graficos en GTK# ni poder implementar Drag & Drop.

Page 52: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

Capıtulo IV

Conclusiones

Page 53: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

42

Una vez terminada esta investigacion acerca de Scrum la primera apreciacion es que

aun cuando Scrum es un marco de trabajo que permite ciertas libertades a la hora de su

utilizacion, lo que lo diferencia principalmente de una metodologıa de trabajo, Scrum es

mucho mas fuerte cuando se combina con las buenas practicas propias del dominio del tipo

de proyecto en el que se lleva a cabo en Scrum, esto quiere decir que hay ciertas cosas que

se pueden acomodar a un grupo de trabajo pero otras que no.

El auge de la plataforma .NET ha servido para que Mono cobre cada vez mas pro-

tagonismo. Siendo una de las mas trascendentes razones para que esto suceda el hecho de

que atrae a desarrolladores de la plataforma de Microsoft que ven como sus aplicaciones

pueden ser ejecutadas en sistemas operativos que no son de este fabricante. Y si crece

Mono tambien crecera Monodevelop que es la herramienta que se utilizo en el desarrollo del

prototipo, pero aun falta un crecimiento cualitativo en el ambito de los accesos a la forma

de uso de esta herramienta, lo cual fue mencionado antes porque obligo a dejar trabajos

futuros. Aun ası no cabe dudas que Monodevelop crece rapidamente, un ejemplo en base a

experiencia es el hecho de que cuando se comenzo a trabajar en este proyecto no existıa ni

se vislumbraba una version para Windows, lo cual ya existe y se utilizo satisfactoriamente.

Siempre es sano y recomendable investigar, y este trabajo de tıtulo me entrego la

oportunidad de hacer este ejercicio, ya que tiene un enfoque investigativo con el fin de

promover herramientas como por ejemplo Mono y Monodevelop, que no son utilizadas por

la comunidad estudiantil de la Universidad de Magallanes en sus asignaturas, a partir de

esta premisa, y aun con cosas a favor y en contra de las herramientas de desarrollo de este

trabajo de tıtulo, satisfactoriamente puedo llegar a la conclusion que vale la pena investigar

acerca de plataformas como estas de software libre, para ası dar una nueva opcion a los

estudiantes de nuestra carrera y a la Universidad de Magallanes de contar con software que

permite ahorrar en pagos de licencias.

Otro de los objetivos fue implementar el prototipo de gestor de Scrum, lo cual se

logro; para posteriormente ponerlo a prueba en un trabajo cualquiera; lo que se realizo si-

guiendo los pasos del trabajo de tıtulo llamado “Creacion de una aplicacion didactica basica

Page 54: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

43

en sistema Sugar” de Gustavo Roblero el cual mostrara su desarrollo a continuacion a traves

de un grafico Burndown.

0

20

40

60

80

100

0 5 10 15 20 25 30 35 40

TR

AB

AJO

FECHA

Burndown

IDEALTESIS

Figura 4.1: Creacion de una aplicacion didactica basica en sistema Sugar

El grafico de la Figura 4.1 muestra el desarrollo de un Sprint que tiene una duracion de

40 dias de trabajo y 100 puntos en la suma de sus historias. No se alcanza a mostrar los

resultados finales ya que las fechas de la entrega de este trabajo de tıtulo no coincide con las

fecha 11 de julio que entrega Gustavo Roblero como finalizacion de proyecto. Para finalizar

la Figura 4.1 es ilustrada con el fin de demostrar que se hizo un seguimiento y se puso a

prueba el prototipo, tal como lo pedıan los objetivos especıficos.

Page 55: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

Trabajos Futuros

Page 56: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

45

Como trabajos futuros quedaron algunos puntos que inicialmente estaban contemplados

en el prototipo, ya que al avanzar en el desarrollo de este se localizaron problemas que

impidieron implementar el grafico Burndown Figura 2.10 y Drag & Drop de una forma

similar a la accion que se muestra en las Figuras 2.4, 2.5 y 2.6. Para detalles de los problemas

mencionados ver la seccion 3.3 Dificultades en la implementacion.

Ademas de todo lo anterior tambien se deja planteada la idea de hacer alguna relacion

entre casos de uso y pasar de historias a tareas, es decir, ¿como se podrıan asociar los casos

de uso con el marco de trabajo Scrum?. Esto ultimo es una duda planteada por el Dr.

Carlos Arias, profesor del Departamento de Ingenierıa en Computacion de la Universidad de

Magallanes.

Page 57: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

Anexos

Page 58: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

47

A. Tablas de la base de datos

hist descrip : Esta tabla describe las historias.

Campo Tipo Descripcion

id hist int Es el identificador de la historia

descripcion text Es una descripcion de la historia

Cuadro 1: hist descrip

hist estado : En esta tabla estan los posibles estados de las historias.

Campo Tipo Descripcion

id estado hist int Es el identificador del estado en que se encuentra la historia

nom estado hist char Es el nombre que recibe el estado

Cuadro 2: hist estado

hist estimacion : Esta tabla almacena la estimacion inicial de cada historia.

Campo Tipo Descripcion

id hist int Es el identificador de la historia

estimacion int Es cuanto trabajo es necesario para implementar la historia, son

puntos de historia y equivale a dıas-persona

Cuadro 3: hist estimacion

hist importancia : Esta tabla almacena la importancia que le da el dueno a cada historia.

Campo Tipo Descripcion

id hist int Es el identificador de la historia

import historia int Es la importancia que le da el dueno del producto a la historia

Cuadro 4: hist importancia

Page 59: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

48

historia : Esta tabla almacena las historias.

Campo Tipo Descripcion

id hist int Es el identificador de la historia

id estado hist int Es el identificador del estado en que se encuentra la historia

id sprints int Es el identificador del Sprint al que pertenece la historia

nom historia char Es el nombre de la historia

Cuadro 5: historia

miembros : Esta tabla almacena a los integrantes que trabajan en los Proyectos.

Campo Tipo Descripcion

id miembro int Es el identificador de los integrantes

nombre char Es el nombre de un integrante

Cuadro 6: miembros

proyectos : Esta tabla almacena los Proyectos.

Campo Tipo Descripcion

id proyecto int Es el identificador de los Proyectos

nom proyecto char Son los nombres de los Proyectos

scrum master int Es el identificador del encargado del Proyecto

Cuadro 7: proyectos

retrospectiva : Tabla que almacena las Restrospectivas de cada Sprint, con el fin de mejo-

rarlos.

Page 60: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

49

Campo Tipo Descripcion

id sprints int Es el identificador del Sprint al que pertenece la retrospectiva

mejorable text Son las cosas que se pueden mejorar

mejoras text Lo que se mejoro

bien text Lo que esta bien hecho

Cuadro 8: retrospectiva

scrum : Tabla que almacena comentarios de cada reunion de Scrum diario.

Campo Tipo Descripcion

id sprints int Es el identificador del Sprint al que pertenece el Scrum diario

fecha date Es la fecha en que se realiza la reunion

comentario text Guarda alguna breve idea u observacion del Scrum diario

Cuadro 9: scrum

sprints : Esta tabla guarda la informacion de los Sprints que se realizan durante un Proyecto.

Campo Tipo Descripcion

id sprints int Es el identificador del Sprint

nombre char Nombre del Sprint

id proyecto int Es el identificador de los Proyectos

fecha demo date Es la fecha en que se liberara la demo del Sprint

fecha inicio date Es la fecha en que se inicia el Sprint

fecha termino date Es la fecha en que se acaba el Sprint

hora scrum time Es el horario de las reuniones de Scrum diario

meta char Lo que se desea lograr en el Sprint

tester int Es el codigo del miembro encargado de hacer las pruebas

Cuadro 10: sprints

tarea : Esta tabla almacena las tareas, que son divisiones de las historias.

Page 61: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

50

Campo Tipo Descripcion

id tarea int Es el identificador de las tareas

id hist int Es el identificador de la historia.

id estado tarea int Es el identificador del estado en que se encuentra la tarea

nom tarea char Es el nombre que recibe la tarea

Cuadro 11: tarea

tarea descrip : Esta tabla contiene la descripcion de cada tarea.

Campo Tipo Descripcion

id tarea int Es el identificador de las tareas

descripcion text Es una descripcion de la tarea

Cuadro 12: tarea descrip

tarea estado : Esta tabla almacena los posibles estados de las tareas.

Campo Tipo Descripcion

id estado tarea int Es el identificador del estado en que se encuentra la tarea

nom estado tarea char Es el nombre que recibe el estado

Cuadro 13: tarea estado

tarea estimacion : Esta tabla guarda la estimacion inicial de la tarea, la suma del tiempo

de tareas debe ser inferior o igual a la historia a la cual pertenecen.

Campo Tipo Descripcion

id tarea int Es el Es el identificador de las tareas

estimacion int Es cuanto trabajo es necesario para implementar la tarea, son

puntos de historia y equivale a dıas-persona

fecha date Es la fecha en que se modifico la estimacion de la tarea

Cuadro 14: tarea estimacion

Page 62: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

51

tarea miembros : Esta tabla almacena a los integrantes que trabajan en una tarea especıfica

y la dedicacion que tienen a esta.

Campo Tipo Descripcion

id tarea int Es el identificador de las tareas

id miembro int Es el identificador de los integrantes

Cuadro 15: tarea miembros

Page 63: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

Referencias y Bibliografıa

Page 64: Prototipo para Scrum Desarrollado en Mono · 2.1. Scrum Scrum no tiene relaci´on directa con algo computacional, no es un software o un algoritmo, tampoco es una base de datos, Scrum

Bibliografıa

[1] Oscar Guzman. Metodologias agiles. http://sites.google.com/site/oeguzman/

introduccion.

[2] Henrik Kniberg. Scrum y xp desde las trincheras, 2007.

[3] Mono-hispano. Monodevelop. http://www.mono-hispano.org/wiki/Monodevelop.

[4] Ken Schwaber. Agile Project Management with Scrum. Microsoft Press, 2004.

[5] Jose Antonio Gonzalez Seco. Introduccion a c#. http://www.devjoker.com/

contenidos/C/125/Introduccion-a-C.aspx.

[6] Wikipedia. Caso de uso. http://es.wikipedia.org/wiki/Caso_de_uso.

[7] Wikipedia. Diagrama de colaboracion. http://es.wikipedia.org/wiki/Diagrama_

de_colaboraci%C3%B3n.

[8] Wikipedia. El lenguaje c sharp. http://es.wikibooks.org/wiki/C_sharp_NET.

[9] Wikipedia. Microsoft .net. http://es.wikipedia.org/wiki/Microsoft_.NET.

[10] Wikipedia. Monodevelop. http://es.wikipedia.org/wiki/MonoDevelop.

[11] Wikipedia. Proyecto mono. http://es.wikipedia.org/wiki/Proyecto_Mono.

53