¿Qué es el desarrollo ágil
de software?
Por: Diógenes Amaury MS
El desarrollo
ágil de software, es una metodología de gestión adaptativa, que te permite
llevar a cabo, proyectos de desarrollo de software, adaptándote a los cambios y
evolucionando en forma conjunta con el software. Es muy importante dejar claro
que no se trata de una herramienta o aplicación, sino más bien de un conjunto
de métodos utilizado en el desarrollo de software, que
consiste en la convención de prácticas, métodos, principios, y técnicas
cuya principal utilidad es la de proveer un mejor rendimiento del equipo de
trabajo y sobre todo, permitir la producción
de mejores resultados en lo que se produce durante el proyecto. Esta metodología
no es únicamente utilizada en el desarrollo de software, ya que diferentes
empresas de otra naturaleza también los manejan, como es el caso de la Toyota.
Existen muchos tipos de metodología agiles de desarrollo de software como
son:
eXtreme Programming (XP), Kanban, Scrum, entre otros. Nuestro contenido del
dia de hoy, será enfocado en la metodología Scram.
¿Qué es Scrum?
Scrum es una
metodología ágil de gestión de proyectos de desarrollo de software, basada en
un proceso de trabajo constante, iterativo e incremental, que toma su nombre y
principios de los estudios realizados sobre nuevas prácticas de producción por
Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80.
Jeff Sutherland
aplicó el modelo Scrum al desarrollo de software en 1993 en Easel Corporation
(Empresa que en los macro-juegosde compras y fusiones se integraría en VMARK,luego
en Informix y finalmente en Ascential Software Corporation)
Scrum, propone una serie de características
que deben guardarse a fin de lograr resultados óptimos en el desarrollo de
sistemas de alta complejidad. La propuesta de Scrum, consiste en realizar
entregas potencialmente utilizables de forma iterativa e incremental, en
períodos de 2 a 4 semanas denominados "Sprints". Para lograrlo,
establece ciertas pautas organizativas, a simple modo de guía y no de
reglamento invasivo.
Scrum es una
metodología de desarrollo muy simple, que requiere trabajo duro porque no se basa
en el seguimiento de un plan, sino en la adaptación continua a las
circunstancias de la evolución del proyecto.
Se comienza con
la visión general del producto,especificando y dando detalle a las
funcionalidades o partes que tienen mayor prioridad de desarrollo y que pueden
llevarse a cabo en un periodo de tiempo breve (normalmente de 30 días).
Cada uno de
estos periodos de desarrollo es una iteración que finaliza con la producción de
un incremento operativo del producto.
Estas
iteraciones son la base del desarrollo ágil, y Scrum gestiona su evolución a
través de reuniones breves diarias en las que todo el equipo revisa el trabajo
realizado el día anterior y el previsto para el día siguiente.
Los roles en Scrum:
Scrum organiza el trabajo utilizando estos roles : Dueño de
Producto (o Product Owner), Scrum Master y Scrum Team.
Dueño de Producto (o
Product Owner):
El Dueño de Producto es la
única persona autorizada para decidir sobre cuáles funcionalidades y
características funcionales tendrá el producto. Es quien representa al cliente,
usuarios del software y todas aquellas partes interesadas en el producto.
Funciones:
Canalizar las
necesidades del del negocio, sabiendo "escuchar" a las partes
interesadas en el producto y transmitirlas en "objetivos de valor para el
producto", al scrum team.
Maximizar el
valor para el negocio con respecto al Retorno de Inversión (ROI), abogando por
los intereses del negocio.
Revisar el
producto e ir adaptándole sus funcionalidades, analizando las mejoras que éstas
puedan otorgar un mayor valor para el negocio.
Aptitudes que
debe tener un Dueño de Producto:
Excelente
facilicidad de comunicación en las relaciones interpersonales Excelente
conocimiento del negocio Facilidad para análisis de relaciones costo/beneficioVisión
de negocios
Scrum Master:
El Scrum Master es el alma mater de Scrum. Un error frecuente es llamarlo
"líder", puesto que el Scrum Master no es un líder típico, sino que
es un un auténtico Servidor neutral, que será el encargado de fomentar e
instruir sobre los principios ágiles de Scrum.
Funciones:
- Garantizar la correcta aplicación de Scrum. Esto
incluye, desde la correcta trasmición de sus principios a las altas
gerencias, hasta la prevención de la inversión roles (es decir, guardar
especial cuidado en que el dueño de producto no actúe en nombre del Scrum
Team y viceversa, o que la audencia se inmiscuya en tareas que no le son
propicias)
- Resolver los conflictos que entorpezcan el progreso
del proyecto.
- Incentivar y motivar al Scrum Team, creando un clima
de trabajo colaborativo, fomentar la auto-gestión del equipo e impedir la
intervensión de terceros en la gestión del equipo.
Aptitudes
que debe tener un Scrum Master:
- Excelentes conocimientos de
Scrum
- Amplia vocación de servicio
- Tendencia altruista
- Amplia capacidad para la resolución de problemas
- Analítico y observador
- Saber incentivar y motivar
- Capacidad docente e instructiva
- Buen carisma para las
negociaciones
El Scrum Team:
El Scrum Team (o simplemente
"equipo"), es el equipo de desarrolladores multidisciplinario,
integrado por programadores, diseñadores, arquitectos, testers y demás, que en
forma auto-organizada, será los encargados de desarrollar el producto.
Funciones y responsabilidades:
- Llevar el Backlog de producto, a desarrollos
potencialmente funcionales y operativos.
- Aptitudes que deben tener los integrantes de un Scrum
Team:
- Ser profesionales expertos o avanzados en su
disciplina
- Tener "vocación" (la buena predisposición
no alcanza) para trabajar en equipo
- Capacidad de auto-gestión
Backlog de Producto
El Backlog de Producto es un listado dinámico y
públicamente visible para todos los involucrados en el proyecto.
En él, el Dueño de Producto, mantiene una
lista actualizada de requerimientos funcionales para el software. Esta lista,
representa "qué es lo que se pretende" pero sin mencionar "cómo
hacerlo", ya que esta última, como vimos en el capítulo anterior, será tarea
del Scrum Team.
El Backlog de Producto, es creado y
modificado únicamente por el Dueño de Producto. Durante la ceremonia de
planificación, el Scrum Team obtendrá los items del producto, que deberá
desarrollar durante el Sprint. Formato del Backlog de Producto
El Backlog de producto, es una lista de items que representan los
requerimientos funcionales esperados para el software.
Para cada uno de estos ítem, será necesario
especificar:
- El grado de prioridad
- Esfuerzo que demanda
- Granulidad
- Criterios de aceptación
Ejemplo
Prioridad Item Estimación Estado Criterios
de aceptación
1 Descripcion
de ítem tiempo en criterio de lo propuesto.
Semana
o días
2 “
” “” “”
3 “” “” “”
Tableros
de Scrum :
Con la lista de tareas ya armada, estamos en condiciones de crear el tablero. Un
Scrum Taskboard, básicamente se divide en 3 columnas: pendientes, en curso y
terminadas y se complementa la información con un Diagrama de Burndown que
mostrará el esfuerzo restante para concluir el Sprint.