Aquellos que no conocen los métodos de gestión Agile muy bien pudieran sentir que el equipo está trabajando sin ninguna especificación.  Metas que varían de una iteración a otra; la incertidumbre de saber exactamente lo que sucederá en la siguiente iteración… Sin embargo, estas ideas están lejos de la realidad. Decir que un proyecto Agile no tiene ninguna especificación es un error. Lo que sí es verdad, no obstante, es que la manera en la se diseñaron las especificaciones funcionales Agile dista mucho del método tradicional.

Un pequeño recordatorio sobre las especificaciones funcionales

Las especificaciones funciones apuntan a, precisamente, especificar todas las funciones de un programa o aplicación para luego establecer el alcance funcional del proyecto.

La elaboración de las especificaciones tiene como base las necesidades del cliente, las cuales generalmente se reagrupan y reformulan en una nota para especificaciones. Por lo tanto, la especificación de una función deberá detallar minuciosamente los servicios que brindará a la aplicación o usuario. La visualización de la página de inicio, de los menús, la identificación de los usuarios y la gestión de cesta de compras, en caso de tratarse de un sitio de comercio electrónico, son todos ejemplos de lo que se puede presentar en un sitio web.

De este modo, las especificaciones funcionales detallarán los aspectos comerciales de la aplicación así como también su implementación y configuración.

En esta etapa no se abordan las soluciones técnicas, lo que significa que se detallarán las diferentes funciones de la aplicación pero no los recursos necesarios para llevarlas a cabo. La estructura, tecnología y los materiales se detallarán en las especificaciones técnicas.

Un aspecto que a veces se pasa por alto sobre la especificación técnica es la necesidad de presentar escenarios de prueba. Durante esta etapa es sumamente importante planificar cómo se podrá verificar que la función desarrollada cumple con la funcionalidad descrita.

Redacción de las especificaciones dentro de una gestión tradicional de proyecto

En una gestión de proyecto con método-V o desarrollo en cascada, el alcance funcional está perfectamente centrado desde el comienzo. Esto implica establecer una lista exhaustiva de las funcionalidades antes de detallarlas una por una.

Cada funcionalidad se detallará de tal forma que sea entendible no solo para el cliente, quien podrá analizar que la descripción encaja efectivamente con lo que se busca, sino también para el equipo de desarrollo, quien estará encargado de la creación de una versión fiel a la especificación.

Con un método de gestión tradicional de proyecto, la etapa de desarrollo solo puede comenzar una vez que el cliente haya redactado y validado todas las especificaciones. Esto significa que pueden pasar semanas o incluso meses entre la redacción de las especificaciones funcionales y el comienzo del desarrollo.

Por lo tanto, este método es adecuado para proyectos cuyas funcionalidades conocemos bien, el núcleo de la profesión, y que no variarán (o no demasiado) a lo largo del tiempo.

Aún así, el proceso de redacción de las especificaciones funcionales que se debe completar antes de la fase de desarrollo es un poco problemático.

Para empezar, raras veces los usuarios pueden detallar exhaustivamente la totalidad de las funcionalidades que desean ver en la aplicación. No obstante, a medida que el proceso se prolonga, es muy probable que la evaluación de las necesidades, la redacción de la nota de especificaciones, la redacción de las especificaciones funcionales, el desarrollo y las pruebas se lleven a cabo por distintas personas. Por ende, una buena  comunicación entre todos los colaboradores es sumamente importante para no perder ningún dato.  La transmisión de esta información se vuelve todavía más complicada en proyectos extensos, porque la gente involucrada a menudo viene y va sin cruzarse.

También, debe evaluarse el mantenimiento de las especificaciones funcionales. Aun en caso de que las necesidades variasen a lo largo del proyecto (si no, es mejor optar por un método Agile), las especificaciones se deben actualizar regularmente para reflejar los avances y los posibles problemas identificados a lo largo del desarrollo.

Especificaciones funcionales Agile

Como acabamos de explicar, poder redactar especificaciones funcionales exhaustivas es muy complicado, hasta irreal.

¿Se puede entonces comenzar a desarrollar sin depender de especificaciones?

Desde luego que no. La gestión de proyectos no da lugar (o da muy poco) a la improvisación. Por ende, necesitamos especificaciones funcionales que  transmitan las necesidades de funciones de aplicación del cliente y luego guíen a los equipos técnicos en su desarrollo.

Por tal motivo, las especificaciones funcionales Agile no se redactan al comienzo del proyecto, sino que se formulan durante su desarrollo. Cada especificación funcional se redactará justo antes de su desarrollo.  Para que el proceso sea eficiente, serán vitales la precisión y una rigurosa comunicación entre el propietario de producto por un lado y el equipo de desarrollo por el otro.

Contrario al método tradicional, la responsabilidad de redactar las especificaciones funcionales es compartida. El cliente, mediante su propietario de producto, asistirá en la descripción de sus necesidades y las especificaciones. El equipo de desarrollo definirá la estructura y las soluciones técnicas que hayan de ser aplicadas. La identificación de pruebas, adaptada al desarrollo, permitirá, por un lado refinar las especificaciones y, por otro lado, evaluar la  más rápida adecuación del comportamiento de la aplicación.

Seguir este procedimiento ofrece varias ventajas 

El desenvolvimiento del proyecto mediante iteraciones permite que las especificaciones funcionales Agile se vuelvan rentables tan pronto se redactan, durante el periodo total del proyecto. Desde ese preciso momento, usted tiene a su disposición toda la información  recopilada desde el comienzo del proyecto, incluyendo nuevas restricciones que pudieran haber surgido durante iteraciones previas. Además, el haber redactado las especificaciones funcionales Agile justo antes del desarrollo hace que el equipo todavía las tenga en mente tras la realización. Esto resulta mucho más sencillo que tener que volver a un documento redactado semanas antes, momento en el cual quizás el proyecto no había sido incorporado todavía. De esta forma, los desarrolladores serán más eficientes porque no tendrán que volver a mirar información de previos editores.

El desarrollo y las especificaciones funcionales Agile se encuentran entonces centralizadas por igual. Un especificación funcional Agile se centra en solo una función de la aplicación, a menudo visualizada como una historia de usuario. Esto es ideal para enfocarse mejor en dicha funcionalidad, desechando información que interfiere con la comprensión de la necesidad.

A pesar de ello, las especificaciones funcionales Agile requieren trabajar con métodos “justo a tiempo” (just in time). Por ende, es especialmente riesgoso redactar especificaciones de acuerdo a los desarrollos a realizar durante la iteración en curso. Es importante anticipar y crear las especificaciones funcionales en paralelo, antes de comenzar la iteración de desarrollo. Si usted tiene especificaciones funcionales en mano al desglosar las historias de usuario y durante su subsiguiente distribución en las diferentes tareas, le será más fácil calcular la carga de trabajo para la realización de la iteración y, por consiguiente, será más precisa.

CONCLUSIÓN

Las especificaciones funcionales Agile gestionan proyectos mediante distintos métodos. Ofrecen flexibilidad (se pueden adaptar), precisión (enfocándose en una funcionalidad centralizada) y fiabilidad (aprovechando la historia del proyecto e información reciente), aunque requieren gran precisión para que su presentación junto a las iteraciones facilite la tarea de los desarrolladores.

Si lo desea, puede comenzar una prueba gratis de 14 días de la solución de gestión de proyectos Agile de Nutcache, la cual pone a disposición de sus equipos un completo paquete de herramientas para gestionar sus especificaciones funcionales.