Desarrollo impulsado por funciones (FDD): la guía para principiantes

Entre las diversas metodologías ágiles, hay una poco conocida: el desarrollo basado en funciones (FDD) o el desarrollo basado en funciones en francés.
Este método es ideal para proyectos grandes y complejos en los que la cantidad de trabajo no se puede gestionar de forma eficaz con un Método Scrum. Es adecuado para proyectos a largo plazo que cambian con regularidad y a los que se añaden nuevas funcionalidades mediante iteraciones regulares y predecibles.
Definición
El desarrollo basado en funciones (FDD) es una metodología ágil cuya particularidad es organizar el desarrollo de software en torno a la realización y progresión de las funcionalidades. Siguiendo la filosofía ágil, la idea es trabajar en iteraciones cortas (de una a dos semanas) y producir una entrega funcional al final de cada iteración. Si una función no se puede completar en dos semanas, se debe dividir en funciones más pequeñas y fáciles de administrar.
Desde equipos pequeños hasta grandes equipos multidisciplinarios, el método FDD es altamente escalable porque está diseñado para centrarse siempre en las necesidades y requisitos del cliente.
El desarrollo basado en funciones se lleva a cabo en cinco etapas, lo que garantiza la coherencia en el desarrollo del proyecto y permite a los nuevos miembros del equipo actualizarse mucho más rápido.
Origen del método FDD
El método de desarrollo basado en funciones fue desarrollado por Jeff De Luca para satisfacer las necesidades específicas de un importante proyecto de desarrollo de software (15 meses y un equipo de 50 personas) para un banco de Singapur en 1997.
El objetivo era ayudar a su equipo a ser más receptivo y capaz de adaptarse a las necesidades del cliente. Para ello, creó un modelo de desarrollo de cinco etapas que se centra en el desarrollo de funciones en iteraciones cortas.
¿Cómo funciona?
El método FDD sigue un proceso de desarrollo de cinco fases.
1. Desarrollar un modelo global
Durante este primer paso, debes definir las líneas principales de tu modelo de dominio, es decir, el problema que resolverá tu proyecto de desarrollo de software. El equipo trabaja en estrecha colaboración con el arquitecto jefe para definir el alcance y el contexto del sistema.
Diferentes grupos pequeños crean varios modelos de dominio (para cada dominio de modelado) y, a continuación, los seleccionados se combinan para formar un modelo global.
2. Establecer una lista de funcionalidades
La lista de funciones corresponde a la cartera de productos del método Scrum. Aquí, debe identificar qué funciones del software son importantes para el cliente. Estas funcionalidades se pueden formular como acciones, resultados u objetos. Por ejemplo, «calcular el importe total de la cesta de un cliente» o «validar la contraseña de un usuario» son funcionalidades.
El desarrollo de cada función no debería tardar más de dos semanas; de lo contrario, debería dividirse en funciones más pequeñas.
3. Planifique en función de las características
Este paso le permite planificar el orden en el que se desarrollará e implementará cada función. Como en cualquier proyecto, debes tener en cuenta los riesgos potenciales, las dependencias entre las distintas tareas, la carga de trabajo de tus colaboradores y cualquier otro obstáculo que pueda dificultar el buen funcionamiento del proyecto.
Luego, asigna las funcionalidades a las personas más competentes (programadores) para que puedan completarlas a tiempo.
4. Diseño por características
El programador principal determina qué funciones se diseñarán durante las iteraciones de dos semanas. También es quien define las prioridades y designa a los miembros del equipo que participarán. Antes de pasar a la siguiente iteración, todo el equipo revisa el diseño de las funciones.
5. Construyendo a partir de características
En esta etapa, se realizan todos los elementos que acompañan el diseño de la función. Se crea la interfaz de usuario y se construye y prueba un prototipo de la función. Si la prueba se realiza correctamente y se valida la funcionalidad, su versión final se agrega al software y está disponible para los clientes.
Ventajas y desventajas
El método FDD tiene varias ventajas.
- Como método ágil, es un enfoque que se centra en el usuario final.
- Su sencillo proceso de cinco pasos permite un desarrollo de productos más rápido.
- Dividir las funciones en iteraciones pequeñas y regulares facilita el seguimiento y la corrección de los errores, reduce los riesgos y permite responder rápidamente a las necesidades de los clientes.
- El método permite a los equipos grandes avanzar con el proyecto basándose en una serie de éxitos.
- Los equipos comprenden bien el contexto y el alcance del proyecto, y avanzan más rápidamente gracias a los estándares de desarrollo predefinidos.
Sin embargo, como todos los métodos, la FDD también tiene sus puntos débiles.
- No es adecuado para proyectos pequeños.
- Este método depende en gran medida de una persona: el programador principal. Esta persona debe desempeñar múltiples funciones (coordinadora, diseñadora principal y mentora de los nuevos miembros del equipo), lo que, en un proyecto grande y complejo, puede aumentar el riesgo de cometer errores.
- Se proporciona muy poca documentación escrita al cliente.
- La FDD no funciona muy bien con los sistemas que ya existen. Lo mejor es empezar desde cero.
Conclusión
Si duda entre varios métodos ágiles, sepa que el desarrollo basado en funciones es adecuado para usted si forma parte de una gran empresa y trabaja en proyectos de desarrollo de software grandes y complejos que se extienden a largo plazo. Al centrarse en las funciones, podrá responder a las necesidades de los clientes con mayor rapidez y será más eficaz a la hora de identificar y corregir los problemas que puedan surgir.
Sin embargo, tenga en cuenta que es importante que este método se corresponda con la cultura de su empresa para que sus empleados lo adopten más fácilmente.
Fuente: https://www.lucidchart.com/blog/why-use-feature-driven-development



