# Análisis orientado en función del dominio

El análisis orientado en función del dominio (en inglés: Feature-Oriented Domain Analysis, FODA) es una metodología de análisis de dominio que introduce el modelado de características (features) a la ingeniería de dominio. Desarrollado en 1990 a partir de proyectos de investigación financiados por el Gobierno de los Estados Unidos, el FODA se considera un avance significativo en la ingeniería de software y la reutilización de componentes de software. En esencia, busca crear sistemas de software más eficientes mediante la identificación y reutilización de características comunes entre diferentes aplicaciones dentro de un mismo dominio.

## Historia

El FODA fue creado por el Instituto de Ingeniería de Software (SEI) en 1990. Un informe técnico inicial del SEI destacó que el FODA no solo era beneficioso, sino que representaba un "primer paso necesario" para la reutilización efectiva del software. El informe introdujo el concepto de *función de dominio* en la ingeniería, con el objetivo de representar las características estándar presentes en una familia de sistemas dentro de un dominio específico, así como las relaciones entre estas funciones. Desde entonces, los modelos de dominio generados por el FODA se han reconocido como una de las mayores contribuciones de la ingeniería de dominio a la ingeniería de software.
Gran parte del trabajo preliminar que condujo al desarrollo del FODA fue patrocinado por el Departamento de Defensa de los Estados Unidos a través de programas de investigación centrados en la reutilización de software durante la década de 1980. El FODA se concibió como un análisis exhaustivo y una mejora de las tecnologías desarrolladas entre 1983 y 1990. Aunque algunos aspectos del FODA han evolucionado y se han integrado con enfoques de ingeniería dirigida por modelos, el FODA sigue siendo reconocido como el método que introdujo formalmente los modelos de función en la ingeniería de dominio.

## Propósito

El objetivo principal del análisis orientado en función del dominio es facilitar la reutilización tanto funcional como arquitectónica en el desarrollo de software. El FODA busca crear un modelo de dominio que represente una familia de sistemas relacionados. Este modelo puede luego refinarse para generar un sistema específico dentro de ese dominio.
En términos sencillos, el FODA permite crear "plantillas" de software que pueden adaptarse a diferentes necesidades dentro de un área específica. Por ejemplo, podríamos aplicar el FODA al dominio de los sistemas de gestión de bibliotecas, identificando características comunes como el registro de usuarios, la catalogación de libros, el préstamo y la devolución de materiales. Esta "plantilla" podría luego personalizarse para crear un sistema de gestión para una biblioteca pública, una biblioteca universitaria o incluso una biblioteca personal. Otro ejemplo podría ser el dominio del software de contabilidad, donde las características comunes podrían incluir el registro de ingresos y gastos, la gestión de cuentas, la generación de informes financieros, etc.

## Proceso del FODA

Para lograr la reutilización y la eficiencia, el FODA se basa en un proceso estructurado que consta de varias etapas clave:

### Análisis del contexto del dominio

Esta etapa inicial se centra en comprender el alcance y los límites del dominio en cuestión. Implica:
* Identificar los sistemas que pertenecen al dominio.
* Identificar los sistemas externos que interactúan con el dominio (por ejemplo, bases de datos, sistemas de pago, etc.).
* Definir los límites del dominio, es decir, qué características están dentro y fuera del alcance del análisis.

### Análisis de función

Una vez definido el contexto, se procede a analizar las funciones y características que son relevantes para los usuarios y para los sistemas dentro del dominio. Esto implica:
* Identificar los requisitos configurables desde el punto de vista del usuario.
* Analizar los sistemas candidatos dentro del dominio para identificar sus funciones y características.
* Documentar las características y funciones comunes que se encuentran en los diferentes sistemas. Es importante destacar que estas funciones de dominio son, en esencia, las características comunes (features) que se identifican y que dan nombre al método.
Una vez desarrollado el modelo de función, los clientes pueden seleccionar los requisitos configurables para especificar un sistema final que satisfaga sus necesidades particulares. Al aplicar este proceso, el análisis orientado en función del dominio permite a las empresas satisfacer las demandas de sus clientes de manera más eficiente mediante la reutilización de tecnologías y componentes de software existentes. En esencia, el FODA promueve un enfoque de "construcción por bloques" en el desarrollo de software, lo que reduce el tiempo y los costos asociados con la creación de nuevas aplicaciones.