Presentacion fdd

rickikiss 2,399 views 29 slides Apr 02, 2013
Slide 1
Slide 1 of 29
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29

About This Presentation

No description available for this slideshow.


Slide Content

FDD: FDD: Feature Driven DevelopmentFeature Driven Development
Desarrollo Basado en Desarrollo Basado en
FuncionalidadesFuncionalidades
Sarah GutiérrezSarah Gutiérrez
Hernán ZapataHernán Zapata
Juan Pablo AriasJuan Pablo Arias
Cristian ZambranoCristian 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 Lefebvre y Fue diseñado por Peter Coad, Eric Lefebvre y
Jeff DeLuca.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 las requerimientos sino en como se realizan las
fases de diseño y construcción.fases de diseño y construcción.
Se preocupa por la calidad, por lo que incluye Se preocupa por la calidad, por lo que incluye
un monitoreo constante del proyecto.un monitoreo constante del proyecto.

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

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 y dirección de la empresa pueden ver y
monitoriar.monitoriar.
Define claramente entregas tangibles y Define claramente entregas tangibles y
formas de evaluación del progreso del formas de evaluación del progreso del
proyecto.proyecto.

ProcesoProceso
El proceso consiste de cinco pasos El proceso consiste de cinco pasos
secuénciales durante los cuales se diseña secuénciales durante los cuales se diseña
y se construye el sistema:y se construye el sistema:
Desarrollo de un modelo global.Desarrollo de un modelo global.
Construcción de una lista de funcionalidades.Construcción de una lista de 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.

ProcesoProceso

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 del Cuando comienza el desarrollo, los expertos del
dominio están al tanto de la visión, el contexto y dominio están al tanto de la visión, el contexto y
los requerimientos del sistema a construir.los requerimientos del sistema a 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 de Los desarrolladores construyen un diagrama de
clases o de objetos por cada área.clases o de objetos por cada área.
Se construye un modelo global del sistema.Se construye un modelo global del sistema.

Descripción del Proceso(2)Descripción del Proceso(2)
Construcción de una lista de funcionalidades:Construcción de una lista de 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 la Se elabora una lista de funcionalidades que resuma la
funcionalidad general del sistema.funcionalidad general del sistema.
La lista es elaborada por los desarrolladores y es evaluada La lista es elaborada por los desarrolladores y es evaluada
por el cliente.por el cliente.
Se divide la lista en subconjuntos según la afinidad y la Se divide la lista en subconjuntos según la afinidad y la
dependencia de las funcionalidades.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.

Planeación por funcionalidad:Planeación por 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 jefes.asigna a los programadores jefes.
Descripción del Proceso(3)Descripción del Proceso(3)

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 funcionalidad Se procede a diseñar y construir la funcionalidad
mediante un proceso iterativo.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, pruebas incluye inspección de diseño, codificación, pruebas
unitarias, integración e inspección de código.unitarias, integración e inspección de 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:

Roles y ResponsabilidadesRoles y Responsabilidades

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

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.

* 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 en * Participa en la decisión de que clase será incluida en
la lista de funcionalidades de la próxima iteración. la lista de funcionalidades de la próxima iteración.

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

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 concernientes a * Resuelve sus diferencias de opinión concernientes a
los requerimientos del sistema.los requerimientos del sistema.
Release ManagerRelease Manager
* Controla el avance del proceso mediante la revisión * Controla el avance del proceso mediante la revisión
de los reportes del Chief Programmer.de los reportes del Chief Programmer.
* Reporta resultados obtenidos semanalmente al * Reporta resultados obtenidos semanalmente al
gerente, al cliente donde incluye el porcentaje de gerente, al cliente donde incluye el porcentaje de
avance de cada feature.avance de cada feature.

Language Lawyer / Guru del LenguajeLanguage Lawyer / Guru del Lenguaje
* Responsable de poseer un vasto conocimiento en, * Responsable de poseer un vasto conocimiento en,
por ejemplo, un lenguaje específico de programación por ejemplo, un lenguaje específico de programación
o tecnología. o tecnología.
* Es muy importante cuando se trabaja una nueva * Es muy importante cuando se trabaja una nueva
tecnología.tecnología.
Build Engineer / Ingeniero de Build Engineer / Ingeniero de
construcciónconstrucción
* Responsable de preparar, mantener y correr el * Responsable de preparar, mantener y correr el
proceso de construcción.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.

Toolsmith / HerramentistaToolsmith / Herramentista
* Rol para la construcción de herramientas específicas * Rol para la construcción de herramientas específicas
para el desarrollo, conversión de datos y testeo. para el desarrollo, conversión de datos y testeo.
* Puede trabajar en la preparación y mantenimiento * Puede trabajar en la preparación y mantenimiento
tanto de bases de datos o sitios web destinados al tanto de bases de datos o sitios web destinados al
proyecto. proyecto.
System Administrator / Administrador System Administrator / Administrador
del sistemadel sistema
* Configura, administra y repara los servidores, * Configura, administra y repara los servidores,
estaciones de trabajo y equipos de desarrollo y testeo estaciones de trabajo y equipos de desarrollo y testeo
utilizados por el equipo.utilizados por el equipo.

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 equipo del * Puede llegar a ser una persona independiente del equipo del
proyecto.proyecto.
DeployerDeployer
* Es el encargado de convertir la información existente requerida * Es el encargado de convertir la información existente requerida
por el nuevo sistema.por el nuevo sistema.
* Participa en el lanzamiento de los nuevos productos.* Participa en el lanzamiento de los nuevos productos.
Technical Writer / Escritores de documentos Technical Writer / Escritores de documentos
tecnicostecnicos
* Prepara la documentación para los usuarios, que pueden * Prepara la documentación para los usuarios, que pueden
formar parte o no del equipo del proyecto.formar parte o no del equipo del proyecto.
Additional roles / Roles adicionalesAdditional roles / Roles adicionales

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


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 no base UseCases y UserStories, por lo contrario FDD no
define explícitamente esa parte del proyecto sobre la define explícitamente esa parte del proyecto sobre la
adquisición de requisitos.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 definir posiblemente el proceso más adecuado para definir
métricas que definan el estado del proyecto, puesto que métricas que definan el estado del proyecto, puesto que
al dividirlos en unidades pequeñas es bastante sencillo al dividirlos en unidades pequeñas es bastante sencillo
hacer un seguimiento de las mismas.hacer un seguimiento de las mismas.

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

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

Relación con el cliente:Relación con el cliente:Con RUP se presentarán al Con RUP se presentarán al
cliente los artefactos del final de una fasecliente los artefactos del final de una fase, , en en
contrapartida, la aseguración de la calidad en XP y FDD contrapartida, la aseguración de la calidad en XP y FDD
no se basa en formalismos en la documentación, si no no se basa en formalismos en la documentación, si no
en controles propios y una comunicación fluida con el en controles propios y una comunicación fluida con el
cliente.cliente.
Conocimiento sobre la arquitectura: Conocimiento sobre la arquitectura: En RUP se En RUP se
intentará reducir la complejidad del software a producir a intentará reducir la complejidad del software a producir a
través de una planificación intensivatravés de una planificación intensiva. . En XP seEn XP se
conseguirá a través de la programación a pares que ya conseguirá a través de la programación a pares que ya
en la creación del código se puedan evitar errores y en la creación del código se puedan evitar errores y
malos diseñosmalos diseños. . En FDD sin embargo se usan las En FDD sin embargo se usan las
sesiones de trabajo conjuntas en fase de diseño para sesiones de trabajo conjuntas en fase de diseño para
conseguir una arquitectura sencilla y sin errores conseguir una arquitectura sencilla y sin errores

Puntos flacos:Puntos flacos:
1.1.FDD presenta su talón de Aquiles en la necesidad de FDD presenta su talón de Aquiles en la necesidad de
tener en el equipo miembros con experiencia que tener en el equipo miembros con experiencia que
marquen el camino a seguir desde el principio, con la marquen el camino a seguir desde el principio, con la
elaboración del modelo global, puesto que no es tan elaboración del modelo global, puesto que no es tan
ágil como podría serlo XP.ágil como podría serlo XP.
2.2.Para el desarrollo de software por medio de equipos Para el desarrollo de software por medio de equipos
pequeños (hasta unas diez personas) es RUP pequeños (hasta unas diez personas) es RUP
definitivamente muy grande y practicamente definitivamente muy grande y practicamente
inalcanzable. Se deben repartir 31 roles y generar más inalcanzable. Se deben repartir 31 roles y generar más
de 100 artefactos distintos.de 100 artefactos distintos.
3.3.XP es un proceso muy orientado a la implementación. XP es un proceso muy orientado a la implementación.
Lo que es Lo que es muy poco deseablemuy poco deseable en XP es el hecho de en XP es el hecho de
evitarevitar cualquier tipo de documentación fuera del cualquier tipo de documentación fuera del
código fuente (UML juega un papel prácticamente código fuente (UML juega un papel prácticamente
nulo, por ejemplo).nulo, por ejemplo).

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

En conclusión FDD:En conclusión FDD:
Ayuda al equipo a producir resultados periódicos y Ayuda al equipo a producir resultados periódicos y
tangibles.tangibles.
Esta metodología utiliza pequeños bloques llamados Esta metodología utiliza pequeños bloques llamados
features, los cuales contienen la funcionalidad del features, los cuales contienen la funcionalidad del
sistema.sistema.
Organiza los bloques que están relacionados entre Organiza los bloques que están relacionados entre
sí, en una lista llamada feature set.sí, en una lista llamada feature set.
Hace énfasis en la obtención de resultados cada Hace énfasis en la obtención de resultados cada
dos semanas.dos semanas.
Asegura en gran parte la calidad del software Asegura en gran parte la calidad del software
entregado.entregado.
Es adaptativo, pues permite realizar cambios de Es adaptativo, pues permite realizar cambios de
último momento debido a nuevos requerimientos y último momento debido a nuevos requerimientos y
a las necesidades del negocio. a las necesidades del negocio.
Tags