Programación extrema vs SCRUM | XP vs SCRUM
A lo largo de los años, ha habido varias metodologías de desarrollo de software diferentes utilizadas en la industria del software, como el método de desarrollo en cascada, el modelo V, el RUP y algunos otros métodos lineales, iterativos y combinados lineales-iterativos. El modelo Agile (o más correctamente, un grupo de metodologías) es un modelo de desarrollo de software más reciente introducido por el manifiesto Agile para abordar las deficiencias encontradas en esas metodologías de desarrollo de software tradicionales..
Los métodos ágiles se basan en el desarrollo iterativo y utilizan la retroalimentación de los usuarios como el principal mecanismo de control. Ágil puede llamarse un enfoque centrado en las personas que los métodos tradicionales. El modelo Agile entrega una versión de trabajo del producto muy pronto al dividir el sistema en subpartes muy pequeñas y manejables, para que el cliente pueda darse cuenta de algunos de los beneficios desde el principio. El tiempo de ciclo de prueba de Agile es relativamente corto en comparación con los métodos tradicionales, ya que la prueba se realiza paralelamente al desarrollo. Debido a todas estas ventajas, los métodos ágiles se prefieren a las metodologías tradicionales en este momento. La programación Scrum y Extreme son dos de las variaciones más populares de los métodos ágiles..
¿Qué es SCRUM??
Como se mencionó anteriormente, SCRUM es un proceso de administración de proyectos incremental e iterativo, que pertenece a la familia de métodos Agile. SCRUM se basa en dar alta prioridad a la participación del cliente al principio del ciclo de desarrollo. Se recomienda incorporar las pruebas por parte del cliente lo antes posible y con la mayor frecuencia posible. La prueba se realiza en cada punto cuando una versión estable está disponible. La base de SCRUM se basa en comenzar las pruebas desde el principio del proyecto y continuar hasta el final del proyecto..
El valor clave de SCRUM es que "la calidad es responsabilidad del equipo", lo que hace hincapié en que la calidad del software es responsabilidad de todo el equipo (no solo del equipo de pruebas). Otro aspecto importante de SCRUM es dividir el software en partes más pequeñas y manejables y entregarlas al cliente muy rápidamente. La entrega de un producto de trabajo es de suma importancia. Luego, el equipo continúa mejorando el software y entregando continuamente en cada paso importante. Esto se logra al tener ciclos de lanzamiento muy cortos (llamados sprints) y obtener retroalimentación para mejorar al final de cada ciclo.
SCRUM define varios roles clave para el buen funcionamiento de un equipo de desarrollo. Son el propietario del producto (que representa al cliente y mantiene el registro del producto), Scrum master (que actúa como organizador y coordinador del equipo mediante la realización de reuniones de scrum, el mantenimiento del registro de sprint y los gráficos de quema) y otros miembros del equipo. Un equipo puede tener roles tradicionales, pero en su mayoría son equipos de autogestión. Los artefactos principales de Scrum son el trabajo atrasado / la publicación de trabajos pendientes (lista de deseos), los registros de Sprint / los trabajos pendientes de defectos (tareas en cada iteración), los gráficos de Quemado (trabajo restante vs. fecha). Las ceremonias principales de SCRUM son la reunión de acumulación de productos, la reunión de Sprint y la reunión de Retrospect.
¿Qué es la programación extrema??
La Programación Extrema (XP abreviada) es una metodología de desarrollo de software que pertenece al modelo Agile. La programación extrema realiza las fases en pasos continuos muy pequeños (en comparación con los métodos tradicionales). El primer pase, que toma solo un día o una semana, está intencionalmente incompleto. Para proporcionar objetivos concretos para el desarrollo del software, las pruebas automatizadas se escriben al inicio. Entonces los desarrolladores hacen la codificación. El foco está en hacer programación en parejas. Una vez que todas las pruebas pasan, la codificación se considera completa. La siguiente fase es el diseño y la arquitectura, que trata de refactorizar el código por el mismo conjunto de programadores. Al final de esta fase, se presenta un producto incompleto (pero funcional) a los interesados. Justo después de esto, comienza la siguiente fase (que se centra en el siguiente conjunto de características más importantes).
¿Cuál es la diferencia entre Programación Extrema y SCRUM??
Programación extrema y SCRUM son, comprensiblemente, metodologías muy similares y alineadas. Sin embargo, hay diferencias sutiles pero importantes entre estos dos métodos. Los sprints de SCRUM duran de 2 a 4 semanas, mientras que las iteraciones típicas de XP son más cortas (de 1 a 2 semanas). Por lo general, los equipos SCRUM no permiten cambios en los sprints, pero los equipos de XP son un poco más flexibles a los cambios dentro de las iteraciones. Por ejemplo, después de la planificación del sprint, el conjunto de elementos de ese sprint permanece sin cambios, pero una característica que no ha comenzado a trabajar en cualquier momento se puede intercambiar con alguna otra característica en XP. Otra diferencia entre XP y SCRUM es que, el orden de las características desarrolladas en XP es una prioridad estrictamente por parte del cliente, mientras que el equipo de SCRUM decide el orden de los artículos (después de que el propietario del producto de SCRUM priorice la acumulación de productos)..
A diferencia de XP, SCRUM no establece ninguna práctica de ingeniería. Por ejemplo, XP se basa en prácticas como el desarrollo guiado por pruebas (TDD), la programación en pares, la refactorización, etc. Sin embargo, algunos creen que imponer un conjunto de prácticas en equipos autoorganizados podría tener un impacto negativo, y esto puede considerarse una deficiencia de XP. Otro inconveniente de la programación Extreme es que los equipos sin experiencia tienden a refactorizar sin ninguna prueba automatizada o TDD (o simplemente pirateo). Por lo tanto, algunos sugieren que SCRUM es mejor para comenzar (ya que trae grandes mejoras simplemente a través de iteraciones centradas en el tiempo) y XP es adecuado para equipos poco maduros que han descubierto el valor de las prácticas mencionadas anteriormente (en lugar de usarlas porque se les ha pedido para hacerlo).