Programación orientada a características


En programación informática , la programación orientada a características ( FOP ) o el desarrollo de software orientado a características ( FOSD ) es un paradigma de programación para la generación de programas en líneas de productos de software (SPL) y para el desarrollo incremental de programas.

FOSD surgió a finales de la década de 1980 a partir de diseños basados ​​en capas y niveles de abstracción en protocolos de red y sistemas de bases de datos extensibles. [1] Un programa era una pila de capas. Cada capa agregó funcionalidad a capas previamente compuestas y diferentes composiciones de capas produjeron diferentes programas. No es sorprendente que existiera la necesidad de un lenguaje compacto para expresar tales diseños. El álgebra elemental cumplía los requisitos: cada capa era una función (un programa de transformación) que añadía código nuevo a un programa existente para producir un programa nuevo, y el diseño de un programa se modelaba mediante una expresión, es decir, una composición de transformaciones (capas). La figura de la izquierda ilustra el apilamiento de las capas i, j y h (donde h está en la parte inferior e i en la parte superior). Las notaciones algebraicas i(j(h)), i•j•h e i+j+h se han utilizado para expresar estos diseños.

Con el tiempo, las capas se equipararon a funciones, donde una función es un incremento en la funcionalidad del programa. Se reconoció que el paradigma para el diseño y la generación de programas era una consecuencia de la optimización de consultas relacionales, donde los programas de evaluación de consultas se definían como expresiones de álgebra relacional y la optimización de consultas era optimización de expresiones. [2] Una línea de productos de software es una familia de programas donde cada programa se define por una composición única de funciones. Desde entonces, FOSD se ha convertido en el estudio de la modularidad de funciones, herramientas, análisis y técnicas de diseño para respaldar la generación de programas basados ​​en funciones.

La segunda generación de investigación de FOSD se centró en las interacciones de características, que se originaron en las telecomunicaciones. Más tarde, se acuñó el término programación orientada a características ; [3] este trabajo expuso interacciones entre capas. Las interacciones requieren que las características se adapten cuando se componen con otras características.

Una tercera generación de investigación se centró en el hecho de que cada programa tiene múltiples representaciones (p. ej., fuente, makefiles, documentación, etc.) y agregar una característica a un programa debería elaborar cada una de sus representaciones para que todas sean consistentes. Además, algunas de las representaciones podrían generarse (o derivarse) de otras. En las siguientes secciones, se describen las matemáticas de las tres generaciones más recientes de FOSD, a saber, GenVoca , [1] AHEAD , [4] y FOMDD [5] [6] , y se incluyen enlaces a las líneas de productos que se han desarrollado utilizando las herramientas de FOSD. están provistos. Además, cuatro resultados adicionales que se aplican a todas las generaciones de FOSD son: metamodelos de FOSD ,Cubos de programa FOSD e interacciones de características FOSD.

GenVoca (un acrónimo de los nombres Génesis y Avoca) [1] es un paradigma de composición para definir programas de líneas de productos. Los programas base son funciones 0-arias o transformaciones llamadas valores :


apilamiento vertical de capas
Conexión entre pilas de capas y composiciones de transformación
Relaciones jerárquicas entre los artefactos del programa
Relaciones de derivación y refinamiento entre los artefactos del programa