Scrum y Programacion Extrema

SCRUM Y XP

Despues de un tiempo, vuelvo a publicar algo muy interesante que estoy aplicando en un proyecto de desarrollo de software, ademas que es de interes para todos aquellos que desarrollan proyectos de software, estamos hablando de las metodologias ágiles SCRUM y XP, bueno estos dos puntos los expliremos de manera facil y sencilla, tal vez algunos son novatos en metodologias agiles, pues bien la mayoria se adapta a una metodologia tradicional que esta orientada a la documentacion final, un metodologia tradicional da enfasis en la definicion del proceso como los roles, actividades y artefactos por lo cantrario a una metodologia agil da enfasis en los aspectos humanos, como son los individuos del equipo y el trabajo en equipo, ademas cabe resaltar que en una metodologia tradicional el cliente o dueño del producto interactua con el equipos de desarrollo mediante reuniones en cambio en las metodologias ágiles el cliente forma parte del equipo de desarrollo, una metodologia ágil espera que ocurra cambios durante el proyecto disminuyendo el costo que ocurriria por dicho cambio, a continuacion te muestro un diagrama que expresa el costo que ocurre por un cambio dentro del proyecto a traves del tiempo.


Pues ya vimos un super resumen de lo que es metodologias ágiles ahora si vamos haber lo que es scrum y XP, que tambien lo diremos de manera clara y concisa, ya que si nos ponemos hablar de ello, es mejor escribir un libro, pero bueno la pregunta es ¿Qué michi es Scrum? y ¿Qué michi es XP?.

¿Que es Scrum?
Pues bien Scrum como ya lo habiamos mencionado es una metodoogia ágil de gestion de proyectos cuyo objetivo primordial es elevar al maximo la productividad de un equipo, es decir, que reduce al maximo la burocracia y actividades no orientadas a producir software que funcione y produce resultados en periodos muy breves de tiempo (cada 30 dias), por medio de iteraciones o Sprints; Scrum es ideal para proyecto con un rapido cambioo de requerimientos.
Ahora la pregunta es quienes participan dentro del Scrum, veremos los llamados actores.
Actores de Srum

Propietario del Producto: este representa a todos los interesados en el producto final y sus areas de responsabilidad son:
    • Financiacion del Proyecto
    • Retorno de la inversion del proyecto
    • Lanzamiento del Proyecto
Equipo: responsable de transformar el Backlog de la iteracion en un incremento de la funcionalidad del software.
    • Auto- gestionado
    • Auto-organizado
    • Multi-funcional
Scrum Master: responsable del proceso Scrum
    • Formacion y entrenamiento del proceso
    • Incorporacion de Scrum en la cultura de la empresa
    • Garantia de cumpliiento de roles y responsabilidad.
Metodologia de Trabajo
  • Su metodologia se basa en reuniones diarias, antes de empezar a trabajar, con una duracion maxima de 4hrs.
  • En la primera reunion, toma de trabajo, errores por prioridaes.
  • Al inicio de cada iteracion se revisa el trabajo pendiente en el proyecto y se selecciona la parte a la cual se le incrementa funcionalidad , para al final de la iteracion incorporarla al SW y presentarsela a las partes involucradas.
  • En cada reunion las preguntas claves a contestar son:
    • ¿Qué es lo que se hizo desde la ultima reunion?
    • ¿Qué es lo que se va hacer hasta la siguiente reunion?
    • ¿Cómo se va a llevar a cabo?
  • En resumen las actividades que se llevan a cabo en Scrum son las siguientes:
    • Planificacion del Sprint: donde se hace la seleccion de requisitos y la planificacion en si de la iteracion.
    • Ejecucion del Sprint: donde se realizan las preguntan mencionadas a arriba.
    • Revision del Sprint: donde se realiza la demostracion y la retrospectiva del proyecto.


Artefactos del Scrum
  • Sprint: se llevan a cabo las tareas preestablecidas y no se puede modificar el trabajo acordado en el backlog; solo el Scrum Master puede abortar un sprint.
  • Product Backlog: crea un listado con los requisitos de los usuarios para planificar el proyecto, este es un documento dinamico que incorpora las constantes necesidades del sistema y se mantiene durante todo el ciclo de vida.
  • Sprint Backlog: Especifica la serie de tareas que se van a desarrollar segun los requsitos señalados, al final de sprint se busca un incremento en la funcionalidad.
¿Que es Programacion Extrema?

Ahora vamos hablar de lo que es programación extrema, que es una de las llamadas metodologías agiles del desarrollo de software basada en una serie de prácticas que propician un aumento en la productividad a la hora de generar software, como toda metodología ágil da énfasis en los aspectos humanos, el individuo y el trabajo en equipo no como las metodologías tradicionales que dan énfasis en la definición del proceso: roles, actividades y artefactos, además de ello que no soportan los cambios de gran impacto durante el proyecto.
Como ya mencionamos que Scrum se enfoca en las prácticas de organización y gestión, mientras que XP se centra más en las prácticas de programación. Esa es la razón de que funcionen tan bien juntas.
XP permite controlar los problemas de riesgo en los proyecto, ya que se espera cambios durante el proyecto, también permite la participación de pequeños grupos de programadores y requiere un variado equipo de desarrollo, esto lo explicaremos mejor dentro de las practicas que desarrolla XP.

Contexto de XP
  • Cliente bien definido y en colaboración constante.
  • Los requisitos pueden y van a cambiar (volátiles).
  • Reduce los tiempos de desarrollo manteniendo la calidad.
  • Desarrollo incremental y continuo para responder a los cambios.
  • Grupo pequeño y muy integrado.
Caracteristicas de XP
Como ya mencionamos una de las características generales es deliberadamente una metodología “liviana” que pasa por alto la utilización de elaborados casos de uso, la exhaustiva definición de requerimientos y la producción de una extensa documentación.
Todo lo anterior puede parecer caótico para la ingeniería. De software, aunque no hay que olvidar que XP tiene asociado un ciclo de vida y es considerado a su vez un proceso.
otras caracteristicas que merecen resaltar son:
  • Metodología creada a base de prueba y error.
  • Énfasis en el desarrollo del software mas que una buena documentación.
  • Empieza en pequeño y añade funcionalidad con retroalimentación continua.
  • No introduce funcionalidades antes de que sean necesarias.
  • El cliente o el usuario se convierte en miembro del mismo equipo.
Su utilidad es medida con cuatro valores:
  • Simplicidad: La simplicidad consiste en desarrollar sólo el sistema que realmente se necesita. Implica resolver en cada momento sólo las necesidades actuales.
  • Comunicación: XP pone en comunicación directa y continua a clientes y desarrolladores. El cliente se integra en el equipo para establecer prioridades y resolver dudas. De esta forma ve el avance día a día, y es posible ajustar la agencia y las funcionalidades de forma consecuente.
  • Feedback: una metodología basada en el desarrollo incremental iterativo de pequeñas partes, con entregas y pruebas frecuentes y continuas, proporcionan un flujo de retroinformación valioso para detectar los problemas o desviaciones.
  • Coraje valentía: implica saber tomar decisiones difíciles, reparar un error cuando se detecta.

Roles de XP
Cliente:
  • Escribe “Historias de Usuario” y especifica Pruebas Funcionales.
  • Establece prioridades, explica las Historias
  • Puede ser o no un usuario final
  • Tiene autoridad para decidir cuestiones relativas a las Historias.
Programador:
  • Hace estimaciones sobre las Historias
  • Define Tareas a partir de las Historias y hace estimaciones
  • Implementa las Historias y las Pruebas Unitarias
Encargado de pruebas (Tester):
Ayuda al cliente a escribir las pruebas funcionales. Ejecuta las pruebas regularmente, difunde los resultados en el equipo y es responsable de las herramientas de soporte para pruebas.
Encargado de seguimiento(Tracker):
Verifica las estimaciones realizadas, evalúa el progreso de cada iteración y así como la factibilidad de los objetivos con las restricciones de tiempo y recursos presentes. Mantiene contacto directo con el equipo de desarrollo, realizando cambios para lograr los objetivos de cada iteración.
Entrenador(coach):
Es responsable del proceso global. Experto en XP, provee de las guías a los miembros del equipo para que se apliquen las prácticas XP y se siga el proceso correctamente. Determina la tecnología y metodologías a usar por el equipo de desarrollo.
Gestor (big boss):
Es el dueño del equipo y sus problemas. Experto en tecnología y labores de gestión. Construye el plantel del equipo, obtiene los recursos necesarios y maneja los problemas que se generan. Administra a su vez las reuniones (planes de iteración, agenda de compromisos, etc.).
No le dice al grupo lo que tiene que hacer, cuando hacerlo, ni verifica el avance de las tareas.

Praticas de XP
Desarrollo guiado por pruebas:¿Cómo puede saber un programador que el código que ha escrito funciona realmente?¿¾Cómo puede saber que seguirá funcionando siempre, incluso aunque lo refactorice? La única manera de asegurarlo con cierta confianza es escribiendo pruebas automáticas con las que pueda comprobar el código en cualquier momento y sin esfuerzo. Las pruebas no pueden dejarse para el final, sino que deben escribirse al mismo tiempo que el código, o incluso antes.
Programación por parejas:
  • Incrementa la calidad del software sin impactar el tiempo para cumplir lo prometido
  • Muchos errores son detectados conforme son introducidos en el código
  • Los diseños son mejores y el tamaño del código menor
  • Los problemas de programación se resuelven más rápido
Cliente presente:
Para lograr una realimentación ágil, el cliente no puede estar muy lejos del equipo; en una situación ideal, el cliente debe estar dentro del equipo. De esta forma, puede ayudar a los programadores a escribir las pruebas de aceptación.
Diseño incremental:
  • Cada pieza de código es integrada en el sistema una vez que esté lista.
  • Así, el sistema puede llegar a ser integrado y construido varias veces en un mismo día
  • Es una forma de que todo el mundo esté trabajando con casi la última versión
  • Evita o detecta antes los problemas de compatibilidad
Propiedad colectiva del código:
Cualquier programador puede cambiar cualquier parte del código en cualquier momento.
Motiva a todos a contribuir con nuevas ideas en todos los segmentos del sistema, Evita que algún programador sea imprescindible para realizar cambios en alguna porción de código
Estandarización del código:
Utilizar estándares de codificación es una necesidad cuando se trata de escribir código que otros programadores puedan entender y modificar.

Cubrir una semana de 40 horas, pues los programadores cansados son menos productivos y mas propensos a errores.

Ciclo de vida de XP
El ciclo de vida ideal de XP consta de seis fases:
  • Exploración.
  • Planificación de la Entrega (Release).
  • Iteraciones.
  • Producción.
  • Mantenimiento.
  • Muerte del Proyecto.

Conclusion
  • Las metodologías agiles forman parte de una alternativa de desarrollo de software, entes caso el scrum esta orientado a la gestión de proyectos de software y el XP esta orientado al desarrollo propiamente dicho (practicas de programación).
  • La frase “Proceso Scrum con practicas de ingeniería XP” se refiere al uso de Scrum para manejar los pasos que toma el desarrollo de software, en conjunción con el uso de XP para asegurar la calidad del software.

1 comentarios:

Scrum, basado en UML es la forma práctica para el desarrollo de proyectos de software a la WEB. Efectivamente, es una metodología liviana comparada con metodologías tradicionales.

 

Publicar un comentario

Antes de dejar su comentario, por favor, lea atentamente las indicaciones:

1) No deje su nombre completo (con que ponga el nombre de pila o nick alcanza).
2) No deje su dirección de correo electrónico ni direcciones de páginas en el contenido del comentario, esto no es un foro.
3) No resuelvo ejercicios ni configuraciones a pedido, puedo orientarlos ante una duda puntual pero no voy a hacer el trabajo por ustedes.
4) No haga comentarios ofensivos o que no tengan que ver con el contenido del post.
5) Escriba de forma correcta y entendible. Tenga en cuanta que la calidad y esfuerzo de mi respuesta va a ser directamente proporcional al de su pregunta.

Si su comentario no cumple con alguna de las indicaciones anteriores será borrado o editado sin previo aviso.