Extreme programming

Extreme Programming
Valores
Simplicidad
Comunicación
Retroalimentación
Coraje
Respeto
Entorno
Practicas Externas
Roles
Flujo de trabajo
comunicación entre el equipo. Todos los miembros trabajan juntos, trabajo colectivo.
buscar lo funcional y lo simple, hacer aquello para lo que fue creada: mantenibilidad y escalabilidad.
Hacer preguntas y aprender de las respuestas.
No temer a arriesgar e incorporar nuevas cosas.
Respetar el esfuerzo entre colegas, nunca enviar cambios que retrasen el trabajo de los demás. Comprometiéndose es respetarse.
Principios
Retroalimentación rápida
Asumir simplicidad
cambio incremental
Aceptar el cambio
Trabajo de calidad
Scrum Vs Extreme programming
Ventajas
Desventajas
Producir algo de lo que nos sentamos orgullosos. Muchas pruebas unitarias.
grandes cambios de golpe no funcionan, solucionar a través de pequeños cambios. Evitar planificar todo el proyecto de una vez, ir adaptando el proyecto, evolucionar la relación entre los miembros. Mejora constante.
Parte integral de la implementación.
Cada programa puede ser resuelto fácilmente. Proyecciones. Calidad y objetivo, sin cosas innecesarias.
Mejorar aprender e incorporar, puede llegar desde varios canales. Clientes, código a través de pruebas unitarias.
SCRUM
Extreme programming
El scrum determina la secuencia en la que se realizan las prioridades.
Permite libertad de paradigma y técnicas que consideren efectivas
SCRUM usa Sprints : iteraciones largas, no permiten cambios durante estos.
No permiten cambios durante los sprints.
La programación extrema prioriza las características a realizar por el cliente.
La programación extrema requiere practica de ingeniería estricta
Ahorro dinero
Ahorro tiempo
Simplicidad
Comunicación
Compromiso con la calidad
entrega puntual del proyecto.
solución de proyecto a través de otros miembros del equipo
A través de pruebas de calidad.
comunicación constante con el cliente
: Crear en poco tiempo código simple escalabre
Centra en el código más que en el diseño.
Se enfoca en el presente y la simplicidad del código, deriva en incertidumbres para resolución de problemas futuros.
Retroalimentación
Programación en pares
Pruebas unitarias
Juego Planificacion
Procesos continuos
Elementos
PRACTICAS EXTREMAS DEL CONOCIMIENTO COMPARTIDO
Paso sustentable
Bienestar de los miembros del equipo.
La velocidad del equipo debe ser precisas, al trabajar más horas hace que el desempeño del equipo y así mismo del producto disminuya.
rectificar y reajustar las tareas
Mantener el tiempo de estabilidad en cada iteración, que permite el equilibrio entre la capacidad de los programadores y la calidad del producto.
Estandares de código
Propiedad colectiva del código
Diseño simple
No complicar las cosas. el código lo más simple posible metáfora del sistema: Cada miembro del equipo debe ser capaz de comprender claramente el código.
Cualquier desarrollador puede hacer un cambio de código. El código es público en el grupo. Acelera tiempo de desarrollo
Exige a los desarrolladores que se apeguen a estándares, buenas prácticas, etc. Se crean estándares adicionales para mejorarlos. Auto documentación constante y relevante.
Integración continua
: El equipo siempre debe trabajar en la última versión de los programas. Evita retrasos de problemas de integración.
Refactorización
Pequeños lanzamientos de software
Desarrollar lo que se necesita y estar abiertos para mejorar partes del programa, para que el código se mantenga en evolución.
Muestras del progreso del proyecto para que el cliente pueda sentirse integrado en el producto y así pueda dar opiniones sobre esta.
Se divide en:
PLANIFICACION DE ITERACION: Las tareas de los desarrolladores
Fase de exploración
Los requerimientos se dividen
Fase compromiso
Las tareas son asignadas
Fase dirección
Se implementan las tareas
PLANIFICACION DE LANZAMIENTO: Incluye al cliente
Fase de exploración.
Fase de compromiso
Fase dirección
Se recolectan los requerimientos
Se escogen los requerimientos viables
Cambio de requerimientos y verificación de estos.
Se refiere a
Desarrollo orientado a pruebas del mismo código a través de pruebas unitarias.
Pasos
1
Crear prueba
2
rutina de prueba: asegurarse que la prueba funciona.
3
4
Crear el código
Volver a ejecutar y verificar.
Se refiere a
código producido por dos o más programadores en un solo ordenador.
mutua retroalimentación.
El cliente dirige, define el proyecto y define los objetivos. Entre más se incluye en el equipo más tiende a ser exitoso el producto.
Cliente
Cliente identificar las características desde la perspectiva de los usuarios. A partir elaborar historias de usuarios.
Asegurarse que el software tenga las características más valiosas. El rol del cliente tiene la última palabra.
Desarrollador
Derechos
Obligaciones
Maximiza la inversión eligiendo las historias de usuario que se pueden desarrollar,
Cambiar alcance del proyecto.
Medir el progreso del proyecto
Detener el proyecto sin perdidas
Confiar en el dominio de los programadores
Elegir las historias con el máximo valor con precisión.
Trabajar con el equipo proporcionando orientaciones y recibiendo retroalimentaciones precisas
Convertir las historias del usuario en elementos de software funcionalidades.
Aporta conocimiento, experiencia y comprensión de los problemas que tiene el proyecto.
Trabaja en conjunto con el cliente logra una mayor comprensión del producto generando un mejor producto.
Derechos
Responsabilidades
Capacidad de estimar su trabajo
Decisiones técnicas con la implementación de tareas
Trabajar en un horario razonable.
Acceso y disponibilidad del cliente a cualquier momento
Evitar el tomar decisiones de negocio
Seguir direcciones del equipo
Implementar solo lo necesario
Comunicarse constantemente con el cliente
Código que satisfaga al cliente a través de pruebas.
Roles complementarios
Coach
Tracker
Hace el seguimiento del proyecto, la velocidad de este y el equipo y estado de este. Cambios de la velocidad del proyecto, mide la cantidad de horas extras y determinan el progreso.
Debe estar pendiente a través de la pregunta a los desarrolladores cuales tareas ha realizado en 2 semanas.
Guía y orienta al grupo. Su experiencia es la virtud. Ayuda al equipo a aprender sobre la programación extrema.
El cliente diseña nueva funcionalidad y concretarla en una historia de usuario clara y delimitada.
El cliente incluye el criterio de aceptación. Al tener claros los objetivos, los pasos requeridos para implementar la funcionalidad.
Ordena las historias de usuario por prioridades la cuales presenta las al resto de grupo para evaluar las más viables.
Teniendo claras las historias de usuario
Fase de planificación
Fase de implementación
Fase de análisis y adaptación del equipp
Fase de publicación del producto
Permite aumentar la frecuencia de publicación, que permite más retroalimentación por parte del usuario y mayor tiempo de respuesta
Pocas historias, poco riesgo, menos costo.
Entregas pequeñas en la entrega del producto.
Hacen retrospectivas que se usan como retroalimentación de los procesos: El equipo examina aciertos y errores, examinan causas y las consecuencias que tienen.
Retroalimentación entre miembros del equipo.
Retroalimentación en la información en el código.
El cliente verifica el código.
El equipo incorpora los cambios que el usuario requiere.
Es aquella requerida para cumplir con prácticas y valores.
Utiliza programación en pares
Desarrollo dirigido por pruebas unitarias que evalué la funcionalidad
Buscar la solución más simple posible para cualquier problema
El equipo las examina para aclarar la factibilidad de ellas.
Seleccionan las historias que se van a implementar.
Los ítems utilizados están sujetos al cambio siempre y cuando no afecten el alcance del proyecto.
Implementación técnica de las historias y estiman el tiempo y el esfuerzo, se asignan las tareas.
Comenzar subdividiendo las historias en tareas específicas.
85