Miembros del equipo con metodología FDD
El equipo de modelado de FDD incluye los siguientes roles principales:
- El gerente de proyectos supervisa todo el proyecto.
- El arquitecto principal está a cargo del diseño y modelado general del sistema. Trabaja con otros desarrolladores calificados en la fase de planificación del ciclo de desarrollo.
- El gerente de desarrollo dirige y asesora al equipo de desarrollo y supervisa las actividades de programación diarias.
- El programador principal ayuda con el análisis y el diseño y también puede asignársele la administración de pequeños equipos de desarrollo.
- El propietario de clase es parte de los equipos de desarrollo más pequeños dirigidos por el programador principal. Las responsabilidades incluyen diseñar, codificar, probar y documentar funciones.
- El experto en dominio es parte de un equipo que comprende el problema que el cliente necesita resolver. Los desarrolladores dependen de sus conocimientos a fin de trabajar y entregar lo más importante al cliente.
¿Por qué utilizar el desarrollo basado en funciones?
Es posible que quieras considerar el uso de la metodología FDD si tu proyecto se vuelve demasiado amplio y complejo, de tal forma que los equipos de Scrum más pequeños puedan manejar eficazmente la carga de trabajo. Esta metodología Agile basada en funciones es adecuada para proyectos a largo plazo que continuamente cambian y agregan características en iteraciones regulares y predecibles.
El FDD es muy escalable, desde pequeños hasta grandes equipos multifuncionales, porque está diseñado para centrarse siempre en lo que el cliente necesita y quiere.
Ventajas del desarrollo basado en funciones
- Permite al equipo comprender muy bien el alcance y el contexto del proyecto.
- Requiere menos reuniones. Una de las quejas frecuentes sobre Agile es el exceso de reuniones. Scrum utiliza las reuniones diarias para comunicarse, mientras que el FDD utiliza la documentación,
- así como un enfoque centrado en el usuario. Con Scrum, el gerente de producto suele considerarse el usuario final. Con el FDD, es el cliente.
- Funciona bien con proyectos a gran escala, a largo plazo o en curso. Esta metodología es muy escalable y puede crecer a medida que crece tu empresa y el proyecto. Los cinco pasos bien definidos agilizan la adaptación de los nuevos miembros del equipo o empleados recién contratados.
- Divide los conjuntos de funciones en fragmentos más pequeños y lanzamientos iterativos regulares, lo que facilita el seguimiento y la corrección de errores de codificación, reduce el riesgo y te permite dar una respuesta rápida para satisfacer las necesidades de tu cliente.
Desventajas del desarrollo basado en funciones
- El FDD no es ideal en proyectos más pequeños y no funciona en proyectos donde solo hay un desarrollador, porque es difícil que una sola persona o un grupo reducido pueda asumir los distintos roles sin ayuda.
- Existe una gran dependencia de un programador principal que necesita fungir como coordinador, diseñador líder y mentor de los nuevos miembros del equipo.
- No proporciona documentación escrita al cliente, aunque existe mucha comunicación documentada entre los miembros del equipo durante los ciclos de desarrollo del proyecto. Por lo tanto, el cliente no puede obtener una prueba de su propio software.
- Enfatiza la propiedad del código individual en lugar de la propiedad compartida del equipo.
- Es posible que no funcione bien con sistemas más antiguos porque ya existe un sistema y no hay ningún modelo general para definirlo. Quizá, debas comenzar de nuevo y trabajar desde cero.
Cinco pasos en el ciclo de vida del proyecto FDD
Ahora que comprendes los beneficios que puede brindar el desarrollo basado en funciones, profundicemos en los pasos del proceso de desarrollo para que puedas comenzar a implementarlos con tu equipo.
Paso 1: Desarrollo del modelo general
En este paso, redactas un esquema para definir tu modelo de dominio: el problema empresarial que quieres que resuelva el proyecto de desarrollo de software. El equipo trabaja directamente con el arquitecto principal para definir el alcance y el contexto del sistema. Deben fusionarse varios modelos de dominio en un modelo general como un esquema para tu sistema.
Paso 2: Crear una lista de funciones
La lista de funciones es similar al backlog del producto Scrum. Identifica las que son importantes para el cliente. Las funciones se expresan como acción, resultado y objeto (por ejemplo, “validar el número de cuenta del usuario”).
No debería tomar más de dos semanas desarrollar cualquier función determinada. Si pasa más tiempo, debe dividirse en funciones más pequeñas.
Paso 3: Haz un plan por función
Determina el orden en que se desarrollarán e implementarán las funciones de la lista. Considera los riesgos potenciales, dependencias, carga de trabajo individual y de equipo, y cualquier otro obstáculo que pueda impedir el desarrollo de funciones.
Después, asigna conjuntos de funciones a los programadores más capaces y que tengan la capacidad para desarrollarlas dentro del plazo especificado.
Paso 4: Haz un diseño por función
El programador principal determina qué funciones se diseñarán y crearán en una iteración de dos semanas. Además, define las prioridades de las funciones y determina quién participará en el equipo de funciones. Todo el equipo debe completar una revisión de diseño antes de continuar.
Paso 5: Haz una compilación por función
En este paso, se implementan todos los elementos necesarios para admitir el diseño de funciones. Se diseña la interfaz de usuario, y se crea y prueba un prototipo de función. Si la función pasa la prueba y es aceptada, la versión completa puede agregarse a la compilación principal y poner a disposición de los clientes.