El desarrollo basado en características ( FDD ) es un proceso de desarrollo de software iterativo e incremental . Es un peso ligero [¿ según quién? ] o método ágil para desarrollar software . FDD combina una serie de productos reconocidos por la industria [¿ según quién? ] mejores prácticas en un todo cohesionado. Estas prácticas se impulsan desde una perspectiva de funcionalidad ( característica ) valorada por el cliente [ aclaración necesaria ] . Su propósito principal [¿ según quién? ] es entregar software tangible y funcional repetidamente de manera oportuna de acuerdo con los Principios detrás del Manifiesto Ágil . [1]
Historia
FDD fue diseñado inicialmente por Jeff De Luca para satisfacer las necesidades específicas de un proyecto de desarrollo de software de 15 meses y 50 personas en un gran banco de Singapur en 1997. Esto resultó en un conjunto de cinco procesos que cubrían el desarrollo de un modelo general y el listado, planificación, diseño y construcción de características. El primer proceso está fuertemente influenciado por el enfoque de Peter Coad para el modelado de objetos . El segundo proceso incorpora las ideas de Coad de utilizar una lista de funciones para gestionar los requisitos funcionales y las tareas de desarrollo. Los otros procesos son el resultado de la experiencia de Jeff De Luca. Ha habido varias implementaciones de FDD desde su uso exitoso en el proyecto de Singapur.
La descripción de FDD se presentó por primera vez al mundo en el capítulo 6 del libro Modelado Java en color con UML [1] de Peter Coad, Eric Lefebvre y Jeff De Luca en 1999. Más tarde, en el libro de Stephen Palmer y Mac Felsing A Practical Guide to Feature-Driven Development [2] (publicada en 2002), se dio una descripción más general de FDD desacoplada del modelado Java.
Descripción general
FDD es un proceso de iteración corta basado en modelos que consta de cinco actividades básicas. Para obtener informes de estado precisos y realizar un seguimiento del proyecto de desarrollo de software, se definen los hitos que marcan el progreso realizado en cada función. Esta sección ofrece una descripción general de alto nivel de las actividades. En la figura de la derecha, se muestra el modelo de metaproceso para estas actividades. Durante las dos primeras actividades secuenciales, se establece una forma de modelo general . Las últimas tres actividades se repiten para cada característica.
Desarrollar modelo general
El proyecto FDD comienza con un recorrido de alto nivel del alcance del sistema y su contexto. A continuación, se crean modelos de dominio detallados para cada área de modelado por grupos pequeños y se presentan para revisión por pares . Uno o más de los modelos propuestos se seleccionan para convertirse en el modelo de cada área de dominio. Los modelos de área de dominio se fusionan progresivamente en un modelo general.
Crear lista de características
El conocimiento recopilado durante el modelado inicial se utiliza para identificar una lista de características descomponiendo funcionalmente el dominio en áreas temáticas. Cada una de las áreas temáticas contiene actividades comerciales, y los pasos dentro de cada actividad comercial forman la base para una lista de características categorizadas. Las características a este respecto son pequeñas piezas de funciones valoradas por el cliente expresadas en la forma "
Planificar por función
Una vez completada la lista de funciones, el siguiente paso es producir el plan de desarrollo y asignar la propiedad de las funciones (o conjuntos de funciones) como clases a los programadores .
Diseño por característica
Se produce un paquete de diseño para cada característica. Un programador jefe selecciona un pequeño grupo de funciones que se desarrollarán en dos semanas. Junto con los propietarios de clases correspondientes, el programador jefe elabora diagramas de secuencia detallados para cada característica y refina el modelo general. A continuación, se redactan los prólogos de la clase y el método y finalmente se realiza una inspección de diseño .
Construir por característica
Después de planificar una inspección de diseño exitosa para cada actividad para producir una característica, los propietarios de la clase desarrollan código para sus clases. Después de la prueba unitaria y la inspección exitosa del código , la función completa se promueve a la compilación principal.
Hitos
Dado que las funciones son pequeñas, completar una función es una tarea relativamente pequeña. Para obtener informes de estado precisos y realizar un seguimiento del proyecto de desarrollo de software, es importante marcar el progreso realizado en cada función. Por lo tanto, FDD define seis hitos por función que deben completarse secuencialmente. Los primeros tres hitos se completan durante la actividad Diseñar por característica , y los últimos tres se completan durante la actividad Construir por característica . Para realizar un seguimiento del progreso, se asigna un porcentaje completado a cada hito. En la siguiente tabla se muestran los hitos y su porcentaje de finalización. En el punto en que comienza la codificación, una función ya está completa en un 44% (Recorrido de dominio 1%, Diseño 40% e Inspección de diseño 3% = 44%).
Tutorial de dominio | Diseño | Inspección de diseño | Código | Inspección de código | Promocionar para construir |
---|---|---|---|---|---|
1% | 40% | 3% | 45% | 10% | 1% |
Mejores prácticas
El desarrollo impulsado por funciones se basa en un conjunto básico de mejores prácticas de ingeniería de software dirigidas a una perspectiva de funciones valoradas por el cliente.
- Modelado de objetos de dominio . El modelado de objetos de dominio consiste en explorar y explicar el dominio del problema a resolver. El modelo de objeto de dominio resultante proporciona un marco general en el que agregar funciones.
- Desarrollando por Característica . Cualquier función que sea demasiado compleja para implementarse en dos semanas se descompone en funciones más pequeñas hasta que cada subproblema sea lo suficientemente pequeño como para ser llamado característica. Esto facilita la entrega de funciones correctas y la ampliación o modificación del sistema.
- Propiedad de clase individual (código) . La propiedad de clase individual significa que se asignan distintas piezas o agrupaciones de código a un único propietario. El propietario es responsable de la coherencia, el rendimiento y la integridad conceptual de la clase.
- Equipos de funciones . Un equipo de funciones es un equipo pequeño formado dinámicamente que desarrolla una pequeña actividad. Siempre se aplican múltiples mentes a cada decisión de diseño, y se evalúan múltiples opciones de diseño antes de elegir una.
- Inspecciones . Las inspecciones se llevan a cabo para garantizar un diseño y un código de buena calidad, principalmente mediante la detección de defectos.
- Gestión de la configuración . La gestión de la configuración ayuda a identificar el código fuente de todas las funciones que se han completado hasta la fecha y a mantener un historial de cambios en las clases a medida que los equipos de funciones las mejoran.
- Construcciones regulares . Las compilaciones regulares aseguran que siempre haya un sistema actualizado que se pueda demostrar al cliente y ayuda a resaltar los errores de integración del código fuente para las funciones de manera anticipada.
- Visibilidad de avances y resultados . Los gerentes dirigen un proyecto utilizando informes de progreso frecuentes, apropiados y precisos de todos los niveles dentro y fuera del proyecto en función del trabajo completado.
Metamodelo (metamodelado)
El metamodelado ayuda a visualizar tanto los procesos como los datos de un método . Esto permite comparar métodos y reutilizar fácilmente fragmentos de métodos en el proceso de ingeniería de métodos . El uso de esta técnica es consistente con los estándares UML .
El lado izquierdo del modelo de metadatos muestra las cinco actividades básicas involucradas en un proyecto de desarrollo de software usando FDD. Todas las actividades contienen subactividades que corresponden a subactividades en la descripción del proceso FDD. El lado derecho del modelo muestra los conceptos involucrados. Estos conceptos se originan en las actividades representadas en el lado izquierdo del diagrama.
Herramientas utilizadas
- CASE Spec . CASE Spec es una herramienta empresarial comercial para el desarrollo basado en funciones.
- TechExcel DevSuite . TechExcel DevSuite es un conjunto comercial de aplicaciones para permitir el desarrollo basado en funciones.
- Herramientas FDD . El proyecto FDD Tools tiene como objetivo producir un conjunto de herramientas multiplataforma de código abierto que respalde la metodología de desarrollo basado en características.
- Visor FDD . FDD Viewer es una utilidad para mostrar e imprimir estacionamientos.
Ver también
- Desarrollo Ágil de Software
- Desarrollo impulsado por el comportamiento
- Ciclo de vida del proyecto
- Arquitectura de software
- Proceso de desarrollo de software
- Ingeniería de software
Referencias
- ^ "Principios detrás del Manifiesto Ágil" . 2019-06-11.
- 1. ^ Coad, P. , Lefebvre, E. y De Luca, J. (1999). Modelado Java en color con UML: componentes y procesos empresariales . Prentice Hall International. ( ISBN 0-13-011510-X )
- 2. ^ Palmer, SR y Felsing, JM (2002). Una guía práctica para el desarrollo basado en funciones . Prentice Hall. ( ISBN 0-13-067615-2 )
enlaces externos
- Comunidad de desarrollo impulsada por funciones
- Desarrollo impulsado por funciones en Curlie
- Página de Nebulon FDD - Nebulon es la práctica de consultoría de Jeff De Luca
- Metodologías de desarrollo web exitosas : uso de FDD para proyectos de desarrollo web
- Entrega de valor comercial real mediante el desarrollo basado en funciones : el artículo brinda una descripción general básica de FDD
- Modelado ágil y FDD
- Mejor software más rápido : otro libro de la serie Coad que hace referencia al desarrollo basado en funciones. Autores Andy Carmichael y Dan Haywood ISBN 0-13-008752-1
- Entrevista con el creador de FDD Jeff DeLuca (Podcast)