PINGDOM_CANARY_STRING
desarrollo basado en funciones

Por qué (y cómo) deberías utilizar el desarrollo basado en funciones

Tiempo de lectura: aproximadamente 8 min

Publicado por: Lucid Content Team

Al hablar de metodologías Agile, probablemente pienses en Scrum. Eso tiene sentido porque se ha citado a Scrum como la metodología más popular utilizada por los gerentes de productos y los equipos de desarrollo durante los últimos 13 años.

Si bien Scrum es la metodología más popular, una revisión rápida de los informes anuales del Estado de Agile muestra que otras metodologías, como Kanban o algún híbrido de Scrum con otras metodologías, han ganado popularidad. Una de esas metodologías es el desarrollo basado en funciones (FDD).

Es posible que el desarrollo basado en funciones no se mencione ni se utilice tanto como otras metodologías Agile, pero vale la pena echarle un vistazo, especialmente si necesitas escalar tu desarrollo en Agile a un proyecto a largo plazo con un equipo grande.

descripción general del desarrollo basado en funciones
Descripción general del desarrollo basado en funciones (haz clic en la imagen para hacer modificaciones en línea)

¿Qué es el desarrollo basado en funciones?

En 1997, Jeff De Luca trabajaba como miembro de un equipo de 50 personas en un proyecto de desarrollo de software de 15 meses en Singapur. En un esfuerzo por ayudar al equipo a adaptarse mejor y a responder a las necesidades del cliente, ideó un modelo de cinco pasos que se enfocan en desarrollar funciones en iteraciones cortas.

Scrum, XP y otras metodologías Agile utilizan un enfoque iterativo para suministrar software. Por el contrario, los cinco pasos en FDD requieren que el equipo siga un conjunto de prácticas recomendadas de ingeniería a medida que desarrollan pequeños conjuntos de funciones en iteraciones de una a dos semanas. Estos cinco pasos garantizan que el desarrollo siga siendo congruente para que el proyecto pueda crecer y que los nuevos miembros del equipo puedan adaptarse al ritmo de trabajo mucho más rápido.

Prácticas recomendadas para el desarrollo basado en funciones

Abordaremos los cinco pasos del ciclo de vida del proyecto FDD más adelante; primero, es importante entender los principios básicos que se establecieron como parte del desarrollo basado en funciones.

  • Modelado de objetos de dominio: los equipos crean diagramas de clases para describir los objetos de un dominio y las relaciones entre ellos. Este proceso ahorra tiempo al ayudarte a descubrir qué uso agregar para cada función.
  • Desarrollo por función: si un uso no puede implementarse en un plazo de dos semanas, debe dividirse en funciones más pequeñas y manejables.
  • Propiedad de clase individual (código): cada clase o grupo de código se asigna a un único propietario.
  • Equipos de funciones: aunque una persona es responsable del rendimiento y la calidad de cada clase, una función puede involucrar a más de una clase, por lo que todos en el equipo de funciones contribuyen a las decisiones de diseño e implementación.
  • Inspecciones: los equipos de FDD realizan inspecciones para detectar defectos y garantizar la mejor calidad.
  • Administración de configuración: esta práctica implica identificar el código fuente para todas las funciones y documentar los cambios.
  • Cronograma de compilación regular: esta práctica recomendada garantiza que el equipo siempre tenga un sistema actualizado que pueda mostrar al cliente.
  • Informes de progreso: los gerentes de proyecto deben proporcionar informes de progreso frecuentes sobre el trabajo completado.

Obtén más información sobre el proceso de modelado del objeto de dominio y comienza con nuestra plantilla gratuita.

Pruébalo ahora

Miembros del equipo de 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. 

Como parte de las prácticas recomendadas del FDD, debes proporcionar informes de progreso a medida que se complete el trabajo. Empieza utilizando nuestra plantilla gratuita.

Ábrela ahora

Si trabajas en una gran empresa y abordas procesos de negocio grandes y complejos, utilizar un enfoque Agile basado en funciones puede ser adecuado para ti. El FDD está diseñado para crecer junto con tu empresa y proyecto, y funciona bien si tu producto requiere un desarrollo continuo a largo plazo. Centrarte en las funciones te ayuda a abordar las necesidades del cliente más rápido, y a identificar y solucionar los problemas que puedan surgir.

Empieza a crear diagramas con Lucidchart hoy mismo, ¡pruébalo gratis!

Regístrate gratis

Popular ahora

what does HR do

¿De qué se ocupa Recursos Humanos? 11 responsabilidades clave

Acerca de Lucidchart

Lucidchart es la aplicación de diagramación inteligente que permite a los equipos aclarar la complejidad, alinear sus conocimientos y construir el futuro... más rápido. Con esta solución intuitiva basada en la nube, todos pueden trabajar gráficamente y colaborar en tiempo real mientras crean diagramas de flujo, prototipos, diagramas UML y mucho más.

Lucidchart, la alternativa en línea para Visio más popular, es utilizado en más de 180 países por millones de usuarios, desde gerentes de ventas que mapean las organizaciones objetivo hasta directores de TI que visualizan su infraestructura de red.

Empezar ahora

  • Precios
  • Individual
  • Equipo
  • Corporativo
  • Comunícate con Ventas
Español
PrivacidadLegal
Descargar en Apple App StoreDescargar en Google Play Store
© 2022 Lucid Software Inc.