Agile. Una introducción a la agilidad en el desarrollo de software

37
AGILE Una introducción a la agilidad en el desarrollo de software #PHPBsAs meetupphpbsas.github.io

Transcript of Agile. Una introducción a la agilidad en el desarrollo de software

Page 1: Agile. Una introducción a la agilidad en el desarrollo de software

AGILEUna introducción a la agilidad en el desarrollo de software

#PHPBsAsmeetupphpbsas.github.io

Page 2: Agile. Una introducción a la agilidad en el desarrollo de software

Andrés Lozada Mosto

@alfathenuswww.pixelcode.com.ar

#PHPBsAsmeetupphpbsas.github.io

Page 3: Agile. Una introducción a la agilidad en el desarrollo de software

Conceptos inicialesQué es agile

Manifiesto ágilPrincipios ágilesHistoria de agile

#PHPBsAsmeetupphpbsas.github.io

Page 5: Agile. Una introducción a la agilidad en el desarrollo de software

Qué es Agile

#PHPBsAsmeetupphpbsas.github.io

Las metodologías ágiles son una alternativa al manejo tradicional de proyectos. En los proyectos ágiles el resultado se obtiene por medio de un proceso incremental e iterativo en donde los cambios son bienvenidos y cada iteración tiene como finalidad agregar valor verdadero al producto. La mejora continua es un punto fundamental.

La palabra ágil deriva del manifiesto ágil (http://agilemanifesto.org)

Page 6: Agile. Una introducción a la agilidad en el desarrollo de software

Agile Manifesto

#PHPBsAsmeetupphpbsas.github.io

Estamos descubriendo formas mejores de desarrollarsoftware tanto por nuestra propia experiencia comoayudando a terceros. A través de este trabajo hemos

aprendido a valorar:

Individuos e interacciones sobre Procesos y herramientasSoftware funcionando sobre Documentación extensiva

Colaboración con el cliente sobre Negociación contractual

Respuesta ante el cambio sobre Seguir un plan

Esto es, aunque valoramos los elementos de la derecha,valoramos más los de la izquierda.

Page 7: Agile. Una introducción a la agilidad en el desarrollo de software

Principios ágiles

#PHPBsAsmeetupphpbsas.github.io

Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de softwarecon valor.

Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo. Los procesos Ágiles aprovechanel cambio para proporcionar ventaja competitiva al cliente.

Entregamos software funcional frecuentemente, entre dossemanas y dos meses, con preferencia al periodo de tiempo más corto posible.

Los responsables de negocio y los desarrolladorestrabajamos juntos de forma cotidiana durante todoel proyecto.

Los proyectos se desarrollan en torno a individuos motivados. Hay que darles el entorno y el apoyo que necesitan, y confiarles la ejecución del trabajo.

El método más eficiente y efectivo de comunicar información al equipo de desarrollo y entre sus miembros es la conversación cara a cara.

Page 8: Agile. Una introducción a la agilidad en el desarrollo de software

Principios ágiles (cont)

#PHPBsAsmeetupphpbsas.github.io

El software funcionando es la medida principal de progreso.

Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuariosdebemos ser capaces de mantener un ritmo constante de forma indefinida.

La atención continua a la excelencia técnica y al buen diseño mejora la Agilidad.

La simplicidad, o el arte de maximizar la cantidad detrabajo no realizado, es esencial.

Las mejores arquitecturas, requisitos y diseñosemergen de equipos auto-organizados.

A intervalos regulares el equipo reflexiona sobrecómo ser más efectivo para a continuación ajustar yperfeccionar su comportamiento en consecuencia.

Page 9: Agile. Una introducción a la agilidad en el desarrollo de software

Historia de Agile

#PHPBsAsmeetupphpbsas.github.io

Page 10: Agile. Una introducción a la agilidad en el desarrollo de software

Agile vs TradicionalDefiniciones

Proceso de incremento de productoTriple restricción

Agile software development

#PHPBsAsmeetupphpbsas.github.io

Page 12: Agile. Una introducción a la agilidad en el desarrollo de software

Metodologías tradicionales (no ágiles)Las metodologías no ágiles son aquellas que están guiadas por una fuerte planificación durante todo el proceso de desarrollo; llamadas también metodologías tradicionales o clásicas, donde se realiza una intensa etapa de análisis y diseño antes de la construcción del sistema.

Metodologías ágilesUn proceso es ágil cuando el desarrollo de software es incremental (entregas pequeñas de software, con ciclos rápidos), cooperativo (cliente y desarrolladores trabajan juntos constantemente con una cercana comunicación), sencillo (el método en sí mismo es fácil de aprender y modificar, bien documentado), y adaptable (permite realizar cambios de último momento)

#PHPBsAsmeetupphpbsas.github.io

Definiciones

Page 13: Agile. Una introducción a la agilidad en el desarrollo de software

#PHPBsAsmeetupphpbsas.github.io

Proceso de incremento de producto

Page 15: Agile. Una introducción a la agilidad en el desarrollo de software

#PHPBsAsmeetupphpbsas.github.io

Triple restricción

Page 16: Agile. Una introducción a la agilidad en el desarrollo de software

Agile Software Development

#PHPBsAsmeetupphpbsas.github.io

“Agile Development” is an umbrella term for several iterative and incremental software development methodologies. The most popular agile methodologies include Extreme Programming (XP), Scrum, Crystal, Dynamic Systems Development Method (DSDM), Lean Development, and Feature-Driven Development (FDD).

While each of the agile methodologies is unique in its specific approach, they all share a common vision and core values (see the Agile Manifesto). They all fundamentally incorporate iteration and the continuous feedback that it provides to successively refine and deliver a software system. They all involve continuous planning, continuous testing, continuous integration, and other forms of continuous evolution of both the project and the software. They are all lightweight, especially compared to traditional waterfall-style processes, and inherently adaptable. What is more important about agile methods is that they all focus on empowering people to collaborate and make decisions together quickly and effectively.

Fuente: https://www.versionone.com/agile-101/

Page 17: Agile. Una introducción a la agilidad en el desarrollo de software

Ventajas & desventajas

#PHPBsAsmeetupphpbsas.github.io

Page 18: Agile. Una introducción a la agilidad en el desarrollo de software

Ventajas de Agile

#PHPBsAsmeetupphpbsas.github.io

Rápida respuesta a cambios de requisitos a lo largo del desarrollo.Entrega continua y en plazos cortos de software funcional.Trabajo conjunto entre el cliente y el equipo de desarrollo.Minimiza los costos frente a cambios.Importancia de la simplicidad, al eliminar el trabajo innecesario.Atención continua a la excelencia técnica y al buen diseño.Mejora continua de los procesos y el equipo de desarrollo.Evita malentendidos de requerimientos entre el cliente y el equipo.El equipo de desarrollo no malgasta el tiempo y dinero del cliente desarrollando soluciones innecesariamente generales y complejas que en realidad no son un requisito del cliente.Cada componente del producto final ha sido probado y satisface los requerimientos.

Page 19: Agile. Una introducción a la agilidad en el desarrollo de software

Desventajas de Agile

#PHPBsAsmeetupphpbsas.github.io

Falta de documentación del diseño. El código no puede tomarse como una documentación.Problemas derivados de la comunicación oral. Falta de calidad. Probar el código de forma constante no genera productos de calidad, sólo revela falta de análisis y diseño.Fuerte dependencia de las personas. Falta de procesos de revisión del código. Falta de reusabilidad. La falta de documentación hacen difícil que pueda reutilizarse el código ágil.Sobre-costos y retrasos derivados de la refactorización continua. Rigidez. Algunos métodos ágiles son muy rígidos.Cambios. Los modelos de datos son “pesados” y no pueden cambiarse así como así solo porque el cliente que irá incorporar más funciones al sistema.Problemas derivados del fracaso de los proyectos ágiles. Si un proyecto ágil fracasa no hay documentación o hay muy poca; lo mismo ocurre con el diseño. La comprensión del sistema se queda en las mentes de los desarrolladores.

Page 20: Agile. Una introducción a la agilidad en el desarrollo de software

Métodos ágiles

#PHPBsAsmeetupphpbsas.github.io

Page 23: Agile. Una introducción a la agilidad en el desarrollo de software

Agile - No AgileQué no es Agile

Qué es Agile

#PHPBsAsmeetupphpbsas.github.io

Page 24: Agile. Una introducción a la agilidad en el desarrollo de software

Qué no es Agile

#PHPBsAsmeetupphpbsas.github.io

Agile no es un FrameworkAgile no es Scrum o Kanban o XP o (whatever). Estos recomiendan un conjunto

estandarizado de conceptos, prácticas y criterios para resolver un problema en particular que adhieren a la filosofía Agile.

Agile no es una MetodologíaAgile no define una secuencia de pasos y tareas para lograr los objetivos buscados.

Agile no es goal/objetivoNo existe el “Ahora soy Agile”. Agile es un camino, no un objetivo.

Page 25: Agile. Una introducción a la agilidad en el desarrollo de software

Ser Ágil entonces es...

#PHPBsAsmeetupphpbsas.github.io

Page 28: Agile. Una introducción a la agilidad en el desarrollo de software

#PHPBsAsmeetupphpbsas.github.io

“Agile development is more culture than process”

Page 31: Agile. Una introducción a la agilidad en el desarrollo de software

Resumen

#PHPBsAsmeetupphpbsas.github.io

Page 33: Agile. Una introducción a la agilidad en el desarrollo de software

La ingeniería de software ágil combina una filosofía y un conjunto de directrices de desarrollo. La filosofía busca la satisfacción del cliente y la entrega temprana de software incremental; equipos de proyecto pequeños y con alta motivación; métodos informales y una simplicidad general del desarrollo. Las directrices del desarrollo resaltan la entrega sobre el análisis y el diseño (aunque estas actividades no se descartan), y la comunicación activa y continua entre los desarrolladores y los clientes.

#PHPBsAsmeetupphpbsas.github.io

Page 35: Agile. Una introducción a la agilidad en el desarrollo de software

Q&A

#PHPBsAsmeetupphpbsas.github.io