Want to make creations as awesome as this one?

Descripción de metodología

More creations to inspire you

Transcript

Alvarado Vargas Isaias LevyGómez Ascencio Cesar RicardoLópez Luna Isaac TadeoPérez Martinez Juan Bernardo

Programación extrema (XP)

-- Wikipedia

Es una metodología de la ingeniería de software que prescribe un conunto de practicas diarias para las partes interesadas e incorporan los valores de XP.

-- Kent Beck, “Extreme Programming Explained”

Es una metodología ágil para equipos pequeños y medianos que desarrollan software frente a requisitos vagos o cambiantes.

¿Qué es XP?

XP es un estilo de desarrollo de software que se centra en la excelente aplicación de técnicas de programación, la comunicación clara y el trabajo en equipo, lo que nos permite lograr cosas que antes ni siquiera podíamos imaginar.

XP es una metodología que promueve la disciplina del desarrollo de software con base en los principios de simplicidad, comunicación, retroalimentación y coraje.

-- Kent Beck, “Extreme Programming Explained”

¿Por qué XP es diferente?

  • Sus ciclos de desarrollo cortos, dan como resultado una retroalimentación temprana, concreta y continua.
  • Su enfoque de planificación incremental, que rápidamente da como resultado un plan general que se espera que evolucione durante la vida del proyecto.
  • Su habilidad para adaptarse a los cambios e implementación de funcionalidad.
  • Su dependencia de pruebas automatizadas escritas por programadores, clientes y evaluadores para monitorear el progreso del desarrollo.
  • Su dependencia de la estrecha colaboración de individuos activamente comprometidos con el talento común.

Una disciplina de desarrollo de software

Un mecanismo para el cambio social

Un camino hacia la mejora

Reducir el costo de los cambios

Objetivos

Roles

ProgramadorEl programador escribe las pruebas unitarias y produce el código del sistema. ClienteEl cliente escribe las historias de usuario y las pruebas funcionales para validar su implementación. Además, asigna la prioridad a las historias de usuario.Encargado de pruebas (Tester)El encargado de pruebas 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.

Características

  • Promueve el desarrollo incremental con un diseño inicial mínimo.
  • XP tiende a utilizar equipos pequeños (2-12) para reducir los problemas de comunicación.
  • XP pone a clientes y programadores en un solo lugar.
  • Las prácticas de XP funcionan juntas en sinergia para lograr que un equipo avance lo más rápido posible para brindar el valor que el cliente desea.
  • Programación en parejas

Valores

Reconocer los errores a penas se detectan. Nadie en el equipo puede intentar minimizar su responsabilidad.

Valentía:

Se manifiesta el respecto en varias formas, todas importantes para mejor la autoestima del equipo.

Respeto:

Esta viene de la mano de la comunicación, ya que se puede tener mejor feedback con el equipo de trabajo.

Retroalimentación:

Se simplifica el diseño para agilizar el desarrollo y facilitar el mantenimiento de este.

Comunicación:

Se simplifica el diseño para agilizar el desarrollo y facilitar el mantenimiento de este.

Simplicidad:

Roles

Encargado de seguimiento (Tracker)El encargado de seguimiento proporciona realimentación al equipo en el proceso XP. Su responsabilidad es verificar el grado de acierto entre las estimaciones realizadas y el tiempo real dedicado, comunicando los resultados para mejorar futuras estimaciones. Entrenador (Coach)Es responsable del proceso global. Es necesario que conozca a fondo el proceso XP para proveer guías a los miembros del equipo de forma que se apliquen las prácticas XP y se siga el proceso correctamente.

Requerimientos técnicos

Integración Continua

El equipo debe utilizar integración continua, lo que implica que el código debe integrarse y probarse varias veces al día para detectar problemas de integración lo antes posible.

Pruebas Automatizadas

Las pruebas unitarias y funcionales deben estar automatizadas y ejecutarse continuamente para garantizar que el código funciona correctamente en todo momento.

Desarrollo incremental

El proyecto se desarrolla en iteraciones cortas, generalmente de 1 a 2 semanas, llamadas "iteraciones". Cada iteración incluye análisis, diseño, codificación y pruebas, con la meta de tener un sistema funcional al final.

Simplicidad en el Diseño

El diseño debe ser lo más simple posible, sin agregar complejidades innecesarias. Se busca cumplir con los requerimientos actuales y no anticipar funcionalidades que puedan ser requeridas en el futuro.

Codificación en Parejas

La práctica de programación en parejas es un requisito clave de XP. Dos programadores trabajan juntos en una misma estación de trabajo, revisando mutuamente su código en tiempo real, lo que fomenta la calidad y el aprendizaje continuo.

Refactorización de Código

XP promueve la mejora constante del código, refactorizándolo de forma regular. El código debe ser limpio, simple y mantenible. Se eliminan redundancias y se mejoran diseños existentes sin cambiar el comportamiento del sistema.

Entorno Colaborativo

XP requiere un ambiente de trabajo donde el equipo pueda comunicarse fácilmente, intercambiar ideas y colaborar en las decisiones de diseño y desarrollo.

Entregas Frecuentes

El equipo debe entregar versiones funcionales del software con regularidad, de preferencia cada iteración, para obtener retroalimentación constante del cliente y hacer ajustes en función de sus necesidades.

Propiedad Colectiva del Código

Todo el equipo tiene acceso a todo el código y puede modificarlo en cualquier momento, lo que garantiza que cualquier miembro del equipo pueda corregir errores o mejorar el código.

Etapas

2 semanas

Explicación general e informal de una función de software escrita desde la perspectiva del usuario final.

Se identificarán las historias de usuario donde se detallan las funcionalidades específicas del software a desarrollar, se priorizan y descomponen, luego la planificación se va revisando cada dos semanas aproximadamente. Se debe obtener un software útil, funcional, listo para probar y lanzar.

Planificacion

Nombre de la clase y seguidamente escribimos todas las responsabilidades y colaboradores que tiene dicha clase.

En este paso se intentará trabajar con un código sencillo, haciendo lo mínimo imprescindible para que funcione. Se obtendrá el prototipo. Además, para el diseño del software orientado a objetos, se crearán tarjetas CRC (Clase-Responsabilidad-Colaboración).

Diseño

Código colectivo

En pareja

Codificación

De entrada, se trabaja en parejas frente al mismo ordenador. La meta es obtener un código de propiedad colectiva (recordemos que la metodología XP busca evitar la personalización de códigos a manos de un solo programador, así todo el equipo puede avanzar de forma simultánea y tener conocimiento del progreso).

Deben ser automáticas y continuas, esto es clave para proyectos a corto plazo. Incluso el mismo cliente puede hacer pruebas, proponer pruebas nuevas y validar las mini versiones.

Pruebas

Lanzamiento

Si hemos llegado a este punto, significa que hemos probado todas las historias de usuario o mini-versiones con éxito, ajustándonos a los requerimientos del clientes. Tenemos un software útil y podemos incorporarlo en el producto.

Herramientas

Pair Programming

Dos programadores trabajando en conjunto donde uno escribe código y otro da sugerencias

On-Site Customer

El cliente final debe estár presente en el desarrollo para responder preguntas

Reunion al principio de cada sprint con el cliente para discutir y aprobar características.

Escribir una prueba unitaria automatizada antes del propio código donde cada pieza de código debe pasar la prueba para ser liberado.

The Planning Game

Test-DrivenDevelopment

Feedback

Small Releases

Continuous Integration

Code Refactoring

Lanzar rapidamente la primera versión y hacer actualizaciones pequeñas

Mantener el sistema integrado reutilizando código o compartiendolo

Eliminar redundancia, funciones innecesarias y aumentar la coherencia del código

Continual Process

System Metaphor

Representación de un diseño simple con ciertas cualidades

Collective Code Ownership

Cada miembro de un equipo es responsable de misma manera del diseño del sistema

Aplicación de estandares que ayudarán a los miembros del equipo a comprender mas facilmente el código

Diseño simple del código que pase las pruebas, sin duplicaciones innecesarias y menor numero de elementos

Coding Standards

Simple Design

Code Understanding

Los proyectos de XP requieren que los desarrolladores sean eficientes, para ello deben sentirse bien y mantener un equilibrio entre el trabajo y la vida.

Programmer’s Work Conditions40-Hour Week

Ventajas y Desventajas

  • Mayor esfuerzo de trabajo
  • El cliente se implica en el proceso
  • Requiere mucho tiempo
  • Relativamente caro
  • Requiere control de versiones
  • Require autodisciplina en la aplicación de la metodología
  • Relación estrecha con el cliente
  • Ausencia de trabajos de programación innecesarios
  • Software estable debido a pruebas continuas
  • Menos errores gracias a la programación en pareja
  • Ausencia de horas extra, gestión propia del tiempo
  • Aplicación rápida de cambios
  • Código de comprensión sencilla en todo momento

Desventajas

Ventajas

¿Cuándo se debe implementar?

Si dominas los aspectos técnicos de la codificación

Si trabajas con un equipo que pueda aceptar el cambio

Si estás constantemente en contacto con los clientes

Para gestionar un equipo más pequeño

Metodología XP

En resumen, la metodología XP fomenta un enfoque disciplinado pero flexible al desarrollo de software, que prioriza la calidad, la simplicidad y la satisfacción del cliente, lo que la convierte en una opción adecuada para proyectos donde los requisitos pueden cambiar con frecuencia.

Technologies, G. (2022, 24 agosto). Cómo funciona la Metodología XP en el Desarrollo de Software. GINZO TECHNOLOGIES SL. https://ginzo.tech/como-funciona-metodologia-xp-desarrollo-software/Sydle. (2024, 12 junio). Extreme Programming: ¿qué es y cómo funciona? Blog SYDLE. https://www.sydle.com/es/blog/extreme-programming-602ee205da4d096809438c9cMancuzo, G. (2024, 30 abril). Metodología XP: La Mejor Vía para el Desarrollo de Software. ComparaSoftware. https://blog.comparasoftware.com/metodologia-xp/Canive, T. (2020, 27 mayo). Metodología XP o Programación Extrema: ¿Qué es y cómo aplicarla? Gestor de Proyectos Online. https://www.sinnaps.com/blog-gestion-proyectos/metodologia-xpMetodología XP o Programación Extrema: ¿Qué es y cómo aplicarla? (2020). Gestor de Proyectos Online. https://www.sinnaps.com/blog-gestion-proyectos/metodologia-xp ‌Blé, C. (2022, May 22). CRC Cards (Class Responsibility Collaborator). Lean Mind; Lean Mind. https://leanmind.es/es/blog/crc-cards-class-responsibility-collaborator/ ‌Atlassian. (2024). Historias de usuario | Ejemplos y plantilla | Atlassian. Atlassian. https://www.atlassian.com/es/agile/project-management/user-storiesBECK, K. (s. f.). Extreme Programming Explained EMBRACE CHANGE . Addison-Wesley.BECK, K., & ANDRES, C. (s. f.). Extreme Programming Explained EMBRACE CHANGE (2.a ed.). Addison-Wesley.

Bibliografia

Equipo editorial de IONOS. (2020, January 21). Extreme Programming: desarrollo ágil llevado al extremo. IONOS Digitalguide. https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/extreme-programming/Raeburn, A. (2024, February 13). ¿Qué es la programación extrema (XP)? Asana. https://asana.com/es/resources/extreme-programming-xpSCRUM MÉXICO. (2018, November 13). Extreme Programming: valores, principios y prácticas. SCRUM MÉXICO. https://scrum.mx/informate/2018/11/13/extreme-programming-valores-principios-y-prcticas

Bibliografia