Prototipo para Scrum Desarrollado en Mono

Anuncio
UNIVERSIDAD DE MAGALLANES
FACULTAD DE INGENIERÍA
DEPARTAMENTO DE INGENIERÍA EN COMPUTACIÓN
Prototipo para Scrum Desarrollado
en Mono
Pedro Antonio Bustos Estay
2010
La presente Memoria de Titulación ha sido aprobada con la siguiente calificación:
Pedro Antonio Bustos Estay
Memoria :
Exámen de Tı́tulo :
Nota Final :
MSc. Eduardo Peña Jaramillo
Director Departamento
de Ingenierı́a en Computación
13 de julio de 2010
UNIVERSIDAD DE MAGALLANES
FACULTAD DE INGENIERÍA
DEPARTAMENTO DE INGENIERÍA EN COMPUTACIÓN
Prototipo para Scrum Desarrollado en
Mono
Trabajo de titulación presentado en
conformidad a los requisitos para
obtener el tı́tulo de Ingeniero en Computación e Informática.
Profesor Guı́a: Sr. José Canumán
Chacón.
Pedro Antonio Bustos Estay
2010
Resumen
En el presente documento se encuentran variados análisis acerca del desarrollo del Prototipo para Scrum Desarrollado en Mono, que van desde el detalle de la base de datos hasta
las bases sobre las cuales comenzó el estudio, lo cual está abarcado en el marco teórico con
explicaciones en detalle de lo que se trata todo este trabajo de tı́tulo en términos generales.
También hay imagenes de la implementación del prototipo junto con los digramas de casos
de uso y de colaboración para ver y analizar desde un enfoque de ingenierı́a de software a
través de herramientas UML. El documento deja en claro los problemas que se encontraron
en la implementación y los trabajos futuros que se dejaron fuera de este trabajo de Tı́tulo por diversos motivos; se explica detalladamente la base de datos en la sección anexos y
para finalizar las conclusiones señalarán los puntos altos y bajos a través de opiniones y
observaciones de este trabajo de tı́tulo.
Índice general
I.
Introducción
1
1.1. Objetivo general del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2. Objetivos especı́ficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.3. Descripción de la memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
II. Marco Teórico
4
2.1. Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2. Pila de producto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.3. Una planificación 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. Actualización de tareas . . . . . . . . . . . . . . . . . . . . . . . . . .
16
i
2.3.6. ¿Cómo funciona el diagrama Burndown? . . . . . . . . . . . . . . . .
16
2.3.7. El encargado de pruebas . . . . . . . . . . . . . . . . . . . . . . . . .
17
2.4. Retrospectiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
2.5. Umbrales de aceptación 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. Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
3.2. Diagramas UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
3.3. Dificultades en la implementación . . . . . . . . . . . . . . . . . . . . . . . .
40
IV. Conclusiones
41
ii
Trabajos Futuros
43
Anexos
46
A. Tablas de la base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Referencias y Bibliografı́a
47
51
iii
Índice 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. Estimación de historias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.14. Estimación de velocidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
iv
3.1. Menú 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. Creación de una aplicación didáctica básica en sistema Sugar . . . . . . . . .
43
v
Índice 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
15. tarea miembros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vii
51
Capı́tulo I
Introducción
2
Trabajar en grupos puede ser muy complicado en muchos ámbitos, ya que surgen muchas
dudas en relación a los objetivos individuales y grupales o los recursos con que se contará,
la división de tareas de forma equitativa para que nadie se sienta perjudicado puede ser el
mayor de los dolores de cabeza, especialmente para quien está a cargo de evaluar y hacer
que éstos grupos rindan de forma eficiente. Para asistir a éstas personas se creó un marco
de trabajo llamado Scrum, el cual pareciera ser ágil para desarrollo, no sólo 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, además de optimizar los recursos
con los que cuentan quienes desarrollen ideas con éste marco de trabajo.
Aún no sabemos a ciencia cierta en el medio en que se desenvuelve Scrum, ni la forma
en que las personas se relacionan con éste 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 prácticas y roles que puede tomarse como
punto de partida para definir el proceso de desarrollo que se ejecutará durante un proyecto.
Además Scrum es un framework o conjunto de herramientas, para la gestión y desarrollo
de tareas utilizado mayormente por personas ligadas a la informática. Está basado en un
proceso iterativo e incremental utilizado comúnmente en entornos de desarrollo de software.
Al parecer en la práctica, para muchos equipos de desarrollo, ante las dificultades para
utilizar metodologı́as tradicionales, se llegó a la resignación de prescindir del “buen hacer” de
la ingenierı́a del software con el objetivo de ajustarse a restricciones. Ante esta situación, las
metodologı́as ágiles aparecen como una posible respuesta para llenar este vacı́o metodológico.
Por estar especialmente orientadas para proyectos pequeños, las metodologı́as ágiles constituyen una solución a medida, con una elevada simplificación, que a pesar de ello no renuncia
a las prácticas esenciales para asegurar la calidad del producto[1].
1.1.
Objetivo general del proyecto
Crear un prototipo que sirva para gestionar a través de Scrum cualquier tipo de trabajo
en equipos.
3
1.2.
Objetivos especı́ficos
Utilizar el proyecto impulsado por Novell Mono a través de su interfaz Monodevelop y
programar la aplicación con el lenguaje C#
Implementar el gestor de Scrum como un prototipo
Poner a prueba este prototipo para un trabajo
Promover la utilización de Mono y su interfaz Monodevelop
1.3.
Descripción de la memoria
Capı́tulo I: Abarca la introducción al documento, una breve presentación de lo que se
verá con el correr de las hojas.
Capı́tulo II: Muestra todos los enfoques teóricos que se requirieron durante el desarrollo de
este trabajo de Tı́tulo.
Capı́tulo III: Es el desarrollo del prototipo, se analiza la implementación del prototipo.
Capı́tulo IV: Se analizará el prototipo entregando conclusiones.
Capı́tulo II
Marco Teórico
5
2.1.
Scrum
Scrum no tiene relación 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 ámbito que deseen desenvolver sus energias, ya sea en
algun proyecto muy importante o para la ayuda de actividades cotidianas. Scrum no dice
qué 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 válida, la
cual sea deseable de imitar, esto es muy importante porque Scrum lo hacen las experiencias.
La ejecución correcta de Scrum se está convirtiendo en un factor cada vez más importante para los equipos que buscan inversión 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: ¿cuándo terminarán el producto?, en
otras palabras se está preguntando si conocen la velocidad de sus equipos. Actualmente se
tiene dificultad para responder esta pregunta. Las oportunidades de inversión en el futuro requerirán que los equipos de desarrollo comprendan el concepto de su velocidad de producción
de software o de cualquier tipo de producto.
Los equipos de trabajo deben conocer los principios de Scrum. ¿Cómo se crea y se estima
una pila de producto?, ¿Cómo se gestiona un gráfico de Burndown y se calcula la velocidad
del equipo?
¿Por qué es esto tan importante? Si los equipos no conocen su velocidad, el Dueño de
producto no puede crear una hoja de ruta del producto con fechas de lanzamiento creı́bles.
Sin fechas de lanzamiento fiables, la compañias podrı́an fracasar y los inversores perder su
dinero.
Scrum requiere que los equipos completen algún tipo de producto potencialmente liberable
al final de cada iteración. Estas iteraciones están diseñadas para ser cortas y de duración
fija. Este enfoque en entregar código funcional cada poco tiempo significa que los equipos
Scrum no tienen tiempo para teorias. No se persigue dibujar el modelo UML perfecto en
6
una herramienta CASE, escribir el documento de requisitos perfecto o escribir código 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 también son conscientes de que la mejor manera de encontrar dichos errores es dejar de
pensar en el software a un nivel teórico de análisis y diseño, y sumergirse en él, ensuciarse
las manos y comenzar a construir el producto.
No hay y nunca habrá una lista de “mejores prácticas” en Scrum, porque el contexto
de cada equipo y proyecto impera sobre cualquier otra consideración. En lugar de mejores
prácticas, lo que se necesita conocer son mejores prácticas 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 cómo se desglosa y cómo se trabaja Scrum,
para esto se analiza a continuación la pila de producto y el plan de Sprint.
2.2.
Pila de producto
La pila de producto es el corazón de Scrum. Es donde empieza todo. La Pila de producto
es, básicamente, 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 explicará más adelante.
Los datos que contiene una historia son:
ID – un identificador único, simplemente un número auto-incremental. Esto nos permite
no perder la pista a las historias cuando se cambia su nombre.
Nombre – una descripción corta de la historia. Por ejemplo, “Ver tu historial de transac-
7
ciones”. Suficientemente claro como para que el cliente, al cual comenzaremos a llamar,
Dueño del producto comprenda aproximadamente de qué estamos hablando, y suficientemente clara como para distinguirla de las otras historias.
Importancia – el ratio de importancia que el Dueño de producto da a esta historia. Por
ejemplo, 10 o 150. Más alto = más importante.
Estimación inicial – la valoración 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 número óptimo de personas para esta historia (ni muchos ni pocos,
tı́picamente 2) y si se encerraran en una habitación con cantidad de comida, y trabajasen sin distracciones, ¿en cuántos dı́as saldrı́as con una implementación terminada,
demostrable, testeada y liberable?”. Si la respuesta es “con 3 personas encerrados en
una habitación nos llevarı́a 4 dı́as”, entonces la estimación inicial son 12 puntos. Lo
importante no es que las estimaciones absolutas sean correctas (es decir, que una historia 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).
Cómo probarlo – una descripción a alto nivel de cómo se demostrará esta historia en
la Demo al final del Sprint. Se trata, esencialmente, de una simple especificación 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 descripción puede
usarse como pseudo-código para un test de aceptación.
Notas – cualquier otra información, clarificación, referencia a otras fuentes de información, etc. Normalmente muy breve.
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 Dueño 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 estimación.
2.3.
Una planificación de Sprint
La planificación de Sprint es una reunión crı́tica, probablemente la más importante de
Scrum. Una planificación de Sprint mal ejecutada puede arruinar por completo todo el Sprint.
El propósito de la planificación de Sprint es proporcionar al equipo suficiente información
como para que puedan trabajar en paz y sin interrupciones durante unas pocas semanas, y
para ofrecer al Dueño de producto suficiente confianza como para permitı́rselo.
A continuación se muestran los campos recomendables con los que debe contar un Sprint:
9
Una meta de Sprint.
Una lista de miembros (y su nivel de dedicación, 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 más a menos importantes las historias y sus
tareas.
10
2.3.1.
Dividiendo las historias en tareas
¿Cuál es la diferencia entre historias y tareas? Una pregunta muy válida. La diferencia
es muy simple, las tareas son divisiones de una historia. Las historias son entregables de
los que el Dueño de producto se preocupa, pero no se preocupa de las tareas ya que son
creadas por quienes las trabajarán para ası́ ir dividiendo en pequeñas metas. Las tareas son
no-entregables, o aspectos de los que el Dueño de producto no se preocupa.
La figura 2.3 muestra un ejemplo de división de una historia llamada gestión de usuarios,
en dos post-its amarillos que representan tareas llamadas añadir/modificar usuario y buscar
usuario:
Figura 2.3: Historias y tareas
2.3.2.
Trabajando las historias
Figura 2.4: Historia pendiente
11
En la Figura 2.4 vemos como una historia (papel o post-it blanco) y sus tareas (papel o
post-it amarillo) aún 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 están siendo analizadas
por miembros del equipo, y esta imagen ya puede verse reflejado luego del primer Scrum.
12
Figura 2.6: Historia terminada
Posteriormente y luego de mucho trabajo vemos como la historia ha sido terminada completamente, entonces podemos escoger otra y repetir los pasos.
2.3.3.
Informar los Sprints
Es importante mantener a toda la compañia informada sobre lo que está ocurriendo.
De otra forma, la gente se quejarı́a constantemente o, incluso peor, podrian hacer falsas
presunciones sobre lo que está ocurriendo. Entonces se puede usar algo como esto:
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, sólo
se muestran cosas generales con el fin de informar y no se entran en detalles técnicos como
podrı́an ser las tareas.
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 continuación en la Figura
2.8.
Figura 2.8: Tabla de Sprint
Y luego de unos cuantos dias:
15
Figura 2.9: Tabla Sprint avanzado
Como puede observarse, se ha completado la historia “Deposit” (es decir, ha sido chequeada en el repositorio de código fuente, testeada, refactorizada, etcétera). La herramienta de
migración (segunda historia) está 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 útil para recordar 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.
16
2.3.5.
Actualización de tareas
El tablón de tareas se actualiza durante los Scrum diarios. Conforme cada persona describe
lo que hizo el dı́a anterior y lo que hará hoy, mueve los post-it en el tablón 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 estimación.
2.3.6.
¿Cómo 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 estimó que habı́an aproximadamente
70 puntos de historia en los que trabajar. Esta era, consecuentemente, la velocidad
estimada para todo el Sprint.
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
planificación, es decir, que a este paso se completarı́a todo al final del Sprint.
2.3.7.
El encargado de pruebas
Además de ser sólo 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 él dice que
está 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 más 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 relación con el Sprint interpreten visualmente lo que se ha hecho bien o mal.
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 cómo se puede mejorar en el futuro.
2.5.
2.5.1.
Umbrales de aceptación y planes de entrega
Importancias
Además de la Pila de producto habitual, el Dueño de producto define una lista de umbrales
de aceptación, que son una simple clasificación de qué significan los niveles de importancia
de la Pila de producto en términos del contrato.
He aquı́ un ejemplo de umbrales de aceptación:
Todos los elementos con importancia >=100 deben estar incluidos en la versión 1.0
19
Todos los elementos de importancia entre 50 y 99 deberı́an estar incluidos en la versión
1.0, pero se podrı́a pasar sin ellos si se les incluyese en otra entrega poco después.
Los elementos con importancias entre 25 y 49 son requisitos, pero se pueden incluir en
una versión 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 código de colores
basado en las reglas anteriores:
Figura 2.12: Importancia de historias
Rojo = debe incluirse en la versión 1.0 (plátano - pera)
Amarillo = deberı́a incluirse en la versión 1.0 (pasa - cebolla)
20
Verde = puede hacerse más tarde (uva - melocotón)
Ası́ que si lo entregamos todo desde plátano 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 planificación de entregas el Dueño de producto necesita estimaciones,
al menos para todas las historias incluidas en el contrato. Al igual que en la planificación
de Sprint, se trata de un esfuerzo cooperativo entre el Dueño de producto y el equipo. El
equipo estima, el Dueño de producto describe los elementos y responde a las preguntas. Una
estimación de tiempos es valiosa si resulta ser casi correcta, menos valiosa si resulta que falla
por, digamos, un 30 % y completamente inútil si no tiene ninguna conexión con la realidad.
Todo esto no ha sido más 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 cómo podrı́an acabar las estimaciones (en puntos
de historia):
21
Figura 2.13: Estimación de historias
2.5.3.
Estimar la velocidad
Esto significa que debemos decidir nuestro factor de dedicación. El factor de dedicación
significa, básicamente, “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 dedicación del equipo es del 50 % (lo cual es
bastante bajo). Y digamos que la duración del Sprint es de 3 semanas (15 dı́as) y el tamaño
del equipo es 6 personas. Ası́ que cada Sprint tendrı́a 90 dı́as-hombre ideales, pero sólo 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.
22
Figura 2.14: Estimación 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 prometió al cliente? depende enteramente
de la naturaleza del contrato. Usualmente se añade un buffer o colchón 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).
23
2.5.4.
Adaptar el plan de entregas a la realidad
La realidad no se adaptará ella sola al plan, ası́ que se debe hacer al revés. Después 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 próximos Sprints y se actualiza
el plan de entregas. Si esto es una situación problemática, puede que el Dueño de producto
empiece a negociar con el cliente o se dedique a averiguar cómo se puede reducir el alcance sin
romper el contrato. O quizás él y el equipo encuentren una forma de aumentar la velocidad
eliminando algún impedimento severo que se haya identificado durante el Sprint. El Dueño
de producto podrı́a llamar al cliente y decirle “hola, vamos un poco retrasados respecto a
la planificación, pero creo que podrı́amos cumplir con la fecha de entrega si eliminásemos
la funcionalidad “comecocos embebido” que nos llevarı́a un montón de tiempo construir.
Podrı́amos añadirla en la siguiente entrega, 3 semanas después de la primera versión, si ası́ lo
quieres”. Quizás no sean buenas noticias para el cliente, pero al menos se está siendo honesto
y se le está dando al cliente opciones muy pronto: “podemos entregar las funcionalidades más
importantes en fecha o entregarlo todo pero tarde”. Normalmente no suele ser una decisión
muy difı́cil[2].
2.6.
Herramientas utilizadas
Ya explicado anteriormente lo más 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 cómo se hará, para esto es necesario describir las más importantes herramientas que fueron investigadas y que se utilizaron en este trabajo de tı́tulo, para aquello se
comenzará de lo más general a lo más especı́fico describiendo en términos amplios Microsoft
.Net, Mono, MonoDevelop y el lenguaje C#.
24
2.6.1.
Microsoft .NET
.NET es un framework de Microsoft que hace un énfasis en la transparencia de redes, con
independencia de plataforma de hardware y que permita un rápido 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 rápida
y económica, a la vez que segura y robusta, de desarrollar aplicaciones (o como la misma
plataforma las denomina, soluciones) permitiendo una integración más rápida y ágil entre
empresas y un acceso más simple y universal a todo tipo de información desde cualquier tipo
de dispositivo[9].
2.6.2.
Mono
Mono es el nombre de un proyecto de código abierto iniciado por Ximian y actualmente
impulsado por Novell (tras la adquisición de Ximian) para crear un grupo de herramientas
libres, basadas en GNU/Linux y compatibles con .NET[11].
Mono posee importantes componentes útiles para desarrollar software:
Una máquina virtual de infraestructura de lenguaje común (CLI) que contiene un
cargador de clases, un compilador en tiempo de ejecución (JIT), y unas rutinas de
recolección 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 versión para mono de Visual Basic),
Java y Python.
25
El CLR y el Sistema de tipos común (CTS) permite que la aplicación 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 manipulación
algebraica en C#, ésta 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 único, 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 rápido de aplicaciones libre oficial de GNOME diseñado principalmente para C# y otros lenguajes de la plataforma .NET. Las principales caracterı́sticas
son:
Finalización de código automática: Intenta completar tipos, métodos y nombres de campos
que están siendo escritos. Se intentará obtener información de la clase de manera automática de los archivos del código fuente y de las librerias que son referenciadas en el
proyecto abierto.
Ayuda integrada: La documentación de .NET y de GTK# está integrada dentro de MonoDevelop para su fácil acceso.
Respaldo a los proyectos: MonoDevelop te guı́a en los proyectos que vas a comenzar ya sea
una aplicación de consola, Gnome# o una aplicación 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
26
herramientas de desarrollo. MonoDevelop incluye un panel de control para instalar tus
extensiones y complementos desde repositorios online[3].
Desde la versión 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 también mantenido
por la comunidad FreeBSD[10].
2.6.4.
El lenguaje C#
C# o C Sharp, es un lenguaje orientado a objetos con énfasis 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
(orientación a objetos, gestión automática de memoria, etc.) a la vez que proporciona un
gran rendimiento.
En junio de 2000, Microsoft liberó la especificación de un nuevo lenguaje llamado C#. A
esto le siguió rápidamente la primera versión de prueba del entorno de desarrollo estándar
(SDK) .NET, que incluı́a un compilador de C#. El nuevo lenguaje estaba diseñado 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 más importantes caracterı́sticas de C# son:
Orientación a objetos: Como todo lenguaje de programación de propósito general actual, C# es un lenguaje orientado a objetos. Una diferencia del enfoque orientado a objetos
27
respecto al de otros lenguajes como C++ es que el de C# es más puro en tanto que no
admite ni funciones ni variables globales sino que todo el código 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 código. C# soporta todas las caracterı́sticas propias del paradigma
de programación orientada a objetos: encapsulación, herencia y polimorfismo.
Sencillez: C# elimina muchos elementos que otros lenguajes incluyen y que son innecesarios
en .NET. Por ejemplo:
El código 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 tamaño de los tipos de datos básicos es fijo e independiente del compilador, sistema
operativo o máquina para quienes se compile (no como en C++), lo que facilita la
portabilidad del código.
No se incluyen elementos poco útiles de lenguajes como C++ tales como macros, herencia múltiple o la necesidad de un operador diferente del punto (.).
Eficiente: En principio, en C# todo el código 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 través de punteros. Para ello
basta marcar regiones de código como inseguras (modificador unsafe) y podrán 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 través del concepto de atributos, la posibilidad de añadir a los metadatos del módulo resultante de la compilación de cualquier fuente
información adicional a la generada por el compilador que luego podrá ser consultada en
tiempo ejecución a través de la librerı́a de reflexión de .NET . Esto, que más bien es una
caracterı́stica propia de la plataforma .NET y no de C#, puede usarse como un mecanismo
para definir nuevos modificadores[5].
Capı́tulo III
Desarrollo
29
En este capı́tulo se abordan todas las variables que se vieron mientras se trabajaba en
la implementación del prototipo, se empiezan a asimilar resultados y análisis, es decir, todos
los términos que se encuentran en el marco teórico toman una forma tangible con muestras
del software o prototipo
Implementación, diagramas UML y problemas en la implementación son las tres secciones
en las cuales se verán en profundidad los análisis del prototipo con herramientas de diseño
UML y figuras de la implementación, esto quiere decir que se mostrará varias imágenes del
prototipo en funcionamiento, todas y cada una con su explicación pertinente. Finalmente se
mencionará los trabajos futuros que se basan en lo que no se pudo implementar por problemas
que se explicarán y fundamentarán.
30
3.1.
Implementación
Figura 3.1: Menú principal
La Figura 3.1 muestra el menú 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 botón en lo más alto que marca las opciones con las que se cuenta, al marcar una
columna no se puede trabajar en las otras. En la Figura está marcada la opción Proyectos y
se ven los botones de Ingresar, Eliminar y el combobox en el cual se selecciona el Proyecto
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 menú es en donde se deberı́a ingresar una historia que pertenezca al Sprint
’B’. En el segundo menú 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 códigos, los cuales son
automáticamente asignados a cada miembro por la base de datos. Al querer eliminar un
miembro se debe verificar antes el código del miembro en esta lista ya que será pedido. Para
ver esta ventana se debe presionar los botones Miembros y luego Lista.
32
Figura 3.3: Eliminar proyectos
La Figura 3.3 muestra la confirmación o negación de la petición de eliminar un proyecto,
cabe destacar que el combobox de Proyectos señala cual proyecto se desea eliminar y se
confirma luego en la nueva ventana, para este caso el proyecto que se desea eliminar es ’bbb’.
También se advierte que se eliminarán los derivados: historias, tareas, etc. para que ası́ no
quede basura en la base de datos.
33
Figura 3.4: Ingresar historias
La Figura 3.4 muestra como llenar los datos para ingresar historias, se ingresa un nombre,
la estimación, importancia y descripción. El estado está por defecto ya que siempre tiene el
mismo valor inicial. Para ver esta ventana se debe presionar el botón historia en la columna
Ingresar, se debe tener escogido un Sprint para poder ingresar una historia.
34
Figura 3.5: Ingresar tarea
En la Figura 3.5 vemos como se ingresa información para una tarea, se le da un nombre,
estimación y descripción. Además se escoge un estado y una historia a la cual pertenece.
Para ingresar una tarea se debe presionar el botón tarea en la columna Ingresar, se debe
tener al menos una historia ingresada, sino se mostrará un aviso.
35
Figura 3.6: Ver retrospectiva
En la retrospectiva se ven los datos almacenados en la base de datos cuando esta se creó,
no se puede editar el contenido. Para acceder a ver la ventana que se muestra en la Figura
3.6 presione el botón retrospectiva en la columna Ver.
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 botón abre una nueva ventana en la cual
puedo asociar o desasociar miembros, el segundo botón presenta la opción Eliminar la tarea.
Para Editar una tarea se debe marcar la opción tarea en la columna Editar del segundo
menú.
3.2.
Diagramas UML
En ingenierı́a del software, un caso de uso es una técnica para la captura de requisitos
potenciales de un nuevo sistema o una actualización de software. Cada caso de uso proporciona uno o más escenarios que indican cómo 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 técnicas, prefiriendo en su lugar un lenguaje más cercano al usuario
37
final[6].
Un diagrama de colaboración es esencialmente un diagrama que muestra interacciones
organizadas alrededor de los roles. A diferencia de los diagramas de secuencia, los diagramas
de comunicación muestran explı́citamente las relaciones de los roles[7].
Esta sección de diagramas UML sirve para que a través de éstos se entienda desde
una nueva perspectiva el prototipo, se mostrarán figuras que muestran variados diagramas
de colaboración que son representativos de todo la aplicación. 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 análisis de algunos diagramas de colaboración 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
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 través del prototipo, y
el diagrama de colaboración 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 código identificador del Sprint,
luego se procede a eliminar todas las dependencias del Sprint y el Sprint en sı́ mismo.
39
Figura 3.11: Editar tarea
Para poder editar una tarea se debe conseguir el código 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 código identificador del Sprint y
luego obtener de la base de datos los campos que se necesitan ver.
40
3.3.
Dificultades en la implementación
Monodevelop aún no es una herramienta globalizada en comparación 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 carácter
investigativo y se describı́a como promover la utilización de Monodevelop.
En búsqueda de mayor información a falta de tutoriales, los foros oficiales de Mono y Monodevelop no son de gran ayuda ya que no están actualizados, lo cual se presenta como una
nueva barrera para adquirir más conocimientos. Y sumado a todo lo anterior la comunidad
Mono no respondió ninguno de los correos enviados por mı́ ni por el profesor guı́a de este
trabajo de Tı́tulo.
No es ningún misterio que Microsoft siempre tiene más documentación acerca de la utilización de sus herramientas que cualquier software libre, pero Monodevelop aún pareciera no
tener gente encargada de la documentación y de promover y mostrar las bondades de su sistema más allá de ser software libre, lo que termina perjudicándolo, ya que los programadores
corren el riesgo de enfrentarse a una duda y no tener donde solucionarla. Esto último es
el caso en este trabajo de Tı́tulo, ya que no existieron respuestas ni fuentes para encontrar
solución al problema de generar gráficos en GTK# ni poder implementar Drag & Drop.
Capı́tulo IV
Conclusiones
42
Una vez terminada esta investigación acerca de Scrum la primera apreciación es que
aún cuando Scrum es un marco de trabajo que permite ciertas libertades a la hora de su
utilización, lo que lo diferencia principalmente de una metodologı́a de trabajo, Scrum es
mucho más fuerte cuando se combina con las buenas prácticas 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 más protagonismo. Siendo una de las más 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 también crecerá Monodevelop que es la herramienta que se utilizó en el desarrollo del
prototipo, pero aún falta un crecimiento cualitativo en el ámbito de los accesos a la forma
de uso de esta herramienta, lo cual fue mencionado antes porque obligó a dejar trabajos
futuros. Aún ası́ no cabe dudas que Monodevelop crece rápidamente, un ejemplo en base a
experiencia es el hecho de que cuando se comenzó a trabajar en este proyecto no existı́a ni
se vislumbraba una versión para Windows, lo cual ya existe y se utilizó satisfactoriamente.
Siempre es sano y recomendable investigar, y este trabajo de tı́tulo me entregó 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 aún con cosas a favor y en contra de las herramientas de desarrollo de este
trabajo de tı́tulo, satisfactoriamente puedo llegar a la conclusión que vale la pena investigar
acerca de plataformas como éstas de software libre, para ası́ dar una nueva opción 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
logró; para posteriormente ponerlo a prueba en un trabajo cualquiera; lo que se realizó siguiendo los pasos del trabajo de tı́tulo llamado “Creación de una aplicación didáctica básica
43
en sistema Sugar” de Gustavo Roblero el cual mostrará su desarrollo a continuación a través
de un gráfico Burndown.
Burndown
100
IDEAL
TESIS
80
TRABAJO
60
40
20
0
0
5
10
15
20
25
30
35
40
FECHA
Figura 4.1: Creación de una aplicación didáctica básica en sistema Sugar
El gráfico de la Figura 4.1 muestra el desarrollo de un Sprint que tiene una duración 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 finalización 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.
Trabajos Futuros
45
Como trabajos futuros quedaron algunos puntos que inicialmente estaban contemplados
en el prototipo, ya que al avanzar en el desarrollo de éste se localizaron problemas que
impidieron implementar el gráfico Burndown Figura 2.10 y Drag & Drop de una forma
similar a la acción que se muestra en las Figuras 2.4, 2.5 y 2.6. Para detalles de los problemas
mencionados ver la sección 3.3 Dificultades en la implementación.
Además de todo lo anterior también se deja planteada la idea de hacer alguna relación
entre casos de uso y pasar de historias a tareas, es decir, ¿cómo se podrı́an asociar los casos
de uso con el marco de trabajo Scrum?. Esto último es una duda planteada por el Dr.
Carlos Arias, profesor del Departamento de Ingenierı́a en Computación de la Universidad de
Magallanes.
Anexos
47
A. Tablas de la base de datos
hist descrip : Esta tabla describe las historias.
Campo
Tipo
Descripción
id hist
int
Es el identificador de la historia
descripcion
text
Es una descripción de la historia
Cuadro 1: hist descrip
hist estado : En esta tabla están los posibles estados de las historias.
Campo
Tipo
id estado hist
int
nom estado hist
char
Descripción
Es el identificador del estado en que se encuentra la historia
Es el nombre que recibe el estado
Cuadro 2: hist estado
hist estimacion : Esta tabla almacena la estimación inicial de cada historia.
Campo
Tipo
Descripción
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 dueño a cada historia.
Campo
Tipo
Descripción
id hist
int
Es el identificador de la historia
import historia
int
Es la importancia que le da el dueño del producto a la historia
Cuadro 4: hist importancia
48
historia : Esta tabla almacena las historias.
Campo
Tipo
Descripción
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
id miembro
int
nombre
char
Descripción
Es el identificador de los integrantes
Es el nombre de un integrante
Cuadro 6: miembros
proyectos : Esta tabla almacena los Proyectos.
Campo
Tipo
id proyecto
int
nom proyecto
char
scrum master
int
Descripción
Es el identificador de los Proyectos
Son los nombres de los Proyectos
Es el identificador del encargado del Proyecto
Cuadro 7: proyectos
retrospectiva : Tabla que almacena las Restrospectivas de cada Sprint, con el fin de mejorarlos.
49
Campo
Tipo
Descripción
id sprints
int
mejorable
text
Son las cosas que se pueden mejorar
mejoras
text
Lo que se mejoró
bien
text
Lo que está bien hecho
Es el identificador del Sprint al que pertenece la retrospectiva
Cuadro 8: retrospectiva
scrum : Tabla que almacena comentarios de cada reunión de Scrum diario.
Campo
Tipo
Descripción
id sprints
int
fecha
date
Es la fecha en que se realiza la reunión
comentario
text
Guarda alguna breve idea u observación del Scrum diario
Es el identificador del Sprint al que pertenece el Scrum diario
Cuadro 9: scrum
sprints : Esta tabla guarda la información de los Sprints que se realizan durante un Proyecto.
Campo
Tipo
Descripción
id sprints
int
nombre
char
id proyecto
int
fecha demo
date
Es la fecha en que se liberará 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 identificador del Sprint
Nombre del Sprint
Es el identificador de los Proyectos
Es el código del miembro encargado de hacer las pruebas
Cuadro 10: sprints
tarea : Esta tabla almacena las tareas, que son divisiones de las historias.
50
Campo
Tipo
Descripción
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 descripción de cada tarea.
Campo
Tipo
Descripción
id tarea
int
Es el identificador de las tareas
descripcion
text
Es una descripción de la tarea
Cuadro 12: tarea descrip
tarea estado : Esta tabla almacena los posibles estados de las tareas.
Campo
Tipo
id estado tarea
int
nom estado tarea
char
Descripción
Es el identificador del estado en que se encuentra la tarea
Es el nombre que recibe el estado
Cuadro 13: tarea estado
tarea estimacion : Esta tabla guarda la estimación inicial de la tarea, la suma del tiempo
de tareas debe ser inferior o igual a la historia a la cual pertenecen.
Campo
Tipo
Descripción
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 modificó la estimación de la tarea
Cuadro 14: tarea estimacion
51
tarea miembros : Esta tabla almacena a los integrantes que trabajan en una tarea especı́fica
y la dedicación que tienen a ésta.
Campo
Tipo
Descripción
id tarea
int
Es el identificador de las tareas
id miembro
int
Es el identificador de los integrantes
Cuadro 15: tarea miembros
Referencias y Bibliografı́a
Bibliografı́a
[1] Oscar Guzmán.
Metodologias ágiles.
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] José Antonio González Seco.
Introducción 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 colaboración. 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
Descargar