Logo Studenta

Xtreme Programming

Vista previa del material en texto

INGENIERIA DE 
SOFTWARE I 
Ing. Mario Aquino Cruz 
Extreme Programming (XP) 
Extreme Programming - Agenda 
 
 Introducción 
 Proceso y Fases 
 Roles 
 Prácticas 
 Conclusiones 
Extreme Programming - Introducción 
 Proceso : conjunto de actividades ordenadas para 
lograr una serie de objetivos 
 
 Proceso Pesado : 
 * fuerte dependencia de planificaciones 
 * se establecen actividades 
 * se establecen artefactos 
 * se establecen herramientas y notaciones 
 * ESTAMOS MUY CONTROLADOS 
Extreme Programming - Introducción 
 Como contraposición : Métodología Ágil 
 
 Características : 
 
 
 
 
 
A los individuos y su interacción de los procesos y las herramientas por encima 
El software que funciona de la documentación exhaustiva por encima 
La colaboración con el cliente la negociación contractual por encima 
La respuesta al cambio seguimiento de un plan por encima 
Extreme Programming - Introducción 
 Resumen 
 
 * Estamos menos controlado 
 * Preparados para el cambio 
 * Cliente forma parte del equipo 
 * Pocos artefactos 
 * Más importante software funcionando que 
 documentación 
 
Extreme Programming - Introducción 
 XP es una Métodología Ágil 
 
 Desarrollado por Kent Beck 
 «Todo en el software cambia. Los 
requisitos cambian. El diseño 
cambia. El negocio cambia. La tecnología 
cambia. El equipo 
cambia. Los miembros del equipo 
cambian. El problema no es el 
cambio en sí mismo, puesto que sabemos 
que el cambio va a 
suceder; el problema es la incapacidad de 
adaptarnos a dicho 
cambio cuando éste tiene lugar.» 
Extreme Programming - Introducción 
 Estadísticas : método que más popularidad ha 
alcanzado de las metodologías ágiles 
 Se basa en la suposición de que es posible 
desarrollar software de gran calidad a pesar, o 
incluso como consecuencia del cambio continuo 
 Asume que con un poco de planificación, un poco de 
codificación y unas pocas pruebas se puede decidir 
si se está siguiendo un camino acertado o 
equivocado, evitando así tener que echar marcha 
atrás demasiado tarde. 
 
Extreme Programming - Introducción 
 Valores que inspiran XP 
 
 
 
 
FEEDBACK CORAJE COMUNICACIÓN SIMPLICIDAD 
Extreme Programming - Introducción 
 Simplicidad 
 
 La simplicidad consiste en desarrollar sólo el sistema 
que realmente se necesita. Implica resolver en cada 
momento sólo las necesidades actuales. 
 
 
 
 Con este principio de simplicidad, junto con la 
comunicación y el feedback resulta más fácil conocer 
las necesidades reales 
Los costos y la complejidad de predecir el futuro son muy elevados, y la mejor 
forma de acertar es esperar al futuro. 
Extreme Programming - Introducción 
 FeedBack 
 Una metodología basada en el desarrollo incremental 
iterativo de pequeñas partes, con entregas y pruebas 
frecuentes y continuas, proporciona un flujo de retro-
información valioso para detectar los problemas o 
desviaciones. 
 De esta forma fallos se localizan muy pronto. 
 La planificación no puede evitar algunos errores, que 
sólo se evidencian al desarrollar el sistema. 
 La retro-información es la herramienta que permite 
reajustar la agenda y los planes. 
 
Extreme Programming - Introducción 
 Coraje 
 Implica saber tomar decisiones difíciles. 
 Reparar un error cuando se detecta 
 Mejorar el código siempre que tras el feedback y las 
sucesivas iteraciones se manifieste susceptible de 
mejora 
 Tratar rápidamente con el cliente los desajustes de 
agendas para decidir qué partes y cuándo se van a 
entregar 
 
Extreme Programming - Introducción 
 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 agenda y las funcionalidades de forma 
consecuente 
Extreme Programming – Proceso y Fases 
 1. El cliente define el valor de negocio a implementar 
 
 2. El programador estima el esfuerzo necesario para 
su implementación 
 
 3. El cliente selecciona qué construir, de acuerdo con 
sus prioridades y las restricciones de tiempo 
 
 4. El programador construye ese valor de negocio 
 
 5. Vuelve al paso 1 
 
Extreme Programming – Proceso y Fases 
 El costo del cambio 
 
 
Extreme Programming – Proceso y Fases 
 Historias de Usuario 
 Técnica para especificar los reqs. 
 
 Son tarjetas de papel 
 
 Debe ser lo suficientemente comprensible y 
delimitada para que los programadores puedan 
 implementarla en unas semanas 
 
 
Extreme Programming – Proceso y Fases 
 Fases 
 
 Exploración 
 Planificación de la Entrega 
 Iteraciones 
 Producción 
 Mantenimiento 
 Muerte del Proyecto 
Extreme Programming – Proceso y Fases 
Reglas y prácticas de XP 
 Conjunto de actividades simples que guían 
los diferentes aspectos del desarrollo para 
seguir el proceso. 
 Se dividen en áreas del desarrollo 
 Planificación 
 Diseño 
 Codificación 
 Verificación 
Reglas y prácticas de XP - Planificación 
 El “Juego de la Planificación” 
 Planificación se vuelve “emocional” 
 Todos quieren planificar mejor 
 Conflictos 
 Mirar la planificación como un Juego 
 Objetivos 
 Jugadores 
 Piezas 
 Reglas 
Reglas y prácticas de XP - Planificación 
 El “Juego de la Planificación” 
 Piezas: Historias de Usuario 
 Objetivo: Poner en producción la mayor 
cantidad de Historias de Usuario 
 Jugadores: Desarrolladores y Encargados del 
Negocio 
Reglas y prácticas de XP - Planificación 
 El “Juego de la Planificación” 
 Movimientos: 
 Escribir Historia de Usuario 
 Estimarla 
 Comprometerse a realizar: 
 Por Historia 
 Por Fecha 
 Valor y Riesgo Primero 
 Recuperación por Sobrecarga 
 Cambio de Valor de Historia 
 Introducir nueva Historia 
 Dividir una Historia 
 Salto 
 Re-estimar 
Reglas y prácticas de XP - Planificación 
 Escribir Historias de Usuario 
 Similar a los Casos de Uso 
 Usadas para estimaciones de tiempo en la 
planificación de las liberaciones 
 Usados en lugar del Documento de 
Requerimientos 
 Escritas por el Cliente en términos del Cliente 
 Guían la creación de Pruebas de Aceptación 
Reglas y prácticas de XP - Planificación 
 Los Planes de Liberación organizan el 
Calendario 
 Surgen en las reuniones de Planificación de 
Liberaciones 
 Utilizados para crear Planes de Iteraciones 
 Decisiones Técnicas por el personal Técnico y 
decisiones de negocio por el personal de 
Negocio 
Reglas y prácticas de XP - Planificación 
 El equipo estima la duración de la 
implementación de cada Historia de Usuario 
en “Semanas Ideales de Implementación” 
 El cliente prioriza las Historias teniendo en 
cuenta el valor que le aporta al sistema 
tenerla completa 
Reglas y prácticas de XP - Planificación 
 Medir la “Velocidad del Proyecto” 
 ¿Cuánto trabajo está siendo completado en el 
proyecto? 
 Suma de las estimaciones de las Historias de 
Usuario completas al fin de la Iteración 
 Utilizada para planificar la siguiente Iteración 
Reglas y prácticas de XP - Planificación 
 Utilizamos la “Velocidad del Proyecto” para 
planificar 
 Por Fecha 
 Por Alcance 
Reglas y prácticas de XP - Planificación 
 Liberaciones pequeñas y frecuentes Producir rápidamente versiones operativas del 
sistema 
 No debería tardar más de 3 meses 
Reglas y prácticas de XP - Planificación 
 Rotación del Equipo 
 Ayuda a evitar “Islas de Conocimiento” 
 Mejora la flexibilidad del equipo 
 Evita la sobrecarga de una persona 
Reglas y prácticas de XP - Planificación 
 Mejorar el proceso cuando sea necesario 
 Es bueno tener reglas para saber qué esperar 
del equipo 
 Si se detectan problemas en el avance se 
debe revisar qué está mal 
 Debe consultarse al equipo sobre qué cosas 
dificultan el funcionamiento 
Reglas y prácticas de XP - Diseño 
 Diseño simple: 
 Implementar la solución más simple que 
pueda funcionar 
 La complejidad innecesaria y el código extra 
debe ser removido inmediatamente 
 No agregar nuevas funcionalidades antes de 
que sean agendadas 
 
Reglas y prácticas de XP - Diseño 
 Metáforas: 
 El sistema es definido mediante una metáfora 
o un conjunto de metáforas compartidas por el 
cliente y el equipo de desarrollo 
 Es una historia compartida que describe cómo 
debería funcionar el sistema 
 Solventan el hecho de no contar con una 
definición de la arquitectura desde el 
comienzo, ya que en XP la arquitectura se 
asume evolutiva 
Reglas y prácticas de XP - Diseño 
 Tarjetas CRC: 
 Las Tarjetas CRC (Class, Responsibilities and 
Collaboration) sirven para diseñar el sistema 
en conjunto entre todo el equipo 
 Permiten reducir el modo de pensar 
procedural y apreciar la tecnología de objetos 
 
Reglas y prácticas de XP - Diseño 
 No agregar funcionalidades antes de lo 
planeado: 
 Parecería que fuera más rápido agregarlas 
ahora pero nosotros debemos recordarnos 
constantemente que no las necesitamos 
ahora realmente y quizás nunca las 
necesitemos 
 Funcionalidades extra siempre nos hacen 
atrasar y malgastar nuestros recursos 
Reglas y prácticas de XP - Diseño 
 Refactorización: 
 Es una actividad constante de 
reestructuración del código con el objetivo de 
remover duplicación de código, mejorar su 
legibilidad, simplificarlo y hacerlo más flexible 
para facilitar los posteriores cambios 
 Mejora la estructura interna del código sin 
alterar su comportamiento externo 
 Nos ahorra tiempo e incrementa la calidad 
 
Reglas y prácticas de XP - Codificación 
 El cliente está siempre disponible: 
 Gran parte del éxito del proyecto XP se debe 
a que es el cliente quien conduce 
constantemente el trabajo hacia lo que 
aportará mayor valor de negocio 
 La comunicación oral es más efectiva que la 
escrita, ya que esta última toma mucho tiempo 
en generarse y puede tener más riesgo de ser 
mal interpretada 
Reglas y prácticas de XP - Codificación 
 Las historias de usuario son escritas por los 
clientes con la ayuda de los desarrolladores 
 El cliente debe negociar la selección de las 
historias de usuario que serán incluidas en 
una liberación 
 Como los detalles no son incluidos en las 
historias de usuario, los desarrolladores 
necesitarán hablar con los clientes para 
obtenerlos 
 El cliente es necesario con las pruebas 
Reglas y prácticas de XP - Codificación 
 El tiempo del cliente es ahorrado al principio 
por no requerir una especificación detallada 
de los requerimientos y ahorrado después ya 
que el sistema es mucho más probable que 
sea de su agrado 
Reglas y prácticas de XP - Codificación 
 Estándares de programación: 
 XP enfatiza la comunicación de los 
programadores a través del código, con lo 
cual es indispensable que se sigan ciertos 
estándares de programación 
 Mantienen el código legible para los miembros 
del equipo, facilitando los cambios 
 
Reglas y prácticas de XP - Codificación 
 Pruebas unitarias: 
 La producción de código está dirigida por las 
pruebas unitarias 
 Las pruebas unitarias son establecidas antes 
de escribir el código y son ejecutadas 
constantemente ante cada modificación del 
sistema 
 Otros desarrolladores podrán ver como usar el 
código observando las pruebas 
 
Reglas y prácticas de XP - Codificación 
 Programación en 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 
Reglas y prácticas de XP - Codificación 
 Se posibilita la transferencia de conocimientos 
de programación entre los miembros del 
equipo 
 Varias personas entienden las diferentes 
partes del sistema 
 Los programadores conversan mejorando así 
el flujo de información y la dinámica del 
equipo 
Reglas y prácticas de XP - Codificación 
 Integración secuencial: 
 Solo una pareja de desarrolladores puede 
integrar, testear y liberar cambios al 
repositorio de código en un momento 
determinado 
 Se permite que la última versión esté 
consistentemente identificada 
Reglas y prácticas de XP - Codificación 
 Integración continua: 
 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 
Reglas y prácticas de XP - Codificación 
 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 
Reglas y prácticas de XP - Codificación 
 40 horas por semana: 
 Se debe trabajar un máximo de 40 horas por 
semana 
 No se trabajan horas extras en dos semanas 
seguidas 
 El trabajo extra desmotiva al equipo 
Extreme Programming – Roles en XP 
 Los roles siempre presentes en esta 
metodología son los siguientes: 
 Programador 
 Cliente 
 Encargado de pruebas (Tester) 
 Encargado de seguimiento (Tracker) 
 Entrenador (Coach) 
 Gestor (Big Boss) 
 
 
 
Extreme Programming – Roles en XP 
 Roles Opcionales en los proyectos: 
 
 Consultor 
 Doomsayer (Augur de desastres) 
Extreme Programming – Roles en XP 
 El programador escribe las pruebas 
unitarias y produce el código del sistema. 
Define las tareas que conlleva cada historia 
de usuario, y estima el tiempo que requerirá 
cada una. 
 El cliente escribe las historias de usuario y 
las pruebas funcionales para validar su 
implementación. Asigna la prioridad a las 
historias de usuario y decide cuáles se 
implementan en cada iteración centrándose 
en aportar mayor valor al negocio. 
Extreme Programming – Roles en XP 
 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. 
 El encargado de seguimiento 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. 
Extreme Programming – Roles en XP 
 El entrenador es responsable del proceso global. 
Expertoen 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. 
 El Gestor 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. 
Extreme Programming – Roles en XP 
 Roles Opcionales 
 Consultor 
 Es un miembro externo del equipo con un 
conocimiento específico en algún tema necesario 
para el proyecto. Guía al equipo para resolver un 
problema específico. 
 
 Doomsayer (Augur de desastres) 
 Es el responsable de que se conozcan los riesgos 
involucrados, que las malas noticias sean 
notificadas en la medida correcta, y que no se 
sobredimensionen. Busca posibles riesgos en 
forma constante, presentándolos al equipo siempre 
con una posible solución. 
Extreme Programming – Roles en XP 
 Combinación de Roles 
 Algunos roles pueden ser combinados en un 
mismo individuo. Por ejemplo, el Gestor y el 
Tracker. 
 Sin embargo, otras combinaciones no son 
recomendadas; como ser: 
 Programador–Tracker, Programador–Tester 
 Cliente-Programador, Entrenador-Tracker. 
Extreme Programming – Conclusiones 
 XP es la metodología mas popular dentro de 
la familia surgida luego del manifiesto Ágil, 
las cuales buscan simplificar los procesos a 
través de la reducción de irreversibilidad de 
los mismos . 
 Dicha metodología ha probado ser de gran 
utilidad en proyectos pequeños y con 
requerimientos altamente cambiantes, 
aunque posee características que la hacen 
aplicable en ciertos ambientes únicamente. 
 
Extreme Programming – Conclusiones 
 Conceptos conocidos en los que se basa XP: 
 
 La alta comunicación funciona. Un único ambiente 
para el equipo aumenta la productividad 
dramáticamente. 
 La importancia de la Validación. XP reduce el tiempo 
entre una idea, su criterio de validación, y su 
implementación. Requiere disponer de pruebas 
repetibles automatizadas que aseguren la consistencia 
en el futuro. 
 El iterar funciona. XP obliga a iterar al establecer 
múltiples integraciones por día, iteraciones de una a 
tres semanas de largo que concluyan con un sistema 
funcionando, y nuevos lanzamientos cada pocos 
meses. 
 
Extreme Programming – Conclusiones 
 El futuro de XP 
 Simplificación del proceso de planificación e 
integración continua. 
 Búsqueda de valores y principios ocultos que 
puedan informar de métodos útiles. 
 Límites de XP. Cuando se debe seguir? Cual 
es su limite de integrantes? 
 El rol del Cliente. Es un rol complejo de 
interpretar, y probablemente su papel en el 
proceso de desarrollo de software continúe 
generando nuevas ideas.