Universidad de los Andes
              Facultad de Humanidades y Educación
Maestría en Educación Mención Informática y Diseño Instruccional




           Metodologías Ágiles para
            Desarrollo de Software
          eXtreme Programming (XP)


                                                         Participante:
                                                        Ramón Torres



                         Mérida, Julio 2009
Metodologías Ágiles (livianas) para
     Desarrollo de Software




                                                                                                                               Simplicidad – Velocidad – Entrega Productos - Retroalimentación
                                                      Son un paradigma de Desarrollo de Software basado en procesos
 .                                                  ágiles los cuales intentan evitar los conflictos (retardos, complejidad,
                                                       conflictividad, costos, otros) de las metodologías tradicionales.
 Incremental – Cooperativo – Sencillo - Adaptable


                                                       Promueve el logro de iteraciones a lo largo del ciclo de vida del
                                                        Proyecto, buscando productos de software con bajos costos y
                                                                           minimizando riesgos


                                                      Promueven la comunicación cara a cara entre los miembros del
                                                       Proyecto y los clientes, evitando el trabajo de documentación
                                                                 fijado por las metodologías tradicionales


                                                     Se fundamenta en trabajo organizado de equipos para la continua
                                                     Revisión y Tratamiento de los productos de software alcanzados
                                                                       en cada iteración - reunión



                                                       Son cuestionados y etiquetados como “Indisciplinados”, por el
                                                      Estilo de trabajo y la poca producción de documentación técnica
Metodologías Ágiles (livianas) para
     Desarrollo de Software
      Metodologías Tradicionales                   Metodologías Ágiles
    .
Mayores instrumentos de Documentación     Pocos instrumentos de Documentación de
de modelos, el cual es esencial y se      modelos. El modelado es prescindible y
requiere su mantenimiento.                hasta desechables.
Actores con mayores roles específicos y   Actores con pocos roles, más genéricos y
funcionales                               flexibles


El cliente interactúa con el equipo de    El Cliente es parte del equipo de
desarrollo mediante reuniones             desarrollo (además in-situ)


La arquitectura se define previamente     La arquitectura del Software se va
en el proyecto (análisis – diseño)        definiendo y mejorando a lo largo del
                                          proyecto
Énfasis en la definición del proceso:     Énfasis en los aspectos humanos: el
roles, actividades y artefactos           individuo y el trabajo en equipo


Se espera que no ocurran cambios de       Se esperan cambios durante el proyecto
gran impacto durante el proyecto


                                                            Tomado de Penandes (2002)
Metodologías Ágiles (livianas) para
     Desarrollo de Software
                         VALORES DEL MANIFIESTO AGIL
 .        Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn y otros



           Se valora al individuo y las         Se valora al desarrollo de software que
     interacciones del equipo de desarrollo         Funciones más que lograr una
      sobre el proceso y las herramientas.              Buena documentación.




         Se valora la colaboración con            Se valora el responder a los cambios
       el cliente mas que la negociación                 más que el seguimiento
                 de un contrato                           Estricto de un plan
Metodologías Ágiles (livianas) para
     Desarrollo de Software
                         PRINCIPALES METODOLOGÍAS
 .


               SCRUM                               Crystal Methodologies
      Indicada para proyectos con              Orientada al equipo desarrollo y
     rápidos cambios de requisitos               la reducción de documentos


         Dynamic Systems                      Adaptive Software Development
       Development Method                                  (ASD)
              (DSDM)
                                                 Orientada a componentes de
     Trabajo cooperativo equipo
        desarrollo – usuario.                   Software más que a las tareas



                       EXTREME PROGRAMMING (XP)
                      Relaciones interpersonales (clave del éxito)
                          Retroalimentación cliente – equipo
                          Simplicidad de productos software
Metodologías Ágiles (livianas) para
     Desarrollo de Software
                                        EXTREME PROGRAMMING (XP)
 .

     ADAPTABILIDAD vs PREVISIBILIDAD
                                                     Relaciones
                                                    Interpersona




                                                                                Comunicación – Simplicidad
                                                                                Retroalimentación – Coraje
                                       Requisitos
                                                                   Trabajo en
                                       Imprecisos
                                                                    Equipo
                                       cambiantes


                                                        XP

                                         Alto
                                        Riesgo                     FeedBack
                                        Técnico

                                                     Enfrentar
                                                      Cambios
Metodologías Ágiles (livianas) para
     Desarrollo de Software
             EXTREME PROGRAMMING (XP)
 .               Elementos de Estudio



                         • Especifican requisito de software

                         • Requiere el apoyo del cliente

                         • Tratamiento Dinámico y Flexible
 HISTORIAS DE USUARIOS
                         • Procesada en corto tiempo (programada)

                         • Precisa la Granularidad del proceso

                         • Asignan tareas a los programadores
Metodologías Ágiles (livianas) para
     Desarrollo de Software
               EXTREME PROGRAMMING (XP)
 .                 Elementos de Estudio



                         • Programador

                         • Cliente

                         • Encargado de Pruebas (tester)

     ROLES DE ACTORES    • Encargado de Seguimiento (tracker)

                         • Entrenador (coach)

                         • Consultor

                         • Gestor ( big boss)
Metodologías Ágiles (livianas) para
     Desarrollo de Software
                EXTREME PROGRAMMING (XP)
 .                  Elementos de Estudio




                         • Definición del valor del negocio (cliente)

                         • Estimación de recursos (Programador)

      PROCESOS           • Seleccionan que construir (cliente)
                              según prioridades y recursos

                         • Construcción del Producto (programador)

                         • Reinician el proceso (Ambos)


     ETAPAS - FASES
Metodologías Ágiles (livianas) para
       Desarrollo de Software
   Fases                            Actividades
    .
                Plantean las Historia de usuarios (requisitos)
                Selección y uso de tecnología, herramientas, recursos,
                otros.
Exploración
                Prototipo de Arquitectura del sistema
                Trabajo en Corto tiempo (depende de herramientas)



                Priorizan las Historias de Usuarios (requisitos) y se
                estiman recursos.
                Establecen acuerdos de contenidos y cronograma de
Planificación   entrega.
de la Entrega   Calculan la cantidad de iteraciones - reuniones
                Planifican las iteraciones del producto a entregar
                Prever ajustes al proyecto XP
Metodologías Ágiles (livianas) para
     Desarrollo de Software
  Fases
   .
                                   Actividades
              Desarrollo del Plan de Iteraciones considerando
              Historias de usuarios, Velocidad del proyecto, Recursos,
              Prioridades del cliente.
Iteraciones   Distribución de iteraciones en tareas de programación.
              Asignación de iteraciones por parejas de programadores
              Organizan la entrega de resultados/iteración


              Organización  de actividades del equipo de Desarrollo.
              Desarrollo productos simples, funcionales y
Producción
              estandarizados
              Desarrollo de pruebas (unitarias y funcionales).
              Prever reajuste en desarrollo de los productos
              Puesta en marcha del producto
Metodologías Ágiles (livianas) para
                                              Desarrollo de Software
ITERACIÓN – PRODUCCIÓN - MANTENIMIENTO




                                          .
Metodologías Ágiles (livianas) para
      Desarrollo de Software
    Fases
    .                               Actividades
                 Organizar
                          tareas de soporte al cliente (puesta en
                 marcha)
Mantenimiento Actualizaciones según requisitos del cliente (Historias
              
              de Usuario)
              Ajustar o adaptar cambios (requeridos) al proyecto
Metodologías Ágiles (livianas) para
     Desarrollo de Software
        EXTREME PROGRAMMING (XP)
 .            Casos Prácticos




        Software para la evaluación Online
            bajo el enfoque de procesos

Metología Agiles Desarrollo Software (XP)

  • 1.
    Universidad de losAndes Facultad de Humanidades y Educación Maestría en Educación Mención Informática y Diseño Instruccional Metodologías Ágiles para Desarrollo de Software eXtreme Programming (XP) Participante: Ramón Torres Mérida, Julio 2009
  • 2.
    Metodologías Ágiles (livianas)para Desarrollo de Software Simplicidad – Velocidad – Entrega Productos - Retroalimentación Son un paradigma de Desarrollo de Software basado en procesos . ágiles los cuales intentan evitar los conflictos (retardos, complejidad, conflictividad, costos, otros) de las metodologías tradicionales. Incremental – Cooperativo – Sencillo - Adaptable Promueve el logro de iteraciones a lo largo del ciclo de vida del Proyecto, buscando productos de software con bajos costos y minimizando riesgos Promueven la comunicación cara a cara entre los miembros del Proyecto y los clientes, evitando el trabajo de documentación fijado por las metodologías tradicionales Se fundamenta en trabajo organizado de equipos para la continua Revisión y Tratamiento de los productos de software alcanzados en cada iteración - reunión Son cuestionados y etiquetados como “Indisciplinados”, por el Estilo de trabajo y la poca producción de documentación técnica
  • 3.
    Metodologías Ágiles (livianas)para Desarrollo de Software Metodologías Tradicionales Metodologías Ágiles . Mayores instrumentos de Documentación Pocos instrumentos de Documentación de de modelos, el cual es esencial y se modelos. El modelado es prescindible y requiere su mantenimiento. hasta desechables. Actores con mayores roles específicos y Actores con pocos roles, más genéricos y funcionales flexibles El cliente interactúa con el equipo de El Cliente es parte del equipo de desarrollo mediante reuniones desarrollo (además in-situ) La arquitectura se define previamente La arquitectura del Software se va en el proyecto (análisis – diseño) definiendo y mejorando a lo largo del proyecto Énfasis en la definición del proceso: Énfasis en los aspectos humanos: el roles, actividades y artefactos individuo y el trabajo en equipo Se espera que no ocurran cambios de Se esperan cambios durante el proyecto gran impacto durante el proyecto Tomado de Penandes (2002)
  • 4.
    Metodologías Ágiles (livianas)para Desarrollo de Software VALORES DEL MANIFIESTO AGIL . Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn y otros Se valora al individuo y las Se valora al desarrollo de software que interacciones del equipo de desarrollo Funciones más que lograr una sobre el proceso y las herramientas. Buena documentación. Se valora la colaboración con Se valora el responder a los cambios el cliente mas que la negociación más que el seguimiento de un contrato Estricto de un plan
  • 5.
    Metodologías Ágiles (livianas)para Desarrollo de Software PRINCIPALES METODOLOGÍAS . SCRUM Crystal Methodologies Indicada para proyectos con Orientada al equipo desarrollo y rápidos cambios de requisitos la reducción de documentos Dynamic Systems Adaptive Software Development Development Method (ASD) (DSDM) Orientada a componentes de Trabajo cooperativo equipo desarrollo – usuario. Software más que a las tareas EXTREME PROGRAMMING (XP) Relaciones interpersonales (clave del éxito) Retroalimentación cliente – equipo Simplicidad de productos software
  • 6.
    Metodologías Ágiles (livianas)para Desarrollo de Software EXTREME PROGRAMMING (XP) . ADAPTABILIDAD vs PREVISIBILIDAD Relaciones Interpersona Comunicación – Simplicidad Retroalimentación – Coraje Requisitos Trabajo en Imprecisos Equipo cambiantes XP Alto Riesgo FeedBack Técnico Enfrentar Cambios
  • 7.
    Metodologías Ágiles (livianas)para Desarrollo de Software EXTREME PROGRAMMING (XP) . Elementos de Estudio • Especifican requisito de software • Requiere el apoyo del cliente • Tratamiento Dinámico y Flexible HISTORIAS DE USUARIOS • Procesada en corto tiempo (programada) • Precisa la Granularidad del proceso • Asignan tareas a los programadores
  • 8.
    Metodologías Ágiles (livianas)para Desarrollo de Software EXTREME PROGRAMMING (XP) . Elementos de Estudio • Programador • Cliente • Encargado de Pruebas (tester) ROLES DE ACTORES • Encargado de Seguimiento (tracker) • Entrenador (coach) • Consultor • Gestor ( big boss)
  • 9.
    Metodologías Ágiles (livianas)para Desarrollo de Software EXTREME PROGRAMMING (XP) . Elementos de Estudio • Definición del valor del negocio (cliente) • Estimación de recursos (Programador) PROCESOS • Seleccionan que construir (cliente) según prioridades y recursos • Construcción del Producto (programador) • Reinician el proceso (Ambos) ETAPAS - FASES
  • 10.
    Metodologías Ágiles (livianas)para Desarrollo de Software Fases Actividades . Plantean las Historia de usuarios (requisitos) Selección y uso de tecnología, herramientas, recursos, otros. Exploración Prototipo de Arquitectura del sistema Trabajo en Corto tiempo (depende de herramientas) Priorizan las Historias de Usuarios (requisitos) y se estiman recursos. Establecen acuerdos de contenidos y cronograma de Planificación entrega. de la Entrega Calculan la cantidad de iteraciones - reuniones Planifican las iteraciones del producto a entregar Prever ajustes al proyecto XP
  • 11.
    Metodologías Ágiles (livianas)para Desarrollo de Software Fases . Actividades Desarrollo del Plan de Iteraciones considerando Historias de usuarios, Velocidad del proyecto, Recursos, Prioridades del cliente. Iteraciones Distribución de iteraciones en tareas de programación. Asignación de iteraciones por parejas de programadores Organizan la entrega de resultados/iteración Organización de actividades del equipo de Desarrollo. Desarrollo productos simples, funcionales y Producción estandarizados Desarrollo de pruebas (unitarias y funcionales). Prever reajuste en desarrollo de los productos Puesta en marcha del producto
  • 12.
    Metodologías Ágiles (livianas)para Desarrollo de Software ITERACIÓN – PRODUCCIÓN - MANTENIMIENTO .
  • 13.
    Metodologías Ágiles (livianas)para Desarrollo de Software Fases . Actividades Organizar tareas de soporte al cliente (puesta en marcha) Mantenimiento Actualizaciones según requisitos del cliente (Historias  de Usuario) Ajustar o adaptar cambios (requeridos) al proyecto
  • 14.
    Metodologías Ágiles (livianas)para Desarrollo de Software EXTREME PROGRAMMING (XP) . Casos Prácticos Software para la evaluación Online bajo el enfoque de procesos