martes, 12 de junio de 2012

Metodología FDD

Metodología FDD (Feature Driven Development / Desarrollo Basado en Funciones)






Es una metodología ágil diseñada para el desarrollo de software, basada en la calidad y el monitoreo constante del proyecto.  



Fue desarrollada por Jeff De Luca y Peter Coad a mediados de los años 90. Esta metodología se enfoca en iteraciones cortas, que permiten entregas tangibles del producto en un periodo corto de tiempo, de como máximo dos semanas.




Características


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

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 resultados periódicos y tangibles.

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

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

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

Ventajas:


  • El equipo de desarrollo no malgasta el tiempo y dinero del cliente desarrollando soluciones innecesariamente generales y complejas que en realidad no son un requisito del cliente.
  •   Cada componente del producto final ha sido probado y satisface los requerimientos.
  • Rápida respuesta a cambios de requisitos a lo largo del desarrollo.
  • Entrega continua y en plazos cortos de software funcional.
  • Trabajo conjunto entre el cliente y el equipo de desarrollo.
  •   Minimiza los costos frente a cambios.
  • Importancia de la simplicidad, al eliminar el trabajo innecesario.
  • Atención continua a la excelencia técnica y al buen diseño.
  • Mejora continua de los procesos y el equipo de desarrollo.
  •   Evita malentendidos de requerimientos entre el cliente y el equipo.
Desventajas:

  • Falta de documentación del diseño. El código no puede tomarse como una documentación. En sistemas de tamaño grande se necesitar leer los cientos o miles de páginas del listado de código fuente.
  •  Problemas derivados de la comunicación oral. Este tipo de comunicación resulta difícil de preservar cuando pasa el tiempo y está sujeta a muchas ambigüedades.
  • Fuerte dependencia de las personas. Como se evita en lo posible la documentación y los diseños convencionales, los proyectos ágiles dependen críticamente de las personas.
  • Falta de reusabilidad. La falta de documentación hacen difícil que pueda reutilizarse el código ágil.



Procesos




Desarrollar un modelo global: Al inicio del desarrollo se construye un modelo teniendo en cuenta la visión, el contexto y los requisitos que debe tener el sistema a construir. Este modelo se divide en áreas que se analizan detalladamente. Se construye un diagrama de clases por cada área.

Construir una lista: Se elabora una lista que resuma las funcionalidades que debe tener el sistema, cuya lista es evaluada por el cliente. Cada funcionalidad de la lista se divide en funcionalidades más pequeñas para un mejor entendimiento del sistema.

Planear: Se procede a ordenar los conjuntos de funcionalidades conforme a su prioridad y dependencia, y se asigna a los programadores jefes.

Diseñar: Se selecciona un conjunto de funcionalidades de la lista. Se procede a diseñar y construir la funcionalidad mediante un proceso iterativo, decidiendo que funcionalidad se van a realizar en cada iteración. Este proceso iterativo incluye inspección de diseño, codificación, pruebas unitarias, integración e inspección de código.

Construir : se procede a la construcción total del proyecto.

Roles y responsabilidades



El equipo de trabajo está estructurado en jerarquías, siempre debe haber un jefe de proyecto, y aunque es un proceso considerado ligero también incluye documentación (la mínima necesaria para que algún nuevo integrante pueda entender el desarrollo de inmediato).

Arquitecto jefe: Realiza el diseño global del sistema. Ejecución de todas las etapas.

Director de desarrollo: Lleva diariamente las actividades de desarrollo. Resuelve conflictos en el equipo. Resuelve problemas referentes a recursos.

Programador Jefe: Analiza los requerimientos. Diseña el proyecto. Selecciona las funcionalidades a desarrollar de la última fase del FDD.

Propietario de clases: Responsable del desarrollo de las clases que se le asignaron como propias. Participa en la decisión de que clase será incluida en la lista de funcionalidades de la próxima iteración.

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.

Cuando usarla



Toda metodología debe ser adaptada al contexto del proyecto (recursos técnicos y humanos, tiempo de desarrollo, tipo de sistema).
Exigiendo un esfuerzo considerable para ser adaptadas, sobre todo en proyectos pequeños  y con requisitos muy cambiantes.
 Las metodologías ágiles ofrecen una solución casi adecuada para una gran cantidad de proyectos.





Otras metodologìas:

 metodologia XP http://teo2grupo2.blogspot.com  

metodologia SCRUM. http://teo2grupo3.blogspot.com/

Método de desarrollo de sistemas dinámicos (DSDM) http://tresparedesyunanexo.blogspot.com/

METODOLOGíA ASD(ADAPTIVE SOFTWARE DEVELOPMENT) http://adaptivesoftwaredevelopment.blogspot.com/2012/06/ads.html

Metodología Agil http://ingenierosenformacionusac.blogspot.com/

Tema Crystal Clear http://reddycys.blogspot.com/

Bibliografía

https://docs.google.com/viewer?a=v&q=cache:6PASlfahbIcJ:www.seccperu.org/files/Metodologias%2520Agiles.pdf+&hl=es-419&gl=gt&pid=bl&srcid=ADGEESgoC46tFZay_tzjsKlFucxhduRwsQtDysqGp9-PXdd_i7e-DIEGAiuD8bLMsmFuTLfNXwALPQCq0o_XP50jByd0KDVuC7wsyv9awSbLfRTGrX8aGsnq5m9k5XoOIBrO8KOB8RQM&sig=AHIEtbSUKA2-yriR3jSfRkuDUKoIDOCfqw

http://www.buenastareas.com/ensayos/Metodologia-Fdd/551499.html

http://rousselz.wordpress.com/2010/08/08/metodologia-fdd-feature-driven-development-desarrollo-basado-en-funciones/

Artículo: Una exclusiva base de datos de ensayos para estudiantes. Metodologia Fdd. Disponible en: "www.buenastareas.com". Consultado: 20 de enero del 2012. Artículo: La nueva metodología. Disponible en: "www.programacionextrema.org". Consultado: 20 de enero del 2012.

http://es.wikipedia.org/wiki/Desarrollo_ágil_de_software


1 comentario: