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

Post on 19-Jan-2017

277 views 0 download

Transcript of 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

Andrés Lozada Mosto

@alfathenuswww.pixelcode.com.ar

#PHPBsAsmeetupphpbsas.github.io

Conceptos inicialesQué es agile

Manifiesto ágilPrincipios ágilesHistoria de agile

#PHPBsAsmeetupphpbsas.github.io

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)

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.

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.

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.

Historia de Agile

#PHPBsAsmeetupphpbsas.github.io

Agile vs TradicionalDefiniciones

Proceso de incremento de productoTriple restricción

Agile software development

#PHPBsAsmeetupphpbsas.github.io

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

#PHPBsAsmeetupphpbsas.github.io

Proceso de incremento de producto

#PHPBsAsmeetupphpbsas.github.io

Triple restricción

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/

Ventajas & desventajas

#PHPBsAsmeetupphpbsas.github.io

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.

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.

Métodos ágiles

#PHPBsAsmeetupphpbsas.github.io

Agile - No AgileQué no es Agile

Qué es Agile

#PHPBsAsmeetupphpbsas.github.io

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.

Ser Ágil entonces es...

#PHPBsAsmeetupphpbsas.github.io

#PHPBsAsmeetupphpbsas.github.io

“Agile development is more culture than process”

Resumen

#PHPBsAsmeetupphpbsas.github.io

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

Q&A

#PHPBsAsmeetupphpbsas.github.io