fdd: feature driven development desarrollo basado en funcionalidades sarah gutiérrez hernán zapata...

29
FDD: FDD: Feature Driven Development Feature Driven Development Desarrollo Basado en Desarrollo Basado en Funcionalidades Funcionalidades Sarah Gutiérrez Sarah Gutiérrez Hernán Zapata Hernán Zapata Juan Pablo Arias Juan Pablo Arias Cristian Zambrano Cristian Zambrano

Upload: geraldo-araya

Post on 26-Jan-2015

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

FDD: FDD: Feature Driven DevelopmentFeature Driven Development

Desarrollo Basado en Desarrollo Basado en FuncionalidadesFuncionalidades

Sarah GutiérrezSarah GutiérrezHernán ZapataHernán ZapataJuan Pablo AriasJuan Pablo Arias

Cristian ZambranoCristian Zambrano

Page 2: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

FDDFDD

Es un proceso ágil para el desarrollo de Es un proceso ágil para el desarrollo de sistemas.sistemas.

Fue diseñado por Peter Coad, Eric Fue diseñado por Peter Coad, Eric Lefebvre y Jeff DeLuca.Lefebvre y Jeff DeLuca.

No hace énfasis en la obtención de los No hace énfasis en la obtención de los requerimientos sino en como se realizan requerimientos sino en como se realizan las fases de diseño y construcción.las fases de diseño y construcción.

Se preocupa por la calidad, por lo que Se preocupa por la calidad, por lo que incluye un monitoreo constante del incluye un monitoreo constante del proyecto.proyecto.

Page 3: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

FDDFDD

Ayuda a contrarrestar situaciones Ayuda a contrarrestar situaciones como el exceso en el presupuesto, como el exceso en el presupuesto, fallas en el programa o el hecho de fallas en el programa o el hecho de entregar menos de lo deseado.entregar menos de lo deseado.

Propone tener etapas de cierre cada Propone tener etapas de cierre cada dos semanas.dos semanas.

Se obtienen resultado periódicos y Se obtienen resultado periódicos y tangibles.tangibles.

Page 4: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

FDDFDD

Se basa en un proceso iterativo con Se basa en un proceso iterativo con iteraciones cortas que producen un iteraciones cortas que producen un software funcional que el cliente y la software funcional que el cliente y la dirección de la empresa pueden ver dirección de la empresa pueden ver y monitoriar.y monitoriar.

Define claramente entregas Define claramente entregas tangibles y formas de evaluación del tangibles y formas de evaluación del progreso del proyecto.progreso del proyecto.

Page 5: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

ProcesoProceso

El proceso consiste de cinco pasos El proceso consiste de cinco pasos secuénciales durante los cuales se secuénciales durante los cuales se diseña y se construye el sistema:diseña y se construye el sistema:

Desarrollo de un modelo global.Desarrollo de un modelo global.Construcción de una lista de Construcción de una lista de

funcionalidades.funcionalidades.Planeación por funcionalidad.Planeación por funcionalidad.Diseño por funcionalidad.Diseño por funcionalidad.Construcción por funcionalidad.Construcción por funcionalidad.

Page 6: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

ProcesoProceso

Page 7: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

Descripción del Proceso(1)Descripción del Proceso(1)

Desarrollo de un modelo global:Desarrollo de un modelo global:Cuando comienza el desarrollo, los expertos Cuando comienza el desarrollo, los expertos

del dominio están al tanto de la visión, el del dominio están al tanto de la visión, el contexto y los requerimientos del sistema a contexto y los requerimientos del sistema a construir.construir.

Se divide el dominio global en áreas que son Se divide el dominio global en áreas que son analizadas detalladamente.analizadas detalladamente.

Los desarrolladores construyen un diagrama Los desarrolladores construyen un diagrama de clases o de objetos por cada área.de clases o de objetos por cada área.

Se construye un modelo global del sistema.Se construye un modelo global del sistema.

Page 8: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

Descripción del Proceso(2)Descripción del Proceso(2)

Construcción de una lista de Construcción de una lista de funcionalidades:funcionalidades: Una funcionalidad es un ítem útil a los ojos del Una funcionalidad es un ítem útil a los ojos del

cliente.cliente.Se elabora una lista de funcionalidades que resuma Se elabora una lista de funcionalidades que resuma

la funcionalidad general del sistema.la funcionalidad general del sistema.La lista es elaborada por los desarrolladores y es La lista es elaborada por los desarrolladores y es

evaluada por el cliente.evaluada por el cliente.Se divide la lista en subconjuntos según la afinidad y Se divide la lista en subconjuntos según la afinidad y

la dependencia de las funcionalidades.la dependencia de las funcionalidades.La lista es finalmente revisada por los usuarios y los La lista es finalmente revisada por los usuarios y los

responsables para su validación y aprobación.responsables para su validación y aprobación.

Page 9: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

Planeación por Planeación por funcionalidad:funcionalidad:

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

Descripción del Proceso(3)Descripción del Proceso(3)

Page 10: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

Descripción del Proceso(4)Descripción del Proceso(4)

Diseño por funcionalidades y Diseño por funcionalidades y Construcción por funcionalidades:Construcción por funcionalidades:

Se selecciona un conjunto de funcionalidades de Se selecciona un conjunto de funcionalidades de la lista.la lista.

Se procede a diseñar y construir la Se procede a diseñar y construir la funcionalidad mediante un proceso iterativo.funcionalidad mediante un proceso iterativo.

Una iteración puede tomar de unos pocos días a Una iteración puede tomar de unos pocos días a un máximo de dos semanas. El proceso iterativo un máximo de dos semanas. El proceso iterativo incluye inspección de diseño, codificación, incluye inspección de diseño, codificación, pruebas unitarias, integración e inspección de pruebas unitarias, integración e inspección de código.código.

Miremos una representación gráfica del proceso Miremos una representación gráfica del proceso iterativo que involuclan estas dos últimas fases:iterativo que involuclan estas dos últimas fases:

Page 11: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano
Page 12: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano
Page 13: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano
Page 14: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

Roles y Roles y ResponsabilidadesResponsabilidades

Page 15: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

CategoríasCategorías

Key Roles / Roles clavesKey Roles / Roles claves

Supporting Roles / Roles de soporteSupporting Roles / Roles de soporte

Additional Roles / Roles adicionalesAdditional Roles / Roles adicionales

Page 16: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

Key Roles / Roles clavesKey Roles / Roles claves

Project Manager / Director del Project Manager / Director del Proyecto:Proyecto:

* Lider administrativo y financiero del proyecto.* Lider administrativo y financiero del proyecto.

* Protege al equipo de situaciones externas.* Protege al equipo de situaciones externas.Chief Architect / Arquitecto jefe:Chief Architect / Arquitecto jefe:

* Diseño global del sistema.* Diseño global del sistema.

* Ejecución de todas las etapas.* Ejecución de todas las etapas.Development Manager / Director de Development Manager / Director de

desarrollodesarrollo* Lleva diariamente las actividades de desarrollo.* Lleva diariamente las actividades de desarrollo.

Page 17: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

* Resuelve conflictos en el equipo. * Resuelve conflictos en el equipo.

* Resuelve problemas referentes a recursos.* Resuelve problemas referentes a recursos.Chief Programmer / Programador JefeChief Programmer / Programador Jefe

* Analiza los requerimientos.* Analiza los requerimientos.

* Diseña el proyecto.* Diseña el proyecto.

* Selecciona las funcionalidades a desarrollar de la * Selecciona las funcionalidades a desarrollar de la ultima fase del FDD.ultima fase del FDD.

Class Owner / Propietario de clasesClass Owner / Propietario de clases

* Responsable del desarrollo de las clases que se le * Responsable del desarrollo de las clases que se le asignaron como propias.asignaron como propias.

* Participa en la decisión de que clase será incluida * Participa en la decisión de que clase será incluida en la lista de funcionalidades de la próxima en la lista de funcionalidades de la próxima iteración. iteración.

Page 18: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

Expertos de dominioExpertos de dominio* Puede ser un usuario, un cliente, analista o * Puede ser un usuario, un cliente, analista o una mezcla de estos.una mezcla de estos.

* Poseen el conocimiento de los requerimientos * Poseen el conocimiento de los requerimientos del sistema.del sistema.

* Pasa el conocimiento a los desarrolladores * Pasa el conocimiento a los desarrolladores para que se asegure la entrega de un sistema para que se asegure la entrega de un sistema completo.completo.

Page 19: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

Supporting roles / Roles de Supporting roles / Roles de soportesoporte

Domain ManagerDomain Manager* Lidera al grupo de expertos del dominio.* Lidera al grupo de expertos del dominio.

* Resuelve sus diferencias de opinión * Resuelve sus diferencias de opinión concernientes a los requerimientos del sistema.concernientes a los requerimientos del sistema.

Release ManagerRelease Manager* Controla el avance del proceso mediante la * Controla el avance del proceso mediante la revisión de los reportes del Chief Programmer.revisión de los reportes del Chief Programmer.

* Reporta resultados obtenidos semanalmente * Reporta resultados obtenidos semanalmente al gerente, al cliente donde incluye el al gerente, al cliente donde incluye el porcentaje de avance de cada feature.porcentaje de avance de cada feature.

Page 20: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

Language Lawyer / Guru del Language Lawyer / Guru del LenguajeLenguaje* Responsable de poseer un vasto conocimiento * Responsable de poseer un vasto conocimiento en, por ejemplo, un lenguaje específico de en, por ejemplo, un lenguaje específico de programación o tecnología. programación o tecnología.

* Es muy importante cuando se trabaja una * Es muy importante cuando se trabaja una nueva tecnología.nueva tecnología.

Build Engineer / Ingeniero de Build Engineer / Ingeniero de construcciónconstrucción

* Responsable de preparar, mantener y correr * Responsable de preparar, mantener y correr el proceso de construcción.el proceso de construcción.

* Realiza el mantenimiento de las versiones y la * Realiza el mantenimiento de las versiones y la publicación de la documentación.publicación de la documentación.

Page 21: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

Toolsmith / HerramentistaToolsmith / Herramentista

* Rol para la construcción de herramientas * Rol para la construcción de herramientas específicas para el desarrollo, conversión de específicas para el desarrollo, conversión de datos y testeo. datos y testeo.

* Puede trabajar en la preparación y * Puede trabajar en la preparación y mantenimiento tanto de bases de datos o sitios mantenimiento tanto de bases de datos o sitios web destinados al proyecto. web destinados al proyecto.

System Administrator / System Administrator / Administrador del sistemaAdministrador del sistema* Configura, administra y repara los servidores, * Configura, administra y repara los servidores, estaciones de trabajo y equipos de desarrollo y estaciones de trabajo y equipos de desarrollo y testeo utilizados por el equipo.testeo utilizados por el equipo.

Page 22: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

TesterTester

* Verifica que el sistema recién creado cumpla con los * Verifica que el sistema recién creado cumpla con los requerimientos del cliente. requerimientos del cliente.

* Puede llegar a ser una persona independiente del * Puede llegar a ser una persona independiente del equipo del proyecto.equipo del proyecto.

DeployerDeployer* Es el encargado de convertir la información existente * Es el encargado de convertir la información existente requerida por el nuevo sistema.requerida por el nuevo sistema.

* Participa en el lanzamiento de los nuevos productos.* Participa en el lanzamiento de los nuevos productos.

Technical Writer / Escritores de Technical Writer / Escritores de documentos tecnicosdocumentos tecnicos* Prepara la documentación para los usuarios, que * Prepara la documentación para los usuarios, que pueden formar parte o no del equipo del proyecto.pueden formar parte o no del equipo del proyecto.

Additional roles / Roles adicionalesAdditional roles / Roles adicionales

Page 23: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

ComparaciónComparación

Puesto que todos los procesos Puesto que todos los procesos se centran en la producción se centran en la producción de software es deseable una de software es deseable una comparación, no en su comparación, no en su conjunto, sino según los conjunto, sino según los medios que emplean y sus medios que emplean y sus resultados.resultados.Realizamos una comparación Realizamos una comparación entre FDD, RUP y XP.entre FDD, RUP y XP.

Page 24: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

Tamaño de los equiposTamaño de los equipos: : RUP esta pensado para proyectos y equipos grandes, en cuanto a tamaño y duración. FDD y XP se implementan mejor para proyectos cortos y equipos más pequeños, siendo quizás FDD más escalable que XP.

Obtención de requisitos:Obtención de requisitos: RUP y XP crean como RUP y XP crean como base UseCases y UserStories, por lo contrario FDD base UseCases y UserStories, por lo contrario FDD no define explícitamente esa parte del proyecto no define explícitamente esa parte del proyecto sobre la adquisición de requisitos.sobre la adquisición de requisitos.

Evaluación del estado del proyecto: Evaluación del estado del proyecto: FDD es FDD es posiblemente el proceso más adecuado para posiblemente el proceso más adecuado para definir métricas que definan el estado del definir métricas que definan el estado del proyecto, puesto que al dividirlos en unidades proyecto, puesto que al dividirlos en unidades pequeñas es bastante sencillo hacer un pequeñas es bastante sencillo hacer un seguimiento de las mismas.seguimiento de las mismas.

Page 25: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

XP también define esos componentes pequeños. XP también define esos componentes pequeños. RUP por su parte, es tan grande y complejo en RUP por su parte, es tan grande y complejo en este sentido como en el resto, por lo que manejar este sentido como en el resto, por lo que manejar el volumen de información que puede generar el volumen de información que puede generar requiere mucho tiempo.requiere mucho tiempo.

Carga de trabajoCarga de trabajo: : XPXP es un proceso ligero, es un proceso ligero, esto es, que los creadores del proceso han tenido esto es, que los creadores del proceso han tenido cuidado de no poner demasiadas tareas cuidado de no poner demasiadas tareas organizativas sobre los desarrolladores. RUP es organizativas sobre los desarrolladores. RUP es un proceso pesado, basado mucho en la un proceso pesado, basado mucho en la documentación, en la que no son deseables todos documentación, en la que no son deseables todos esos cambios volátiles. FDD es por su parte un esos cambios volátiles. FDD es por su parte un proceso intermedio, en el sentido de que genera proceso intermedio, en el sentido de que genera

más documentación que XPmás documentación que XP pero menos que RUP.pero menos que RUP.

Page 26: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

Relación con el cliente:Relación con el cliente:Con RUP se presentarán Con RUP se presentarán

al cliente los artefactos del final de una faseal cliente los artefactos del final de una fase, , en en contrapartida, la aseguración de la calidad en XP contrapartida, la aseguración de la calidad en XP y FDD no se basa en formalismos en la y FDD no se basa en formalismos en la documentación, si no en controles propios y una documentación, si no en controles propios y una

comunicación fluida con el cliente.comunicación fluida con el cliente. Conocimiento sobre la arquitectura: Conocimiento sobre la arquitectura: En RUP En RUP

se intentará reducir la complejidad del software a se intentará reducir la complejidad del software a

producir a través de una planificación intensivaproducir a través de una planificación intensiva. . En XP seEn XP se conseguirá a través de la programación conseguirá a través de la programación a pares que ya en la creación del código se a pares que ya en la creación del código se

puedan evitar errores y malos diseñospuedan evitar errores y malos diseños. . En FDD En FDD sin embargo se usan las sesiones de trabajo sin embargo se usan las sesiones de trabajo conjuntas en fase de diseño para conseguir una conjuntas en fase de diseño para conseguir una arquitectura sencilla y sin errores arquitectura sencilla y sin errores

Page 27: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

Puntos flacos:Puntos flacos:1.1. FDD presenta su talón de Aquiles en la necesidad FDD presenta su talón de Aquiles en la necesidad

de tener en el equipo miembros con experiencia de tener en el equipo miembros con experiencia que marquen el camino a seguir desde el principio, que marquen el camino a seguir desde el principio, con la elaboración del modelo global, puesto que con la elaboración del modelo global, puesto que no es tan ágil como podría serlo XP.no es tan ágil como podría serlo XP.

2.2. Para el desarrollo de software por medio de Para el desarrollo de software por medio de equipos pequeños (hasta unas diez personas) es equipos pequeños (hasta unas diez personas) es RUP definitivamente muy grande y practicamente RUP definitivamente muy grande y practicamente inalcanzable. Se deben repartir 31 roles y generar inalcanzable. Se deben repartir 31 roles y generar más de 100 artefactos distintos.más de 100 artefactos distintos.

3.3. XP es un proceso muy orientado a la XP es un proceso muy orientado a la implementación. Lo que es implementación. Lo que es muy poco deseablemuy poco deseable en en XP es el hecho de XP es el hecho de evitarevitar cualquier tipo de cualquier tipo de documentación fuera del código fuente (UML juega documentación fuera del código fuente (UML juega un papel prácticamente nulo, por ejemplo).un papel prácticamente nulo, por ejemplo).

Page 28: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

Conclusiones Conclusiones

FDD, es una metodología de desarrollo ágil, FDD, es una metodología de desarrollo ágil, que disminuye el riesgo de los proyectos, que disminuye el riesgo de los proyectos, pues gracias a sus entregas tangibles y a el pues gracias a sus entregas tangibles y a el constante monitoreo de su calidad, se constante monitoreo de su calidad, se asegura el firme avance del mismo.asegura el firme avance del mismo.

FDD, permite dejar satisfechos a los FDD, permite dejar satisfechos a los desarrolladores, gerentes y clientes sin desarrolladores, gerentes y clientes sin afectar el proyecto. Esto gracias a un buen afectar el proyecto. Esto gracias a un buen manejo de las actividades, a la disminución manejo de las actividades, a la disminución del riesgo del proyecto y al aseguramiento del riesgo del proyecto y al aseguramiento de la calidad del mismo, respectivamente.de la calidad del mismo, respectivamente.

Page 29: FDD: Feature Driven Development Desarrollo Basado en Funcionalidades Sarah Gutiérrez Hernán Zapata Juan Pablo Arias Cristian Zambrano

En conclusión FDD:En conclusión FDD:Ayuda al equipo a producir resultados Ayuda al equipo a producir resultados

periódicos y tangibles.periódicos y tangibles.Esta metodología utiliza pequeños bloques Esta metodología utiliza pequeños bloques

llamados features, los cuales contienen la llamados features, los cuales contienen la funcionalidad del sistema.funcionalidad del sistema.

Organiza los bloques que están relacionados Organiza los bloques que están relacionados entre sí, en una lista llamada feature set.entre sí, en una lista llamada feature set.

Hace énfasis en la obtención de resultados Hace énfasis en la obtención de resultados cada dos semanas.cada dos semanas.

Asegura en gran parte la calidad del Asegura en gran parte la calidad del software entregado.software entregado.

Es adaptativo, pues permite realizar Es adaptativo, pues permite realizar cambios de último momento debido a cambios de último momento debido a nuevos requerimientos y a las necesidades nuevos requerimientos y a las necesidades del negocio. del negocio.