ingeniería de software

20
Ingeniería de Software Ciclos de vida ágiles

Upload: warner

Post on 25-Jan-2016

42 views

Category:

Documents


1 download

DESCRIPTION

Ingeniería de Software. Ciclos de vida ágiles. eXtreme Programming. Es una metodología ágil que plantea: Iteraciones cortas Entregables periódicos Colaboración con el cliente full time Herramientas y buenas prácticas para mejorar la calidad y la eficiencia. XP - Valores. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Ingeniería de Software

Ingeniería de Software

Ciclos de vida ágiles

Page 2: Ingeniería de Software

Es una metodología ágil que plantea:◦ Iteraciones cortas◦ Entregables periódicos◦ Colaboración con el cliente full time◦ Herramientas y buenas prácticas para mejorar la

calidad y la eficiencia

eXtreme Programming

Page 3: Ingeniería de Software

Los Valores originales de XP son: ◦ simplicidad◦ comunicación◦ retroalimentación (feedback)◦ coraje◦ respeto, fue añadido en la segunda edición de XP

Explained.

XP - Valores

Page 4: Ingeniería de Software

XP - Iteraciones

Page 5: Ingeniería de Software

Planning incremental Releases cortas Diseño simple TestDrivenDevelopment + Full test coverage Refactoring Pair Programming Building continuo Collective ownership Retrospectives Stand-up meetings Demos Documentación tardía Risk Management

XP - Buenas prácticas

Page 6: Ingeniería de Software

Los requerimientos se plantean en forma de User Stories, o escenarios, los desarrolladores parten estos escenarios en múltiples tareas para ser estimadas.

Deben ser priorizados por el cliente. Tienen la descripción de alto nivel de una necesidad

del sistema, no una descripción detallada. Cuando se desarrolle la historia, en paralelo se hace:

◦ Análisis: el cliente provee la información necesaria◦ Diseño: se busca diseño simple◦ Programación: se busca código fácil

de refactorizar◦ Testing: el desarrollador escribe

tests unitarios automatizados◦ Producción: una vez “buildeado” el

código debe ser funcional

XP – User stories (US)

Page 7: Ingeniería de Software

Las US deben por sí mismas contener las condiciones de aceptación de las mismas

Las US no son sólo requerimientos funcionales, también incluyen:◦ Tareas de documentación que le

agregan valor al cliente◦ Requerimientos no funcionales◦ Bugs◦ Tareas que agregan valor de manera

indirecta: reuniones, cursos, investig.

XP – User stories (US)

Page 8: Ingeniería de Software

XP – Architectural Spike / ExplorationPhase / Release Planning No es una iteración, se trata de explorar

elementos de la solución que parecen relevantes para el aún limitado conocimiento que se tiene del problema.

Se puede hacer un prototipo para atacar los riesgos mas importantes.

Intenta identificar las áreas de máximo riesgo, para estimarlas correctamente

Page 9: Ingeniería de Software

XP – Testing Para que XP funcione correctamente se

necesita, no sólo testers, sino los mismos desarrolladores deben asegurar el buen funcionamiento luego de cambios:◦ Testing automatizado◦ TDD◦ Full Test coverage

El cliente debe ayudar a definir las condiciones de aceptación, esto se debe hacer cuando se está por empezar a desarrollar la historia no antes ni después.

Page 10: Ingeniería de Software

XP – Pair programming En XP, los programadores deberían trabajar

de a pares. Si bien a primera instancia esto parece reducir la performance, permite:◦ Mejorar la calidad del código (mejor

entendibilidad, menos cantidad de  defectos, mejor diseño)

◦ Mejora el collective ownership◦ Todo el código es revisado◦ Sirve para que los desarrolladores más expertos

trabajen en pares con los menos expertos

Page 11: Ingeniería de Software

XP – Ventajas / Desventajas

Ventajas◦ Se genera un buen ambiente de trabajo◦ El modelo está pensado para reaccionar ante cambios, se

disminuye la burocracia y el overhead◦ Se genera una buena calidad de código◦ Se entienden mejor los requerimientos al tener un cliente

en el equipo◦ Se puede incorporar de a poco en el proceso

Desventajas◦ Al poner énfasis en la gente vs proceso, se necesita buscar

personas con buen skill◦ Es difícil establecer contratos rígidos y el cliente debe

proveer un experto para proveer los requerimientos◦ Requiere cambios culturales importantes

Page 12: Ingeniería de Software

Scrum El foco en Scrum es establecer condiciones

para administrar correctamente las iteraciones Se definen 3 etapas en Scrum:

◦ Etapa inicial: donde se especifica las tareas a realizar y la arquitectura

◦ Ciclos de sprint: cada sprint realiza un incremento al sistema

◦ Fin de proyecto: se termina la documentación y se hace un review de cómo salió el proyecto

Page 13: Ingeniería de Software

Sprint cycle Un sprint es una iteración de entre 2 y 4 semanas Se define un backlog (un conjunto de todos los

issues a realizar) Al principio de la iteracion se seleccionan del

backlog todos los stories a realizar Los desarrolladores dividen y organizan las tareas a

realizar sin intervención de clientes Se define un Scrum Master que se relaciona con el

cliente, el resto del equipo no se relaciona Al final se revisa la iteración y los clientes tienen

acceso al software

Page 14: Ingeniería de Software

Daily meetings Se realizan reuniones de 15 minutos donde

están todos los desarrolladores hablan sobre qué estuvieron haciendo, mejorando las relaciones en el equipo y permitiendo ayudar a resolver problemas

Page 15: Ingeniería de Software

Diferencias entre Scrum y XP

Scrum provee niveles de planificación y especifica roles y responsabilidades, en XP el foco esta en las herramientas de desarrollo

Scrum requiere user stories detalladas dado que el cliente no interactúa una vez iniciado el Sprint, en XP es requerido que el cliente sea accesible siempre

Page 16: Ingeniería de Software

Comparación

Page 17: Ingeniería de Software

Comparación

Page 18: Ingeniería de Software

Preguntas

Page 19: Ingeniería de Software

Sugerencias

Page 20: Ingeniería de Software

Aplausos