Metodologías Ágiles y XP

Slides:



Advertisements
Presentaciones similares
EL PROCESO DE DESARROLLO DEL SOFTWARE
Advertisements

Ciclo de vida de desarrollo de software
“XP Extreme Programming”
Metodologías ágiles.
Desarrollo de software innovador con métodos ágiles
ANÁLISIS DE REQUERIMIENTOS
Metodologías Ágiles Patricio Letelier
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de Metodologías ágiles.
METODOLOGIAS AGILES DE CONSTRUCCION DE SOFWARE
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de Metodologías ágiles.
Extreme Programming (XP)
FDD.
Alexis Masson Nicolás Fetter
Ingeniería del Software
Ingeniería del software II
Una explicación de la programación extrema XP
Modelo de Desarrollo XP
Martin Alfonso Nieto Prada Ing. De Sistemas Ingeniería de software III Corporación Universitaria autónoma del cauca Agosto de 2012 Compendio de Programación.
Ciclos de vida ágiles.  Es una metodología ágil que plantea: ◦ Iteraciones cortas ◦ Entregables periódicos ◦ Colaboración con el cliente full time ◦
Ingeniería de Software
Programación Extrema eXtreme Programming (XP)
04/02/031 eXtreme Programming Jose Mª Cubel Navarro Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia.
Introducción al Proceso de Desarrollo de Software Patricio Letelier Departamento de Sistemas Informáticos y Computación Universidad.
DSDM Dynamic System Development Method
Metodologías Ágiles.
Rational Unified Process (RUP)
¿Cómo surge? Metodologías ágiles de desarrollo de software Se entiende como Desarrollo ágil de Software a un paradigma de Desarrollo de Software basado.
Scrum Images goes here …y prácticas ágiles para desarrollo de software.
Gestión de Proyectos Informáticos Sesión N° 5 Ciclo de Vida de un Proyecto Roberto Jijena I.
EXtreme Programming.
Desarrollo de Software Ágil
PROGRAMACION EXTREMA SALCEDO CORONA JACOBSALCEDO CORONA JACOB MELCHOR LEON SALVADORMELCHOR LEON SALVADOR ANALISIS ORIENTADO A OBJETOS ANALISIS ORIENTADO.
Ingeniería de Software: Metodologías Agustín J. González ElO329: Diseño y Programación Orientados a Objeto Adaptado de:
Actividad 4. Modelos ágiles de proceso. M.C. Juan Carlos Olivares Rojas Syllabus May, 2009.
Ingeniería del Software
Programación Extrema Leonardo Ramírez Z.. Contenido Motivación ¿Qué es Programación Extrema? La filosofía detrás de la Programación Extrema El proceso.
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Crystal Methodologies
Extreme Programming Diego Rincón Sebastian Miranda.
Tema 1: Introducción a la Ingeniería de Software
INGENIERÍA DEL SOFTWARE
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
PROGRAMACIÓN EXTREMA (eXtreme Programing)
Medición y Métricas del Software
Ingeniería de Software
METODOLOGÍAS DE DESARROLLO DE SOFTWARE MODERNAS
INGENIERÍA DEL SOFTWARE GESTIÓN DE PROYECTOS
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de metodologías ágiles Tatiana Alejandra.
Scrum Una Alternativa Ágil para el desarrollo de Software
 Capacidad para adaptar el curso del desarrollo a la evolución de los requisitos y a las circunstancias del entorno de los proyectos.
Ciclo de Vida del Software
Daniel Labra Fernando Figueroa
Scrum Ciclo Profesor: Ing. José Díaz
INGENIERIA DE SOFTWARE
Desarrollar un buen software depende de un gran número de actividades y etapas, donde el impacto de elegir la metodología para un equipo en un determinado.
METODOLOGÍADE DESARROLLO ÁGIL DSDM - FDD
 Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo.
Objetivo 3 Profesora: Nelwi Báez. Reseña En febrero de 2001, tras una reunión celebrada en Utah-EEUU, nace el término “ágil” aplicado al desarrollo de.
CONCEPTO DE CICLO DE VIDA 1 En los departamentos de Sistemas se debe definir un marco de referencia común que debe ser:  Pueda ser empleado por todos.
Fundamentos de Computación
Ingeniería de Software Facultad de Ingeniería Septiembre 2010 Fernando Alsuyet Ariel Illio Matias Baldini.
Extreme Programming (XP) Grupo 03. Extreme Programming - Agenda Introducción Proceso y Fases Roles Prácticas Conclusiones.
Autores: Myriam Montes, Iván Viera, Carlos Caizaguano, José Sancho
Metodologías de Programación II UNAJ - Instituto de Ingeniería y Agronomía - Ingeniería en Informática 1 4 Clase Clase 4 Programación extrema (Parte 2)
Universidad “Gran Mariscal de Ayacucho” Ingeniería de Sistemas Dirección de Operaciones I Participantes: Montes, Kimberlys Mosquera, Johanbert Suarez,
Es una metodología ágil diseñada para el desarrollo de software, basada en la calidad y el monitoreo constante del proyecto. Consiste esencialmente en.
Integrantes: Mejía Zúñiga Yoselin Taco Apaza Pamela Ychuta Torres John.
Metodologías de Desarrollo en Empresas que no Comercializan Software A.S. ADRIAN ESTEBAN MELESI UNIVERSIDAD DE PALERMO - TRABAJO FINAL DE GRADO TUTOR:
Entregables del Proyecto
Metodologías de Desarrollo Ágil
Transcripción de la presentación:

Metodologías Ágiles y XP Patricio Letelier letelier@dsic.upv.es Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia

Contenidos Introducción a Metodologías Ágiles Extreme Programming (XP) Prácticas de XP Conclusiones

¿Qué es una Metodología Ágil? www.agilealliance.com Las Metodologías Ágiles (AMs) valoran: Al individuo y las interacciones en el equipo de desarrollo más que a las actividades y las herramientas Desarrollar software que funciona más que conseguir una buena documentación  Minimalismo respecto del modelado y la documentación del sistema La colaboración con el cliente más que la negociación de un contrato Responder a los cambios más que seguir estrictamente una planificación

¿Por qué surgen las Metodologías Ágiles (AMs)? Dificultad para implantar metodologías tradicionales. Sofisticadas herramientas CASE y notaciones (UML) Una solución a medida para un segmento importante de proyectos de desarrollo de software Pugna entre comunidades/gurús “Aceptar el cambio” ...

Costo de los Cambios en SW Tradicional Costo del cambio Suposición AMs tiempo

Manifiesto de las AMs agilemanifesto.org Principios: La prioridad principal es satisfacer al cliente mediante tempranas y continuas entregas de software que le reporte un valor Dar la bienvenida a los cambios. Los AMs capturan los cambios para que el cliente tenga una ventaja competitiva Entregar frecuentemente software que funcione, desde un par de semanas a un par de meses, con el menor intervalo de tiempo posible entre una entrega y la siguiente

… Manifiesto de las AMs La gente del negocio y los desarrolladores deben trabajar juntos a lo largo del proyecto Construir proyecto en torno a individuos motivados. Darles el entorno y el apoyo que necesitan y confiar en ellos para conseguir el trabajo El diálogo cara a cara es el método más eficiente y efectivo para comunicar información dentro de un equipo de desarrollo El software que funciona es la medida principal de progreso

… Manifiesto de las AMs Los procesos ágiles promueven un desarrollo sostenible. Los promotores, desarrolladores y usuarios deberían ser capaces de mantener una paz constante La atención continua a la calidad técnica y al buen diseño mejora la agilidad La simplicidad es esencial Las mejores arquitecturas, requisitos y diseños surgen de los equipos organizados por sí mismos En intervalos regulares, el equipo reflexiona respecto de cómo llegar a ser más efectivo, y según esto ajusta su comportamiento

Comparación Ágil - ¬Ágil Metodología Ágil Metodología No Ágil Pocos Artefactos Más Artefactos Pocos Roles Más Roles No existe un contrato tradicional o al menos es bastante flexible Existe un contrato prefijado Cliente es parte del equipo de desarrollo (además in-situ) El cliente interactúa con el equipo de desarrollo mediante reuniones Grupos pequeños (< 10 integrantes) y trabajando en el mismo sitio Grupos grandes Menos énfasis en la arquitectura La arquitectura es esencial

Principales AMs Crystal Methodologies, Alistarir Cockburn, www.crystalmethodologies.org SCRUM, Ken Schwaber & Jeff Sutherland, www.controlchaos.com DSDM (Dynamic Systems Development Method), www.dsdm.org Lean Programming, Mary Poppendieck, www.poppendieck.com FDD (Feature-Driven Development), Peter Coad & Jeff De Luca, www.nebulon.com/fdd, www.coad.com/peter/#fdd Extreme Programming, Kent Beck www.extremeprogramming.org, www.xprogramming.com Adaptative Software Development, Jim Highsmith www.adaptivesd.com A Practical Guide to Feature-Driven Development (The Coad Series) by Stephen R Palmer, John M. Felsing , Prentice Hall, 2002 Kent Beck, Extreme Programming Explained, Addison-Wesley, 1999 DSDM: Business Focused Development, Second Edition by Jennifer Stapleton (Editor), Consortium Dsdm, Barry Fazackerley, DSDM Consortium, Addison-Wesley, 2003 Agile Software Development with SCRUM by Schwaber Ken, Mike Beedle, Ken Schwaber, Robert C. Martin, Prentice Hall; 1st edition (October 15, 2001) Agile Software Development by Alistair Cockburn , Addison-Wesley Pub Co; 1st edition (December 15, 2001) Agile Software Development Ecosystems by Jim Highsmith, Addison Wesley Professional; 1st edition (March 26, 2002) Lean Development: An Agile Toolkit for Software Development Managers by Mary Poppendieck, Tom Poppendieck, Addison Wesley Professional; 1st edition (June 4, 2003)

eXtreme Programming

¿Qué es XP? Es una metodología ágil Diseñada para entornos dinámicos Pensada para equipos pequeños (hasta 10 programadores) Orientada fuertemente hacia la codificación Énfasis en la comunicación informal, verbal

Historia de XP Creado por Kent Beck para la plantilla del proyecto C3 en Chrysler Kent fue contratado para dirigir el proyecto Durante el proceso nació una nueva metodología: eXtreme Programming (XP) C3 concluyó exitosamente en 1997

Valores que fomenta XP Comunicación Simplicidad Retroalimentación Coraje

Roles XP c2.com/cgi/wiki?ExtremeRoles Programador (Programmer) Responsable de decisiones técnicas Responsable de construir el sistema Sin distinción entre analistas, diseñadores o codificadores En XP, los programadores diseñan, programan y realizan las pruebas Jefe de Proyecto (Manager) Organiza y guía las reuniones Asegura condiciones adecuadas para el proyecto Cliente (Customer) Es parte del equipo Determina qué construir y cuándo Establece las pruebas funcionales

... Roles XP Entrenador (Coach) Encargado de Pruebas (Tester) Responsable del proceso Tiende a estar en un segundo plano a medida que el equipo madura Encargado de Pruebas (Tester) Ayuda al cliente con las pruebas funcionales Se asegura de que las pruebas funcionales se superan Rastreador (Tracker) Metric Man Observa sin molestar Conserva datos históricos

Captura de Requisitos en XP Historias del Usuario (User-Stories) Establecen los requisitos del cliente Trozos de funcionalidad que aportan valor Se les asignan tareas de programación con un nº de horas de desarrollo Las establece el cliente Son la base para las pruebas funcionales

Captura de Requisitos en XP Una ficha de User-Story

Planificación en XP Planificación por entregas (releases) Se priorizan aquellas user-stories que el cliente selecciona porque son más importantes para el negocio Entregas: Son lo más pequeñas posibles Se dividen en iteraciones (iteración = 2 o 3 semanas) Están compuestas por historias A cada programador se le asigna una tarea de la user-story

Programación en XP La programación de tareas se realiza por parejas La pareja diseña, prueba, implementa e integra el código de la tarea Código dirigido por las pruebas Código modular, intentando refactorizar siempre que se pueda

Programación en XP Una ficha de Tarea

Modelo de un Proyecto XP

Espacio de trabajo XP Espacio abierto Mesas centrales Cubículos en el espacio exterior Espacio de trabajo del proyecto C3 de DaimlerChrysler

Prácticas XP El juego de la planificación Programación en parejas Entregas pequeñas Metáfora Diseño simple Pruebas Refactoring Programación en parejas Propiedad colectiva Integración contínua Semana de 40 horas Cliente in situ Estándares de programación

Prácticas XP El Juego de la planificación Decisiones de negocio (cliente): Alcance  ¿Cuándo debe estar listo el producto para que sea valioso en producción? Prioridad  Prioriza la incorporación de las user-stories Composición de entregas  ¿Qué se necesita para que el negocio sea mejor antes de tener el sw? Fechas de entrega  Fechas cuando el software funcionando causaría una gran diferencia

Prácticas XP ... El Juego de la planificación Decisiones técnicas (programadores y otros): Estimaciones  ¿Cuánto tiempo tardará en implementarse una user-story? Consecuencias  Tener en cuenta las consecuencias técnicas de determinadas decisiones de negocio Proceso  Organización del proceso y el equipo Planificación detallada  Dentro de una entrega, qué user-stories se realizan primero. Intentar trasladar los segmentos de desarrollo más arriesgados al principio, intentando respetar las prioridades del negocio

Prácticas XP ... El Juego de la planificación Reunión diaria XP Reunión diaria “Stand-up Meeting” Todo el equipo Problemas Solutiones De pie en un círculo Evitar discusiones largas Sin conversaciones separadas

Prácticas XP Entregas pequeñas Cada entrega es lo más corta posible: Contenga requisitos más valiosos del sistema (básicos) Reducen el riesgo  mayor retroalimentación desde el cliente, y más frecuente Minimizar el nº de user-stories que componen una entrega  No realizar user-stories a medias

Prácticas XP Metáfora Cada proyecto XP es guiado por una metáfora global Da un contexto al equipo para entender los elementos básicos y sus relaciones Proporciona integridad conceptual

Prácticas XP Diseño simple Se diseña “la cosa más simple que pueda funcionar” Uso de tarjetas CRC Diseño de software correcto, es aquel que: Supera todas las pruebas No tiene lógica duplicada Pone de manifiesto las intenciones importantes de los programadores Tiene el mínimo número de clases y métodos

Prácticas XP Pruebas Las pruebas unitarias se escriben ANTES que el código Pruebas automatizadas Permiten el desarrollo de proyectos de forma rápida y segura Pruebas unitarias  programadores Pruebas funcionales  cliente Resultado  Un programa cada vez más seguro

Prácticas XP Refactoring www.refactoring.com Refactorización = Mejora del código Intentar eliminar complejidad Código duplicado  Refactorización Se plantea su aplicación después de implementar cada user-story

Prácticas XP Programación en parejas www.pairprogramming.com Toda el código se escribe en parejas Se produce código de mayor calidad Extiende el conocimiento “Se realiza el trabajo de 1 persona en casi la mitad del tiempo y mejor” (cuestionable)

Prácticas XP Propiedad colectiva Cualquiera puede modificar el código en cualquier momento  Se evitan cuellos de botella en la codificación Todos asume las responsabilidades sobre el conjunto del sistema Todos conocen algo sobre todas las partes y conocen muy bien aquéllas en las que trabajan

Prácticas XP Integración contínua El código se integra y se prueba después de pocas horas Existe una ordenador dedicado para la integración Cada pareja integra su código en dicho ordenador

Prácticas XP Semana de 40 horas Filosofía: “Los programadores que descansan son más productivos” El exceso de trabajo es un serio problema en un proyecto La gente está más fresca y tiene mejores ideas

Prácticas XP Cliente in situ Cliente real = Aquel que usará el sistema cuando esté en producción El cliente real debe estar con el equipo de trabajo: Responder preguntas Resolver disputas Establecer prioridades Discutir mejoras

Prácticas XP Estándares de programación Son fundamentales cuando los programadores cambian de pareja o hacen refactoring del código de otros Se consigue un código con el mismo estilo, homogéneo, legible

Prácticas XP Interacción entre Prácticas XP: Kent Beck

Conclusiones

Un día de trabajo en XP Obtenido desde http://www.rolemodelsoft.com/XP/xpStudio.html (actualmente no está disponible)

No todas las ideas/prácticas ágiles son buenas Mala Precaución Buena SW funcionando >> Documentation Propiedad colectiva Mejora de la calidad iterativamente Colaboración >> Contrato Stories Pair Programming Frequent Releases Daily Stand-up Meetings Create Great Architectures Historias de usuario Programación en parejas Releases frecuentes Reunión “Stand-up” cada día Crear buenas arquitecturas Working SW >> Documentation Collective Ownership Improve Quality Iteratively Collaboration>>Contracts Nightly Builds (too early to tell) Refactor (when time appropriate) Ever-Present Customers (unlikely to work in real world) Continuous Integration (unlikely for non-trivial) Don’t Create Things to Discard (moderation!) x Nightly Builds Refactoring Cliente in situ Integración contínua No crear cosas que se desecharán Diapositiva obtenida de la presentación “A History of Agile Methods” presentada por Alan Davis en JISBD 2002

Fuerzas que influyen los enfoque para el desarrollo de software Grado de Ceremonia/control en el proceso Fundamentalistas Tendencia global Libertarios Trasparencia traducida desde “A History of Agile Methods” presentada por Alan Davis en las JISBD 2003 (Noviembre 2003, El Escorial, España) libertario, ria. 1. adj. Que defiende la libertad absoluta y, por lo tanto, la supresión de todo gobierno y de toda ley.□ V. comunismo ~ Tiempo 1950’s 1960’s 1970’s 1980’s 1990’s 2000’s 2010’s Diapositiva obtenida de la presentación “A History of Agile Methods” presentada por Alan Davis en JISBD 2002

¿Qué resultado proveen las Metodologías Ágiles? Hay pocos datos concretos del índice de éxito de proyectos Está teniendo un gran auge Aumento en el número de proyectos ¿Por qué? Tiene el apoyo de muchos gurús en ingeniería de sw Es un proceso para gente que odia los procesos Tiene sentido ¿Política? ... Pugna entre comunidades

¿Cuándo utilizar una Metodología Ágil? ¿Existe ya un proceso? Si ¿Reacciona bien a los cambios? Si ¿Está el equipo contento con él? Si  Mejor esperar Se están recogiendo datos (red NAME) http://name.case.unibz.it/ En un futuro se podrán hacer comparaciones sobre lo que es más conveniente

... ¿Cuándo utilizar una Metodología Ágil? ¿Existe ya un proceso? No o existe pero no reacciona bien a los cambios o existe pero el equipo no está contento con él  Una Metodología Ágil puede ser una buena forma de empezar Fácil de financiar A los programadores les gusta A los clientes les gusta el control añadido

¿Qué hace la gente con las Metodologías Ágiles? International Conference on eXtreme Programming and Agile Methods in Software Development (XP200x) http://www.xp2003.org XP Agile Universe http://www.agileuniverse.com

Metodologías Ágiles y XP Fin de la Presentación Metodologías Ágiles y XP Patricio Letelier letelier@dsic.upv.es Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia