More creations to inspire you
ASTL
Presentation
TOM DOLAN
Presentation
BASIL RESTAURANT PRESENTATION
Presentation
AC/DC
Presentation
ENGLISH IRREGULAR VERBS
Presentation
ALL THE THINGS
Presentation
SANTIAGOVR_EN
Presentation
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