MAIES232
MAIES232
CONSEJO ACADÉMICO
Dios:
Tu Divina Misericordia y Providencia permiten que pueda concluir con esta etapa.
Muchas gracias por acompañarme en cada instante de mi vida.
Virgen María:
Reina y Madre de Misericordia. Gracias por tu intercesión y por acercarnos más a
Jesús.
Amigos:
Su experiencia y conocimiento me permitió crecer tanto personal, profesional y
académicamente. Gracias por su amistad y el aprendizaje compartido con todos los
compañeros de la MAIES 2015 – 2016, especialmente a Diego Bedoya, Duglas
Ruano, Lesbia Guerra, MariaJosé Hesse, Renato Valdez, René Cano y Vivian
González.
En Scrum no hay jerarquías especificas sino más bien un equipo auto gestionado
que trabaja con el fin de obtener un software de calidad; si bien, es cierto que hay
tres roles, estos no son jerárquicos sino más bien de trabajo en equipo. Los roles
son dueño del producto quien es el representante del cliente, el equipo quien es el
encargado técnicamente de llevar a cabo el proyecto y el desarrollo de dicho
software, ayuda a resolver efectivamente cualquier inconveniente, principalmente
administrativo, que surja durante su desarrollo.
Con esta metodología se logra la satisfacción del cliente y calidad del desarrollo a
través del trabajo en equipo. Los requerimientos pueden modificarse en el
transcurso del proyecto, dada la flexibilidad que dicho software propone; esta
metodología, permite que los clientes puedan ver el avance entre cada iteración y
asegurarse de que el sistema final cumpla con la calidad esperada.
Este tipo de desarrollo de software está especialmente indicado para equipos que
puedan autogestionar proyectos, en entornos complejos con requerimientos
cambiantes o poco definidos, en donde se necesita obtener rápidamente resultados
de buena calidad.
ÍNDICE GENERAL
I. INTRODUCCIÓN .............................................................................................. 1
II. ANTECEDENTES ............................................................................................. 3
1. Aspectos teóricos .......................................................................................... 3
1.1. Sistema ................................................................................................... 3
1.2. Software .................................................................................................. 4
1.3. Proyecto de software .............................................................................. 5
1.4. Proceso de desarrollo de software .......................................................... 5
2. Modelos de desarrollo de software ................................................................ 7
2.1. Modelo tradicional en cascada ................................................................ 8
2.2. Ventajas del modelo cascada ............................................................... 10
2.3. Desventajas del modelo cascada ......................................................... 10
2.4. Modelo espiral....................................................................................... 11
2.5. Modelo incremental ............................................................................... 13
2.6. Proceso de desarrollo unificado ............................................................ 14
2.7. Características del proceso de desarrollo unificado .............................. 15
2.8. Dirigido por casos de uso...................................................................... 15
2.9. Centrado en la arquitectura................................................................... 16
3. Desarrollo ágil.............................................................................................. 17
3.1. Manifiesto ágil ....................................................................................... 18
3.2. Valores del manifiesto ágil .................................................................... 19
3.3. Principios del Manifiesto Ágil ................................................................ 20
3.4. Habilidades de las personas en el desarrollo ágil ................................. 22
4. Metodologías ágiles de desarrollo de software ........................................... 23
4.1. Principios comunes de las metodologías ágiles .................................... 24
4.2. Desarrollo de software adaptativo ......................................................... 25
4.3. Metodologías Crystal ............................................................................ 28
4.4. Propiedades de las metodologías Crystal ............................................. 29
4.5. Desarrollo impulsado por características .............................................. 30
4.6. Actividades de la metodología FDD ...................................................... 30
4.7. Desarrollo de software ajustado............................................................ 32
4.8. Principios del desarrollo de software ajustado ...................................... 33
4.9. Método de desarrollo dinámico de sistemas ......................................... 34
4.10. Principios de la metodología DSDM .................................................. 34
4.11. Fases de la metodología DSDM ........................................................ 35
5. Metodologías ágiles mejor reconocidas ...................................................... 36
5.1. Programación Extrema ......................................................................... 36
5.2. Valores de la programación extrema .................................................... 37
5.3. Principios de la programación extrema ................................................. 39
5.4. Prácticas de la programación extrema .................................................. 39
5.5. Scrum.................................................................................................... 41
5.6. Beneficios de Scrum ............................................................................. 45
III. JUSTIFICACIÓN ......................................................................................... 47
IV. OBJETIVOS ................................................................................................ 48
1. Objetivo general .......................................................................................... 48
2. Objetivos específicos................................................................................... 48
V. METODOLOGÍA .......................................................................................... 49
1. Tipo de estudio ............................................................................................ 49
1.1. Investigación bibliográfica ..................................................................... 49
2. Método de recolección de datos .................................................................. 49
2.1. Revisión bibliográfica: ........................................................................... 49
VI. RESULTADOS ............................................................................................ 50
VII. DISCUSIÓN DE RESULTADOS ................................................................. 53
VIII. CONCLUSIONES ........................................................................................ 58
IX. RECOMENDACIONES ............................................................................... 59
X. BIBLIOGRAFÍA............................................................................................ 60
ÍNDICE DE FIGURAS
I. INTRODUCCIÓN
La entrega en fases del proyecto final es una de las características que hacen de
Scrum una metodología flexible que permite gestionar de mejor forma el proyecto
ya que al dividirlo en tareas pequeñas se facilita su estimación. La entrega de cada
fase se realiza de acuerdo a las prioridades del cliente.
II. ANTECEDENTES
1. Aspectos teóricos
1.1. Sistema
1.2. Software
Existe también software que inicialmente es genérico, pero que se puede adaptar a
las necesidades del cliente; tal es el caso de los sistemas de planificación de
5
Requerimientos Software
Proceso de desarrollo
de software
1.4.3. Crear una solución adecuada al problema por medio del sistema que
se diseña: por medio del proyecto se da solución a los
requerimientos del cliente y con base en la experiencia acumulada
se crea el documento del proyecto con el diseño y planificación del
sistema, el cual cumple con técnicas estandarizadas.
Para ello, se realiza un cronograma con las tareas de cada persona. Debe ver que
se cuente con los recursos necesarios para que no haya retraso en el desarrollo del
proyecto y que las tareas puedan alcanzarse objetivamente. También, se evalúa la
eficacia de todas las actividades para que el proyecto se finalice en el tiempo
estipulado.
Estos modelos han sido creados con el objetivo de organizar el proceso del
desarrollo de software, para obtener un software eficiente que satisfaga los
requerimientos del cliente en un tiempo razonable.
Se conoce como modelo clásico, modelo tradicional o modelo lineal secuencial. Este
método es considerado como el enfoque clásico para el ciclo de vida del desarrollo
de sistemas, implica un desarrollo rígido y lineal. (Cortés, 2006).
Especificación de
requerimientos
Análisis
Diseño
Codificación
Pruebas
Implementación
Mantenimiento
Cuando se hace la revisión del software y se determina que el proyecto no está listo
para pasar a la siguiente etapa, permanece en la etapa actual hasta que esté
preparado. Este modelo tiene forma de cascada de agua con varios saltos, como
se muestra en la figura 2, en la que cada salto representa cada una de las fases del
ciclo de vida. A grandes rasgos, se inicia con la especificación de requerimientos,
para luego convertirlo en un documento de análisis y diseño del software, para que
este pueda ser codificado; cuando está el software listo, se procede con las pruebas
en las que se trata de detectar cualquier error tanto técnico como de funcionalidad,
se brindan las correcciones necesarias y se procede a la implementación del
producto para que este pueda ser utilizado por el cliente que lo solicitó y se queda
en contacto con el cliente para el mantenimiento respectivo del software.
Cada una de las tareas se evalúa por separado y el equipo que lo desarrolla es
diferente. Al utilizar esta metodología es necesario hacer un análisis de la situación,
por ejemplo, si el cliente quiere intervenir en el proceso una vez iniciado, este
método no sería el indicado; para ello sería necesario un método iterativo. La
especificación de requerimientos no puede ser modificada después de que se ha
concluido con esta etapa. Una modificación durante la ejecución de alguna de las
fases, implicaría reiniciar desde el principio todo el ciclo completo, lo cual implicaría
mayor inversión de tiempo y desarrollo. (Cortés, 2006).
Las actividades están estrictamente ligadas, esto hace que una actividad no
empiece hasta que se termina totalmente la anterior, lo que a veces se traduce en
tiempo perdido al tener que esperar la evolución de cada una de las etapas.
El modelo espiral que definido por Boehm en 1988 como un modelo de proceso de
software evolutivo, utiliza las mejores características del ciclo de vida clásico,
creación de prototipos y agrega un nuevo elemento: análisis de riesgo.
El siguiente paso es resolver los riesgos por medio de hacer un análisis más
detallado como la construcción de prototipos y la simulación. Ya que se evaluaron
los riesgos, se lleva a cabo el desarrollo, seguido de una actividad de planificación
para la siguiente fase. Esto permite que el equipo de desarrollo y el cliente puedan
reaccionar a los riesgos en cada nivel.
13
Análisis de
Planificación
riesgos
Análisis
de riesgo
Análisis de
riesgo
Prototipo
Análisis
Operativo
de riesgo
Prototipo 3
Revisión
Prototipo 2
Prototipo Simulaciones, Modelos,
1 Estándares
Requerimientos
Plan de
desarrollo Validación Diseño
Plan de Codificación
prueba e
Integración
Pruebas
Evaluación del
Implementación Ingeniería
Cliente
extenderse en función de las necesidades de cada empresa. Fue creado por Ivar
Jacobson, Grady Booch y James Rumbaugh.
Pero, realmente, las características que definen este Proceso Unificado son tres:
iterativo e Incremental, Dirigido por casos de uso y Centrado en la Arquitectura.
(Jacobson, 2000).
En base a los casos de uso, los analistas crean una serie de modelos de diseño e
implementación que se llevarán a cabo. Estos modelos deben coincidir con los
casos de uso. Finalmente, los casos de uso se usan para realizar los casos de
16
pruebas del software desarrollado. Los casos de uso ayudan a iniciar de mejor forma
el proceso de desarrollo y proporcionan un hilo conductor durante el ciclo de vida
del desarrollo de software. (Torossi, 2005).
Los casos de uso son utilizados para:
Los casos de uso y la arquitectura están muy relacionados; los casos de uso deben
coincidir con la arquitectura y, a su vez, la arquitectura debe permitir el desarrollo
de los casos de uso requeridos. El arquitecto desarrolla la forma o arquitectura a
partir de la comprensión de un conjunto de los principales casos de uso.
3. Desarrollo ágil
El desarrollo ágil del software surge a mediados de la década de los años 90’s con
puntos de vista contrarios a los métodos tradicionales como el modelo de desarrollo
en cascada, el cual es burocrático y lento para la creación del software.
El desarrollo ágil es una filosofía que describe formas de pensar y trabajar efectiva
y ágilmente un proyecto de software. Es un proceso de desarrollo incremental en el
que se reducen los riesgos por medio de iteraciones cortas, que conlleva
necesariamente a eliminar trámites burocráticos que permitan, de esta forma,
rapidez en el desarrollo y entrega del software.
Existe una buena comunicación entre todas las partes involucradas; esto incluye a
los analistas, codificadores, jefes de proyecto, personas encargadas de hacer
pruebas y clientes. Se solucionan las dudas que surgen y se eliminan los errores
rápidamente; esto, permite un buen grado de sinergia entre el equipo de desarrollo
y alta efectividad en el software. (Pressman, 2010).
18
Personas y Procesos y
comunicación herramientas
Software Documentación
funcional VS exhaustiva
Colaboración Negociación de
con el cliente contratos
Respuesta al Seguimiento de
cambio un plan
Los valores descritos anteriormente fueron la base para proponer los principios del
Manifiesto Ágil, los cuales hacen la diferencia entre un proceso ágil y uno tradicional.
A continuación, se describen los doce principios. Los primeros dos tienen un
enfoque general mientras que los siguientes están más enfocados en el proceso de
desarrollo.
3.3.4. Personas del negocio y los del equipo de desarrollo deben trabajar
juntos a lo largo del proyecto.
3.3.12. Cada cierto tiempo, el equipo debe analizar respecto a cómo llegar
a ser más efectivo y de acuerdo a esto, reubicar su comportamiento.
Esto se evalúa en las reuniones de seguimiento que se tienen con
el equipo. (Cunningham, 2001).
22
3.4.4. Habilidad para tomar decisiones: el equipo debe tener libertad para
tomar las decisiones que considere oportunas, tal como las relativas
a asuntos técnicos del proyecto.
3.4.5. Confianza y respeto mutuos: el equipo ágil debe ser integrado, con
la confianza y el respeto para que se vea reflejado en el avance del
23
3.4.6. Organización propia: el equipo ágil debe auto organizarse para hacer
el trabajo, organizar el proceso que se adapte mejor a su entorno y
organizar la planificación del trabajo a fin de entregar a tiempo el
módulo respectivo del software. El equipo sirve como su propio
gerente. (Canós, Letelier, & Penadés, 2009).
Las metodologías ágiles varían en sus prácticas y en sus fases pero comparten
algunas características, tales como: desarrollo iterativo e incremental, comunicación
y reducción de productos.
Esta metodología, más conocida por su nombre en inglés como “Adaptive Software
Development” y sus siglas ASD, fue creada en 1999 por Jim Highsmith. Propone un
cambio de filosofía en las organizaciones por medio de la transición del modelo
comando-control al modelo liderazgo-colaboración.
Se basa en los conceptos de los sistemas adaptativos complejos que tienen relación
con la inteligencia artificial.
Puede
desviarse
Colaborar Puede
Especular
desviarse
Aprender
Puede
desviarse
liberada en cada ciclo; sin embargo, no es más que una especulación ya que el
carácter adaptativo del proceso permite pequeñas desviaciones en un sentido, por
lo que la metodología propone que cada ciclo se componga de una mezcla entre
funcionalidades críticas, útiles, y opcionales, y prevenga los posibles retrasos que
pudieran surgir o las desviaciones que pueden cambiar el rumbo del proyecto.
Para evaluar la calidad desde el punto de vista del cliente se utilizan grupos de
enfoque en el cliente, en los que se explora un modelo de la aplicación y se anotan
cambios requeridos por el cliente. El enfoque en esta fase, es el de aprender cuales
han sido los errores o desvíos y poder resolverlos, sin buscar culpables. Lo
importante es que el sistema cumpla con lo que necesita el usuario.
27
Es importante que el software cumpla con todos los estándares técnicos y una
arquitectura adecuada, lo que permitirá que el desempeño del software funcione
óptimamente y de esta forma que el cliente este satisfecho con el producto
entregado. (Highsmith, 2000).
Ciclo de aprendizaje
Las metodologías Crystal son una serie que creó Alistair Cockburn; presentan un
enfoque ágil, con énfasis en la comunicación, y aceptan la flexibilidad, lo que las
hace ideales para cuando no es aplicable la disciplina requerida por otras
metodologías como la de programación extrema.
Las personas involucradas eligen aquellos principios que les resultan efectivos y
agregan o quitan principios en base al consenso grupal del equipo de desarrollo. Se
utiliza una nomenclatura de colores de acuerdo al número de integrantes del equipo.
• Amarillo: 10 a 20 personas.
• Naranja: 21 a 50 personas.
• Roja: 51 a 100 personas.
• Lila: 101 a 200 personas.
• Celeste: 201 a 500 personas.
• Azul: 501 o más personas. (Cockburn, 2004).
4.4.3. Comunicación cara a cara: esto se refiere a que el equipo debe estar
en una misma ubicación física, para que haya una comunicación
entre una y otra persona. Esto, permite mayor fluidez entre las ideas
y colaboración para el proyecto.
Esta metodología más conocida por su nombre en inglés como “Feature Driven
Development” y sus siglas FDD, fue creada por Jeff De Luca y Peter Coad en 1998,
FDD se estructura alrededor de la definición de features o características que
representan la funcionalidad del sistema. Las características tienen un alcance
corto, lo que permite su implementación en un par de semanas. Hay una jerarquía
de características, y se agrupan por aspectos comunes del negocio.
Esta metodología, más conocida por su nombre en inglés como “Lean Software
Development” y sus siglas LSD, tiene su origen en Toyota, es una estrategia de
fabricación aplicada con mucho éxito en Japón y ahora famosa en el mundo del
software. En la década de 1950, la industria japonesa se recuperaba de la segunda
guerra mundial; logró aplicar a las fábricas de carros los conceptos de calidad en la
producción.
Taiichi Ohno (1912 – 1990) fue quién inicio la aplicación de este método en Toyota,
cuya estrategia se fundamentó en tres bases:
Esta metodología, más conocida por su nombre en inglés como “Dynamic Systems
Development Method” y sus siglas DSDM, remonta sus inicios a 1994, cuando un
consorcio de 17 personas se reunió en Inglaterra con el objetivo crear una
metodología que pudiera ser utilizada en proyectos del tipo de desarrollo rápido de
aplicaciones (DRA). Al usar las mejores prácticas que se conocían en la industria y
la experiencia de sus fundadores, hizo que la primera versión de DSDM saliera a
principios de 1995, la cual tuvo muy buena aceptación en la industria del software.
(Stapleton, 1997).
Lo que diferencia a este método son los principios alrededor de los que se
estructura, los cuáles hacen énfasis en los equipos de desarrollo, en las reuniones
con el cliente y en las entregas frecuentes de productos. (Stapleton, 1997).
Es conveniente utilizar esta metodología en los siguientes casos:
“Dejar que el desarrollo de software sea divertido, simple, flexible, predecible, con
pocos riesgos, eficiente y más científico”. (Beck, 2000).
37
Escenarios de pruebas
Historias
usuario Requerimientos
Última versión Aprobación
del cliente
Bosquejo Planificación Iteración Pruebas
Arquitectónico de entregas Pequeñas
Próxima versiones
Estimaciones Estimaciones iteración
inciertas de confianza
Bosquejo
5.2.4. Coraje: “Tener una acción efectiva ante los problemas” (Beck, 2000).
Los desarrolladores necesitan coraje para enfrentar situaciones de
la vida real. La simplicidad y comunicación dan valor agregado.
5.2.5. Respeto: este enfatiza la necesidad del respeto entre todos los
miembros del equipo. Se fomenta el respeto por todas las ideas de
cada miembro del equipo; las contribuciones de cada miembro son
valoradas y respetadas para dar coraje entre ellos. (Beck, 2000).
39
Se debe practicar los valores; por ejemplo, al programar en parejas tiene que
practicarse la buena comunicación y la simplicidad en el sistema. A continuación,
las prácticas de la metodología XP:
5.4.1. El juego de la planeación: determina el alcance de la iteración actual,
y las prioridades del cliente para poder implementarlas. Se establece
40
5.5. Scrum
Este artículo describía las mejores prácticas utilizadas en las compañías más
productivas e innovadoras de aquel tiempo: Honda, Fuji-Xerox, 3M, Hewlett-
Packard, entre otras. Afirmaban que la manera de desarrollar productos como el del
sistema de planeación gradual de programas de la NASA, si era un sistema en
cascada, presentaba fallas en su origen.
En 1986, la fecha en que se publicó ese artículo, siete años antes de que el Dr.
Sutherland iniciara la creación de esta metodología aplicada al software, causó
revuelo y asombró, pero nadie hizo nada al respecto.
43
Fue así como nació Scrum, se entregó dicha nueva línea de productos de software
a tiempo, dentro del presupuesto y con menos errores que todos los productos
previos, A partir de ahí, el Dr. Sutherland ha afinado esa metodología para su uso
en toda clase de empresas. En 1995 presentó en coautoría con Ken Schwaber, en
una conferencia en la Asociación de los Sistemas Informáticos, un artículo titulado
“Proceso de desarrollo Scrum”, que codificaba esas prácticas; por ello, también se
considera a Schwaber como coautor de esa metodología. (Sutherland, 2016).
Lista de Colaboración
requerimientos cliente – equipo
priorizada
Colaboración
interna del equipo
Inspección y
adaptación
mensual o
quincenal Inspección y
adaptación diaria
Incremento de
producto
III. JUSTIFICACIÓN
Con Scrum existe una comunicación constante entre el cliente y los demás
involucrados en la realización del proyecto; esto, permite que el cliente, en cualquier
momento, pueda realinear el sistema con los objetivos del negocio y empresa y dar
sus prioridades.
IV. OBJETIVOS
1. Objetivo general
2. Objetivos específicos
2.2. Proponer la realización del sistema final por fases, entregadas conforme a
prioridades y especificaciones establecidas por el cliente, para contribuir a
una buena estimación del proyecto de software y cumplir con la entrega a
tiempo.
49
V. METODOLOGÍA
1. Tipo de estudio
VI. RESULTADOS
Administración efectiva de Proyectos de software con Scrum
INTRODUCCIÓN ..................................................................................................... I
OBJETIVOS ............................................................................................................ II
1. Objetivo general ............................................................................................ II
2. Objetivos específicos ..................................................................................... II
RESULTADO 1 ....................................................................................................... 1
1. Estudio sobre la administración efectiva de proyectos de software por medio
de la metodología Scrum ..................................................................................... 1
2. Roles de Scrum ............................................................................................. 1
2.1. El dueño de producto (DP)...................................................................... 1
2.2. El equipo ................................................................................................. 3
2.3. El encargado del equipo ......................................................................... 3
3. Proceso de Scrum ......................................................................................... 4
3.1. Creación de la fase o ciclo de trabajo ..................................................... 7
3.2. Historias de usuario ................................................................................ 9
3.3. Definición de hecho .............................................................................. 11
3.4. Reunión diaria de Scrum....................................................................... 11
3.5. Actualización de requerimientos de cada fase ...................................... 12
3.6. Refinar la lista de requerimientos .......................................................... 13
3.7. Finalización de la fase .......................................................................... 13
4. Revisar el ciclo de trabajo ........................................................................... 14
5. Verificar el ciclo de trabajo .......................................................................... 14
6. Fase de entrega .......................................................................................... 15
7. Planificación de la entrega .......................................................................... 15
8. Enfocarse en la aplicación ........................................................................... 16
RESULTADO 2 ..................................................................................................... 17
RESULTADO 3 ..................................................................................................... 19
ÍNDICE DE FIGURAS
ÍNDICE DE TABLAS
INTRODUCCIÓN
OBJETIVOS
1. Objetivo general
2. Objetivos específicos
RESULTADO 1
2. Roles de Scrum
El rol del dueño del producto es parecido al rol de jefe del producto; sin embargo, el
dueño del producto es diferente al tradicional jefe de producto porque interactúa
frecuentemente con el equipo, establece personalmente las prioridades y revisa el
resultado en cada iteración que va de 1 a 4 semanas. En Scrum solo una persona
puede tener la autoridad de “dueño del producto”. (Rubin, 2013).
Entradas de
usuarios finales,
clientes, equipo y
otros interesados
en el proyecto Facilitador
Refinamiento Reunión diaria
de los y actualización
requerimientos de artefactos
Fase
Dueño de
producto 1-4
Equipo Tareas Semanas Revisión
Funcionalidades
El equipo
elige que
hacer Sin cambios Incremento de
en duración ni producto
Requeri- potencialmente
Reunión de mientos de objetivos
Requeri planificación la fase entregable
mientos de la fase
Retrospectiva
2.2. El equipo
Los grupos de desarrollo grandes se deben organizar en varios equipos, en los que
cada uno realice diferentes funcionalidades del software, se trabaja en forma
coordinada y, de esta forma, optimiza los recursos para obtener el software en un
tiempo óptimo. (Rubin, 2013).
metodología a las condiciones del equipo actual y controla que todo funcione
correctamente.
El facilitador no puede ser la misma persona que el dueño del producto; incluso,
algunas veces, es necesario que el facilitador haga ver al dueño de producto que
no es posible agregar nuevas funcionalidades a mitad de un ciclo de trabajo.
3. Proceso de Scrum
Inicialmente, el “dueño del producto” da la visión del software a realizar, que luego
evolucionará a una lista priorizada de funcionalidades llamada pila de producto. Ver
5
El equipo da al “dueño del producto” las estimaciones del esfuerzo requerido para
cada requerimiento de la lista. El mismo es responsable de asignar la estimación
que se espera del lado del negocio, sobre cada requerimiento.
Los miembros del equipo ayudan donde está el trabajo y en todo lo posible,
proactivamente. Si hay muchas tareas de pruebas, entonces todo el equipo puede
ayudar. Esto no significa que todos son generalistas; claro está que hay personas
entrenadas especialmente en probar, y programar, pero los otros miembros del
equipo trabajan conjuntamente y aprenden nuevas habilidades de los demás. Por
lo tanto, durante la generación de tareas y estimación de la planificación de la fase,
las personas deben ser asignadas para una sola tarea a la vez y, en caso haya la
necesidad de realizar más de una tarea a la vez, se debe considerar tareas
relacionadas entre sí.
• No empezado
• En progreso
• Completado
9
Estimación: 5
Prioridad: 2
Fuente: Elaboración propia.
La Definición de hecho es un acuerdo del equipo que contiene las condiciones que
deben cumplir los elementos de la lista de requerimientos, que se aceptarán en la
fase para considerarlos completados. Incluye los aspectos técnicos, de
documentación y de pruebas. Cada equipo crea y mantiene su propia definición de
hecho, que suele evolucionar y refinarse conforme el equipo integra, perfecciona y
automatiza sus prácticas de desarrollo.
Indica si una historia de usuario o tarea está finalizada o no, aunque hay ocasiones
en que una tarea no se ha completado o no se ha podido dividir, por lo que se hace
necesario informar sobre el porcentaje de avance sobre dicha tarea. Para ello se
puede crear una definición de hecho que permite establecer avances parciales sin
dejar de tener claro cuando una tarea debe considerarse como finalizada.
Es una reunión corta de aproximadamente 15 minutos que se realiza todos los días,
de preferencia al inicio de la jornada. Todo el equipo asiste a la reunión. Para hacerla
12
corta, se recomienda que todos estén de pie, cada integrante del equipo informa
sobre el progreso y los obstáculos; principalmente, se informa lo siguiente:
La reunión diaria no es una reunión de estado para informar a un jefe sino más bien
sirve para que el equipo auto-organizado pueda compartir entre sus integrantes lo
que sucede. Alguien anota los problemas u obstáculos existentes, y el facilitador se
encarga de ayudar a los miembros del equipo a resolverlos. Si fuera necesario
entrar más en detalle sobre algún problema se hace después de la reunión de
scrum, solamente con las personas interesadas.
Todos los días el equipo actualiza sus estimaciones del trabajo restante y se suman
las horas restantes del equipo como un todo, es aconsejable crear una gráfica del
trabajo restante del ciclo de trabajo para que el equipo pueda identificar visualmente
cuanto trabajo han realizado y el restante, tal como el indicado en la figura 3.
Trabajo restante
120
100
80
60
40
20
0
1 2 3 4 5 6 7 8 9 10 11
Día Trabajo restante
Se hace cerca del final de la fase actual, por el equipo y el dueño de producto. Esto
hace que la planificación de la fase sea entendida de mejor forma para una
estimación más asertiva. El refinamiento es algo breve, no debe incluir muchas
preguntas o confusión, ya que esto sería un mal indicador.
capaces de saber estimar con más precisión y de esta forma se podrá cumplir con
los objetivos de la fase con mayor certeza. Una duración estricta de la fase ayuda
al equipo a saber cuánto puede hacer, y ayudará en la estimación y la planificación
de las próximas entregas.
Esta revisión se realiza al finalizar la fase en donde el equipo revisa en conjunto con
el dueño de producto, quien puede inspeccionar y adaptar el software; también
aprende la forma de uso y da sus comentarios y observaciones. Lo importante de la
revisión es una conversación en profundidad entre el equipo y el dueño de producto
para conocer la situación y lo que piensa del software realizado en la fase.
El facilitador se encarga de validar la definición de hecho realizada durante la
planificación de la fase, y debe decir al dueño de producto si alguno de los
elementos implementados por el equipo no cumple esta definición. De esta forma,
hay mejor calidad del software y los equipos no pueden simular la calidad al
presentar software que parece que funciona bien, pero que está implementado con
código desordenado y sin realizar las pruebas correspondientes.
En esta reunión están presentes el dueño de producto, los integrantes del equipo,
encargado del equipo y directivos, cualquiera puede realizar preguntas y dar su
opinión. (Dimes, 2014).
Una forma de estructurar la verificación es, dibujar dos columnas en una pizarra con
los textos:
Cuando algún elemento se repite, se añade una marca para anotar los elementos
comunes y en base a ello se definen los cambios para la siguiente fase, y se
compromete a revisar los resultados en la verificada de la próxima fase. En la
verificación el equipo analiza cómo ha sido su desempeño durante la fase, si se
lograron alcanzar o no los objetivos definidos al inicio de la iteración y si el cliente
obtuvo el software esperado. (Dimes, 2014).
6. Fase de entrega
En caso de haber algún retraso en el desarrollo, se crea una fase especifica solo
para la entrega en donde se incluyen las pruebas de integración del entorno de
producción; lo ideal, es que ello no sea necesario. El trabajo de la fase de entrega
debería ser mínimo si el equipo ha seguido buenas prácticas de desarrollo, con
refactorización e integración continua y pruebas efectivas durante cada fase.
7. Planificación de la entrega
8. Enfocarse en la aplicación
RESULTADO 2
Esta metodología fomenta el trabajo en equipo, así como la interacción entre las
áreas involucradas en los proyectos que se realizan. Los colaboradores adquieren
un sentido de responsabilidad más amplio, ya que el equipo de trabajo tiene definido
el rol que desempeña y las tareas asignadas.
• El dueño del producto se encarga de definir los objetivos y trazar la ruta para
llegar a ellos; éste, representa al cliente, y define las necesidades del
software.
• El facilitador garantiza que los miembros del equipo de trabajo puedan
realizar sus tareas adecuadamente; es el guía para que los objetivos se
resuelvan a tiempo.
• El equipo Scrum son quienes tienen contacto directo con el software y de
quienes depende el progreso de su desarrollo; se puede considerar que son
la parte fundamental de toda la estrategia Scrum, ya que de su eficiencia
depende la calidad del software para conseguir los resultados esperados.
• Integrantes: forman parte del proyecto, pero desde una perspectiva más
alejada y general; usualmente, son directores de diversas áreas, gerentes
comerciales, proveedores y supervisores.
18
Hace que los proyectos sean flexibles al permitir que los requerimientos sean
modificables y se utiliza la información conforme el propio avance del proyecto, de
forma continua. El software evoluciona en fases con las modificaciones necesarias,
hasta que el cliente apruebe la versión final.
19
RESULTADO 3
Las tareas en Scrum se estiman con el Scrum poker, en donde cada participante
tiene una baraja con las siguientes cartas ½, 1, 2, 3, 5, 6, 7 e infinito. En la
estimación de una tarea cada participante propone la carta con el número de horas
que cree que se necesitan para realizar completamente la tarea. Si la estimación de
la tarea resulta ser infinito significa que la tarea ha de ser dividida en varias tareas
más pequeñas. Si las estimaciones son muy desiguales, el equipo discute con los
participantes que han realizado las estimaciones más alejadas de la media para que
justifiquen su elección y aclaren con el dueño de producto el alcance de la tarea con
el fin de aproximar las estimaciones con los demás miembros del equipo.
El proceso de estimación implica realizar lo siguiente:
20
Esta técnica hace participar a todos los asistentes, reduce el cuarto de hora o la
media hora de tiempo de estimación de una funcionalidad, a escasos minutos,
consigue alcanzar consensos sin discusiones y, además hace más dinámica la
estimación.
53
que se encuentran a cada fase, para buscarles una solución pronta y evitar que el
proyecto se atrase. Lo importante de esta reunión es que se informe del avance real
para que el equipo pueda reaccionar acorde a la planificación y cumpla con las
entregas acordadas.
La relevancia de integrar conforme transcurre cada fase del sistema hasta llegar a
la versión final, es que al llegar a la última versión prácticamente ya se tiene todo el
sistema requerido por el cliente, se evita tener instalaciones en producción
extensiva, lo cual disminuye el tiempo de instalación final, ya que se distribuyó
conforme la instalación de cada fase. Se ve factible realizar la gestión de un
proyecto de software con la metodología Scrum, dado su modelo de desarrollo
continuo en donde no hay jerarquías especificas sino más bien un equipo auto
gestionado que trabaja con el fin de obtener un software de calidad.
El hecho de que el equipo es auto organizado otorga mayor confianza entre los
miembros del equipo y hace que la información se comparta fácilmente y genera un
ambiente de confianza entre ellos. El equipo, de igual forma, está completamente
comprometido con el proyecto y hace todo lo posible para poder entregarlo en la
fecha pactada, con los descansos oportunos.
Se estuvo de acuerdo con que el equipo defina con el cliente la creación de la lista
de requerimientos de acuerdo a prioridades, ya que esto provee una estimación más
efectiva y el equipo puede aportar ideas al cliente que hagan que el sistema sea
más funcional y ambas partes están conscientes de lo acordado.
Scrum propone realizar entregas parciales del sistema de acuerdo a las prioridades
del cliente con entregas iniciales las que generen más valor para el cliente; conforme
el avance del proyecto estas prioridades pueden cambiar.
Con este estudio se hizo notar que con Scrum se entrega, de manera regular,
avances del sistema al cliente; de esta forma, él puede validar oportunamente
cualquier modificación que considere prudente realizar.
Hay que resaltar que todo el equipo debe tener conocimiento técnico y trabajar con
la misma visión del software que se va a crear; por ello, la importancia de las
reuniones de seguimiento y el tamaño del equipo contribuye a que el software se
realice en el tiempo estipulado. De acuerdo a la estimación del proyecto, se debe
proponer la cantidad de personas que estará involucrada y de esta forma, se pueda
cumplir a cabalidad con el tiempo acordado.
58
VIII. CONCLUSIONES
IX. RECOMENDACIONES
X. BIBLIOGRAFÍA
Agile Alliance. (2015). Obtenido del sitio web de Agile Alliance: recuperado el 7 de
julio de 2016 de https://www.agilealliance.org/
Alaimo, M., & Salías, M. (2015). Proyectos ágiles con #Scrum. Flexibilidad,
aprendizaje, innovación y colaboración en contextos complejos. Buenos
Aires, Argentina: Kleer.
Albaladejo, X. (2013). Obtenido del sitio web de Proyecto Agiles: recuperado el 7 de
julio de 2016 de https://proyectosagiles.org
Anderson, A., Jeffries, R., & Hendrickson, C. (2001). Extreme Programming
Installed. Estados Unidos de América: Addison-Wesley.
Appelo, J. (2011). Management 3.0. Leading agile developers, developing agile
leaders. Estados Unidos de América: Addison Wesley.
Applying UML and patterns. (2002). An introduction to object-oriented analysis and
design and the unified process. United States: Prentice Hall.
Barranco, J. (2001). Metodología del análisis estructurado de sistemas. (2 ed.).
España: Universidad Pontificia Comillas de Madrid.
Beck, K. (2000). Extreme Programming Explained. Embrace change. Estados
Unidos de América: Addison-Wesley.
Brechner, E. (2015). Agile project management with Kanban. Estados Unidos de
América: Microsoft Press.
Camposantos, A. (2014). Las metodologías ágiles en los proyectos de software.
Estados Unidos: Amazon Media EU.
Canós, J., Letelier, P., & Penadés, M. (2009). Métodologías Ágiles en el Desarrollo
de Software. Valencia, España: DSIC -Universidad Politécnica de Valencia.
Recuperado el 15 de agosto de 2016 de
http://www.yises.com/pdfs/agil/TodoAgil.pdf
Cockburn, A. (2004). Crystal clear. A human powered methodology for small teams.
Estados Unidos de América: Addison Wesley.
61
Cockburn, A., & Highsmith, J. (2007). Agile software development. The cooperative
game. (2 ed.). Estados Unidos de América: Addison Wesley.
Cohn, M. (2004). User stories applied. For agile software development. Estados
Unidos de América: Addison Wesley.
Cohn, M. (2006). Agile estimating and planning. Estados Unidos de América:
Prentice Hall.
Cortés, R. (2006). Introducción al análisis de sistemas y la ingeniería de software.
Costa Rica: EUNED.
Cunningham, W. (2001). Obtenido del sitio web de Manifesto: recuperado el 18 de
agosto de 2016 de http://agilemanifesto.org/iso/es/manifesto.html
Deemer, P., Benefield, G., Larman, C., & Vodde, B. (2009). The Scrum Primer.
Estados Unidos de América: Scrum Training Institute.
DeMarco, T., & T., L. (2013). Peopleware. Productive projects and teams. (3 ed.).
Estados Unidos de América: Addison Wesley.
Derby, E., & Larsen, D. (2006). Agile retrospectives. Making good teams great.
Estados Unidos de América: Pragmatic Bookshelf.
Dimes, T. (2014). Scrum Essencial. Estados Unidos de América: BabelCube, Inc.
Dimes, T. (2015). Conceptos básicos de Scrum. España: Babelcube Inc.
Fox, A., & Patterson, D. (2015). Desarrollando software como servicio. Un enfoque
ágil utilizando computación en la nube. Estados Unidos de América:
Strawberry Canyon LLC.
Greene, J., & Stellman, A. (2015). Learning agile. Understanding Scrum, Xp, Lean,
and Kanban. Estados Unidos de América: O'Reilly Media, Inc.
Gutiérrez, J., & Borillo, R. (2012). 2a Conferencia Agile Spain CAS2011. Castellón,
España: Universitat Jaume I.
Herranz, R. (2016). Despegar con Scrum. España: Utópica Informática.
Highsmith, J. (2000). Adaptive software development. A collaborative approach to
managing complex systems. Nueva York, Estados Unidos de América.:
Dorset House, Inco.
Highsmith, J. (2010). Obtenido del sitio web de Jim Highsmith: recuperado el 9 de
septiembre de 2016 de http://jimhighsmith.com/
62
Sutherland, J., & K., S. (2012). Software in 30 days. Nueva Jersey, Estados Unidos
de América: John Wiley & Sons, Inc.
Sutherland, J., Solingen, R., & Rustenburg, E. (2011). The power of Scrum. Carolina
del Sur, Estados Unidos de América: CreateSpace.
Takeuchi, H., & Nonaka, I. (1986). The New New Product Development Game.
Harvard Business Review, 285-305.
Toro López, F. (2013). Administración de proyectos de informática. Bogotá,
Colombia: Ecoe Ediciones.
Torossi, G. (2005). El proceso unificado de desarrollo de software. Argentina:
Universidad Tecnológica.
Watts, G. (2013). Scrum mastery. From good to great servant leadership. Estados
Unidos de América: Inspect & Adapt Ltd.
Wells, D. (2009). Obtenido del sitio web de Extreme Programming: recuperado el 9
de septiembre de 2016 de http://www.extremeprogramming.org/
Winder, R. (1995). Desarrollo de software con C++. Madrid, España: Diaz de
Santos, S.A.
Pablo Cesar Paniagua Gonzalez
AUTOR
Maria Ernestina
DIRECTORA