Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

Se presenta una introducción a las metodologías ágiles haciendo hincapié en los valores y principios que se proponen desde el manifiesto ágil.

Andres Lozada Mosto

November 20, 2015
Tweet

Other Decks in Technology

Transcript

  1. AGILE Una introducción a la agilidad en el desarrollo de

    software #PHPBsAs meetupphpbsas.github.io
  2. Qué es Agile #PHPBsAs meetupphpbsas.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)
  3. Agile Manifesto #PHPBsAs meetupphpbsas.github.io Estamos descubriendo formas mejores de desarrollar

    software tanto por nuestra propia experiencia como ayudando a terceros. A través de este trabajo hemos aprendido a valorar: Individuos e interacciones sobre Procesos y herramientas Software 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.
  4. Principios ágiles #PHPBsAs meetupphpbsas.github.io Nuestra mayor prioridad es satisfacer al

    cliente mediante la entrega temprana y continua de software con valor. Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo. Los procesos Ágiles aprovechan el cambio para proporcionar ventaja competitiva al cliente. Entregamos software funcional frecuentemente, entre dos semanas y dos meses, con preferencia al periodo de tiempo más corto posible. Los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el 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.
  5. Principios ágiles (cont) #PHPBsAs meetupphpbsas.github.io El software funcionando es la

    medida principal de progreso. Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos 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 de trabajo no realizado, es esencial. Las mejores arquitecturas, requisitos y diseños emergen de equipos auto- organizados. A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación ajustar y perfeccionar su comportamiento en consecuencia.
  6. Agile vs Tradicional Definiciones Proceso de incremento de producto Triple

    restricción Agile software development #PHPBsAs meetupphpbsas.github.io
  7. 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 ágiles Un 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) #PHPBsAs meetupphpbsas.github.io Definiciones
  8. Agile Software Development #PHPBsAs meetupphpbsas.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/
  9. Ventajas de Agile #PHPBsAs meetupphpbsas.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.
  10. Desventajas de Agile #PHPBsAs meetupphpbsas.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.
  11. Agile - No Agile Qué no es Agile Qué es

    Agile #PHPBsAs meetupphpbsas.github.io
  12. Qué no es Agile #PHPBsAs meetupphpbsas.github.io Agile no es un

    Framework Agile 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ía Agile no define una secuencia de pasos y tareas para lograr los objetivos buscados. Agile no es goal/objetivo No existe el “Ahora soy Agile”. Agile es un camino, no un objetivo.
  13. 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. #PHPBsAs meetupphpbsas.github.io