Download - Programación Extrema
UNIVERSIDAD DEL ISTMO
Tema: Metodología Ágil - Programación Extrema (XP)
Expositor: José Pablo Santiago Cabrera.
Carrera: Licenciatura En Informática.
13/01/2013
Objetivos
• Introducción.
• Desarrollo. – Historia de la XP.
– Definición de la XP.
– Programacion Extrema.
– Recursos de la XP.
– Valores y principios de la XP.
– Roles en XP.
– Ciclo de vida de un proyecto XP.
– Ventajas y desventajas.
• Conclusión
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Introducción
• La metodología de desarrollo de software evolucionó desde los años 90’s.
• El proceso del modelo en cascada era visto como lento, degradante y con mucho papeleo.
• Inicialmente los métodos ágiles fueron llamados de “peso liviano”.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Introducción
• En una reunión celebra en febrero de 2001
en Utah – EUA, nace el término “ágil”
aplicado al desarrollo de software.
• El objetivo de esta reunión fue:
Dar a conocer los valores y principios de esta
metodología.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Introducción
• Tras esta reunión se creó una organización
llamada “The Agile Alliance”.
• Todo esto genero el Manifiesto Ágil, este es
un documento que resume la filosofía “ágil”
y muestra los valores principales del
desarrollo de software ágil.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Introducción
• Introducir al cliente en las interacciones del
equipo de desarrollo sobre el proceso.
• Desarrollar software que funciona más que
conseguir una buena documentación.
• La colaboración del cliente más que la
negociación de un contrato.
• Responder a los cambios más que seguir
estrictamente un plan.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Introducción
METODOLOGÍA ÁGIL METODOLOGÍA TRADICIONAL
Pocos artefactos, modelos desechables. Más artefactos. El modelo es esencial.
Preparadas para cambios durante el proyecto. Cierta resistencia a los cambios.
Proceso menos controlado, pocos principios. Proceso con numerosas políticas y normas.
El cliente es parte del equipo de desarrollo. El cliente interactúa mediante reuniones.
Existe contrato flexible. Existe un contrato prefijado.
Grupos pequeños trabajando en el mismo sitio. Grupos grandes y posiblemente distribuidos.
Poco consumo de recursos. Más consumo de recursos.
Pocos roles. Mas Roles.
Menos énfasis en la arquitectura del software. La arquitectura de software es esencial.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Introducción
• Ejemplos de Metodologías Ágil:
• Adaptive Software Development (ASD).
• Agile Unified Process (AUP).
• Crystal Clear.
• Essential Unified Process (EssUP).
• Feature Driven Development (FDD).
• Lean Software Development (LSD).
• Kanban.
• Open Unified Process (OpenUP).
• Programación Extrema (XP).
• Método de Desarrollo de Sistemas Dinámicos (DSDM).
• Scrum.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Historia
• En 1989, Cunningham formó un equipo que usaba los principios y muchas de las prácticas que después adoptaría XP.
• Pero se reconoce a Kent Beck como el que articuló esta propuesta y le dio nombre propio con la publicación del libro “Extreme Programming Explained: embrace change” en 1999.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Historia
El manifiesto ágil destaca los valores principales del desarrollo de software ágil, algunas de ellas son:
• Desarrollar software que funciona más que conseguir una buena documentación.
• La colaboración del cliente más que la negociación de un contrato.
• Responder a los cambios más que seguir estrictamente un plan.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Definición
• La Programación Extrema (XP) es una
metodología de desarrollo de peso liviano o
ágil.
• La cual acepta lo que se conoce como
buenas prácticas del desarrollo de sistemas
de software y las lleva al extremo.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Definición
• Este modelo de programación se basa en
una serie de metodologías de desarrollo de
software en la que se da prioridad a los
trabajos que dan un resultado directo.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Definición
• La XP se basa de variables de control,
actividades de control, valores, principios
básicos.
• También existen algunas prácticas
esenciales que distinguen a XP de otras
metodologías de desarrollo.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Definición
• La XP permite controlar los problemas de riesgo en los proyectos mediante medidas o decisiones extremas, y algunas de las características de estas son:
– Se basa en retroalimentación continua entre el cliente y el equipo de desarrollo.
– Comunicación fluida entre todos los integrantes.
– Simplicidad en las soluciones implementadas.
– Coraje para enfrentar los cambios.
– La XP es adecuada para proyectos con requisitos imprecisos y muy cambiantes.
– La toma de decisiones debe ser muy rápida y efectiva.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
XP
• La principal diferencia entre la
metodología de desarrollo de XP y otros
tipos de metodologías de desarrollo es que
se centra a escuchar al usuario.
• Sabiendo escuchar lo que desean los
usuarios se puede calcular la cantidad de
recursos que requerirá.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
XP
• Por ejemplo.
– La filosofía de XP asume que si el analista determina el alcance, la calidad y el tiempo necesarios para terminar el proyecto, puede ajustar el costo.
– Si el analista determina la cantidad de tiempo, la calidad y el costo que se requieren, podría ajustar el alcance.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Recursos de la
Programacion Extrema
– Las actividades básicas de la programación
extrema son:
• Codificar
• Probar
• Escuchar
• Diseñar
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Recursos de la
Programacion Extrema
– Codificar.
• El proceso básicamente es esto:
– Tener un pensamiento.
– Codificarlo.
– Probarlo.
– Verificar si el pensamiento fue correcto.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Recursos de la
Programacion Extrema
– Probar.
• La programación extrema realiza pruebas escritas
para verificar la codificación, la funcionalidad, el
rendimiento y la conformidad con los objetivos.
• Corto Plazo
– Si las pruebas se ejecutan perfectamente se puede seguir
adelante con la confianza renovada.
• Largo Plazo
– Mantiene vivo un sistema, y le permite hacer muchos más
cambios de los que serían posibles.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Recursos de la
Programacion Extrema
– Escuchar
• En la XP, esta actividad se lleva al extremo.
• El desarrollador debe escuchar al cliente.
• Los desarrolladores asumen que no saben nada
acerca del negocio en el que están colaborando, y por
lo tanto deben escuchar cuidadosamente a los
usuarios para obtener las respuestas a sus preguntas.
• Si no escucha, no sabrá lo que debe codificar o lo que
debe probar.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Recursos de la
Programacion Extrema
– Diseñar
• Diseñar es una actividad evolutiva, y por ello los
sistemas que se diseñan con un enfoque de la
programación extrema se conceptualizan como en
constante evolución, siempre diseñándose.
• Diseñar bien permite agregar extensiones al sistema
haciendo cambios en un solo lugar.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Recursos de la
Programacion Extrema
– Las variables de control de recursos son:
• Calidad
• Alcance
• Tiempo
• Costo
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Recursos de la
Programacion Extrema
– Calidad.
• Este recurso se divide en dos calidad interna y
externa.
• Calidad interna.
– Esta calidad se basa de probar factores del software como la
funcionalidad y la conformidad. Se recomienda que
centrarse mas a esta calidad.
• Calidad externa.
– Esta calidad se basa de la percepción del cliente al sistema.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Recursos de la
Programacion Extrema
– La XP permite sacrificar algunos de los aspectos de calidad externos, para que el sistema sea liberado a tiempo. Implicando a que el cliente tenga que lidiar con algunos errores.
– Si el desarrollador desea cumplir con la fecha límite, tal vez la interfaz de usuario no sea perfecta,
– La puede refinar en una versión posterior.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Recursos de la
Programacion Extrema
– Alcance.
• Supongamos que estamos desarrollando un software
para la empresa ADO.
• El cliente pide:
– Pagina web radio.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Recursos de la
Programacion Extrema
• Tiempo.
– Es necesario dedicar suficiente tiempo a la elaboración de un proyecto.
– El tiempo se asigna a actividades separadas.
– La XP desafía la idea de que más tiempo le permitirá obtener los resultados que desea.
– Con frecuencia suele ocurrir que los clientes se sienten felices si parte de la funcionalidad queda lista a tiempo.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Recursos de la
Programacion Extrema
• Costo.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Valores y Principios
de la XP
• En esta metodología existen cuatro valores
que crean un entorno estable para el
desarrollo y son:
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Valores y Principios
de la XP
• Comunicación. – Cada esfuerzo humano tiene la posibilidad de fallar en la
comunicación.
• Simpleza – Cuando se está trabajando en un proyecto de desarrollo de software,
la primera reacción es abrumarse por la complejidad y magnitud de la tarea.
• Retroalimentación – Una retroalimentación buena y concreta, que es útil para el
programador, analista y cliente puede ocurrir en segundos, minutos, días, semanas o meses, dependiendo de lo que se necesita, quién está comunicando y lo que se hará con dicha retroalimentación.
• Valentía – La valentía tiene que ver con un nivel de confianza que debe existir
en el equipo de desarrollo.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Valores y Principios
de la XP
• 12 Principios – El juego de la planificación.
– Pequeñas versiones.
– Metáfora.
– Diseño simple.
– Recodificación.
– Programacion en parejas.
– Propiedad colectiva.
– Integración continua.
– Cuarenta Horas.
– Cliente In Situ.
– Estándares de codificación.
– Hacer pruebas
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Valores y Principios
de la XP
– El juego de la planificación.
• Preguntas entre Negocio- Técnico. – Ámbito. Estimaciones.
– Prioridad. Procesos.
– Fecha de versiones. Consecuencias.
– Pequeñas versiones.
• Versiones pequeñas con los requisitos mas importantes.
– Metáfora.
• Pequeña historia que tiene los desarrolladores de como funciona el sistema.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Valores y Principios
de la XP
– Diseño simple.
• Funciona con todas las pruebas, tiene el menor
numero de clases y métodos.
– Recodificación.
• O refactorizar, consiste en hacer el programa mas
simple sin perder funcionalidad.
– Programacion en parejas.
– Propiedad colectiva.
• Cualquiera que pueda aportar valor al código puede
hacer, no existe individualidad.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Valores y Principios
de la XP
– Integración continua.
• Debe integrarse módulos como mínimo una vez al día y probar su totalidad en el sistema.
– Cuarenta Horas.
– Cliente In Situ.
• Un cliente debe estar presenten con el equipo de programadores.
– Estándares de codificación.
• Se debe establecer un estándar de codificación.
– Hacer pruebas
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Roles en XP
– Cliente
• Escribe «Historias de usuarios» y especifica pruebas
funcionales.
• Establece prioridades.
• Puede ser o no un usuario final.
– Programador
• Hace estimaciones sobre las historias.
• Define tareas a partir de las historias y hace
estimaciones.
• Implementa las historias y las pruebas unitarias.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Roles en XP
– Tutor.
• Observa todo, identifica señales de peligro, se asegura que
el proyecto se mantiene en curso.
• Ayuda en todo.
– Perseguidor (calidad)
• Monitoriza el progreso de los programadores, toma acción
si las cosas tienden a salirse del control.
– Verificador.
• Implementa y corre las pruebas funcionales.
• Presenta graficas de los resultados y se asegura de que la
gente conoce cuando los resultados empiezan a caer.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Roles en XP
– Agorero.
• Se asegura que todos conocen los riesgos que existen.
• Se asegura que las malas noticias no se oculten.
– Gestor.
• Planifica las reuniones.
• Es el responsable directo del propietario de oro.
– Propietario de oro.
• La persona que paga el proyecto.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Ciclo de vida de un
proyecto en XP.
– El ciclo de vida ideal de XP consiste de seis
fases que son:
• Exploración.
• Planificación de la Entrega (Release).
• Iteraciones.
• Producción.
• Mantenimiento.
• Muerte del Proyecto.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Ciclo de vida de un
proyecto en XP.
– Exploración.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Ciclo de vida de un
proyecto en XP.
– Planificación de la Entrega.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Ciclo de vida de un
proyecto en XP.
– Iteraciones
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Ciclo de vida de un
proyecto en XP.
– Producción
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Ciclo de vida de un
proyecto en XP.
– Producción
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Ciclo de vida de un
proyecto en XP.
– Mantenimiento
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Ciclo de vida de un
proyecto en XP.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Ventajas y Desventajas
– Ventajas
• Satisfacción del cliente.
• Cumplimiento de plazos.
• El cliente tiene el control sobre las prioridades.
• Se hacen pruebas continuas durante el proyecto.
• Calidad en el trabajo.
• Es utilizada donde los requerimientos cambian
rápidamente.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Ventajas y Desventajas
– Desventajas
• Es recomendado emplearlo en proyectos a corto
plazo.
• Altos costos en caso de fallar.
• Es complicado predecir costos y tiempo de desarrollo
si no se tiene un buen conocimiento de ellos.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Conclusión
– En conclusión el proceso de esta metodología basada en prototipos es una técnica útil para la recopilación de información para completar el ciclo de vida del desarrollo de sistemas.
– Prácticamente la metodología ágil de programación extrema se encuentra basada en un proceso que promueve la comunicación en el equipo, la sencillez en la implementación, otra muy importante es que el cliente debe estar muy informado e implicado en el desarrollo de esta para aumentar el nivel de conformidad, que el tiempo del desarrollo sea el indicado y que la toma de decisiones se tiene que ser muy rápida pero a la vez efectiva.
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP
Bibliografía
– http://oness.sourceforge.net/docbook/metodologia.html
– http://books.google.com.mx/books?id=G8EL4H4vf7UC&printsec=frontcover&dq=
extreme+programming+explained&hl=es&sa=X&ei=V7GiUNyoOoK9qgGGj4CYAg
&ved=0CC0Q6AEwAA#v=onepage&q=extreme%20programming%20explained&f=
false
– http://mhsaleh.persiangig.com/document/extremeprogramming/Extreme%20Prog
ramming%20Explained%20-%20Kent%20Beck;%20Addison-Wesley,%201999.pdf
13/01/2013
J. Pablo Santiago Cabrera
Calidad de Software
Programacion Extrema XP