SlideShare una empresa de Scribd logo
1 de 41
Descargar para leer sin conexión
¿Cómo Git favorece los
procesos de desarrollo Scrum?
Ing. Ramon González De la Calle
Web: El Catalejo de Rami
vs
Punto de partida
Las metodologías de desarrollo ágiles
provocan:
 Una rápida evolución en el proyecto.
 Muchos cambios en los requerimientos,
funcionalidades y en el código.
 Despliegue de varias versiones del
producto, en ocasiones
simultáneamente.
¿Qué es Scrum?
 Framework de gestión de proyectos para el
desarrollo incremental de productos en uno o
más equipos auto-gestionados de alrededor
de 7 personas cada uno.
 Guiado por iteraciones llamadas Sprints
 Cada Sprint debería entregar software
funcional.
¿Qué es un Sprint?
¿Qué propone Scrum?
MVP
Version: 1.0
Ver.: 1.5
Ver.: 2.0
Ver.: 3.0
Artefactos de Scrum
Chasis
Amortiguadores
Motor
Sistema Eléctrico
Ruedas
Carrocería
Product Backlog
Item:
• Especifica el “Qué” de un
requerimiento del usuario
• Definición clara de “Terminado”
• Tiene criterios de “Aceptación”
Sprints & Product Backlog
Amortiguadores
Motor
Sistema Eléctrico
Carrocería
Ruedas
Chasis
Sprint 1 MVP
Minimum Valuable Product
Ver.: 1.0
Nuevo
Amortiguadores
Motor
Sistema Eléctrico
Carrocería
Ruedas
Chasis
Sprint 2 Nuevo
Sprints & Product Backlog
Ver.: 1.5 (actualización)
Mejora
Amortiguadores
Motor
Sistema Eléctrico
Carrocería
Ruedas
Chasis
Sprint 3
Ver.: 2.0 (nueva versión)Nuevo
Nuevo
Nuevo
Sprints & Product Backlog
Nuevo
Mejora
Amortiguadores
Motor
Sistema Eléctrico
Carrocería
Ruedas
Chasis
Sprint 4
Ver.: 3.0 (nueva version)
Mejora
Mejora
Mejora
Sprints & Product Backlog
Navegación GPS
Mejora
Mejora
Mejora
Nuevo
Problemas
• Cada Sprint introduce nuevos componentes.
• Muchos de los componentes ya desarrollados
son mejorados constantemente.
• Nuevas versiones de productos son creadas aún
cuando seguimos manteniendo por algún
tiempo las versiones antiguas.
¿Qué pasa si no gestionamos el
cambio correctamente?
Dependencias
Desarrollador
Manifiesto por el Desarrollo de
Software Ágil
Estamos descubriendo mejores formas de desarrollar software
haciéndolo y ayudando a otros a hacerlo. Y hemos aprendido a
valorar:
Individuos e iteraciones sobre procesos y herramientas
Software funcional sobre documentación exhaustiva.
Colaboración con el cliente sobre negociación de contratos.
Responder al cambio sobre seguir un plan
Esto quiere decir que, valoramos los aspectos a la derecha,
pero los de la izquierda los valoramos aún más.
¿Qué necesito?
1. Recordar uno de los principios del desarrollo
Ágil:
 Integración Constante
2. Una herramienta efectiva:
 Git
¿Qué es Git?
• Sistema de Control de Versiones Distribuido
• Origen:
 Es desarrollado para el trabajo en el kernel de
Linux
 Está diseñado para ser usado vía línea de
comandos.
¿Qué es Git?
• Highlights
 Software libre
 Favorece los desarrollos no lineales y
distribuidos
 Gestiona eficientemente proyectos de
larga duración.
 100% funcional en local (offline)
 Usa SHA-1 para escribir la historia
¿Quién usa Git?
Sistema Centralizado
• Subversion
• Perforce
• CVS
• ClearCase
Sistema Distribuido
• Git
• Mercurial
• Fossil
• Bazaar
Áreas de trabajo de Git
Áreas de trabajo de Git
• Al crear un archivo este se marca como untracked
• Si editas un archivo este se marca como modified
• Para registrar los cambios es necesario pasarlos al
área de preparación
Áreas de trabajo de Git
• Para pasar los archivos al área de preparación se
usa el comando:
$ git add home.html
Áreas de trabajo de Git
• Para crear confirmaciones (commits) se usa el
comando:
$ git commit –m “Página home diseñada y lista”
Modelo de datos
• Instantáneas de todos los archivos en cada confirmación
• Para mantener la integridad de los datos se usa el
mecanismo de comprobación hash SHA-1
Branching (ramas)
• El Branching es la característica más popular de Git
• Diseñado para trabajar de manera modular y aislado.
• Ligero y rápido para crear y mezclar ramas
• La rama por defecto de Git es Master
¿Qué es una rama?
• Una rama es simplemente un puntero móvil que apunta
a una de las confirmaciones.
• Para crear una nueva rama se usa el comando
$ git branch testing
Branching (ramas)
El puntero HEAD apunta a la rama en
la que te encuentras actualmente.
Branching (ramas)
Para cambiar de rama se usa el comando:
$ git checkout testing
Branching(ramas)
Avanzando en una rama creando nuevos
commits.
$ git commit –m “User Story 1 Tests Passed!”
Branching(ramas)
Volviendo a la rama master
$ git checkout master
Branching(ramas)
Avanzando un poco más en la rama master
$ git commit –m “User Story 2 ready!”
Merging (ramas)
$ git merge testing
• Fusión a tres bandas: las dos puntas de
las ramas y el ancestro en común.
Merging (ramas)
• Una nueva confirmación es creada avanzando la rama
destino hasta ella. En este caso master
Uso de Git con Scrum
Ver.: 1.5
Ver.: 2.0
Ver.: 3.0
MVP
Version: 1.0
Flujo de trabajo ramificado
master
Sprint 1 Sprint 2 Sprint 3
Ver.:1.0 Ver.:1.5
Ver.:2.0
Mantener siempre la
rama master “limpia”
No mezclar hasta alcanzar
los criterios de aceptación
Abrir una rama por
cada nueva versión
Proceso Scrum lineal
Flujo de trabajo ramificado
master
Sprint 4
Ver.:2.0
Bug 15
La rama master ha sido
“contaminada” con una
mezcla no asegurada.
Ver.: 3.0
Fix merge
Ver.:2.1
Atraso en el tiempo de
entrega.
Ramificaciones imprevistas
master
Sprint 4
Ver.:2.0
Bug 15
El objetivo de la rama de
integración es resolver los
conflictos y pasar las pruebas de
integración.
Ver.: 3.0
Ver.:2.1
Integración
Flujo de trabajo ramificado
Ramificaciones imprevistas
Solución
Uso de Git con Scrum
Ver.:1.0
master
Sprint 1
Team 1
Sprint 1
Team 2
Ver.:2.0
integración
Cuando se trabaja en equipos en
paralelo la rama de integración
adquiere mas relevancia.
Equipos en paralelo
Conclusiones y recomendaciones
1. Prepararse para el cambio es la mejor forma de
responder a él.
2. Los flujos de trabajo ramificados son una de las
ventajas que ofrece Git para trabajar
metodologías ágiles.
3. En procesos Scrum deberíamos crear una rama
para cada Sprint.
3. Es saludable mantener la rama master limpia
de confirmaciones no seguras.
4. No debemos mezclar nuestro trabajo hasta
alcanzar los criterios de aceptación.
5. Crear una rama para cada versión o release.
6. Una rama de integración nos brinda seguridad
en el trabajo.
Conclusiones y recomendaciones
Muchas Gracias.

Más contenido relacionado

La actualidad más candente

La trazabilidad de artefactos software en el contexto de nuevos paradigmas de...
La trazabilidad de artefactos software en el contexto de nuevos paradigmas de...La trazabilidad de artefactos software en el contexto de nuevos paradigmas de...
La trazabilidad de artefactos software en el contexto de nuevos paradigmas de...Marta Silvia Tabares
 
CMMI + SCRUM, NO! CMMI VS SCRUM!
CMMI + SCRUM, NO! CMMI VS SCRUM! CMMI + SCRUM, NO! CMMI VS SCRUM!
CMMI + SCRUM, NO! CMMI VS SCRUM! Yesi Campa
 
Linea de Produccion de Software y Metodo Watch
Linea de Produccion de Software y Metodo WatchLinea de Produccion de Software y Metodo Watch
Linea de Produccion de Software y Metodo WatchEdisson Acosta
 
Metodologías para el desarrollo de aplicaciones móviles
Metodologías para el desarrollo de aplicaciones móvilesMetodologías para el desarrollo de aplicaciones móviles
Metodologías para el desarrollo de aplicaciones móvilesJaqueline Luna
 
Etapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del SoftwareEtapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del SoftwareT.I.C
 
Metodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y EmergentesMetodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y EmergentesMiguel Rodríguez
 
Ppt de ingenieria de requerimiento
Ppt de ingenieria de requerimientoPpt de ingenieria de requerimiento
Ppt de ingenieria de requerimientomely1930
 
7. cambios en el software y mejora de procesos
7. cambios en el software y mejora de procesos7. cambios en el software y mejora de procesos
7. cambios en el software y mejora de procesossilviamap64
 
extreme Programming
extreme Programmingextreme Programming
extreme ProgrammingBilal Shah
 

La actualidad más candente (20)

La trazabilidad de artefactos software en el contexto de nuevos paradigmas de...
La trazabilidad de artefactos software en el contexto de nuevos paradigmas de...La trazabilidad de artefactos software en el contexto de nuevos paradigmas de...
La trazabilidad de artefactos software en el contexto de nuevos paradigmas de...
 
Curso Uml 2.6 Otros Diagramas
Curso Uml   2.6 Otros DiagramasCurso Uml   2.6 Otros Diagramas
Curso Uml 2.6 Otros Diagramas
 
Mitos de-software.
Mitos de-software.Mitos de-software.
Mitos de-software.
 
1. el proceso unificado
1. el proceso unificado1. el proceso unificado
1. el proceso unificado
 
CMMI + SCRUM, NO! CMMI VS SCRUM!
CMMI + SCRUM, NO! CMMI VS SCRUM! CMMI + SCRUM, NO! CMMI VS SCRUM!
CMMI + SCRUM, NO! CMMI VS SCRUM!
 
Metodologías de Desarrollo de Software
Metodologías de Desarrollo de SoftwareMetodologías de Desarrollo de Software
Metodologías de Desarrollo de Software
 
Linea de Produccion de Software y Metodo Watch
Linea de Produccion de Software y Metodo WatchLinea de Produccion de Software y Metodo Watch
Linea de Produccion de Software y Metodo Watch
 
Entrega por etapas
Entrega por etapasEntrega por etapas
Entrega por etapas
 
Metodologías para el desarrollo de aplicaciones móviles
Metodologías para el desarrollo de aplicaciones móvilesMetodologías para el desarrollo de aplicaciones móviles
Metodologías para el desarrollo de aplicaciones móviles
 
Uso de hilos
Uso de hilosUso de hilos
Uso de hilos
 
Programando en capas
Programando en capasProgramando en capas
Programando en capas
 
Etapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del SoftwareEtapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del Software
 
Metodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y EmergentesMetodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y Emergentes
 
Ppt de ingenieria de requerimiento
Ppt de ingenieria de requerimientoPpt de ingenieria de requerimiento
Ppt de ingenieria de requerimiento
 
Scrum como metodologia agil
Scrum como metodologia agilScrum como metodologia agil
Scrum como metodologia agil
 
7. cambios en el software y mejora de procesos
7. cambios en el software y mejora de procesos7. cambios en el software y mejora de procesos
7. cambios en el software y mejora de procesos
 
Metodologia Agil
Metodologia AgilMetodologia Agil
Metodologia Agil
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
extreme Programming
extreme Programmingextreme Programming
extreme Programming
 
tecnicas de revisión del software
tecnicas de revisión del softwaretecnicas de revisión del software
tecnicas de revisión del software
 

Destacado

Introduccion a Scrum con caso práctico
Introduccion a Scrum  con caso prácticoIntroduccion a Scrum  con caso práctico
Introduccion a Scrum con caso prácticoDaniel Escribano Ales
 
Cas 2011 Integración continua vs controlada
Cas 2011 Integración continua vs controladaCas 2011 Integración continua vs controlada
Cas 2011 Integración continua vs controladapsluaces
 
No todo es scrum en agilidad: kanban
No todo es scrum en agilidad: kanbanNo todo es scrum en agilidad: kanban
No todo es scrum en agilidad: kanbanJorge Jiménez
 
Scrum y la gestión de proyecto Web
Scrum y la gestión de proyecto WebScrum y la gestión de proyecto Web
Scrum y la gestión de proyecto Webinvestic
 
Escribir Historias de Usuario Maravillosas
Escribir Historias de Usuario MaravillosasEscribir Historias de Usuario Maravillosas
Escribir Historias de Usuario MaravillosasCarlton Nettleton
 
Taller Historias de usuario 20130117
Taller Historias de usuario 20130117Taller Historias de usuario 20130117
Taller Historias de usuario 20130117Jose Manuel Beas
 
Un poco más de Agile y Scrum à la Pablo
Un poco más de Agile y Scrum à la PabloUn poco más de Agile y Scrum à la Pablo
Un poco más de Agile y Scrum à la PabloPablo García Montes
 
Historias de usuario¿Por qué? ¿Qué son? ¿Cómo son?
Historias de usuario¿Por qué? ¿Qué son? ¿Cómo son?Historias de usuario¿Por qué? ¿Qué son? ¿Cómo son?
Historias de usuario¿Por qué? ¿Qué son? ¿Cómo son?Miquel Mora
 
INGENIERIA DE SOFTWARE - METODOLOGIA SCRUM, EJEMPLO PRACTICO, t3
INGENIERIA DE SOFTWARE - METODOLOGIA SCRUM, EJEMPLO PRACTICO, t3INGENIERIA DE SOFTWARE - METODOLOGIA SCRUM, EJEMPLO PRACTICO, t3
INGENIERIA DE SOFTWARE - METODOLOGIA SCRUM, EJEMPLO PRACTICO, t3Saul Villarreal
 
Scrum para desarrollo de software
Scrum para desarrollo de softwareScrum para desarrollo de software
Scrum para desarrollo de softwareGabriel Falcone
 
¿Es Scrum compatible con tu Cultura Organizacional?
¿Es Scrum compatible con tu Cultura Organizacional?¿Es Scrum compatible con tu Cultura Organizacional?
¿Es Scrum compatible con tu Cultura Organizacional?Johnny Ordóñez
 
Equipos Auto-organizados
Equipos Auto-organizadosEquipos Auto-organizados
Equipos Auto-organizadosSoftware Guru
 

Destacado (20)

Introduccion a Scrum con caso práctico
Introduccion a Scrum  con caso prácticoIntroduccion a Scrum  con caso práctico
Introduccion a Scrum con caso práctico
 
Lean, Agle, Scrum Y Contratos Ágiles
Lean, Agle, Scrum Y Contratos ÁgilesLean, Agle, Scrum Y Contratos Ágiles
Lean, Agle, Scrum Y Contratos Ágiles
 
Cas 2011 Integración continua vs controlada
Cas 2011 Integración continua vs controladaCas 2011 Integración continua vs controlada
Cas 2011 Integración continua vs controlada
 
No todo es scrum en agilidad: kanban
No todo es scrum en agilidad: kanbanNo todo es scrum en agilidad: kanban
No todo es scrum en agilidad: kanban
 
Scrum y la gestión de proyecto Web
Scrum y la gestión de proyecto WebScrum y la gestión de proyecto Web
Scrum y la gestión de proyecto Web
 
Clase 02 Scrum
Clase 02 ScrumClase 02 Scrum
Clase 02 Scrum
 
Historias de Usuario (Tarjetas)
Historias de Usuario (Tarjetas)Historias de Usuario (Tarjetas)
Historias de Usuario (Tarjetas)
 
Escribir Historias de Usuario Maravillosas
Escribir Historias de Usuario MaravillosasEscribir Historias de Usuario Maravillosas
Escribir Historias de Usuario Maravillosas
 
Taller Historias de usuario 20130117
Taller Historias de usuario 20130117Taller Historias de usuario 20130117
Taller Historias de usuario 20130117
 
Un poco más de Agile y Scrum à la Pablo
Un poco más de Agile y Scrum à la PabloUn poco más de Agile y Scrum à la Pablo
Un poco más de Agile y Scrum à la Pablo
 
Scrum paso a paso
Scrum paso a pasoScrum paso a paso
Scrum paso a paso
 
Scrum
ScrumScrum
Scrum
 
Historias de usuario¿Por qué? ¿Qué son? ¿Cómo son?
Historias de usuario¿Por qué? ¿Qué son? ¿Cómo son?Historias de usuario¿Por qué? ¿Qué son? ¿Cómo son?
Historias de usuario¿Por qué? ¿Qué son? ¿Cómo son?
 
INGENIERIA DE SOFTWARE - METODOLOGIA SCRUM, EJEMPLO PRACTICO, t3
INGENIERIA DE SOFTWARE - METODOLOGIA SCRUM, EJEMPLO PRACTICO, t3INGENIERIA DE SOFTWARE - METODOLOGIA SCRUM, EJEMPLO PRACTICO, t3
INGENIERIA DE SOFTWARE - METODOLOGIA SCRUM, EJEMPLO PRACTICO, t3
 
Scrum Metodologia Agil
Scrum Metodologia AgilScrum Metodologia Agil
Scrum Metodologia Agil
 
Scrum para desarrollo de software
Scrum para desarrollo de softwareScrum para desarrollo de software
Scrum para desarrollo de software
 
Metodologia ágil Scrum
Metodologia ágil ScrumMetodologia ágil Scrum
Metodologia ágil Scrum
 
Exposicion Scrum
Exposicion ScrumExposicion Scrum
Exposicion Scrum
 
¿Es Scrum compatible con tu Cultura Organizacional?
¿Es Scrum compatible con tu Cultura Organizacional?¿Es Scrum compatible con tu Cultura Organizacional?
¿Es Scrum compatible con tu Cultura Organizacional?
 
Equipos Auto-organizados
Equipos Auto-organizadosEquipos Auto-organizados
Equipos Auto-organizados
 

Similar a Git with Scrum en español

Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando GitHugo Gilmar Erazo
 
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDADTodo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDADDIEGOALBERTOENRIQUEZ4
 
Primeros pasos con git
Primeros pasos con gitPrimeros pasos con git
Primeros pasos con gitJuan Vladimir
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a GitManuel Ceron
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasJosé Moreno
 
Serling dev team, development process
Serling dev team, development processSerling dev team, development process
Serling dev team, development processDomingo Suarez Torres
 
Estrategias branching: trabajando con git y personas
 Estrategias branching: trabajando con git y personas Estrategias branching: trabajando con git y personas
Estrategias branching: trabajando con git y personasJesús López de la Cruz
 
Más allá de Git add/commit/push
Más allá de Git add/commit/pushMás allá de Git add/commit/push
Más allá de Git add/commit/pushAlexis Lopez
 
Git with gifs
Git with gifsGit with gifs
Git with gifsbetabeers
 
Git: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoGit: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoAprende Git
 
Mejora tu productividad con git
Mejora tu productividad con gitMejora tu productividad con git
Mejora tu productividad con gitch1l3no
 
Configuración de software
Configuración de softwareConfiguración de software
Configuración de softwareJorge Rodriguez
 
Dynamics saturday madrid 2019 jose antonio estevan share
Dynamics saturday madrid 2019   jose antonio estevan shareDynamics saturday madrid 2019   jose antonio estevan share
Dynamics saturday madrid 2019 jose antonio estevan shareDemian Raschkovan
 
¿Cómo elegir tu workflow de Git?
¿Cómo elegir tu workflow de Git?¿Cómo elegir tu workflow de Git?
¿Cómo elegir tu workflow de Git?Gerónimo Di Pierro
 

Similar a Git with Scrum en español (20)

Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando Git
 
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDADTodo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
 
Primeros pasos con git
Primeros pasos con gitPrimeros pasos con git
Primeros pasos con git
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
Replacing SVN with Git for managers
Replacing SVN with Git for managersReplacing SVN with Git for managers
Replacing SVN with Git for managers
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones Seguras
 
Git & GitHub Part I
Git & GitHub Part IGit & GitHub Part I
Git & GitHub Part I
 
Serling dev team, development process
Serling dev team, development processSerling dev team, development process
Serling dev team, development process
 
Git y github básico
Git y github básicoGit y github básico
Git y github básico
 
Intro a GIT
Intro a GITIntro a GIT
Intro a GIT
 
Estrategias branching: trabajando con git y personas
 Estrategias branching: trabajando con git y personas Estrategias branching: trabajando con git y personas
Estrategias branching: trabajando con git y personas
 
Un modelo exitoso para git
Un modelo exitoso para gitUn modelo exitoso para git
Un modelo exitoso para git
 
Más allá de Git add/commit/push
Más allá de Git add/commit/pushMás allá de Git add/commit/push
Más allá de Git add/commit/push
 
Git with gifs
Git with gifsGit with gifs
Git with gifs
 
Git: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoGit: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativo
 
Mejora tu productividad con git
Mejora tu productividad con gitMejora tu productividad con git
Mejora tu productividad con git
 
Configuración de software
Configuración de softwareConfiguración de software
Configuración de software
 
Git nivel samurai
Git nivel samuraiGit nivel samurai
Git nivel samurai
 
Dynamics saturday madrid 2019 jose antonio estevan share
Dynamics saturday madrid 2019   jose antonio estevan shareDynamics saturday madrid 2019   jose antonio estevan share
Dynamics saturday madrid 2019 jose antonio estevan share
 
¿Cómo elegir tu workflow de Git?
¿Cómo elegir tu workflow de Git?¿Cómo elegir tu workflow de Git?
¿Cómo elegir tu workflow de Git?
 

Git with Scrum en español

  • 1. ¿Cómo Git favorece los procesos de desarrollo Scrum? Ing. Ramon González De la Calle Web: El Catalejo de Rami vs
  • 2. Punto de partida Las metodologías de desarrollo ágiles provocan:  Una rápida evolución en el proyecto.  Muchos cambios en los requerimientos, funcionalidades y en el código.  Despliegue de varias versiones del producto, en ocasiones simultáneamente.
  • 3. ¿Qué es Scrum?  Framework de gestión de proyectos para el desarrollo incremental de productos en uno o más equipos auto-gestionados de alrededor de 7 personas cada uno.  Guiado por iteraciones llamadas Sprints  Cada Sprint debería entregar software funcional.
  • 4. ¿Qué es un Sprint?
  • 5. ¿Qué propone Scrum? MVP Version: 1.0 Ver.: 1.5 Ver.: 2.0 Ver.: 3.0
  • 6. Artefactos de Scrum Chasis Amortiguadores Motor Sistema Eléctrico Ruedas Carrocería Product Backlog Item: • Especifica el “Qué” de un requerimiento del usuario • Definición clara de “Terminado” • Tiene criterios de “Aceptación”
  • 7. Sprints & Product Backlog Amortiguadores Motor Sistema Eléctrico Carrocería Ruedas Chasis Sprint 1 MVP Minimum Valuable Product Ver.: 1.0 Nuevo
  • 8. Amortiguadores Motor Sistema Eléctrico Carrocería Ruedas Chasis Sprint 2 Nuevo Sprints & Product Backlog Ver.: 1.5 (actualización) Mejora
  • 9. Amortiguadores Motor Sistema Eléctrico Carrocería Ruedas Chasis Sprint 3 Ver.: 2.0 (nueva versión)Nuevo Nuevo Nuevo Sprints & Product Backlog Nuevo Mejora
  • 10. Amortiguadores Motor Sistema Eléctrico Carrocería Ruedas Chasis Sprint 4 Ver.: 3.0 (nueva version) Mejora Mejora Mejora Sprints & Product Backlog Navegación GPS Mejora Mejora Mejora Nuevo
  • 11. Problemas • Cada Sprint introduce nuevos componentes. • Muchos de los componentes ya desarrollados son mejorados constantemente. • Nuevas versiones de productos son creadas aún cuando seguimos manteniendo por algún tiempo las versiones antiguas.
  • 12. ¿Qué pasa si no gestionamos el cambio correctamente? Dependencias Desarrollador
  • 13. Manifiesto por el Desarrollo de Software Ágil Estamos descubriendo mejores formas de desarrollar software haciéndolo y ayudando a otros a hacerlo. Y hemos aprendido a valorar: Individuos e iteraciones sobre procesos y herramientas Software funcional sobre documentación exhaustiva. Colaboración con el cliente sobre negociación de contratos. Responder al cambio sobre seguir un plan Esto quiere decir que, valoramos los aspectos a la derecha, pero los de la izquierda los valoramos aún más.
  • 14. ¿Qué necesito? 1. Recordar uno de los principios del desarrollo Ágil:  Integración Constante 2. Una herramienta efectiva:  Git
  • 15. ¿Qué es Git? • Sistema de Control de Versiones Distribuido • Origen:  Es desarrollado para el trabajo en el kernel de Linux  Está diseñado para ser usado vía línea de comandos.
  • 16. ¿Qué es Git? • Highlights  Software libre  Favorece los desarrollos no lineales y distribuidos  Gestiona eficientemente proyectos de larga duración.  100% funcional en local (offline)  Usa SHA-1 para escribir la historia
  • 18. Sistema Centralizado • Subversion • Perforce • CVS • ClearCase
  • 19. Sistema Distribuido • Git • Mercurial • Fossil • Bazaar
  • 21. Áreas de trabajo de Git • Al crear un archivo este se marca como untracked • Si editas un archivo este se marca como modified • Para registrar los cambios es necesario pasarlos al área de preparación
  • 22. Áreas de trabajo de Git • Para pasar los archivos al área de preparación se usa el comando: $ git add home.html
  • 23. Áreas de trabajo de Git • Para crear confirmaciones (commits) se usa el comando: $ git commit –m “Página home diseñada y lista”
  • 24. Modelo de datos • Instantáneas de todos los archivos en cada confirmación • Para mantener la integridad de los datos se usa el mecanismo de comprobación hash SHA-1
  • 25. Branching (ramas) • El Branching es la característica más popular de Git • Diseñado para trabajar de manera modular y aislado. • Ligero y rápido para crear y mezclar ramas • La rama por defecto de Git es Master
  • 26. ¿Qué es una rama? • Una rama es simplemente un puntero móvil que apunta a una de las confirmaciones. • Para crear una nueva rama se usa el comando $ git branch testing
  • 27. Branching (ramas) El puntero HEAD apunta a la rama en la que te encuentras actualmente.
  • 28. Branching (ramas) Para cambiar de rama se usa el comando: $ git checkout testing
  • 29. Branching(ramas) Avanzando en una rama creando nuevos commits. $ git commit –m “User Story 1 Tests Passed!”
  • 30. Branching(ramas) Volviendo a la rama master $ git checkout master
  • 31. Branching(ramas) Avanzando un poco más en la rama master $ git commit –m “User Story 2 ready!”
  • 32. Merging (ramas) $ git merge testing • Fusión a tres bandas: las dos puntas de las ramas y el ancestro en común.
  • 33. Merging (ramas) • Una nueva confirmación es creada avanzando la rama destino hasta ella. En este caso master
  • 34. Uso de Git con Scrum Ver.: 1.5 Ver.: 2.0 Ver.: 3.0 MVP Version: 1.0
  • 35. Flujo de trabajo ramificado master Sprint 1 Sprint 2 Sprint 3 Ver.:1.0 Ver.:1.5 Ver.:2.0 Mantener siempre la rama master “limpia” No mezclar hasta alcanzar los criterios de aceptación Abrir una rama por cada nueva versión Proceso Scrum lineal
  • 36. Flujo de trabajo ramificado master Sprint 4 Ver.:2.0 Bug 15 La rama master ha sido “contaminada” con una mezcla no asegurada. Ver.: 3.0 Fix merge Ver.:2.1 Atraso en el tiempo de entrega. Ramificaciones imprevistas
  • 37. master Sprint 4 Ver.:2.0 Bug 15 El objetivo de la rama de integración es resolver los conflictos y pasar las pruebas de integración. Ver.: 3.0 Ver.:2.1 Integración Flujo de trabajo ramificado Ramificaciones imprevistas Solución
  • 38. Uso de Git con Scrum Ver.:1.0 master Sprint 1 Team 1 Sprint 1 Team 2 Ver.:2.0 integración Cuando se trabaja en equipos en paralelo la rama de integración adquiere mas relevancia. Equipos en paralelo
  • 39. Conclusiones y recomendaciones 1. Prepararse para el cambio es la mejor forma de responder a él. 2. Los flujos de trabajo ramificados son una de las ventajas que ofrece Git para trabajar metodologías ágiles. 3. En procesos Scrum deberíamos crear una rama para cada Sprint.
  • 40. 3. Es saludable mantener la rama master limpia de confirmaciones no seguras. 4. No debemos mezclar nuestro trabajo hasta alcanzar los criterios de aceptación. 5. Crear una rama para cada versión o release. 6. Una rama de integración nos brinda seguridad en el trabajo. Conclusiones y recomendaciones