You are on page 1of 29

Ingeniera de Software II

Segundo Cuatrimestre de 2012

Clase 2:

Introduccin a los mtodos giles y Scrum

Buenos Aires, 15 de Agosto de 2012


Ctedra de Ingeniera de Software II FCEN UBA, 2012

Introduccin Agile Manifesto

Manifiesto por el Desarrollo gil de Software


Estamos descubriendo mejores maneras de desarrollar software tanto por nuestra propia experiencia como ayudando a terceros. A travs de esta experiencia hemos aprendido a valorar: Individuos e interacciones Software que funciona Colaboracin con el cliente Responder ante el cambio sobre sobre sobre sobre procesos y herramientas documentacin exhaustiva negociacin de contratos seguimiento de un plan

Esto es, aunque los elementos a la derecha tienen valor, nosotros valoramos por encima de ellos los que estn a la izquierda

Kent Beck Mike Beedle Arie van Bennekum Alistair Cockburn Ward Cunningham Martin Fowler

James Grenning Jim Highsmith Andrew Hunt Ron Jeffries Jon Kern Dave Thomas Brian Marick

Robert C. Martin Steve Mellor Ken Schwaber Jeff Sutherland

http://www.agilemanifesto.org (2001)

2
Ctedra de Ingeniera de Software II FCEN UBA, 2012

Qu caractersticas tienen los mtodos giles?

Subconjunto de mtodos que adoptan el Modelo de Ciclo de Vida iterativo e incremental

Los requerimientos evolucionan a travs de la colaboracin entre equipos multifuncionales


Procesos disciplinados con alta visibilidad que promueven la inspeccin y adaptacin frecuente Liderazgo que alienta el trabajo en equipo, la auto-organizacin y la responsabilidad Prcticas que permiten la entrega rpida de software de alta calidad Alineacin del desarrollo con las necesidades de los clientes y los objetivos de la empresa

3
Ctedra de Ingeniera de Software II FCEN UBA, 2012

Otros conceptos
Time boxing: Priorizar duracin sobre alcance La reduccin del alcance facilita mantener la calidad La limitacin estricta del tiempo estimula a mantener el foco Se aplica a iteraciones, reuniones, tareas grupales o individuales Desarrollo incremental: El sistema va creciendo como consecuencia de la integracin de nuevas funcionalidades Cada funcionalidad que se agrega est testeada en forma unitaria, y tambin se prueba integrada al resto de la aplicacin Desarrollo iterativo: El proyecto se divide en iteraciones, que para el equipo son miniproyectos El resultado de cada iteracin debe ser la aplicacin andando con una porcin de la funcionalidad requerida

4
Ctedra de Ingeniera de Software II FCEN UBA, 2012

Principios aplicables al desarrollo gil


DRY: Dont Repeat Yourself, no crear cdigo, herramientas o infraestructura duplicadas an a costa de algn esfuerzo adicional. KISS: Keep It Simple!, evitar la complejidad no esencial, an a costa de algn esfuerzo adicional Do The Simplest Thing That Could Possibly Work: evitar la anticipacin injustificada y las generalizaciones prematuras YAGNI: You Aint Gonna Need It, idem DOGBITE: Do it, Or its Gonna Bite you In The End, algunas cosas s hay que hacerlas con anticipacin (y suelen ser las menos atractivas). SOC: Separation of Concerns, evitar el solapamiento de funcionalidad entre las diversas caractersticas o mdulos de un programa. Done-Done-Done: ser sincero sobre el estado Terminado de una tarea o unidad de entrega.

Refactoring
Shipping is a feature, and your product must have it

5
Ctedra de Ingeniera de Software II FCEN UBA, 2012

Anti-principios
Antipattern: patrn organizacional, metodolgico o de diseo, popular pero contraproducente BDUF: Big Design Up Front, tiende a oponerse a YAGNI y KISS Optimizacin prematura: sin tener mtricas que la justifiquen Bug Driven Development: los requerimientos se completan en forma de bugs

6
Ctedra de Ingeniera de Software II FCEN UBA, 2012

Scrum: Qu es?

Qu es un scrum?
Un scrum es un agrupamiento (formacin fija) en Rugby. 8 integrantes de cada equipo, llamados delanteros, se enfrentan agrupados para tratar de obtener la pelota, que es introducida por uno de los equipos en el centro de la formacin.

Pero qu tiene que ver con la Ingeniera de Software?


7
Ctedra de Ingeniera de Software II FCEN UBA, 2012

SCRUM Grfico del proceso

ScrumMaster Daily Scrum Meeting and Artifacts Update

Product Backlog Grooming

Team
Sprint Backlog

Sprint 1 to 4 weeks
Review

Sprint Planning meeting Product Owner Product Team decides Backlog how much to commit to do in a Sprint

No changes in duration or goal Sprint tasks

Potentially shippable Product Increment

Retrospective Meeting
8
Ctedra de Ingeniera de Software II FCEN UBA, 2012

SCRUM - Historia

9
Ctedra de Ingeniera de Software II FCEN UBA, 2012

SCRUM - En qu proyectos es recomendable utilizarlo?


Personnel Junior % Senior % 40 15 Product impact Requirements change Loss due to defects % per month
30 20 10 0 20 25 30 35

Agile Team size Number of staff

Traditiona l

Team dispersion Time, distance culture

300

100

30

Fuente: Right-Sizing Agile Development, webinar by Steve McConnell


10
Ctedra de Ingeniera de Software II FCEN UBA, 2012

10

Team stability

Corporate culture Entrepreneurial spirit

Scrum - Roles

11
Ctedra de Ingeniera de Software II FCEN UBA, 2012

SCRUM Producto y Product Backlog


Producto

En Scrum, un Team desarrolla un producto definido por un Product Owner, usando un proceso adaptativo supervisado y asistido por el Scrum Master

Product Backlog

Es una lista priorizada de todas las caractersticas que el Team debe darle al producto Debe expresar los requerimientos funcionales y no funcionales Puede incluir los defectos a corregir Es conveniente que incluya las caractersticas internas, no visibles al usuario (arquitectura, escalabilidad, uso de herramientas de desarrollo, etc). Cada item tiene un valor para el negocio estimado por el PO y un esfuerzo estimado por el Team Los valores y los esfuerzos suelen estar limitados (serie de Fibonacci). La priorizacin natural es en orden decreciente de relacin valor/esfuerzo Pueden agregarse o quitarse tems, o cambiar las estimaciones o la prioridad en cualquier momento No hay un formato definido para los items suelen ser User Stories Siempre hay un slo Product Backlog

12
Ctedra de Ingeniera de Software II FCEN UBA, 2012

SCRUM - Ejemplo de Product Backlog de Carrito de Compras

ID 1 2 5 7 6 8 3 4

Item As a buyer, I want to place a book in a shopping cart - Details As a buyer, I want to remove a book from the shopping cart - Details Improve transaction performance - Details Investigate solutions for speeding up credit card validation Upgrade all servers to Apache 2.2.3 Diagnose and fix order processing script errors (JIRA SC-234) As a shopper, I want to create and save a wish list - Details As a shopper, I want to add items to my wish list - Details

Prio 1 2 3 4 5 6 7 8

Value 7 5 4 4 2 3 2 2

Effort 5 2 13 20 13 3 40 20

Status Done Done In Sprint In Sprint Ready Ready Not Ready Not Ready

13
Ctedra de Ingeniera de Software II FCEN UBA, 2012

SCRUM User stories

Formato: As a [user role] I want to [goal] so that [benefit] Por ejemplo: Como comprador, quiero agregar libros al carrito de compras para elegir los libros que voy a comprar Especifican qu hay que hacer, evitando especificar cmo hacerlo Pueden agregarse detalles (breves) Pueden tener attachments que definan el contexto Conviene que incluyan los criterios de aceptacin Pueden estar en una herramienta, en Google Docs o en tarjetas Se completa la info en una conversacin Escribir buenas stories suele ser lo ms difcil al arrancar un proyecto con Scrum Beneficios: ayuda a pensar desde la perspectiva del usuario Modelo INVEST Independent tan independiente de otras stories como sea posible Negotiable demasiados detalles inhiben la comunicacin Team-PO-cliente Valuable deben tener valor para el usuario y/o para quien paga el desarrollo Estimable legibles para el Team y no demasiado grandes Small menos de 3 semanas-hombre Testable los criterios de aceptacin deben ser tan objetivos como sea posible

14
Ctedra de Ingeniera de Software II FCEN UBA, 2012

SCRUM User story en papel

#1 - As a buyer, I want to place a book in a shopping cart so I can choose the books that I will buy
Acceptance criteria: 1. User can select a book from the catalog 2. User can search the catalog by author or title. 3. If the book is already in the shopping cart, its quantity is increased. 4. If the book is not already in the shopping cart, it is added with a quantity of one. 5. After the operation, the shopping cart is displayed. Effort: 5 Value: 7

15
Ctedra de Ingeniera de Software II FCEN UBA, 2012

SCRUM Inicio de un proyecto


Antes de comenzar Conseguir el apoyo del sponsor para usar Scrum Capacitar en Scrum a todos los involucrados (PO, Team, cliente final, etc). Planificacin: Definir la duracin inicial de los sprints (1 a 4 semanas) El PO debe definir la visin inicial del producto El PO debe crear el Product Backlog inicial y priorizar los tems iniciales (al menos como para dos sprints) Los tems para los dos prximos sprints deben cumplir con INVEST Los tems menos prioritarios pueden ser slo un ttulo (epic) El Team debe estimar los tems ms prioritarios La estimacin suele hacerse en forma relativa, en story points Definicin de los releases previstos y la funcionalidad que se espera entregar en cada uno Evaluacin de riesgos

16
Ctedra de Ingeniera de Software II FCEN UBA, 2012

SCRUM En un Sprint
Qu es un sprint? Timeboxed iteration: no se extiende por ningn motivo, aunque no se haya terminado el trabajo prometido ni cumplido el objetivo El team decide cules tems del PB entran en un sprint en funcin de la estimacin Conviene que el sprint tenga un objetivo, como implementacin bsica de dbitos automticos El Scrum Master protege al equipo de interferencias durante el sprint Se pueden agregar o cambiar stories slo con el acuerdo del team Al final del Sprint el team revisa los resultados con los stakeholders y hace una demo El resultado debera ser un incremento de funcionalidad potencialmente desplegable, integrado y testeado Luego el team inspecciona el proceso y lo adapta si es necesario

17
Ctedra de Ingeniera de Software II FCEN UBA, 2012

Estimaciones y Formato del Plan

Las estimaciones con Scrum se hacen de manera relativa (por ejemplo de 1 a 5), a travs de una especie de piedra, papel y tijera
Se busca consenso El plan generado en la reunin tiene slo dos niveles: stories y tareas Se usa un taskboard, donde las tareas estn divididas en Planificadas, En curso, Terminadas

18
Ctedra de Ingeniera de Software II FCEN UBA, 2012

SCRUM Planificacin del Sprint

19
Ctedra de Ingeniera de Software II FCEN UBA, 2012

SCRUM Reunin Diaria

20
Ctedra de Ingeniera de Software II FCEN UBA, 2012

SCRUM Demo de un sprint (sprint review)

21
Ctedra de Ingeniera de Software II FCEN UBA, 2012

Scrum - Retrospectiva

22
Ctedra de Ingeniera de Software II FCEN UBA, 2012

SCRUM Pizarra low-tech

23
Ctedra de Ingeniera de Software II FCEN UBA, 2012

Reportes En Scrum
Velocity = cantidad de story points que un equipo hace para un producto en un mes

Product Burndown chart

Da una indicacin de que tan rpido el equipo est terminando los requerimientos del product backlog en cada sprint

Story o task burndown chart

Da una indicacin de que tan rpido el equipo est terminando stories o bajando horas en un sprint. Muestran comportamientos disfuncionales

24
Ctedra de Ingeniera de Software II FCEN UBA, 2012

SCRUM Pizarra (cont.)


Contenido

Las tareas suelen agruparse en columnas Not Yet Started, In Progress, Completed y un sector Blocked El Sprint Burndown Chart es muy til para saber cmo va el sprint

Actualizacin

Conviene que la actualizacin sea inmediata, al tomar una tarea o al terminarla Si un miembro del equipo trabaja en forma remota, debe pedirle a alguien que est en la oficina que actualice la pizarra Cada tarea lleva su estimacin de horas restantes, que debe ser actualizada antes o durante el Daily Al final del da tambin deben actualizarse las horas restantes para poder actualizar el Burndown Chart Las horas restantes de una tarea pueden crecer Si surge una tarea inesperada se agrega a la pizarra, con su estimacin si es posible Nadie debe trabajar en tareas que no estn en la pizarra Las tareas que se bloquean se pasan al sector Blocked con un Post-It rojo que explica el motivo del bloqueo

25
Ctedra de Ingeniera de Software II FCEN UBA, 2012

Ms informacin

26
Ctedra de Ingeniera de Software II FCEN UBA, 2012

Ms informacin

27
Ctedra de Ingeniera de Software II FCEN UBA, 2012

An ms informacin

28
Ctedra de Ingeniera de Software II FCEN UBA, 2012

Recursos on-line

29
Ctedra de Ingeniera de Software II FCEN UBA, 2012