Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes...

15
Un modelo de desarrollo ágil, generalmente es un proceso Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo (Clientes y ciclos rápidos), también Cooperativo (Clientes y desarrolladores trabajan constantemente con una comunicación desarrolladores trabajan constantemente con una comunicación muy fina y constante), sencillo (El método es fácil de aprender muy fina y constante), sencillo (El método es fácil de aprender y modificar para el equipo, es bien documentado por medio de y modificar para el equipo, es bien documentado por medio de libros o la Web) y finalmente adaptativo (capaz de permitir libros o la Web) y finalmente adaptativo (capaz de permitir cambios de último momento). cambios de último momento). Las metodologías ágiles proporcionan una serie de pautas y Las metodologías ágiles proporcionan una serie de pautas y principios junto a técnicas pragmáticas que puede que no curen principios junto a técnicas pragmáticas que puede que no curen todos los males pero harán la entrega del proyecto menos todos los males pero harán la entrega del proyecto menos complicada y más satisfactoria tanto para los clientes como complicada y más satisfactoria tanto para los clientes como para los equipos de entrega. para los equipos de entrega. El desarrollo de software ágil hace referencia a un grupo de El desarrollo de software ágil hace referencia a un grupo de metodologías de desarrollo que se basan en principios metodologías de desarrollo que se basan en principios similares. Generalmente promueven: similares. Generalmente promueven: Un proceso de gestión de proyectos que fomenta la inspección Un proceso de gestión de proyectos que fomenta la inspección y adaptación frecuente. y adaptación frecuente.

Transcript of Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes...

Page 1: Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo.

Un modelo de desarrollo ágil, generalmente es un proceso Incremental, Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo (Clientes y desarrolladores trabajan constantemente con una Cooperativo (Clientes y desarrolladores trabajan constantemente con una comunicación muy fina y constante), sencillo (El método es fácil de comunicación muy fina y constante), sencillo (El método es fácil de aprender y modificar para el equipo, es bien documentado por medio de aprender y modificar para el equipo, es bien documentado por medio de libros o la Web) y finalmente adaptativo (capaz de permitir cambios de libros o la Web) y finalmente adaptativo (capaz de permitir cambios de último momento).último momento).

Las metodologías ágiles proporcionan una serie de pautas y principios junto Las metodologías ágiles proporcionan una serie de pautas y principios junto a técnicas pragmáticas que puede que no curen todos los males pero harán a técnicas pragmáticas que puede que no curen todos los males pero harán la entrega del proyecto menos complicada y más satisfactoria tanto para la entrega del proyecto menos complicada y más satisfactoria tanto para los clientes como para los equipos de entrega.los clientes como para los equipos de entrega.

El desarrollo de software ágil hace referencia a un grupo de metodologías de El desarrollo de software ágil hace referencia a un grupo de metodologías de desarrollo que se basan en principios similares. Generalmente promueven:desarrollo que se basan en principios similares. Generalmente promueven:

Un proceso de gestión de proyectos que fomenta la inspección y Un proceso de gestión de proyectos que fomenta la inspección y adaptación frecuente.adaptación frecuente.

Una filosofía líder que fomenta trabajo en equipo, organización propia y Una filosofía líder que fomenta trabajo en equipo, organización propia y responsabilidad.responsabilidad.

Page 2: Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo.

Un conjunto de mejores prácticas de ingeniería que permite la entrega Un conjunto de mejores prácticas de ingeniería que permite la entrega rápida de software de alta calidad.rápida de software de alta calidad.

Un enfoque de negocio que alinea el desarrollo con las necesidades de Un enfoque de negocio que alinea el desarrollo con las necesidades de los clientes y los objetivos de la compañíalos clientes y los objetivos de la compañía

Están especialmente orientadas para proyectos pequeños, las metodologías Están especialmente orientadas para proyectos pequeños, las metodologías ágiles constituyen una solución a medida para ese entorno, aportando una ágiles constituyen una solución a medida para ese entorno, aportando una elevada simplificación que a pesar de ello no renuncia a las prácticas elevada simplificación que a pesar de ello no renuncia a las prácticas esenciales para asegurar la calidad del producto.esenciales para asegurar la calidad del producto.

Las metodologías ágiles son sin duda uno de los temas recientes en la Las metodologías ágiles son sin duda uno de los temas recientes en la ingeniería de software que están acaparando gran interés. En la comunidad ingeniería de software que están acaparando gran interés. En la comunidad de la ingeniería del software, se está viviendo con intensidad un debate de la ingeniería del software, se está viviendo con intensidad un debate abierto entre los partidarios de las metodologías tradicionales y aquellos que abierto entre los partidarios de las metodologías tradicionales y aquellos que apoyan las ideas surgidas del “manifiesto ágil”.apoyan las ideas surgidas del “manifiesto ágil”.

Nacen como respuesta a los problemas tradicionales y se basa en dos Nacen como respuesta a los problemas tradicionales y se basa en dos aspectos puntuales, el retrasar las decisiones y la planificación adaptativa; aspectos puntuales, el retrasar las decisiones y la planificación adaptativa; permitiendo potencia aún más el desarrollo de software a gran escala.permitiendo potencia aún más el desarrollo de software a gran escala.

Page 3: Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo.

Esta nueva teoría de Esta nueva teoría de Manifiesto Ágil Manifiesto Ágil establece las siguientes principales establece las siguientes principales ideas:ideas:

Los individuos y las interacciones entre ellos son más importantes Los individuos y las interacciones entre ellos son más importantes que las herramientas y los procesos empleados. que las herramientas y los procesos empleados.

Es más importante crear un producto software que funcione que Es más importante crear un producto software que funcione que escribir documentación exhaustiva. escribir documentación exhaustiva.

La colaboración con el cliente debe prevalecer sobre la negociación La colaboración con el cliente debe prevalecer sobre la negociación de contratos.de contratos.

La capacidad de respuesta ante un cambio es más importante que el La capacidad de respuesta ante un cambio es más importante que el seguimiento estricto de un plan.seguimiento estricto de un plan.

Entre los principales métodos ágiles tenemos el XP (eXtreme Programming), Entre los principales métodos ágiles tenemos el XP (eXtreme Programming), Scrum, Iconix, Cristal Methods, AUP entre otras.Scrum, Iconix, Cristal Methods, AUP entre otras.

Estas metodologías ponen de relevancia que la capacidad de respuesta a un Estas metodologías ponen de relevancia que la capacidad de respuesta a un cambio es más importante que el seguimiento estricto de un plan. Lo que cambio es más importante que el seguimiento estricto de un plan. Lo que proponen es porque para muchos clientes esta flexibilidad será una ventaja proponen es porque para muchos clientes esta flexibilidad será una ventaja competitiva y porque estar preparados para el cambio significar reducir su competitiva y porque estar preparados para el cambio significar reducir su coste.coste.

Page 4: Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo.

Retrasar las decisiones y Planificación Adaptativa Retrasar las decisiones y Planificación Adaptativa

Es el eje en cual gira la metodología ágil, el retrasar las decisiones tan como Es el eje en cual gira la metodología ágil, el retrasar las decisiones tan como sea posible de manera responsable será ventajoso tanto para el cliente como sea posible de manera responsable será ventajoso tanto para el cliente como para la empresa, lo cual permite siempre mantener una satisfacción en el para la empresa, lo cual permite siempre mantener una satisfacción en el cliente y por ende el éxito del producto, las principales ventajas de retrasar cliente y por ende el éxito del producto, las principales ventajas de retrasar las decisiones son:las decisiones son:

Reduce el número de decisiones de alta inversión que se toman.Reduce el número de decisiones de alta inversión que se toman.

Reduce el número de cambios necesario en el proyecto.Reduce el número de cambios necesario en el proyecto.

Reduce el coste del cambioReduce el coste del cambio

La planificación adaptativa permite estar preparados para el cambio ya que La planificación adaptativa permite estar preparados para el cambio ya que se ha de introducir en el proceso de desarrollo, además hacer una se ha de introducir en el proceso de desarrollo, además hacer una planificación adaptativa consiste en tomar decisiones a lo largo del proyecto, planificación adaptativa consiste en tomar decisiones a lo largo del proyecto, se estará entonces transformando el proyecto en un conjunto de proyectos se estará entonces transformando el proyecto en un conjunto de proyectos pequeños.pequeños.

Esta planificación a corto plazo permitirá tener software disponible para los Esta planificación a corto plazo permitirá tener software disponible para los clientes y además ir aprendiendo del clientes y además ir aprendiendo del feedbackfeedback para hacer la planificación para hacer la planificación más sensible, sea ante inconvenientes que aceleren o retrasen el producto.más sensible, sea ante inconvenientes que aceleren o retrasen el producto.

Page 5: Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo.

EXTREME PROGRAMMING (XP)

MODELO DE EXTREME PROGRAMMINGMODELO DE EXTREME PROGRAMMING

Page 6: Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo.

Es la más destacada de los Es la más destacada de los procesos ágiles de desarrollo de software de desarrollo de software formulada por formulada por Kent BeckKent Beck. La programación extrema se diferencia de las . La programación extrema se diferencia de las metodologías tradicionales principalmente en que pone más énfasis en la metodologías tradicionales principalmente en que pone más énfasis en la adaptabilidad que en la previsibilidad.adaptabilidad que en la previsibilidad.

Los defensores de XP consideran que los cambios de requisitos sobre la Los defensores de XP consideran que los cambios de requisitos sobre la marcha son un aspecto natural, inevitable e incluso deseable del desarrollo marcha son un aspecto natural, inevitable e incluso deseable del desarrollo de proyectos. Creen que ser capaz de adaptarse a los cambios de de proyectos. Creen que ser capaz de adaptarse a los cambios de requisitos en cualquier punto de la vida del proyecto es una aproximación requisitos en cualquier punto de la vida del proyecto es una aproximación mejor y más realista que intentar definir todos los requisitos al comienzo mejor y más realista que intentar definir todos los requisitos al comienzo del proyecto e invertir esfuerzos después en controlar los cambios en los del proyecto e invertir esfuerzos después en controlar los cambios en los requisitos.requisitos.

Las características fundamentales del método son:Las características fundamentales del método son: Desarrollo iterativo e incremental: Desarrollo iterativo e incremental: pequeñas mejoras, unas tras otras.pequeñas mejoras, unas tras otras. Pruebas unitarias continuasPruebas unitarias continuas, frecuentemente repetidas y , frecuentemente repetidas y

automatizadas, incluyendo automatizadas, incluyendo pruebas de regresiónpruebas de regresión. Se aconseja escribir el . Se aconseja escribir el código de la prueba antes de la codificación.código de la prueba antes de la codificación.

Programación por parejasProgramación por parejas: se recomienda que las tareas de desarrollo : se recomienda que las tareas de desarrollo se lleven a cabo por dos personas en un mismo puesto. Supone que la se lleven a cabo por dos personas en un mismo puesto. Supone que la mayor calidad del código escrito de esta manera (código es revisado y mayor calidad del código escrito de esta manera (código es revisado y discutido mientras se escribe).discutido mientras se escribe).

Page 7: Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo.

Frecuente interacción del equipo de programación con el cliente o usuario. Se recomienda que un representante del cliente trabaje junto al equipo de desarrollo.

CorrecciónCorrección de todos los de todos los erroreserrores antes de añadir nueva funcionalidad. antes de añadir nueva funcionalidad. Hacer entregas frecuentes.Hacer entregas frecuentes.

RefactorizaciónRefactorización del código, es decir, reescribir ciertas partes del código del código, es decir, reescribir ciertas partes del código para aumentar su legibilidad y mantenibilidad pero sin modificar su para aumentar su legibilidad y mantenibilidad pero sin modificar su comportamiento. Las pruebas han de garantizar que en la refactorización comportamiento. Las pruebas han de garantizar que en la refactorización no se ha introducido ningún fallo.no se ha introducido ningún fallo.

Propiedad del código compartidaPropiedad del código compartida: en vez de dividir la responsabilidad : en vez de dividir la responsabilidad en el desarrollo de cada módulo en grupos de trabajo distintos, este en el desarrollo de cada módulo en grupos de trabajo distintos, este método promueve el que todo el personal pueda corregir y extender método promueve el que todo el personal pueda corregir y extender cualquier parte del proyecto. Las frecuentes pruebas de regresión cualquier parte del proyecto. Las frecuentes pruebas de regresión garantizan que los posibles errores serán detectados.garantizan que los posibles errores serán detectados.

Simplicidad en el códigoSimplicidad en el código: es la mejor manera de que las cosas : es la mejor manera de que las cosas funcionen. Cuando todo funcione se podrá añadir funcionalidad si es funcionen. Cuando todo funcione se podrá añadir funcionalidad si es necesario. La programación extrema apuesta que en más sencillo hacer necesario. La programación extrema apuesta que en más sencillo hacer algo simple y tener un poco de trabajo extra para cambiarlo si se requiere, algo simple y tener un poco de trabajo extra para cambiarlo si se requiere, que realizar algo complicado y quizás nunca utilizarlo.que realizar algo complicado y quizás nunca utilizarlo.

Page 8: Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo.

VentajasVentajas

Apropiado para entornos volátilesApropiado para entornos volátiles

Estar preparados para el cambio, significa reducir su coste.Estar preparados para el cambio, significa reducir su coste.

Planificación más transparente para nuestros clientes, conocen las Planificación más transparente para nuestros clientes, conocen las fechas de entrega de funcionalidades. Vital para su negociofechas de entrega de funcionalidades. Vital para su negocio

Permitirá definir en cada iteración cuales son los objetivos de la Permitirá definir en cada iteración cuales son los objetivos de la siguientesiguiente

Permite tener realimentación de los usuarios muy útil.Permite tener realimentación de los usuarios muy útil.

La presión esta a lo largo de todo el proyecto y no en una entrega La presión esta a lo largo de todo el proyecto y no en una entrega final final

DesventajasDesventajas

Delimitar el alcance del proyecto con nuestro clienteDelimitar el alcance del proyecto con nuestro cliente  Para mitigar esta desventaja se plantea definir un alcance a alto nivel basado Para mitigar esta desventaja se plantea definir un alcance a alto nivel basado en la experiencia.en la experiencia.

Page 9: Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo.

AUP (AGIL UNIFIED PROCESS)AUP (AGIL UNIFIED PROCESS)

ESQUEMA DE TRABAJO AUPESQUEMA DE TRABAJO AUP

Page 10: Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo.
Page 11: Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo.

SCRUMSCRUM

ESQUEMA DE TRABAJO SCRUMESQUEMA DE TRABAJO SCRUM

Page 12: Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo.

Scrum:Scrum: es un proceso ágil y liviano que sirve para administrar y controlar el es un proceso ágil y liviano que sirve para administrar y controlar el desarrollo de software. El desarrollo se realiza en forma iterativa e desarrollo de software. El desarrollo se realiza en forma iterativa e incremental (una iteración es un ciclo corto de construcción repetitivo). Cada incremental (una iteración es un ciclo corto de construcción repetitivo). Cada ciclo o iteración termina con una pieza de software ejecutable que incorpora ciclo o iteración termina con una pieza de software ejecutable que incorpora nueva funcionalidad. Las iteraciones en general tienen una duración entre 2 y nueva funcionalidad. Las iteraciones en general tienen una duración entre 2 y 4 semanas.4 semanas.

Se focaliza en priorizar el trabajo en función del valor que tenga para el Se focaliza en priorizar el trabajo en función del valor que tenga para el negocio, maximizando la utilidad de lo que se construye y el retorno de negocio, maximizando la utilidad de lo que se construye y el retorno de inversión. Está diseñado especialmente para adaptarse a los cambios en los inversión. Está diseñado especialmente para adaptarse a los cambios en los requerimientos, por ejemplo en un mercado de alta competitividad. Los requerimientos, por ejemplo en un mercado de alta competitividad. Los requerimientos y las prioridades se revisan y ajustan durante el proyecto en requerimientos y las prioridades se revisan y ajustan durante el proyecto en intervalos muy cortos y regulares. De esta forma se puede adaptar en tiempo intervalos muy cortos y regulares. De esta forma se puede adaptar en tiempo real el producto que se está construyendo a las necesidades del cliente. Se real el producto que se está construyendo a las necesidades del cliente. Se busca entregar software que realmente resuelva las necesidades, busca entregar software que realmente resuelva las necesidades, aumentando la satisfacción del clienteaumentando la satisfacción del cliente

En Scrum, el equipo se focaliza en una única cosa: construir software de En Scrum, el equipo se focaliza en una única cosa: construir software de calidad. Por el otro lado, la gestión de un proyecto Scrum se focaliza en calidad. Por el otro lado, la gestión de un proyecto Scrum se focaliza en definir cuales son las características que debe tener el producto a construir definir cuales son las características que debe tener el producto a construir (qué construir, qué no y en qué orden) y en remover cualquier obstáculo que (qué construir, qué no y en qué orden) y en remover cualquier obstáculo que pudiera entorpecer la tarea del equipo de desarrollo. Se busca que los pudiera entorpecer la tarea del equipo de desarrollo. Se busca que los equipos sean lo más efectivos y productivos posible.equipos sean lo más efectivos y productivos posible.

Page 13: Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo.

Scrum tiene un conjunto de reglas muy pequeño y muy simple y está basado Scrum tiene un conjunto de reglas muy pequeño y muy simple y está basado en los principios de inspección continua, adaptación, auto-gestión e en los principios de inspección continua, adaptación, auto-gestión e innovación. El cliente se entusiasma y se compromete con el proyecto dado innovación. El cliente se entusiasma y se compromete con el proyecto dado que ve crecer el producto iteración a iteración y encuentra las herramientas que ve crecer el producto iteración a iteración y encuentra las herramientas para alinear el desarrollo con los objetivos de negocio de su empresa.para alinear el desarrollo con los objetivos de negocio de su empresa.

Por otro lado, los desarrolladores encuentran un ámbito propicio para Por otro lado, los desarrolladores encuentran un ámbito propicio para desarrollar sus capacidades profesionales y esto resulta en un incremento en desarrollar sus capacidades profesionales y esto resulta en un incremento en la motivación de los integrantes del equipo.la motivación de los integrantes del equipo.

Page 14: Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo.

ICONIXICONIX

El proceso de ICONIX maneja casos de uso, como el RUP, pero le falta mucho El proceso de ICONIX maneja casos de uso, como el RUP, pero le falta mucho para llegar al nivel del RUP. También es relativamente pequeño y firme, como para llegar al nivel del RUP. También es relativamente pequeño y firme, como XP, pero no desecha el análisis y diseño que hace XP. Este proceso también XP, pero no desecha el análisis y diseño que hace XP. Este proceso también hace uso aerodinámico del UML mientras guarda un enfoque afilado en el hace uso aerodinámico del UML mientras guarda un enfoque afilado en el seguimiento de requisitos.seguimiento de requisitos.

ESQUEMA DE TRABAJO ICONIXESQUEMA DE TRABAJO ICONIX

Page 15: Un modelo de desarrollo ágil, generalmente es un proceso Incremental, (pequeños y frecuentes releases o entregas con ciclos rápidos), también Cooperativo.

El proceso se queda igual a la visión original de Jacobson sobre el manejo de El proceso se queda igual a la visión original de Jacobson sobre el manejo de casos de uso, esto produce un resultado concreto, específico y casos de uso casos de uso, esto produce un resultado concreto, específico y casos de uso fácilmente entendibles, que un equipo de un proyecto puede usar para fácilmente entendibles, que un equipo de un proyecto puede usar para conducir el esfuerzo hacia un desarrollo real. conducir el esfuerzo hacia un desarrollo real. Como se ve en el diagrama, retrata la esencia del enfoque aerodinámico al Como se ve en el diagrama, retrata la esencia del enfoque aerodinámico al desarrollo del software, que incluye un juego mínimo de diagramas de UML y desarrollo del software, que incluye un juego mínimo de diagramas de UML y algunas valiosas técnicas que se toman de los casos del uso para codificar algunas valiosas técnicas que se toman de los casos del uso para codificar rápida y eficazmente. El enfoque es flexible y abierto; siempre se puede rápida y eficazmente. El enfoque es flexible y abierto; siempre se puede seleccionar de los otros aspectos del UML para complementar los materiales seleccionar de los otros aspectos del UML para complementar los materiales básicos.básicos.