Scrum con TFS

23 Jan 2013 · 7 mins. de lectura

En los últimos años estamos asistiendo a un cambio radical en la forma de gestionar los proyectos de desarrollo de software. Empieza a resultar extraño encontrar ofertas de trabajo en las que no se mencione scrum, o proyectos que empiecen en los que no se haya planteado el uso de metodologías ágiles. Pero de nada nos sirve una metodología, por muy buena que pueda ser, si perdemos más tiempo gestionando el proceso que programando. Por lo que nos vemos casi obligados a empezar a usar herramientas que nos ayuden con esta tarea. A lo largo de este artículo trataremos una de esas herramientas, que consideramos más potentes: TFS.

Team Foundation Server/Service

Las siglas TFS pueden significar Team Foundation Server o Team Foundation Service. En ambos casos se trata del mismo producto, pero en diferentes formas de distribución.

Este software es la herramienta que nos ayudará con la gestión del ciclo de vida de aplicaciones (ALM), propuesta por Microsoft. TFS nos aportará una serie de utilidades que nos facilitarán la gestión de los procesos, el control de versiones del código fuente, el testing de aplicaciones, el deploy, y además nos aportará diferentes informes sobre todo esto.

Las dos formas de distribución en las que podemos encontrar TFS hoy en día son:

TFS-Saas

Las diferencias entre ambas versiones sobre todo radican en que la versión on-premises permite la personalización de las plantillas de procesos y tiene una mejor herramienta de generación de informes. Pero para el proceso que vamos a describir a continuación es indiferente cual de estas utilizar.

En los ejemplos que veremos a lo largo de este artículo hemos utilizado la versión Saas: Team Foundation Service. Para ello nos dirigimos primero a la página oficial: tfs.visualstudio.com. Allí nos dimos de alta y creamos una nueva cuenta:

singup

En nuestro caso usamos el nombre de “programandonet” con una cuenta de Live ID que ya teníamos anteriormente. Una vez has finalizado el proceso, al entrar en: misitio.visualstudio.com, deberíamos encontrarnos algo parecido a esto:

portal

En nuestro caso ya tenemos algunos proyectos creados, pero si es la primera vez, para poder seguir los ejemplos, deberíamos crear un proyecto nuevo, presionando el botón de “New Team Project”, y usando la plantilla de scrum:

new-project

Para poder entender mejor la plantilla de proceso que estamos usando, primero tendremos que definir la metodología que tenemos pensado usar: scrum.

¿Qué es scrum?

Podríamos definir scrum como un marco de trabajo, un conjunto de herramientas y protocolos a seguir con el fin de obtener un objetivo común: el éxito de un proyecto. Una metodología ágil que a pesar de estar enfocada en el desarrollo de software, es aplicable también a muchos otros campos como por ejemplo, el desarrollo de un vehículo de Formula 1.

La idea de un desarrollo ágil se fundamenta en la reducción de riesgos basándose en la división de un gran problema en problemas más pequeños. Estas divisiones serán acometidas como proyectos en si mismas, que deberán ser desarrollados a lo largo de un corto espacio de tiempo. A este ciclo se le denomina iteración y está compuesto por las fases de: planificación, análisis, diseño, codificación, revisión y documentación. Una vez finalizamos una iteración, se realiza una retrospectiva de cómo han ido las cosas, y se empieza una nueva iteración con las mejoras que se han propuesto.

Básicamente se asume que en un proyecto no todo va a ser como podemos pensar en un principio. Nos vamos a encontrar problemas no previstos y los requisitos van a cambiar con el paso del tiempo. Ante estos cambios lo único que podemos hacer es adaptarnos. Por esta razón dividimos el proyecto: para que las cosas que pueden ir mal vayan mal pronto, y así podamos ir afinando el proceso antes de que sea demasiado tarde.

Dentro de scrum estas iteraciones reciben el nombre de sprints y suelen durar de 2 a 4 semanas. El objetivo de cada sprint es que al finalizarlo, el equipo haya conseguido un producto potencialmente entregable. Es decir, algo que funcione, que se pueda probar y sobre lo que se puedan proponer modificaciones.

Roles

Antes de comenzar a trabajar debemos definir los roles de los diferentes miembros del proyecto. Scrum divide en dos grandes grupos de participantes:

Los comprometidos por el proyecto:

Y los implicados con el proyecto;

En lo que respecta a la gestión que deberíamos realizar, solo serían relevantes los perfiles comprometidos con el proyecto. Para añadirlos a TFS lo primero que tendríamos que hacer es crear un equipo de trabajo. Para ello nos tendremos que dirigir al portal web principal de nuestro sitio de TFS (misitio.visualstudio.com), y dentro de este, al panel de configuración. Esto se hace presionando en el icono con forma de rueda, arriba a la derecha:

configuration

Si no lo hemos hecho ya, nos aparecerá una pantalla para que seleccionemos el proyecto que queremos configurar. Y al seleccionarlo, veremos que automáticamente el sistema nos ha creado un equipo con el mismo nombre que nuestro proyecto. Al presionar sobre este equipo podremos gestionar los miembros del mismo:

team-management

En este caso, hemos añadido a todo nuestro equipo de desarrollo que está formado por 4 personas.

Otra forma que tenemos de realizar esta operación es entrar en la página “home” (dashboard) de nuestro proyecto y fijarnos en el panel de equipo de nuestra derecha. Haciendo clic en “Manage all members…”:

dashboard-team

 

El proceso

Como hemos comentado anteriormente, scrum es iterativo. Se divide en una serie de sprints que se van realizando hasta el momento en el que el proyecto se considera terminado. Una forma rápida de explicar el proceso sería el siguiente gráfico:

scrum-proceso

Es muy recomendable que la reunión de revisión sea en persona y con todos los roles a la vez. No obstante, de cualquier forma, también es muy recomendable usar la herramienta de feedback para poder almacenar en TFS todos los datos y así poderlos revisar con más calma. Tanto si la persona que reporta está o no en la reunión.

Retrospectiva  del sprint

La última reunión que tiene lugar en a lo largo de un sprint es la retrospectiva. Una vez tenemos el feedback, esta vez reuniremos al scrummaster y el equipo, aunque el product owner puede estar invitado de oyente.

A lo largo de esta reunión se debatirán temas como la gráfica de burn down, la velocidad del equipo, las cosas que han ido bien en el sprint, que podría haber ido mejor y lo más importante: que cosas se van a hacer de forma diferente, buscando sacar el mejor resultado, en el siguiente sprint.

En esta reunión será muy importante manejar todos los datos que hemos ido recolectando con TFS, e incluso almacenar un resumen con las conclusiones de la reunión también dentro del sistema. De esta forma todo quedará archivado y accesible por todos los miembros del equipo.

Es la reunión donde más partido sacaremos a TFS de todas.

Al finalizar esta reunión deberemos volver al primer paso del proceso y volver a empezar con el siguiente sprint. Eso si, esta vez habiendo retroalimentado el proceso con la experiencia del sprint anterior.

Conclusiones

Aún sabiendo que scrum varía en cada equipo que se aplica, hemos intentado exponer un proceso lo más aséptico que hemos podido, para observar la potencia de TFS.

Hemos de reconocer que scrum nos parece un escenario muy bueno para el desarrollo de software. Y en este sentido, tanto Team Foundation Server 2012 como Team Foundation Service han demostrado ser dos herramientas muy completas que nos ayudarán mucho con la gestión del proceso.

Todo esto a pesar de que muchos más detalles sobre la personificación del proceso, se nos han quedado en el tintero, como por ejemplo: las builds, la entrega continua, la integración continua, los code reviews o la potencia de las herramientas de testing.

Nosotros lo hemos probado y hemos llegado a la conclusión de que nos gusta. Si aún no lo has hecho, te invitamos a que uses una cuenta gratuita de Team Foundation Service, y durante el próximo sprint, realices un seguimiento en paralelo con esta herramienta, para que saques tus propias conclusiones.

buy me a beer