INSTITUTO TECNOLÓGICO DE
            PARRAL


           Desarrollo Ágil
     Reingeniería de software
Titular: LI. Diana Estela Parra Flores.
Elaborado por:
Fredy Ponce Holguín
Iván Arturo Gardea Porras.
Desarrollo Ágil
Reingeniería de Software
¿Qué es?
• La ingeniería de software ágil combina una
  filosofía con un conjunto de lineamientos de
  desarrollo.
La filosofía pone el énfasis en:
  – La satisfacción del cliente.
  – Entrega rápida del software incremental
  – Equipos pequeños y muy motivados.
  – Sencillez general en el desarrollo.
¿Qué es? (2)
Los lineamientos de desarrollo enfatizan:
  – Entrega sobre análisis y diseño.

  – Comunicación activa con el cliente.

  – Comunicación continua con el cliente.
¿Quién lo hace?
  Los ingenieros de software y otros
  participantes en el proyecto:
• Gerentes.
• Clientes.
• Usuarios finales.
Que forman un equipo con organización propia
  y que controlan su propio destino.
¿Por qué es importante?
El ámbito moderno de negocios que genera
sistemas basados en computadora y
productos de software evoluciona rápida y
constantemente. La ingeniería de software
ágil representa una alternativa razonable a la
ingeniería de software convencional para
ciertas clases de SW.
¿Cuáles son los pasos?
• Comunicación.

• Planeación.

• Modelado.

• Construcción.

• Despliegue.
¿Cómo me aseguro de que se hiso
            bien?
El trabajo estará bien
hecho si el equipo ágil
concuerda en que el
proceso funciona y en que
produce incrementos de
software utilizables que
satisfagan al cliente.
Software Hoy en Día
• Mito: Los
  programadores de
  ahora ya no
  programan como los
  de antes.

• Herramientas más
  fáciles y productivas
• El software es cada día
  más complejo
Metodologías Ágiles
• Siguen desarrollando las mismas actividades
  del proceso de desarrollo de software, sólo
  difieren en la forma de hacerlo.

• Las Metodologías Ágiles se fundamentan en
  4 principios básicos (manifiesto ágil):

• Al individuo y las interacciones en el equipo
  de desarrollo más que a las actividades y las
  herramientas.
Manifiesto Ágil
1. Al individuo y las interacciones en el equipo de desarrollo
   más que a las actividades y las herramientas.

2. Desarrollar software que funciona más que conseguir
   una buena documentación. Minimalismo respecto del
   modelado y la documentación del sistema.

3. La colaboración con el cliente más que la
   negociación de un contrato.

4. Responder a los cambios más que seguir
   estrictamente una planificación.
Beneficios
• Es más adecuada para los cambios
  reduciendo los errores (costos) y logrando
  la satisfacción de los clientes
                            Tradicional
   Costo
     del
  cambio




                               Suposición MAs


                                          tiempo
Método Tradicional vs Ágil
Metodología Ágil                                                Metodología Tradicional

Pocos Artefactos. El modelado es prescindible, modelos          Más Artefactos. El modelado es esencial, mantenimiento de
desechables.                                                    modelos.

Pocos Roles, más genéricos y flexibles.                         Más Roles, más específicos.

No existe un contrato tradicional, debe ser bastante            Existe un contrato prefijado.
flexible.

Cliente es parte del equipo de desarrollo (además in-situ).     El cliente interactúa con el equipo de desarrollo mediante
                                                                reuniones.

Orientada a proyectos pequeños. Corta duración (o entregas      Aplicables a proyectos de cualquier tamaño, pero suelen ser
frecuentes), equipos pequeños (< 10 integrantes) y              especialmente efectivas/usadas en proyectos grandes y con
trabajando en el mismo sitio.                                   equipos posiblemente dispersos.




La arquitectura se va definiendo y mejorando a lo largo del     Se promueve que la arquitectura se defina tempranamente
proyecto.                                                       en el proyecto.

Énfasis en los aspectos humanos: el individuo y el trabajo en   Énfasis en la definición del proceso: roles, actividades y
equipo .                                                        artefactos.

Se esperan cambios durante el proyecto.                         Se espera que no ocurran cambios de gran impacto durante
                                                                el proyecto.
Metodologías Ágiles
• Las dos principales metodologías ágiles
  son scrum y XP (eXtreme Programming).

• Cualquiera que fuera el método ágil debe
  de cumplir con el manifiesto ágil.

• Scrum es certificable mientras que XP no
  lo es, pero muchos equipos de desarrollo
  la manejan ampliamente.
XP
• Es una metodología idónea para equipos de
  desarrollo pequeños menores a 10 personas.

• Se caracteriza por ser una metodología
  “ligera” (excluye todo lo que no sirve dejando
  la esencia o “sabor” de las cosas).

• Se centra en la implementación (codificación)
  por lo que es ideal para entornos dinámicos.
XP
• La comunicación se da de
  manera     muy     informal,
  generalmente verbal.
• Las metodologías ágiles se
  preocupan por inculcar
  valores y XP no es la
  excepción, sus principales
  valores son: comunicación,
  simplicidad,
  retroalimentación y coraje.
XP
• Los actores que participan en el desarrollo de
  software son:

• Programador: responsable de decisiones técnicas y
  de construir el sistema. No hay distinción entre
  analistas, diseñadores o codificadores. Es decir, en
  XP los programadores modelan, codifican y
  prueban.

• Clientes: son parte del sistema, determinar que
  construir y cuando, realizan test para determinar
  cuando algo está completo.
XP
• Entrenador (Coach): es el líder del equipo.
  Tiende a estar en un segundo plano a
  medida que el equipo madura

• Rastreador (Tracker): también llamado Metric
  Man, se encarga de observar sin molestar,
  debe conservar datos históricos.

• Probador (Tester): Ayuda al cliente con las
  pruebas funcionales.
XP
• El proceso de desarrollo en XP se puede resumir como:

Mientras(sistema_es_útil) {
   Captar requisitos
  User Stories
  Methaphor
   Planificar
  Release planning
  Iteration planning
 Desarrollar
   Programming
    Presentar la entrega
  Releasing
}
XP
• XP es una metodología muy utilizada pero
  como todo tiene también sus puntos débiles.
  Entre ellos que pocos son los que utilizan la
  metodología completa.

• A continuación se muestran y se explican las
  prácticas que componen a la Programación
  Extrema.

• XP no es sólo tirar líneas de código fuente
XP
• Las metodologías ágiles se caracterizan por
  fomentar valores como:

•   Comunicación
•   Simplicidad
•   Retroalimentación
•   Coraje

• Para muchas empresas es más importante las
  actitudes que las aptitudes.
Artefactos en XP
• Historias del Usuario

• Tareas de Ingeniería

• Pruebas de Aceptación
• Pruebas Unitarias y de Integración

• Plan de la Entrega
• Código
Clima de Trabajo
• Espacio abierto
• Mesas centrales
• Cubículos en el espacio exterior
Clima de Trabajo
• Reunión diaria: “Stand-up Meeting”
  – Todo el equipo
  – Problemas
  – Soluciones
• De pie en un círculo
  – Evitar discusiones largas
  – Sin conversaciones separadas
Scrum
• Es otra metodología ágil que
  entre sus principales
  características están:

• Desarrollo de software por
  medio de iteraciones (Sprints).

• Indicado para proyectos con un
  rápido cambio de
  requerimientos.

• Gran protagonismo de reuniones
  a lo largo del proyecto.
Scrum
• Los actores que intervienen en esta
  metodología son:

•   Propietarios del producto.
•   Usuarios del producto.
•   Scrum máster .
•   Equipo de scrum.
Scrum
Scrum
• Los sprints son la base del desarrollo en
  scrum, consisten en una serie de actividades
  previamente definidas en un lapso de 30
  días.

• El product backlog es la lista de las tareas a
  realizar durante todo el proyecto. No es una
  lista fija. Se prioriza las tareas según los
  requisitos de los usuarios o del propietario de
  la aplicación.
Scrum




Ejemplo de Product Backlog
Scrum
• Sprint planning meeting: reunión que se
  realiza antes de cada Sprint.

• Se hace conjuntamente con el Propietario
  del producto el Scrum Master y el equipo
  Scrum.

• Enfocar la reunión hacia los requisitos
  más prioritarios.
Scrum
• Revisión del sprint: se realiza al final de
  cada Sprint.

• Se deben reunir el propietario de la
  aplicación los usuarios así como el Scrum
  Master y su equipo , además también es
  recomendable que acudan ingenieros de
  otros proyectos para dar su punto de vista.
Scrum
• Product owner:
• Definir la funcionalidad del producto
• Decidir las fechas de liberación y el
  contenido (release)
• Aceptar o rechazar el producto
• Responsable del ROI
Scrum
• ¿Quiénes son products owner?

•   Analista
•   Tester
•   Usuario final
•   Cliente
•   Product Manager
Scrum
• Un rol de suma importancia en esta
  metodología es el escuchar.

• Muchos problemas de desarrollo se
  pueden solucionar fácilmente si se
  escucha a los clientes, usuarios finales y
  equipos de desarrollo.
Conclusiones
• Las metodologías ágiles no son nada nuevo
  bajo el sol.

• Se tienen que “tropicalizar” las metodologías
  para su buen funcionamiento.

• Existe una fuerte discusión en la academia
  sobre si enfocarse a las metodologías ágiles
  o no (al final de cuentas se debe entender el
  proceso).
Conclusiones
• El proceso de desarrollo de software es un
  proceso socio tecnológico.

• Para poder aprender la metodología se
  necesita vivirla (se necesitan “horas de
  vuelo”).

• Las metodologías ágiles son muy buenas
  cuando se domina el proceso en general.
Conclusiones
• Si el usuario final y/o clientes no colaboran
  es sumamente difícil aplicar la
  metodología.

• Se debe aplicar métodos ágiles si se
  tienen procesos bien definidos pero no
  funcionan de manera adecuada frente a
  los campos o bien, el equipo de desarrollo
  no está a gusto.
Conclusiones
• Se siguen realizando el mismo proceso de
  desarrollo de software sólo cambia la forma.

• No importa que metodología se utilice solo
  hay que llevarlo a la práctica como toda una
  verdadera disciplina.

• La agilidad no cuesta. Lo único constante es
  el cambio.

Desarrollo ágil

  • 1.
    INSTITUTO TECNOLÓGICO DE PARRAL Desarrollo Ágil Reingeniería de software Titular: LI. Diana Estela Parra Flores. Elaborado por: Fredy Ponce Holguín Iván Arturo Gardea Porras.
  • 2.
  • 3.
    ¿Qué es? • Laingeniería de software ágil combina una filosofía con un conjunto de lineamientos de desarrollo. La filosofía pone el énfasis en: – La satisfacción del cliente. – Entrega rápida del software incremental – Equipos pequeños y muy motivados. – Sencillez general en el desarrollo.
  • 4.
    ¿Qué es? (2) Loslineamientos de desarrollo enfatizan: – Entrega sobre análisis y diseño. – Comunicación activa con el cliente. – Comunicación continua con el cliente.
  • 5.
    ¿Quién lo hace? Los ingenieros de software y otros participantes en el proyecto: • Gerentes. • Clientes. • Usuarios finales. Que forman un equipo con organización propia y que controlan su propio destino.
  • 6.
    ¿Por qué esimportante? El ámbito moderno de negocios que genera sistemas basados en computadora y productos de software evoluciona rápida y constantemente. La ingeniería de software ágil representa una alternativa razonable a la ingeniería de software convencional para ciertas clases de SW.
  • 7.
    ¿Cuáles son lospasos? • Comunicación. • Planeación. • Modelado. • Construcción. • Despliegue.
  • 8.
    ¿Cómo me asegurode que se hiso bien? El trabajo estará bien hecho si el equipo ágil concuerda en que el proceso funciona y en que produce incrementos de software utilizables que satisfagan al cliente.
  • 9.
    Software Hoy enDía • Mito: Los programadores de ahora ya no programan como los de antes. • Herramientas más fáciles y productivas • El software es cada día más complejo
  • 10.
    Metodologías Ágiles • Siguendesarrollando las mismas actividades del proceso de desarrollo de software, sólo difieren en la forma de hacerlo. • Las Metodologías Ágiles se fundamentan en 4 principios básicos (manifiesto ágil): • Al individuo y las interacciones en el equipo de desarrollo más que a las actividades y las herramientas.
  • 11.
    Manifiesto Ágil 1. Alindividuo y las interacciones en el equipo de desarrollo más que a las actividades y las herramientas. 2. Desarrollar software que funciona más que conseguir una buena documentación. Minimalismo respecto del modelado y la documentación del sistema. 3. La colaboración con el cliente más que la negociación de un contrato. 4. Responder a los cambios más que seguir estrictamente una planificación.
  • 12.
    Beneficios • Es másadecuada para los cambios reduciendo los errores (costos) y logrando la satisfacción de los clientes Tradicional Costo del cambio Suposición MAs tiempo
  • 13.
    Método Tradicional vsÁgil Metodología Ágil Metodología Tradicional Pocos Artefactos. El modelado es prescindible, modelos Más Artefactos. El modelado es esencial, mantenimiento de desechables. modelos. Pocos Roles, más genéricos y flexibles. Más Roles, más específicos. No existe un contrato tradicional, debe ser bastante Existe un contrato prefijado. flexible. Cliente es parte del equipo de desarrollo (además in-situ). El cliente interactúa con el equipo de desarrollo mediante reuniones. Orientada a proyectos pequeños. Corta duración (o entregas Aplicables a proyectos de cualquier tamaño, pero suelen ser frecuentes), equipos pequeños (< 10 integrantes) y especialmente efectivas/usadas en proyectos grandes y con trabajando en el mismo sitio. equipos posiblemente dispersos. La arquitectura se va definiendo y mejorando a lo largo del Se promueve que la arquitectura se defina tempranamente proyecto. en el proyecto. Énfasis en los aspectos humanos: el individuo y el trabajo en Énfasis en la definición del proceso: roles, actividades y equipo . artefactos. Se esperan cambios durante el proyecto. Se espera que no ocurran cambios de gran impacto durante el proyecto.
  • 14.
    Metodologías Ágiles • Lasdos principales metodologías ágiles son scrum y XP (eXtreme Programming). • Cualquiera que fuera el método ágil debe de cumplir con el manifiesto ágil. • Scrum es certificable mientras que XP no lo es, pero muchos equipos de desarrollo la manejan ampliamente.
  • 15.
    XP • Es unametodología idónea para equipos de desarrollo pequeños menores a 10 personas. • Se caracteriza por ser una metodología “ligera” (excluye todo lo que no sirve dejando la esencia o “sabor” de las cosas). • Se centra en la implementación (codificación) por lo que es ideal para entornos dinámicos.
  • 16.
    XP • La comunicaciónse da de manera muy informal, generalmente verbal. • Las metodologías ágiles se preocupan por inculcar valores y XP no es la excepción, sus principales valores son: comunicación, simplicidad, retroalimentación y coraje.
  • 17.
    XP • Los actoresque participan en el desarrollo de software son: • Programador: responsable de decisiones técnicas y de construir el sistema. No hay distinción entre analistas, diseñadores o codificadores. Es decir, en XP los programadores modelan, codifican y prueban. • Clientes: son parte del sistema, determinar que construir y cuando, realizan test para determinar cuando algo está completo.
  • 18.
    XP • Entrenador (Coach):es el líder del equipo. Tiende a estar en un segundo plano a medida que el equipo madura • Rastreador (Tracker): también llamado Metric Man, se encarga de observar sin molestar, debe conservar datos históricos. • Probador (Tester): Ayuda al cliente con las pruebas funcionales.
  • 19.
    XP • El procesode desarrollo en XP se puede resumir como: Mientras(sistema_es_útil) { Captar requisitos User Stories Methaphor Planificar Release planning Iteration planning Desarrollar Programming Presentar la entrega Releasing }
  • 20.
    XP • XP esuna metodología muy utilizada pero como todo tiene también sus puntos débiles. Entre ellos que pocos son los que utilizan la metodología completa. • A continuación se muestran y se explican las prácticas que componen a la Programación Extrema. • XP no es sólo tirar líneas de código fuente
  • 21.
    XP • Las metodologíaságiles se caracterizan por fomentar valores como: • Comunicación • Simplicidad • Retroalimentación • Coraje • Para muchas empresas es más importante las actitudes que las aptitudes.
  • 22.
    Artefactos en XP •Historias del Usuario • Tareas de Ingeniería • Pruebas de Aceptación • Pruebas Unitarias y de Integración • Plan de la Entrega • Código
  • 23.
    Clima de Trabajo •Espacio abierto • Mesas centrales • Cubículos en el espacio exterior
  • 24.
    Clima de Trabajo •Reunión diaria: “Stand-up Meeting” – Todo el equipo – Problemas – Soluciones • De pie en un círculo – Evitar discusiones largas – Sin conversaciones separadas
  • 25.
    Scrum • Es otrametodología ágil que entre sus principales características están: • Desarrollo de software por medio de iteraciones (Sprints). • Indicado para proyectos con un rápido cambio de requerimientos. • Gran protagonismo de reuniones a lo largo del proyecto.
  • 26.
    Scrum • Los actoresque intervienen en esta metodología son: • Propietarios del producto. • Usuarios del producto. • Scrum máster . • Equipo de scrum.
  • 27.
  • 28.
    Scrum • Los sprintsson la base del desarrollo en scrum, consisten en una serie de actividades previamente definidas en un lapso de 30 días. • El product backlog es la lista de las tareas a realizar durante todo el proyecto. No es una lista fija. Se prioriza las tareas según los requisitos de los usuarios o del propietario de la aplicación.
  • 29.
  • 30.
    Scrum • Sprint planningmeeting: reunión que se realiza antes de cada Sprint. • Se hace conjuntamente con el Propietario del producto el Scrum Master y el equipo Scrum. • Enfocar la reunión hacia los requisitos más prioritarios.
  • 31.
    Scrum • Revisión delsprint: se realiza al final de cada Sprint. • Se deben reunir el propietario de la aplicación los usuarios así como el Scrum Master y su equipo , además también es recomendable que acudan ingenieros de otros proyectos para dar su punto de vista.
  • 32.
    Scrum • Product owner: •Definir la funcionalidad del producto • Decidir las fechas de liberación y el contenido (release) • Aceptar o rechazar el producto • Responsable del ROI
  • 33.
    Scrum • ¿Quiénes sonproducts owner? • Analista • Tester • Usuario final • Cliente • Product Manager
  • 34.
    Scrum • Un rolde suma importancia en esta metodología es el escuchar. • Muchos problemas de desarrollo se pueden solucionar fácilmente si se escucha a los clientes, usuarios finales y equipos de desarrollo.
  • 35.
    Conclusiones • Las metodologíaságiles no son nada nuevo bajo el sol. • Se tienen que “tropicalizar” las metodologías para su buen funcionamiento. • Existe una fuerte discusión en la academia sobre si enfocarse a las metodologías ágiles o no (al final de cuentas se debe entender el proceso).
  • 36.
    Conclusiones • El procesode desarrollo de software es un proceso socio tecnológico. • Para poder aprender la metodología se necesita vivirla (se necesitan “horas de vuelo”). • Las metodologías ágiles son muy buenas cuando se domina el proceso en general.
  • 37.
    Conclusiones • Si elusuario final y/o clientes no colaboran es sumamente difícil aplicar la metodología. • Se debe aplicar métodos ágiles si se tienen procesos bien definidos pero no funcionan de manera adecuada frente a los campos o bien, el equipo de desarrollo no está a gusto.
  • 38.
    Conclusiones • Se siguenrealizando el mismo proceso de desarrollo de software sólo cambia la forma. • No importa que metodología se utilice solo hay que llevarlo a la práctica como toda una verdadera disciplina. • La agilidad no cuesta. Lo único constante es el cambio.