200 likes | 322 Views
Ingeniería de Software. Ciclos de vida ágiles. eXtreme Programming. Es una metodología ágil que plantea: Iteraciones cortas Entregables periódicos Colaboración con el cliente full time Herramientas y buenas prácticas para mejorar la calidad y la eficiencia. XP - Valores.
E N D
Ingeniería de Software Ciclos de vida ágiles
eXtremeProgramming • Es una metodología ágil que plantea: • Iteraciones cortas • Entregables periódicos • Colaboración con el cliente full time • Herramientas y buenas prácticas para mejorar la calidad y la eficiencia
XP - Valores • Los Valores originales de XP son: • simplicidad • comunicación • retroalimentación (feedback) • coraje • respeto, fue añadido en la segunda edición de XP Explained.
XP - Buenas prácticas • Planning incremental • Releases cortas • Diseño simple • TestDrivenDevelopment + Full test coverage • Refactoring • Pair Programming • Building continuo • Collective ownership • Retrospectives • Stand-up meetings • Demos • Documentacióntardía • Risk Management
XP – User stories (US) • Los requerimientos se plantean en forma de User Stories, o escenarios, los desarrolladores parten estos escenarios en múltiples tareas para ser estimadas. • Deben ser priorizados por el cliente. • Tienen la descripción de alto nivel de una necesidad del sistema, no una descripción detallada. • Cuando se desarrolle la historia, en paralelo se hace: • Análisis: el cliente provee la información necesaria • Diseño: se busca diseño simple • Programación: se busca código fácil de refactorizar • Testing: el desarrollador escribe testsunitarios automatizados • Producción: una vez “buildeado” el código debe ser funcional
XP – User stories (US) • Las US deben por sí mismas contener las condiciones de aceptación de las mismas • Las US no son sólo requerimientos funcionales, también incluyen: • Tareas de documentación que le agregan valor al cliente • Requerimientos no funcionales • Bugs • Tareas que agregan valor de manera indirecta: reuniones, cursos, investig.
XP – ArchitecturalSpike / ExplorationPhase / ReleasePlanning • No esunaiteración, se trata de explorarelementos de la soluciónqueparecenrelevantespara el aúnlimitadoconocimientoque se tiene del problema. • Se puedehacer un prototipoparaatacar los riesgosmasimportantes. • Intentaidentificarlasáreas de máximoriesgo, paraestimarlascorrectamente
XP – Testing • Para que XP funcione correctamente se necesita, no sólo testers, sino los mismos desarrolladores deben asegurar el buen funcionamiento luego de cambios: • Testing automatizado • TDD • Full Test coverage • El cliente debe ayudar a definir las condiciones de aceptación, esto se debe hacer cuando se está por empezar a desarrollar la historia no antes ni después.
XP – Pairprogramming • En XP, los programadores deberían trabajar de a pares. Si bien a primera instancia esto parece reducir la performance, permite: • Mejorar la calidad del código (mejor entendibilidad, menos cantidad de defectos, mejor diseño) • Mejora el collectiveownership • Todo el código es revisado • Sirve para que los desarrolladores más expertos trabajen en pares con los menos expertos
XP – Ventajas / Desventajas • Ventajas • Se genera un buen ambiente de trabajo • El modelo está pensado para reaccionar ante cambios, se disminuye la burocracia y el overhead • Se genera una buena calidad de código • Se entienden mejor los requerimientos al tener un cliente en el equipo • Se puede incorporar de a poco en el proceso • Desventajas • Al poner énfasis en la gente vs proceso, se necesita buscar personas con buen skill • Es difícil establecer contratos rígidos y el cliente debe proveer un experto para proveer los requerimientos • Requiere cambios culturales importantes
Scrum • El foco en Scrum es establecer condiciones para administrar correctamente las iteraciones • Se definen 3 etapas en Scrum: • Etapa inicial: donde se especifica las tareas a realizar y la arquitectura • Ciclos de sprint: cada sprint realiza un incremento al sistema • Fin de proyecto: se termina la documentación y se hace un review de cómo salió el proyecto
Sprint cycle • Un sprint es una iteración de entre 2 y 4 semanas • Se define un backlog (un conjunto de todos los issues a realizar) • Al principio de la iteracion se seleccionan del backlog todos los stories a realizar • Los desarrolladores dividen y organizan las tareas a realizar sin intervención de clientes • Se define un ScrumMaster que se relaciona con el cliente, el resto del equipo no se relaciona • Al final se revisa la iteración y los clientes tienen acceso al software
Dailymeetings • Se realizan reuniones de 15 minutos donde están todos los desarrolladores hablan sobre qué estuvieron haciendo, mejorando las relaciones en el equipo y permitiendo ayudar a resolver problemas
Diferencias entre Scrum y XP • Scrum provee niveles de planificación y especifica roles y responsabilidades, en XP el foco esta en las herramientas de desarrollo • Scrum requiere userstories detalladas dado que el cliente no interactúa una vez iniciado el Sprint, en XP es requerido que el cliente sea accesible siempre