Está en la página 1de 29

FDD:

Feature Driven Development

Desarrollo Basado en Funcionalidades


Sarah Gutirrez Hernn Zapata Juan Pablo Arias Cristian Zambrano

FDD
Es un proceso gil para el desarrollo de sistemas. Fue diseado por Peter Coad, Eric Lefebvre y Jeff DeLuca. No hace nfasis en la obtencin de los requerimientos sino en como se realizan las fases de diseo y construccin. Se preocupa por la calidad, por lo que incluye un monitoreo constante del proyecto.

FDD
Ayuda a contrarrestar situaciones como el exceso en el presupuesto, fallas en el programa o el hecho de entregar menos de lo deseado. Propone tener etapas de cierre cada dos semanas. Se obtienen resultado peridicos y tangibles.

FDD
Se basa en un proceso iterativo con iteraciones cortas que producen un software funcional que el cliente y la direccin de la empresa pueden ver y monitoriar. Define claramente entregas tangibles y formas de evaluacin del progreso del proyecto.

Proceso

El proceso consiste de cinco pasos secunciales durante los cuales se disea y se construye el sistema:
Desarrollo

de un modelo global. Construccin de una lista de funcionalidades. Planeacin por funcionalidad. Diseo por funcionalidad. Construccin por funcionalidad.

Proceso

Descripcin del Proceso(1)

Desarrollo de un modelo global:


Cuando

comienza el desarrollo, los expertos del dominio estn al tanto de la visin, el contexto y los requerimientos del sistema a construir. Se divide el dominio global en reas que son analizadas detalladamente. Los desarrolladores construyen un diagrama de clases o de objetos por cada rea. Se construye un modelo global del sistema.

Descripcin del Proceso(2)

Construccin de una lista de funcionalidades:

Una funcionalidad es un tem til a los ojos del cliente.

Se elabora una lista de funcionalidades que resuma la funcionalidad general del sistema. La lista es elaborada por los desarrolladores y es evaluada por el cliente. Se divide la lista en subconjuntos segn la afinidad y la dependencia de las funcionalidades. La lista es finalmente revisada por los usuarios y los responsables para su validacin y aprobacin.

Descripcin del Proceso(3)


Planeacin
En

por funcionalidad:

este punto se procede a ordenar los conjuntos de funcionalidades conforme a su prioridad y dependencia, y se asigna a los programadores jefes.

Descripcin del Proceso(4)

Diseo por funcionalidades y Construccin por funcionalidades:


Se

selecciona un conjunto de funcionalidades de la lista. Se procede a disear y construir la funcionalidad mediante un proceso iterativo. Una iteracin puede tomar de unos pocos das a un mximo de dos semanas. El proceso iterativo incluye inspeccin de diseo, codificacin, pruebas unitarias, integracin e inspeccin de cdigo.
Miremos

una representacin grfica del proceso iterativo que involuclan estas dos ltimas fases:

Roles y Responsabilidades

Categoras

Key Roles / Roles claves Supporting Roles / Roles de soporte


Additional Roles / Roles adicionales

Key Roles / Roles claves

Project Manager / Director del Proyecto:


* Lider administrativo y financiero del proyecto. * Protege al equipo de situaciones externas.

Chief Architect / Arquitecto jefe:


* Diseo global del sistema. * Ejecucin de todas las etapas.

Development Manager / Director de desarrollo


* Lleva diariamente las actividades de desarrollo.

* Resuelve conflictos en el equipo. * Resuelve problemas referentes a recursos.

Chief Programmer / Programador Jefe


* Analiza los requerimientos. * Disea el proyecto. * Selecciona las funcionalidades a desarrollar de la ultima fase del FDD.

Class Owner / Propietario de clases


* Responsable del desarrollo de las clases que se le asignaron como propias. * Participa en la decisin de que clase ser incluida en la lista de funcionalidades de la prxima iteracin.

Expertos de dominio
* Puede ser un usuario, un cliente, analista o una mezcla de estos. * Poseen el conocimiento de los requerimientos del sistema. * Pasa el conocimiento a los desarrolladores para que se asegure la entrega de un sistema completo.

Supporting roles / Roles de soporte

Domain Manager
* Lidera al grupo de expertos del dominio. * Resuelve sus diferencias de opinin concernientes a los requerimientos del sistema.

Release Manager
* Controla el avance del proceso mediante la revisin de los reportes del Chief Programmer. * Reporta resultados obtenidos semanalmente al gerente, al cliente donde incluye el porcentaje de avance de cada feature.

Language Lawyer / Guru del Lenguaje


* Responsable de poseer un vasto conocimiento en, por ejemplo, un lenguaje especfico de programacin o tecnologa. * Es muy importante cuando se trabaja una nueva tecnologa.

Build Engineer / Ingeniero de construccin


* Responsable de preparar, mantener y correr el proceso de construccin. * Realiza el mantenimiento de las versiones y la publicacin de la documentacin.

Toolsmith / Herramentista
* Rol para la construccin de herramientas especficas para el desarrollo, conversin de datos y testeo. * Puede trabajar en la preparacin y mantenimiento tanto de bases de datos o sitios web destinados al proyecto.

System Administrator / Administrador del sistema


* Configura, administra y repara los servidores, estaciones de trabajo y equipos de desarrollo y testeo utilizados por el equipo.

Additional roles / Roles adicionales

Tester
* Verifica que el sistema recin creado cumpla con los requerimientos del cliente. * Puede llegar a ser una persona independiente del equipo del proyecto.

Deployer
* Es el encargado de convertir la informacin existente requerida por el nuevo sistema. * Participa en el lanzamiento de los nuevos productos.

Technical Writer / Escritores de documentos tecnicos


* Prepara la documentacin para los usuarios, que pueden formar parte o no del equipo del proyecto.

Comparacin
Puesto que todos los procesos se centran en la produccin de software es deseable una comparacin, no en su conjunto, sino segn los medios que emplean y sus resultados. Realizamos una comparacin entre FDD, RUP y XP.

Tamao de los equipos: RUP esta pensado para proyectos y equipos grandes, en cuanto a tamao y duracin. FDD y XP se implementan mejor para proyectos cortos y equipos ms pequeos, siendo quizs FDD ms escalable que XP. Obtencin de requisitos: RUP y XP crean como base UseCases y UserStories, por lo contrario FDD no define explcitamente esa parte del proyecto sobre la adquisicin de requisitos. Evaluacin del estado del proyecto: FDD es posiblemente el proceso ms adecuado para definir mtricas que definan el estado del proyecto, puesto que al dividirlos en unidades pequeas es bastante sencillo hacer un seguimiento de las mismas.

XP tambin define esos componentes pequeos. RUP por su parte, es tan grande y complejo en este sentido como en el resto, por lo que manejar el volumen de informacin que puede generar requiere mucho tiempo.

es, que los creadores del proceso han tenido cuidado de no poner demasiadas tareas organizativas sobre los desarrolladores. RUP es un proceso pesado, basado mucho en la documentacin, en la que no son deseables todos esos cambios voltiles. FDD es por su parte un proceso intermedio, en el sentido de que genera ms

Carga de trabajo: XP es un proceso ligero, esto

documentacin que XP pero menos que RUP.

Relacin con el cliente:Con RUP se presentarn al

cliente los artefactos del final de una fase, en contrapartida, la aseguracin de la calidad en XP y FDD no se basa en formalismos en la documentacin, si no en controles propios y una comunicacin fluida con el cliente.

Conocimiento sobre la arquitectura: En RUP se intentar reducir la complejidad del software a producir a travs de una planificacin intensiva. En XP se conseguir a travs de la programacin a pares que ya en la creacin del cdigo se puedan evitar errores y

malos diseos. En FDD sin embargo se usan las sesiones de trabajo conjuntas en fase de diseo para conseguir una arquitectura sencilla y sin errores


1.

Puntos flacos:
FDD presenta su taln de Aquiles en la necesidad de tener en el equipo miembros con experiencia que marquen el camino a seguir desde el principio, con la elaboracin del modelo global, puesto que no es tan gil como podra serlo XP. Para el desarrollo de software por medio de equipos pequeos (hasta unas diez personas) es RUP definitivamente muy grande y practicamente inalcanzable. Se deben repartir 31 roles y generar ms de 100 artefactos distintos. XP es un proceso muy orientado a la implementacin. Lo que es muy poco deseable en XP es el hecho de evitar cualquier tipo de documentacin fuera del cdigo fuente (UML juega un papel prcticamente nulo, por ejemplo).

2.

3.

Conclusiones
FDD, es una metodologa de desarrollo gil, que disminuye el riesgo de los proyectos, pues gracias a sus entregas tangibles y a el constante monitoreo de su calidad, se asegura el firme avance del mismo. FDD, permite dejar satisfechos a los desarrolladores, gerentes y clientes sin afectar el proyecto. Esto gracias a un buen manejo de las actividades, a la disminucin del riesgo del proyecto y al aseguramiento de la calidad del mismo, respectivamente.

En conclusin FDD:
Ayuda
Esta

al equipo a producir resultados peridicos y tangibles.


metodologa utiliza pequeos bloques llamados features, los cuales contienen la funcionalidad del sistema.

Organiza

los bloques que estn relacionados entre s, en una lista llamada feature set. Hace nfasis en la obtencin de resultados cada dos semanas. Asegura en gran parte la calidad del software entregado. Es adaptativo, pues permite realizar cambios de ltimo momento debido a nuevos requerimientos y a las necesidades del negocio.

También podría gustarte