Línea 10: | Línea 10: | ||
[[Image:Icono_interactividad.png|100px|top]] | [[Image:Icono_interactividad.png|100px|top]] | ||
− | * '''Algoritmos interactivos (''human-in-the-loop'')'''. | + | * '''Algoritmos interactivos (''human-in-the-loop'')'''. Existen tareas dentro de la Ingeniería del software que son complejas de simular, y cuyas soluciones son difíciles de evaluar por la máquina. Esto sucede especialmente las relacionadas con las fases de análisis y diseño, por lo que es fundamental considerar la participación del ingeniero en el propio proceso de optimización, comúnmente llamado ''human-in-the-loop'', con el fin de incorporar sus habilidades y así lograr resultados más satisfactorios. En este sentido, se han realizado aportaciones en el ámbito del diseño software (Simons and Parmee, 2012; Simons ''et al.'', 2014) y la generación de pruebas (Marculescu ''et al.'', 2015). Sin embargo, la interacción entre los algoritmos de búsqueda y los expertos aún requiere un estudio profundo, ya que entran en juego aspectos como el rol del experto en la búsqueda, las necesidades específicas del problema a resolver o la fatiga asociada al proceso (Ramírez et al., 2015a). |
[[Image:Icono_pruebas.png|100px|top]] | [[Image:Icono_pruebas.png|100px|top]] | ||
Línea 24: | Línea 24: | ||
Dolado, J.J. (2001). ''On the problem of the software cost function''. Information and Software Technology 43(1): 61-72.<br/> | Dolado, J.J. (2001). ''On the problem of the software cost function''. Information and Software Technology 43(1): 61-72.<br/> | ||
+ | |||
+ | Dolado, J.J., Otero, M.C., Harman, M. (2014) ''Equivalence hypothesis testing in experimental software engineering''. Software Quality Journal 22(2): 215-238. <br /> | ||
Domínguez-Jiménez, J. J., Estero-Botero, A., García-Domínguez, A., Medina-Bulo, I. (2011). ''Evolutionary Mutation Testing''. Information and Software Technology 53(10): 1108-1123.<br/> | Domínguez-Jiménez, J. J., Estero-Botero, A., García-Domínguez, A., Medina-Bulo, I. (2011). ''Evolutionary Mutation Testing''. Information and Software Technology 53(10): 1108-1123.<br/> |
Revisión del 12:55 28 may 2016
Desafíos
Existen multitud de desafíos de investigación dentro del dominio de SBSE. Los participantes de SEBASENet tienen experiencia en afrontar con éxito, entre otros, los siguientes problemas:
- Ingeniería de requisitos. NRP (Next Release Problem) es un destacado problema que consiste en seleccionar el conjunto óptimo de requisitos a desarrollar en la siguiente iteración de un proyecto, sujeto a diversas restricciones (Pitangueira et al., 2015). Uno de los desafíos es resolver eficientemente la versión multi-objetivo del problema, minimizando el coste de los requisitos a la vez que se maximiza el beneficio esperado (del Sagrado et al., 2015). Otro reto es el estudio de la robustez de las soluciones obtenidas por los algoritmos exactos, es decir, cómo influyen en la solución los errores en la estimación de los requisitos (Harman et al., 2014). El problema NRP puede extenderse para considerar varias versiones anticipadamente, incorporar la asignación de recursos, etc., lo que da lugar a problemas muy complejos pero de gran aplicabilidad práctica.
- Diseño automáde software. Las tareas de análisis y diseño del software están fuertemente vinculadas a decisiones humanas, por lo que el éxito en su realización recae en la experiencia y habilidades de los expertos. A pesar de las dificultades que plantea, SBSE también ha comenzado a abordar su resolución de manera automática (Räihä, 2010). Actualmente, se realizan importantes esfuerzos en tareas como la ingeniería inversa (Lopez-Herrejon et al., 2015), el diseño de servicios (Parejo et al., 2014) o la optimización de arquitecturas software (Ramírez et al., 2015b). En este ámbito se hace necesario considerar la construcción de modelos metaheurísticos destinados a dar soporte al ingeniero, más que a sustituirlo, con el fin de apoyarle durante la concepción, modificación y mejora del software desde una fase temprana de su desarrollo.
- Algoritmos interactivos (human-in-the-loop). Existen tareas dentro de la Ingeniería del software que son complejas de simular, y cuyas soluciones son difíciles de evaluar por la máquina. Esto sucede especialmente las relacionadas con las fases de análisis y diseño, por lo que es fundamental considerar la participación del ingeniero en el propio proceso de optimización, comúnmente llamado human-in-the-loop, con el fin de incorporar sus habilidades y así lograr resultados más satisfactorios. En este sentido, se han realizado aportaciones en el ámbito del diseño software (Simons and Parmee, 2012; Simons et al., 2014) y la generación de pruebas (Marculescu et al., 2015). Sin embargo, la interacción entre los algoritmos de búsqueda y los expertos aún requiere un estudio profundo, ya que entran en juego aspectos como el rol del experto en la búsqueda, las necesidades específicas del problema a resolver o la fatiga asociada al proceso (Ramírez et al., 2015a).
- Software testing. En un reciente trabajo, Harman, Jia y Zhang (2015) analizan la tendencia de la investigación en software testing basado en búsqueda (Search Based Software Testing) e identifican tres líneas de investigación prometedoras: la automatización de pruebas no funcionales con especial atención en el consumo energético de los programas; la búsqueda de estrategias de prueba, en oposición a los casos de prueba que han sido el foco de la investigación en SBST hasta ahora; y la optimización de varios objetivos relacionados con las pruebas simultáneamente (optimización multi-objetivo), tales como la maximización de la cobertura y del tiempo de ejecución, o la memoria requerida por el programa. Harman et al. auguran un prometedor futuro a herramientas basadas en búsqueda que encuentran errores en el software, los resuelven y verifican las soluciones, todo automáticamente (FiFiVerify tools).
- Estimación de costes software. En este campo se han propuesto diversos modelos metaheurísticos, aunque su efectividad todavía no se ha demostrado absolutamente superior a otros métodos clásicos. Varios participantes en esta Red han realizado evaluaciones de los modelos de estimación utilizando técnicas de análisis de equivalencia. Es deseable en este sentido disponer del mayor número posible de modelos para poder realizar una valoración exhaustiva. Los modelos basados en SBSE proporcionan una amplia variación de parámetros. En esta línea se están explorando nuevas propuestas de modelos de estimación de costes software basados en SBSE, así como la evaluación de esos modelos.
Referencias
del Sagrado, J., del Águila, I.M., Orellana, F.J. (2015). Multi-objective Ant Colony Optimization for Requirements Selection. Empirical Software Engineering 20(3): 577-610.
Dolado, J.J. (2001). On the problem of the software cost function. Information and Software Technology 43(1): 61-72.
Dolado, J.J., Otero, M.C., Harman, M. (2014) Equivalence hypothesis testing in experimental software engineering. Software Quality Journal 22(2): 215-238.
Domínguez-Jiménez, J. J., Estero-Botero, A., García-Domínguez, A., Medina-Bulo, I. (2011). Evolutionary Mutation Testing. Information and Software Technology 53(10): 1108-1123.
Ferrer, J., Kruse, P.M., Chicano, F., Alba, E. (2015). Search based algorithms for test sequence generation in functional testing. Information and Software Technology 58: 419-432.
Frey, S., Fittkau, F., Hasselbring, W. (2013). Search-based genetic optimization for deployment and reconfiguration of software in the cloud. Proc. of the International Conference on Software Engineering (ICSE '13), pp. 512-521.
Harman, M., Jia, Y., Zhang, Y. (2015). Achievements, open problems and challenges for search based software testing. Proc. of the IEEE International Conference on Software Testing, Verification and Validation (ICST'15), pp. 1-12.
Harman, M., Krinke, J., Medina-Bulo, I., Palomo-Lozano, F., Ren, J., Yoo, S. (2014). “Exact scalable sensitivity for the next release problem”. ACM Transactions on Software. Engineering and Methodology 23(2): 19.
Lopez-Herrejon, R.E., Linsbauer, L., Galindo, J.A., Parejo J.A., Benavides, D., Segura, S., Egyed, A. (2015). An assessment of search-based techniques for reverse engineering feature models. Journal of Systems and Software 103: 353-369.
Lopez-Herrejon, R.E., Ferrer J., Chicano F., Haslinger E.N., Egyed A., Alba E. (2014). A parallel evolutionary algorithm for prioritized pairwise testing of software product lines. Proc. of the Genetic and Evolutionary Computation Conference (GECCO '14), pp. 1255-1262.
Marcurlescu, B., Feldt, R., Torkar, R., Poulding, S. (2015). An initial industrial evaluation of interactive search-based testing for embedded software. Applied Soft Computing 29: 26-30.
Parejo, J.A., Segura, S., Fernández, P., Ruiz-Cortés, A. (2014). "QoS-aware web services composition using GRASP with Path Relinking". Expert Systems with Applications 41(9): 4211-4233.
Pitangueira, A.M., Maciel, R.S.P, de Oliveira Barros, M. (2015). Softrare requirements selection and prioritization using SBSE approaches: A systematic review and mapping of the literature. Journal of Systems and Software 103: 267-280.
Räihä, O. (2010). Search-based software design. Computer Science Review 4: 203-249.
Ramírez, A., Romero, J.R., Ventura, S. (2015a). Interactividad en el descubrimiento evolutivo de arquitecturas software. Actas de XX Jornadas españolas de Ingeniería del Software y Bases de Datos (JISBD), Santander.
Ramírez, A., Romero, J.R., Ventura, S. (2015b). An evolutionary approach for the evolutionary discovery of software architectures. Information Sciences 305: 234-255.
Simons, C.L., Parmee, I.C. (2012). Elegant Object-Oriented Software Design via Interactive, Evolutionary Computation. IEEE Transactions on Systems, Man and Cybernetics, part C: Applications and Reviews 42(6): 1797-1805.
Simons, C.L., Smith, J., White, P. (2014). Interactive Ant Colony Optimization (iACO) for Early Lifecycle Software Design. Swarm Intelligence 8(2):139-157.