Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Aplicación de algoritmos de inteligencia artificial a la optimización de la calidad de requisitos mediante sugerencias automáticas de mejora Daniel Adanza Dopazo Tesis depositada en cumplimiento parcial de los requisitos para el grado de Doctor en Ciencia y tecnología informática Universidad Carlos III de Madrid Director/a (es/as): Valentín Moreno Pelayo Eugenio Parra Corredor Tutor/a: Valentín Moreno Pelayo Octubre / 2022 Esta tesis se distribuye bajo licencia “Creative Commons Reconocimiento – No Comercial – Sin Obra Derivada”. AGRADECIMIENTOS En esta sección quería expresar mi agradecimiento a todas aquellas personas que han influido de una manera u otra durante el desarrollo de esta tesis y por estar ahí siempre que lo necesitaba. • En primer lugar, a mi director de tesis Valentín, por haberme dado la oportunidad de haber cursado esta tesis sin tener por qué y por haberme ayudado y guiado durante estos años de investigación. • A mi familia, en especial a mi padre por recordarme siempre de manera irónica que la muralla china la acabaron antes que mi doctorado. CONTENIDOS PUBLICADOS Y PRESENTADOS La realización de la tesis ha derivado en diferentes trabajos de investigación de manera directa e indirecta. • An automatic methodology for the quality enhancement of requirements using genetic algorithms: publicado en Information and software technology. Se propone un método para la clasificación de requisitos, así como también la mejora de estos mediante la utilización de clasificadores binarios y algoritmos genéticos para la generación de nuevas soluciones. En dicho artículo también se comparan las ventajas y desventajas de dicho enfoque con la utilización de árboles de decisión para la generación de nuevas soluciones. • A leakage detection system with an efficient prioritization at a District Meter Area Level publicado en World Environmental Water Resources Congress 2021. Se propone un método que utiliza clasificadores binarios y técnicas de análisis de datos para encontrar las fugas de agua en la estructura de abastecimiento de agua. • A leakage detection system extracting the most meaningful features with decision trees publicado en Battle of Lekage detection and isolation methods 2020. Se propone un método que mediante analítica de datos es capaz de extraer la información más relevante para los clasificadores binarios. Finalmente se utilizarán árboles de decisión para clasificar las fugas y los resultados serán analizados para poder localizarlas. • Assessing movement quality on straight leg raise using neural networks and data science publicado en Osteoarthritis and cartilage. Se propone un enfoque en el que se combina el uso de las redes neuronales con la ciencia de datos para extraer las características más relevantes de los movimientos realizados por cinco pacientes actualmente en rehabilitación. Así como también se proponen soluciones de mejora de dichos movimientos. Resumen: La especificación de requisitos es de vital importancia en la planificación de un proyecto, es aquí en donde se especifican los límites y las bases sobre las que se va a sustentar dicho proyecto. Esta tesis se ha centrado en la ingeniería de requisitos. Siendo la creación de requisitos de calidad, la mejora de la eficiencia y la automatización de tareas los objetivos principales. Para poder alcanzar nuestros objetivos, se cuenta con 1035 requisitos que han sido previamente clasificados dependiendo de su calidad y posteriormente descritos por 26 atributos. De esta manera, los datos obtenidos sirven como muestra para extrapolar los conocimientos hacia cualquier otra base de datos. Una de las fortalezas de esta tesis es el alcance del proyecto, se ha diseñado un sistema capaz de adaptarse a cualquier base de requisitos. Independientemente de los clasificadores utilizados. Una barrera que se ha conseguido sobrepasar gracias a la utilización de los algoritmos genéticos. Para ello, se ha creado un método que se resume en los siguientes pasos: Primero se clasificarán los requisitos mediante la extracción de métricas de calidad que serán tomadas como base por el clasificador binario. En segundo lugar, se tomarán todos aquellos requisitos clasificados como de mala calidad y se utilizarán algoritmos genéticos para proponer soluciones de cambio optimizados de acuerdo con los costes de esfuerzo estimados. La principal conclusión que se puede extraer es que los algoritmos genéticos nos pueden ofrecer soluciones interesantes aplicables en ingeniería de requisitos. Obteniendo así un ahorro de costes, automatizando tareas y favoreciendo una planificación más sólida y eficiente en cualquier proyecto. Summary: The specification of requirements is of vital importance in the planning of a project, it is here where the limits and the bases on which the project will be based are specified. This research project has focused on requirements engineering. The main objectives are the creation of quality requirements, the improvement of efficiency, and the automation of tasks. To achieve our objectives, there are 1,035 requirements that have been previously classified depending on their quality and subsequently described by 26 attributes. In this way, the data obtained serve as a sample to extrapolate the knowledge to any other database. One of the strengths of the thesis is the scope of the project, a system capable of adapting to any base of requirements has been designed. Regardless of the classifiers used. A barrier that has been overcome thanks to the use of genetic algorithms. To do this, a method has been created that is summarized in the following steps: First, the requirements will be classified by extracting quality metrics that will be taken as a basis by the binary classifier. Second, all those requirements classified as bad will be taken and genetic algorithms will be used to propose optimized change solutions according to the estimated effort costs. The main conclusion that can be drawn is that genetic algorithms offer us interesting solutions applicable to requirements engineering. Thus obtaining cost savings, automating tasks, and favoring more solid and efficient planning in any project. project. Tabla de contenidos: Tabla de contenidos .................................................................................................................... 7 Tabla de Ilustraciones .................................................................................................................. 9 Índice de tablas .......................................................................................................................... 10 Capítulo 1: Introducción .............................................................................................................. 11 1.1 Área de investigación ....................................................................................................... 11 1.2 Descripción del problema ................................................................................................. 11 1.3 Importancia del problema ................................................................................................ 12 1.4 Aproximación a la solución ............................................................................................... 13 1.5 Validez del enfoque .......................................................................................................... 16 Capítulo 2: Estado del arte ......................................................................................................... 17 2.1 Ingeniería de requisitos ....................................................................................................18 2.2 Algoritmos genéticos ........................................................................................................ 30 2.3 Trabajos fuertemente relacionados ................................................................................. 37 2.4 La originalidad de la propuesta ........................................................................................ 46 Capítulo 3: Hipótesis de trabajo ................................................................................................. 48 Capítulo 4: Planteamiento del problema ................................................................................... 49 Capítulo 5: Enfoque propuesto ................................................................................................... 53 5.1 Descripción del escenario ................................................................................................. 53 5.2 Elementos del método propuesto .................................................................................... 55 5.3 validación del algoritmo genético .................................................................................... 61 5.4 Ejemplo práctico ............................................................................................................... 62 5.5 Experimentos realizados ................................................................................................... 68 5.5.1 Experimento 1: Testeando diferentes clasificadores binarios ............................. 69 5.5.2 Experimento 2: Testeando diferentes algoritmos genéticos ............................... 74 5.5.3 Experimento 3: Ajustando la configuración del algoritmo genético .................... 79 5.5.4 Experimento 4: Comparando el algoritmo genético con la solución óptima ....... 82 5.6 Resultados ............................................................................................................................ 85 Capítulo 6: Validación ................................................................................................................. 91 Capítulo 7: Conclusiones y futuras líneas de investigación ........................................................ 93 Capítulo 8: Referencias ............................................................................................................... 96 Anexo A: Testeando diferentes clasificadores binarios ............................................................. 99 Í ndice de ilustraciones: • Fig 1. Esquema de sobrecargas y sinónimos. (Wang et al., n.d) • Fig 2. Flujo de trabajo para conseguir calidad de requisitos por medio de razonamiento basado en casos y redes neuronales • Fig 3. Descripción de los procesos del método propuesto (Parra, 2016) • Fig 4. Descripción de los procesos del método propuesto (Parra, 2016) • Fig 5. Descripción del flujo de los diferentes procesos del método propuesto (Fuente propia). • Fig 6. Histograma de los principales resultados comparando el algoritmo genético con el coste óptimo de esfuerzo (Fuente propia) Í ndice de tablas: • Tabla 1. Resumen de los trabajos relacionados en materia de ingeniería de requisitos ordenados por orden cronológico (Fuente propia). • Tabla 2. Resumen de los trabajos relacionados sobre algoritmos genéticos ordenados cronológicamente (Fuente propia). • Tabla 3. Resumen de los trabajos fuertemente relacionados ordenados cronológicamente (Fuente propia). • Tabla 4. Contiene la estimación de coste de esfuerzo por cada uno de los atributos que componen la base de datos. • Tabla 5. Valores de los dos requisitos explicados a modo de ejemplo y el nombre de cada atributo (Fuente propia). • Tabla 6. Tasa de acierto de todos los clasificadores binarios aplicados al corpus de requisitos (Fuente propia). • Tabla 7. Ejemplo de frecuencia ficticio para el atributo número de frases para entender el funcionamiento del tercer algoritmo genético (Fuente propia). • Tabla 8 Resumen de resultados tras comparar el algoritmo genético con la solución óptima (Fuente propia). • Tabla 9 Resultados comparando las duplicidades entre el algoritmo genético y el valor óptimo (Fuente propia). • Tabla 10. Muestra la información más relevante de acuerdo con el número de generaciones creadas (Fuente propia). • Tabla 11. Muestra la información más relevante sobre el tiempo de respuesta para la generación de nuevas soluciones. (Fuente propia). Capí tulo 1: introduccio n 1.1 Área de la investigación: Al inicio de todos los proyectos de ingeniería de sistemas, siempre hay una etapa de especificación de requisitos. Esta etapa tiene como finalidad, ofrecer un escenario en común que le permita tanto al cliente como a la empresa establecer unas pautas que serán las que sustenten el proyecto en el futuro. Durante esta etapa, es muy habitual que se presenten una serie de inconvenientes y desafíos, ambas partes tienen que llegar a un acuerdo común a pesar de tener visiones muy diferentes del sistema informático. La ingeniería de requisitos nace bajo la necesidad de solucionar este tipo de problemas. Consiste en un proceso de recopilar, analizar y posteriormente verificar las necesidades del cliente. Siempre con el objetivo de entregar una especificación de requisitos que sea correcta y completa. Un buen resumen de lo que significa la ingeniería de requisitos nos la dio Roger S. Pressman: “Ingeniería de Requerimientos ayuda a los ingenieros de software a entender mejor el problema en cuya solución trabajarán. Incluye el conjunto de tareas que conducen a comprender cuál será el impacto del software sobre el negocio, qué es lo que el cliente quiere y cómo interactuarán los usuarios finales con el software”. (Pressman, 2005) 1.2 Descripción del problema De acuerdo con los datos aportados por “Project Management institute”. El 47% total de todos los fracasos de un proyecto son debidos a algún tipo de deficiencia dentro de la ingeniería de requisitos. Siendo los principales motivos los siguientes: • El producto final es entregado sin cumplir con los requisitos necesarios o sin identificar varios de ellos. • La entrega final no satisface las necesidades del cliente. • Se han incorporado en el proyecto requisitos que no entran en el alcance del mismo. • La estimación del coste del proyecto se hace en base a un alcance del proyecto equivocado. • Fallos en la comunicación de un requisito y, en consecuencia, una entrega errónea. • Cambios innecesarios en el producto debido a la falta de comprensión de las necesidades del cliente. Para poder afrontar todos estos desafíos existe la ingeniería de requisitos. La cual nos permitirá sentar una base sólida de cualquier proyecto. Para así poder evitar situaciones tales como la falta de profesionalidad por parte de la empresa o mal entendimiento de las necesidades del cliente, lo cual nos lleva un sobrecoste y a una baja satisfacción por parte del cliente. 1.3 Importancia del problema. La ingeniería de requisitos juega, por lo tanto, un papel muy importante en la planificación de cualquier proyecto. Permitiéndonos así obtener una mayor satisfacción por parte del cliente y un ahorro de costes por parte de la empresa. De entre los principales beneficios de su aplicación podemos destacar los siguientes: • Mejora de la calidad del software. • Disminución de los costes y de los retrasos del proyecto. • Mejora de la capacidad de predecir cronogramas de proyectos y de sus resultados. • Permite gestionar las necesidades del proyecto de manera estructurada • Mejora la comunicación entre equipos. • Mejor entendimiento de las necesidades del cliente. 1.4 Aproximación a la solución En primer lugar, me gustaría mencionar el trabajo que han realizado otros investigadores paraconseguir resolver el mismo problema planteado anteriormente: Primero de todo, hablaremos de la tesis de Eugenio Parra (Parra, 2016), en donde se consigue clasificar un corpus de requisitos mediante el uso de árboles de decisión, utilizando las propias reglas del árbol de decisión para crear requisitos de mayor calidad. Hablaremos también del artículo publicado en el 2009 (Casamayor, Godoy, & Campo, 2009), en donde se consigue clasificar los requerimientos no funcionales por medio de aprendizaje automático semi-supervisado. Otros enfoques diferentes, pero igualmente válidos los podemos encontrar en (Mat Jani & Tariqul Islam, 2012), en donde se propone la utilización de un marco de trabajo basado en una metodología para crear requisitos de calidad. Por otro lado en el artículo científico (Casamayor et al., 2009) se utiliza el aprendizaje automático para analizar y predecir la calidad de requisitos. Algo bastante útil para los roles de analista y jefe de proyecto. Finalmente, me gustaría mencionar también a (Dargan, Campos-Nanez, Fomin, & Wasek, 2014) en donde crean un sistema funcional que no solo es capaz de clasificar los requisitos, sino que también establece una relación entre la calidad de los requisitos y el rendimiento del proyecto. Demostrando así la importancia que tiene la ingeniería de requisitos. En segundo lugar, es necesario explicar cómo se ha enfocado el problema. Nuestro enfoque consiste en la presentación de un método que tiene dos objetivos principales: en primer lugar, identificar los requisitos con mala calidad, ya sea porque son ambiguos, deficientes o porque no se adecuan a las necesidades del proyecto y, en segundo lugar, se quiere proponer soluciones de cambio para todos aquellos requisitos identificados como de mala calidad. Nuestro método sigue los siguientes pasos: 1. Primero, se cuenta con un corpus de requisitos de los cuales se han extraído previamente veintiséis métricas mediante el procesamiento del lenguaje natural que serán utilizadas para clasificarlos de manera binaria dependiendo de su calidad. Este paso puede ser realizado por cualquier tipo de clasificador ya sea un árbol de decisión, cualquier otro algoritmo de aprendizaje supervisado, no supervisado o incluso una red neuronal. La eficacia de cada uno de los clasificadores utilizados será testeada dependiendo de la opinión real de los expertos en materia. Estimando así el porcentaje de acierto de cada uno de los clasificadores utilizados. 2. A continuación, se tomarán como datos de entrada, todos aquellos requisitos clasificados como de mala calidad. Durante este paso, se implementará un algoritmo genético para proporcionar soluciones de cambio. 3. Para cada una de las soluciones aportadas en paso anterior, se evaluará la calidad de la solución propuesta, así como también su coste de cambio. Es decir, se pretende hacer una propuesta de cambio para los requisitos que nos proporcione un requisito de buena calidad y que al mismo tiempo el coste de cambio sea el óptimo para el usuario. 4. Finalmente, las mejores soluciones encontradas por cada uno de los requisitos de mala calidad serán mostradas al usuario final a modo de sugerencia, siendo la persona física la que tiene la última palabra dependiendo de las circunstancias de cada proyecto. Finalmente, es necesario destacar la originalidad del enfoque sugerido. El principal punto distintivo de esta tesis con respecto al resto de los trabajos comparables consiste en la utilización de algoritmos genéticos para la creación de propuestas de cambio y así poder corregir los requisitos identificados como de mala calidad. La utilización de algoritmos genéticos nos aporta una serie de ventajas: 1. Es un método de creación de soluciones que no depende del clasificador utilizado (lenguaje supervisado, no supervisado, árbol de decisión, red neuronal…), esa era una de las principales barreras hasta el momento. El método propuesto sigue siendo igual de eficaz y es capaz de adaptarse de una manera más efectiva las necesidades de cada proyecto. 2. La utilización de algoritmos genéticos nos permite aportarle al usuario un gran número de propuestas diferentes. Por lo que si no le gusta la más optima que se ha encontrado, siempre puede descartarla y coger otra. 3. Además, los algoritmos genéticos han sido optimizados para poder encontrar soluciones razonablemente eficientes en cuanto a coste de esfuerzo. Mediante la utilización de las propias reglas dentro del árbol de decisión siempre se consigue llegar a la solución más optima, pero los algoritmos genéticos han demostrado proporcionar soluciones igual de óptimas. 4. Los algoritmos genéticos son probabilísticos por naturaleza, lo cual implica desde el punto de vista teórico una mejor adaptabilidad con un conjunto completamente diferente de requisitos. 1.5 Validez del enfoque Para garantizar que el enfoque propuesto sea capaz de identificar la calidad de los requisitos, así como también proponer soluciones de mejora de la calidad se han utilizado un corpus formado por 1035 requisitos extraídos de proyectos reales todos ellos clasificados por expertos en INCOSE de acuerdo con su propio criterio. De los cuales 485 han sido identificados como de mala calidad. Además del atributo clase, veintiséis características han sido generadas como resultado del procesamiento del lenguaje natural. Dicha muestra de requisitos es lo suficientemente grande y fiable como para poder extrapolar los resultados obtenidos a todo tipo de escenarios con un número de requisitos similar. Así mismo, debido al tamaño y a la calidad de los datos, también es posible medir de manera fiable la exactitud y eficiencia de la solución propuesta. Capí tulo 2: estado del arte Este proyecto de investigación consiste en el desarrollo de un método que se puede resumir en los siguientes procesos: en primer lugar, se utilizarán diferentes algoritmos de inteligencia artificial, para poder clasificar los requisitos dependiendo de su calidad. En segundo lugar, se utilizarán algoritmos genéticos para crear propuestas de mejora de todos aquellos requisitos clasificados como de mala calidad. Finalmente, se evalúa la calidad y el coste de cambio por cada una de estas propuestas que serán presentadas al usuario final, para que sea este el que decida la que más se adecue a las circunstancias del proyecto. Por lo tanto, se ha realizado una búsqueda exhaustiva de diferentes trabajos de investigación utilizando como criterios principales de selección, el tema a tratar, el nivel de relación con este proyecto de investigación y el año de publicación. (Los trabajos más recientes serán tomados más en cuenta). Y el hecho de que sean un artículo científico completo. Dichos trabajos relacionados han sido clasificados de la siguiente forma: • Ingeniería de requisitos: la ingeniería de requisitos nos plantea problemas con infinitas soluciones en la que se busca una mayor eficiencia, automatización y calidad de requisitos. • Algoritmos genéticos: la utilización de algoritmos genéticos tanto en materia de requisitos como en otros campos nos permite aprender de ellos para conseguir una mejor implementación en el método propuesto. • Trabajos muy fuertemente relacionados: finalmente, se recopilarán todos aquellos trabajos que dado su planteamiento u objetivos presentan un nivel de concordancia mayor, así mismo, se explicará también por qué es original el enfoque propuesto. 2.1 Ingeniería de requisitos: Se entiende por ingeniería de requisitos a aquel proceso en el que se analizan, recopilan y verifican las necesidades del cliente de alguna manera para cualquier proyecto. El objetivo principal de dicha ingeniería consiste en entregar una especificación de requisitos tan completo y correcto como sea posible. La ingeniería de requisitos pretende, porlo tanto, mejorar la manera en la que comprendemos y definimos los sistemas de software, especialmente aquellos sistemas que tengan un cierto nivel de complejidad. La ingeniería de requisitos nos plantea así una serie de desafíos que pueden ser enfocados de muchas maneras diferentes, pero todos ellos tienen el mismo objetivo principal: recopilar las necesidades y las limitaciones del proyecto de la manera más clara, concreta y concisa posible. A continuación, se presentará un resumen de los principales trabajos relacionados dentro de la ingeniería de requisitos. Para luego poder ser explicados en detalle. Aspecto a tratar Forma de abordarlo Referencia Mejora de la calidad de los requerimientos en materia de seguridad. Por medio del uso de patrones predefinidos. (Daramola, Sindre, & Stalhane, 2012) Priorización de requerimientos en sistemas informáticos geográficamente distribuidos. Experimento basado en un algoritmo que prioriza los requisitos en el desarrollo del software incremental. (Gupta, Singh Chauhan, & Dutta, 2012) Clasificación de la calidad de requisitos y su implementación en el proyecto. Creación de un algoritmo que de manera cuantitativa clasificará los requisitos dependiendo de su calidad. (Thakurta, n.d.) Detección de conflictos en grandes conjuntos de requisitos. Herramienta que utiliza del método bayesiano para detectar conflictos entre requisitos. (Sardinha, Chitchyan, Weston, Greenwood, & Rashid, 2013) Detección de conflictos y existencias en requisitos conceptuales. Creación de un marco de trabajo que en primer lugar analizará las inconsistencias para luego enfrentarse a los conflictos. (Ali, Dalpiaz, & Giorgini, 2013) Detección de terminología ambigua en materia de requisitos. Detección automática de ambigüedades en un concepto o sobrecarga del mismo. (Wang, Manotas Gutiérrez, Winbladh, & Fang, n.d.) Verificación de la calidad de requisitos. Creación de una metodología que transforma el lenguaje natural en entidades analizables. (Popescu, Rugaber, Medvidovic, & Berry, n.d.) Reutilización de requisitos extrayendo características por medio del procesamiento del lenguaje. Revisión sistemática sobre 15 estudios diferentes que procesan el lenguaje natural y extraen características para su posterior reutilización. (Hasrina Bakar, Kasirun, & Salleh, 2015) Priorización de requisitos. Utilización de cuestionarios con pautas que les permitan una mejor valoración. (Santos, Albuquerque, & Pinheiro, 2016) La creación de requisitos de calidad. Implementación de las directrices INCOSE en la herramienta de evaluación de requisitos. (Fuentes, Fraga, Génova, & Parra, 2016) Solución de conflictos entre las diferentes partes involucradas. Utilización de un algoritmo llamado “a priori” que priorizará requisitos y se adelantará a posibles conflictos. (Anand & Dinakaran, 2017) Identificación de los requisitos no funcionales. Verificación de la validez de los requisitos no funcionales por medio de algoritmos Java automatizados. (Matsumoto, Shirai, & Ohnishi, 2017) Evaluación de los criterios de calidad de requisitos en metodologías ágiles. Realización de una revisión sistemática. Evaluando veintiocho criterios diferentes de dieciséis estudios. (Heck & Zaidman, 2018) Evolución de la calidad de requisitos en un proyecto. Mejoras implementadas para adaptarse a las necesidades cambiantes de los proyectos sobre su herramienta RQA (Requirements Quality Analyser) (la Vara, Parra, & Alonso, 2018) Tabla 1. Resumen de los trabajos relacionados en materia de ingeniería de requisitos ordenados cronológicamente (Fuente propia) El artículo (Daramola et al., 2012) tiene como principal desafío el hecho de que la especificación de requisitos de seguridad sean de calidad. Este es uno de los puntos más débiles de la ingeniería de requisitos debido principalmente a dos factores: la falta de formación y experiencia de los expertos en seguridad, lo cual crea requisitos ambiguos. Y también porque los requisitos de seguridad a menudo son descuidados durante la especificación de requisitos. Dicho estudio tiene como resultado final una herramienta funcional cuya metodología está basada en los siguientes pasos secuenciales. 1. En primer lugar, se utilizará el análisis de requisitos para seleccionar la plantilla predefinida que más se ajuste a cada situación, basado en los patrones que han sido identificados en la descripción del problema. 2. En segundo lugar, se identifican los requisitos incluidos previamente en otros proyectos y que podrían ser reutilizados dada su similitud “los llamados requisitos repetitivos”. Finalmente, el resultado será presentado al usuario a modo de formulario obteniendo beneficios tales como: la simplificación del proceso, ahorro de costes o el incremento de la calidad de requisitos. Por otra parte, en (Gupta et al., 2012) nos proponen otra solución: un algoritmo que calcula la prioridad de cada requisito mediante fórmulas matemáticas. Los resultados de los experimentos parecen ser bastante favorables y sin duda es un buen enfoque, con un coste de implementación tan reducido como eficaz, la principal desventaja de este enfoque es su campo de actuación. Sólo es aplicable para las metodologías ágiles con desarrollo incremental y sistemas distribuidos. Dicho algoritmo seguirá los siguientes pasos secuenciales. Primero, clasificará el requisito en diferentes categorías como por ejemplo “satisfacción del cliente” o “costes del proyecto” A continuación, por cada uno de los requisitos se calculará su prioridad por cada una de las personas y por cada una de las partes involucradas. Después se calculará la media aritmética de todas las partes involucradas en el proyecto. A partir de aquí pueden darse dos casos. El primer caso es que haya discrepancias grandes sobre la importancia de un requisito dentro de una misma entidad. Entonces se creará una negociación local. El segundo caso es que haya discrepancias grandes entre diferentes partes interesadas. En cuyo caso se creará una negociación colectiva. Un objetivo muy parecido a nuestro proyecto de investigación se tiene en (Thakurta, n.d.). El resultado principal en este estudio es la creación de un marco de trabajo que actúa en beneficio de ambas partes: la empresa aportadora del servicio y la empresa cliente. Dicho algoritmo generará un valor medible de manera cuantitativa que indicará si dicho requisito deberá ser incluido e implementado en el proyecto o no. Este algoritmo también nos aportará datos útiles como, por ejemplo, el alcance de dicho requisito para la empresa cliente o si hay grandes discrepancias sobre la importancia de un requisito de acuerdo con ambas partes. Por otra parte, en (Thakurta, n.d.) proponen una algoritmo formado por seis pasos secuenciales que pueden ser resumidos de la siguiente forma: primero identificará aquellos requisitos que no sean funcionales, a continuación, creará un escenario con la solución completa y lo relacionará con los objetivos de negocio. Para finalmente ajustar dicho escenario a cada uno de los objetivos en mayor o menor medida dependiendo de su importancia. Uno de los sistemas más flexibles y con una buena validación es ofrecido en (Sardinha et al., 2013), con una solución que consigue casi un 94% de aciertos independientemente del escenario, nos proponen una herramienta con el siguiente funcionamiento: Para empezar, se analizará el lenguaje natural de cada texto en busca de composiciones. Es decir, requerimientos o frases que a su vez contienen más de una idea. Como segunda instancia se utilizará el algoritmo bayesiano con una serie de instancias reales predefinidas para poder clasificar yencontrar conflictos dentro de estas especificaciones compuestas. El punto más importante de este proyecto de investigación es la demostración de que es posible detectar conflictos contextuales de manera automática y no solo eso, sino que además han demostrado que se puede conseguir con una exactitud casi del cien por cien. Un enfoque parecido, pero ligeramente más completo es aportado en (Ali et al., 2013), en donde se proponen un gran reto. La creación de un marco de trabajo que sea capaz de detectar inconsistencias y conflictos dentro de un contexto específico, y dicho contexto dependerá del área en la que se ubique el proyecto en cuestión. La herramienta realizará a priori un complejo análisis en busca de inconsistencias basado en el procesamiento del lenguaje natural, y a continuación realizará completo análisis de conflictos. Además de ello, nos proponen también una metodología para poder ubicar los objetivos de cada proyecto de manera contextual, así como también una serie de reglas de razonamiento que vienen asociadas para la identificación de dichos objetivos de manera más eficiente. El resultado de dicho marco de trabajo ha demostrado ser efectivo desde diferentes perspectivas: usabilidad, habilidad para el entendimiento de los objetivos y la escalabilidad de los razonamientos automatizados. Es necesario mencionar también (Wang et al., n.d.), con un enfoque ligeramente diferente pero persiguiendo los mismos objetivos. Automatización, eficiencia y eficacia a la hora de encontrar y corregir los errores en ingeniería de requisitos. En esta ocasión se centrarán en franquear las barreras del lenguaje natural para encontrar la ambigüedad léxica. Evitando así diferentes interpretaciones por cada una de las partes y por lo tanto ayudando a un mejor planteamiento del proyecto en cuestión. Su principal foco de atención será encontrar principalmente dos tipos de ambigüedades: sobrecargas de terminología y sinónimos ambiguos tal y como se muestra en la Figura 1: Fig 1. Esquema de sobrecarga y sinónimos (Wang et al., n.d.) Para conseguir dicho propósito nos proponen un sistema automatizado que analizará cada concepto por separado y dentro de su propio contexto. Asignándole así, un valor mediable de manera cuantitativa que nos permitirá detectar cuando un término tiene demasiados sinónimos y cuando una palabra contiene demasiados significados. Dando lugar así a diferentes interpretaciones. Los cuatro experimentos realizados son capaces de validad un sistema con una implementación que resulta simple, efectiva y práctica al mismo tiempo, aplicable dentro del campo de la ingeniería de requisitos. Otro enfoque diferente para garantizar la creación de requisitos de calidad es aportado en (Aceituna, Walia, Do, & Lee, 2014), En dicho estudio nos proponen un método automatizado que es capaz de analizar el lenguaje natural de los requisitos de un proyecto en busca de inconsistencias. Para ello, en primer paso será procesar el lenguaje natural y para dividirlo en lo que ellos llaman “Diagrama de transición de estados”. Una vez que el requisito ha sido dividido en bloques se buscarán principalmente dos tipos de inconsistencias: la primera inconsistencia será si presenta algún tipo de ambigüedad o si puede ser interpretado de diferentes formas y la segunda inconsistencia es si dicho requisito está incompleto o si tiene algún tipo de indefinición o falta de información. Dicho método ha demostrado identificar las ambigüedades y la falta de datos necesarios en dos experimentos diferentes realizados por la universidad de Dakota. Creando así una buena alternativa mediante una herramienta para garantizar la creación de requisitos de calidad, así como también un mejor planteamiento del proyecto. Para completar el estado del arte, se mencionará el siguiente trabajo de revisión sistemática (Hasrina Bakar et al., 2015). En donde se evalúa como está el estado del arte en base a trece estudios diferentes, todos ellos con el mismo objetivo: el procesamiento del lenguaje natural de los requisitos para así poder extraer ciertas características de cada requisito, lo cual nos permitirá poder reutilizarlo en el contexto adecuado en el futuro. Tras haber analizado en profundidad cada uno de los estudios, los resultados mostraron que encontraron diferentes enfoques híbridos en el procesamiento del lenguaje natural. Y a su vez dichos enfoques son comunes al proceso general de extracción de características. Dichos estudios han sido clasificados en dos grupos: automatizados y semiautomatizados. Dependiendo de la forma en la que extraigan los datos y recuperen la información a partir de ellos. En cuanto a la evaluación final de cada uno de los estudios. Los autores nos indican que no todos ellos han conseguido validar de manera consistente con métricas cuantitativas sus diferentes propuestas. Algo que resulta de vital importancia para ganar credibilidad en cualquier estudio científico. Un aspecto muy importante y a menudo olvidado en materia de requisitos es su priorización. Este es el principal problema que tratan de resolver en (Santos et al., 2016) . A menudo nos encontramos en un proyecto con un universo de requisitos de los cuales no todos tienen la misma importancia para todas las partes involucradas. En este enfoque, se propone una solución con un modelo híbrido para la priorización de requisitos. La forma de calcular la prioridad será medible de manera cuantitativa por un sistema de votos. Para probar su eficacia y la importancia de la priorización de requisitos se han utilizado un conjunto de treinta y tres requisitos de casos reales que serán priorizados por un total de ochenta expertos en materia. Entre los puntos fuertes de este enfoque se puede destacar: su escalabilidad, la fácil adaptación al contexto y la facilidad de implementación. Un proyecto de investigación bastante vinculado al anterior es (Fuentes et al., 2016), en donde se centran en la creación de una herramienta llamada RQA (Requirements Quality Analyzer). Dicha herramienta es capaz de evaluar la calidad de cada requisito basándose en diferentes parámetros clasificados en dos grupos: • No paramétricos: aquí se encuentran parámetros como lista de palabras, tiempo verbal o voz activa o pasiva. • Paramétricos: en donde se pueden encontrar indicadores semánticos, terminológicos o relacionales por exponer algunos ejemplos. Finalmente se ha procedido a la implementación de una serie de directrices publicadas por la INCOSE para conseguir requisitos de calidad. A continuación, dicho sistema será testeado con requisitos reales, mostrando así unos resultados bastante prometedores. Uno de los puntos fuertes a destacar de este estudio es que es capaz de adaptarse a cada contexto. Los requisitos con un nivel de calidad más exigente contendrán un mayor número de métricas de calidad, así como también de reglas. adaptándose así a las exigencias de cada escenario. Un problema que es olvidado a menudo por los estudios de ingeniería de requisitos son los conflictos existentes entre las diferentes partes involucradas dentro del mismo proyecto. Para poder solucionarlo, el artículo (Anand & Dinakaran, 2017) nos propone la creación de un marco de trabajo que por medio de la priorización de requisitos conseguirá anticiparse a los futuros problemas y por lo tanto disminuir los conflictos existentes durante la fase de la creación del proyecto. Dicho estudio está centrado en el uso de metodologías ágiles en las cuales la entrega del producto final debe de ser incremental. Por lo que la priorización de requisitos juega un papel muy importante. Dicha priorización estará basada conceptualmente en cuatro factores: la mano de obra, la necesidad del cambio, el enfoque y las limitaciones del proyecto. Asimismo, el algoritmo “a priori” que dará vida al marco detrabajo será utilizado mayormente en bases de datos a través de las cuales se pueden extraer un conjunto de elementos comunes. Entre los puntos fuertes que se pueden encontrar en el estudio cabe destacar el enfoque en la solución de conflictos entre las diferentes partes involucradas dentro de un proyecto, lo cual le aporta bastante originalidad y su compatibilidad con las metodologías ágiles, siendo altamente usadas por las empresas informáticas hoy en día. Uno de los últimos trabajos sobre la ingeniería de requisitos que se revisarán será (Matsumoto et al., 2017), en donde se ha creado una metodología basada en un algoritmo que a través de unos pasos secuenciales consigue evaluar las ambigüedades existentes y la ausencia de información en materia de requisitos. Al igual que este proyecto, el producto final está escrito en lenguaje java y su funcionamiento interno está basado en los siguientes pasos: en primer lugar, el algoritmo evaluará la arquitectura del proyecto. Identificando por lo tanto cada uno de los objetos y los atributos que contiene cada entidad. A continuación, se identificarán también las operaciones que podrán hacer cada uno de los objetos, así como también los roles involucrados en ellas. Finalmente, el algoritmo tomará esta estructura como datos de entrada y a partir de aquí será capaz de construir requisitos funcionales con una o más sentencias reduciendo al máximo las ambigüedades, incoherencias o diferentes interpretaciones que se le podría dar a cada uno de los requisitos. De entre los puntos fuertes de este estudio, cabe destacar la facilidad de implementación y su adaptabilidad a diferentes tipos de escenarios dado que toma como punto de entrada la estructura de los datos del proyecto. Para finalizar este apartado, se acabará hablando sobre los dos estudios publicados más recientemente en el año 2018. En uno de ellos (Heck & Zaidman, 2018), se ha realizado una revisión sistemática en la que se describe cómo está el estado del arte sobre los diferentes criterios, para así poder evaluar la calidad de un requisito en un proyecto. En dicha revisión sistemática se ha propuesto como criterio de inclusión a todos aquellos artículos que hablen sobre productos software, empleando metodologías ágiles, que hablen sobre la calidad del producto y la calidad de los requisitos y que asimismo hayan sido publicados después del año 2001. Las conclusiones principales que se pueden extraer de dicho estudio son: - En primer lugar, que no hay una respuesta única y, por lo tanto, no siempre se puede afirmar que un criterio sea mejor que otro. El mejor criterio será por lo tanto aquel se mejor se adapte a las necesidades del proyecto en cuestión. - En segundo lugar, hay que tener en cuenta que las metodologías ágiles proponen un desarrollo incremental por lo que los requisitos al principio de un proyecto suelen variar bastante, debido a esto, un buen criterio de calidad de requisitos debe de ser también flexible y adaptable a las nuevas necesidades del proyecto en cada momento. Finalmente, se hablará del último artículo publicado en el año 2018 (la Vara et al., 2018), que consiste además en la continuación de trabajos anteriores relacionados con la tesis presentada. (Parra, 2016). En dicha publicación se toma como base la herramienta previamente diseñada llamada RQA (Requirements Quality Analyzer). Dicha herramienta es capaz de extraer diferentes características a partir de estos requisitos y, asimismo, es capaz de evaluar su calidad tanto por separado como dependiendo del contexto. Además, ya se ha demostrado como previamente se le habían aplicado diferentes reglas INCOSE para validad su eficacia. En este caso se abordará un nuevo desafío, y es que en el mundo de las metodologías ágiles el producto entregable es incremental por lo que los requisitos, y por lo tanto su calidad, irán variando con el paso del tiempo. Por lo tanto, realizarán una serie de experimentos con métricas cuantitativas en la que examinan la evolución de la calidad de los requisitos. Finalmente, como conclusión se propone la utilización del aprendizaje máquina para poder predecir y evaluar esta característica. Las métricas de calidad que se ofrecen como resultado en este estudio serán además reutilizadas y tomadas como punto de entrada en el enfoque propuesto. 2.2 Algoritmos genéticos: Los algoritmos genéticos están inspirados en la evolución biológica y en su base genético molecular. Hoy en día han pasado a convertirse en una de las ramas más prometedoras de la inteligencia artificial, incluidos dentro del campo de la informática evolutiva. Un algoritmo genético consiste en un método adaptativo que puede utilizarse para resolver un problema de búsqueda y optimización. Su funcionamiento se basa en el proceso genético que tienen los organismos vivos a lo largo de diferentes generaciones de cromosomas. Una buena definición de lo que es un algoritmo genético nos la proporcionó Goldberg en el año 1989: “los Algoritmos Genéticos son algoritmos de búsqueda basados en la mecánica de selección natural y de la genética natural. Combinan la supervivencia del más apto entre estructuras de secuencias con un intercambio de información estructurado, aunque aleatorizado, para constituir así un algoritmo de búsqueda que tenga algo de las genialidades de las búsquedas humanas” (Goldberg, 1989). A continuación, se expondrá un resumen de los principales trabajos relacionados con este proyecto de investigación dentro del campo de los algoritmos genéticos, dichos trabajos tienen en común la implementación de algoritmos genéticos para la resolución de todo tipo de problemas tales como una mayor eficiencia en la planificación o una mejor priorización de requisitos. Debido al menor volumen de trabajos en esta sección se ha ampliado ligeramente el rango de búsqueda y se han escogido todos aquellos trabajos realizados en los últimos doce años, en lugar de diez. El hecho de que se hayan encontrado pocos trabajos similares dentro de este campo sirve para demostrar la novedad que aporta el proyecto de investigación presentado en donde hay muchos métodos que sirven para detectar las soluciones de mala calidad, pero no demasiados son capaces de aportar soluciones de mejora. Aspecto a tratar Forma de abordarlo Referencia Mejora de la eficiencia de planificación de proyectos Modificación de algoritmos genéticos para conseguir una mayor eficiencia en la planificación de proyectos (Karova, Petkova, & Smarkov, 2008) Distribución de actuadores y sensores en grandes estructuras La utilización de algoritmos genéticos multi objetivo para encontrar la solución más eficiente (Cha, Agrawal, Kim, & Raich, 2012) Priorización de requisitos Utilización de un algoritmo genético interactivo capaz de adaptarse a las nuevas necesidades del proyecto por medio de metodologías ágiles (Tonella, Susi, & Palma, 2013) Encontrar el resultado óptimo en una función matemática Utilización de algoritmos genéticos en paralelo que consigan encontrar el valor óptimo. (Tsoulos, Tzallas, & Tsalikakis, 2016) Optimización de características latentes en el filtraje colaborativo Utilización del sistema inmunológico artificial (Duma & Twala, 2018) Conseguir un buen nivel en cuanto abastecimiento de suministros energéticos Utilización del sistema inmunológico artificial combinado con programación linear para conseguir un mayor nivel de eficiencia (Wakui, Hashiguchi, Sawada, & Yokoyama, 2019) Predecir la demanda de bicicletas compartidas en diferentes puntos Implementación de un sistema inmunológico artificial combinado con aprendizaje máquina (Chang, Wu, Xu, Zhang, & Lu, 2019) Una mayor eficacia y eficiencia en materia de ingeniería de requisitos aplicado a lacreación de materiales laminados Realización de un algoritmo genético con dos niveles de aproximación adaptado a la ingeniería de requisitos. (Chen, Shui, Li, & Huang, 2015) Tabla 2. Resumen de los trabajos relacionados sobre algoritmos genéticos ordenados cronológicamente (Fuente propia) Se empezará analizando el artículo publicado en Science Direct aplicado a la planificación de proyectos (Karova et al., 2008). En el primer artículo analizado nos presentan un buen ejemplo de aplicación de algoritmos genéticos en el campo de planificación de proyectos. En un escenario en el que cada proyecto tiene ciertas exigencias a la hora de cuadrar horarios y ahorrar costes. Se asemeja bastante a nuestra propuesta en los objetivos a conseguir y a modo funcional ya que es necesario que la solución cumpla ciertos requisitos que serán diferentes en cada caso. Por ejemplo, la misma persona no puede trabajar de manera simultánea en dos ámbitos. Además de ello, el algoritmo genético tendrá que encontrar la solución más eficiente posible descartando todas aquellas que no cumplan las necesidades previamente marcadas por el cliente. Cabe destacar que el problema planteado en este artículo es bastante más complejo que el nuestro ya que hay que tener en cuenta que cada una de las tareas tiene diferentes prioridades y que al mismo tiempo cada uno de los grupos de trabajadores presentan restricciones a la hora de actuar. Por otra parte, esta propuesta nos sirve muy bien como ejemplo para poder aprender de ella en el método a la hora de enfocar la eficiencia de costes cumpliendo unos requisitos determinados. En el segundo artículo científico que se analizará (Cha et al., 2012), se expone un problema que aparentemente no tiene nada que ver con nuestro proyecto de investigación. En este caso lo que se busca es una distribución apropiada de los sensores y actuadores en un gran conjunto de estructuras distribuidas en gran escala. Una propuesta que utiliza los algoritmos genéticos en un ámbito diferente, y que sin embargo se persigue los mismos objetivos, encontrar la solución más eficiente y que siga siendo considerada válida. En este caso, se trata de un algoritmo genético multi objetivo que tiene en cuenta la posición de cada uno de los elementos mediante otro algoritmo cuadrático Gaussiano para la colocación de los acelerómetros y actuadores hidráulicos. Demostrando por lo tanto una de las múltiples implementaciones que pueden tener los algoritmos genéticos en proyectos reales para la sociedad actual, alcanzando un mayor nivel de eficiencia y automatización y siempre dándole la prioridad a la calidad de la propuesta generada por el algoritmo genético, ya que resulta ser algo de vital importancia en este caso. Nuestro primer ejemplo sobre la implementación de algoritmos genéticos en materia de ingeniería de requisitos lo tenemos en nuestra tercera referencia (Tonella et al., 2013), en donde se propone la utilización de un algoritmo genético interactivo fácilmente adaptable a las necesidades cambiantes del cliente, lo cual resulta muy adecuado para aquellos proyectos desarrollados con metodologías ágiles y desarrollo incremental. Su funcionamiento básico consiste en analizar las diferentes limitaciones de cada uno de los componentes del proyecto, sin olvidar tampoco las relaciones de dependencia existentes entre todo el corpus de requisitos. Además de ello, también se ha medido y optimizado su eficiencia dándole prioridad al tiempo de respuesta. Para la validación de la eficacia de este algoritmo se ha escogido un escenario en un caso real en donde se comparan los resultados obtenidos por este algoritmo con el estado del arte en este campo, obteniendo así unos resultados que nos muestran una buena aproximación sobre la importancia y calidad de los requisitos, teniendo en cuenta un margen de error humano bastante tolerable. Un gran ejemplo de las múltiples implementaciones que puede tener una algoritmo genético se puede encontrar en (Tsoulos et al., 2016). En dicho estudio los autores nos plantean un problema en el que se toman como datos de entrada los diferentes valores generados por una función matemática, dicho de manera más concreta, el sistema recibe como datos de entrada una función multidimensional con un mínimo global dentro de una hipérbola rectangular. Un planteamiento completamente diferente del nuestro y que sin embargo se comporta de la misma forma a nivel funcional. En medio de un universo de resultados, nuestro objetivo será encontrar el mínimo valor numérico (al igual que en nuestro caso) por lo que nos sirve enormemente para tomarlo como punto de referencia y poder aprender de él. Una gran diferencia de (Tsoulos et al., 2016) es la utilización de algoritmos genéticos paralelos, es decir, que se utilizarán diferentes algoritmos al mismo tiempo para poder generar soluciones, dicho algoritmo ha sido optimizado por medio de una condición de salida que será revisada de forma periódica. Una pequeña variante de los algoritmos genéticos es el sistema inmunológico artificial, bastante parecido a nivel funcional, pero que aparentemente se comporta de manera más eficiente en algunos problemas que los algoritmos genéticos. A continuación, se mencionarán algunos ejemplos. En nuestra referencia (Duma & Twala, 2018), nos hablan sobre la utilización de AIS (Sistema Inmunológico Artificial). Como parámetros de entrada en este problema se tendrá la utilización de una función estocástica gradiente decreciente. Este método será utilizado para poder determinar las características latentes utilizadas para producir matrices numéricas con números positivos. Por lo tanto, la funcionalidad básica que tendrá la implementación de esta técnica será en este caso la de factorización de matrices para la optimización de características latentes. Además de ello también analizarán la eficiencia de la solución propuesta comparada con otros sistemas como el de “Nearest Neighbour” y otros algoritmos de tendencia, demostrando así que el AIS es capaz de aportar la respuesta más rápida de entre todas las soluciones analizadas para poder resolver el problema planteado. Para indagar un poco más en cómo el sistema inmunológico artificial es capaz de conseguir los mismos objetivos se mostrará otro ejemplo de uso práctico (Wakui et al., 2019). El problema que se plantea en este artículo es el proceso de abastecimiento energético de la manera más eficiente posible. Y a dicho problema se le propone una metodología que conlleva dos pasos: la implementación de AIS, seguido de programación linear combinada de enteros enfocado sobre todo a resolver problemas en una red a gran escala. Haciendo hincapié sobre todo en las relaciones jerárquicas existentes entre las diferentes variables y el diseño estructural del problema. El problema es descompuesto por la programación linear creando una subdivisión del problema a gran escala. A partir de aquí el sistema inmunológico artificial tomará estos datos de entrada y generará un conjunto de soluciones parciales optimizadas, las cuales serán tomadas en cuenta en el sistema final. Un estudio publicado recientemente (Chang et al., 2019), el cual contiene un enfoque muy distinto a nuestro proyecto de investigación y que sin embargo tiene bastantes similitudes a modo funcional. En este caso lo que se trata es de optimizar las existencias de bicicletas en los diferentes puntos de la ciudad. Como primer paso utilizarán una red de neuronal para poder evaluar y predecir hacia dónde va a tender la demanda en cada punto de la ciudad en un futuro cercano. En un segundo proceso, dado que hay un universo de posibles soluciones, Se implementa un sistema inmunológico artificial para encontrar una solución que sea capaz de satisfacer la predicción de la demanda y que al mismo tiempo sea la máseficiente posible. Dicho sistema será también capaz de encontrar una solución en un período de tiempo que sea lo más corto posible debido a las limitaciones que exige el problema planteado. Los autores probaron la solución con un conjunto de datos de entrenamiento y testeo, a pesar de que la validación de la solución es un tanto ambigua en este caso, los resultados del experimento parecen ser bastante positivos. Este sistema de funcionamiento nos sirve además como modelo de referencia y como ejemplo de aplicación de las tecnologías mencionadas. En (Chen et al., 2015). En donde es expone un ejemplo de utilización de algoritmos genéticos en la creación de materiales laminados aeroespaciales. Su principal objetivo consiste en la optimización de las secuencias correspondientes. Algo que ellos mismos consideran indispensable. Para conseguir una mayor optimización del problema sin renunciar a los requisitos previamente establecidos se ha implementado una mejora en el algoritmo genético previamente establecido, utilizando en este caso un método basado en dos niveles de aproximación. Dicho método se utilizará para poder calcular las secuencias de apilamiento. Como conclusión se puede extraer que este estudio cuenta con un enfoque muy particular para poder conseguir una mayor eficiencia en el campo de ingeniería de requisitos. Una solución que ha probado ser eficaz. Por otra parte, en el estudio también se explica que dicha solución es solamente aplicable en este escenario en concreto y extrapolable a otros contextos. Igualmente nos permite poder aprender de esta solución y de su interesante forma de resolver el problema. 2.3 Trabajos fuertemente relacionados: En esta sección se recopilarán todos aquellos artículos y documentación de investigaciones con un gran nivel de similitud a nuestra propuesta con el objetivo de aprender de ellas. De acuerdo con el criterio de selección se ha decidido ser más flexible en cuanto al año de publicación, incluyendo todos aquellos publicados posteriormente al año 2003. Por otra parte, el contenido ha pasado a ser el principal criterio a la hora de escoger los diferentes artículos. Se recuerda que nuestro proyecto de investigación abarca una serie de campos. - En primer lugar, está ubicado en el campo de ingeniería de requisitos. A dicho problema se le ha propuesto un método que se resumirá en dos pasos principales: primero de todo, se han utilizado diferentes de algoritmos de inteligencia artificial de cualquier tipo (aprendizaje automático, supervisado, no supervisado, redes neuronales, etc) para clasificar los requisitos de manera binaria dependiendo de su calidad. - En segundo lugar, se ha tomado como datos de entrada todos aquellos requisitos considerados como de mala calidad, a continuación, se han utilizado algoritmos genéticos que nos propongan diferentes soluciones de cambio para mejorar la calidad de dichos requisitos. Finalmente, de todas las soluciones propuestas se escogerán las más eficientes y eficaces para que puedan ser mostradas al usuario final, siendo este el que decide en última instancia la que más se puede adecuar a las necesidades del proyecto. En base a las tecnologías y al funcionamiento del proyecto de investigación se han escogido un total de ocho trabajos, todos ellos están dentro del campo de la ingeniería de requisitos. Además, en todos los casos se le ha propuesto un método que utilizará o bien diferentes clasificadores tales como redes neuronales o aprendizaje automático (al igual que en el primer paso de nuestro método), o bien que utilicen algoritmos genéticos para proporcionar la solución más adecuada y eficiente (se corresponde con el segundo caso de nuestro método). A continuación, se expondrá un resumen de los principales trabajos relacionados con este proyecto explicando brevemente su planteamiento y la forma de abordar el problema en cada caso. Aspecto a tratar Forma de abordarlo Referencia Determinar los valores objetivos en ingeniería de requisitos Realización de un algoritmo genético inexacto capaz de generar múltiples soluciones que estén cerca de su mayor nivel de optimización (Bai & Kwong, 2003) Identificación de los requisitos no funcionales a partir de análisis textual Utilización de algoritmos de inteligencia artificial semi- supervisado para su identificación (Casamayor et al., 2009) Testeo de la eficacia del corpus de requisitos Utilización de algoritmos genéticos para mejorar la eficacia, la robustez y la escalabilidad del sistema actual en materia de ingeniería de requisitos (Garousi, 2010) Creación de un marco de trabajo para asegurar calidad en la especificación de requisitos Implementación de una metodología basada en los casos de uso y la implementación de una red neuronal (Mat Jani & Tariqul Islam, 2012) Predicción del rendimiento de los requisitos Realización de predicciones basadas en modelos de atributos de calidad (Dargan et al., 2014) Clasificar de forma efectiva el corpus de requisitos en un proyecto. Utilización de herramientas de aprendizaje automático basado en datos de escenarios reales (Parra, Dimou, Llorens, Moreno, & Fraga, 2015) Optimización en la creación de requisitos de calidad. Utilización de árboles de decisión que identifiquen los requisitos considerados como de mala calidad y consigan mejorar la calidad de los mismos (Parra, 2016) Tabla 3. Resumen de los trabajos fuertemente relacionados ordenados cronológicamente (Fuente propia) En la planificación de proyectos se tienen a menudo múltiples incógnitas como incrementar o no el ciclo de desarrollo del producto, estimar la calidad del producto o reducir costes. Una solución a este problema de una manera considerablemente óptima es mostrada en (Bai & Kwong, 2003). En dicho estudio hacen uso de la llamada QDF (Quality Funtion Deployment) para extraer los conceptos básicos en materia de ingeniería de requisitos. Dicho proceso tendrá como resultado una matriz en la que se desmenuzan todos los componentes del proyecto y que se debería hacer en cada caso. Uno de los valores principales que nos mostrará el uso del QDF consiste en los valores objetivos que se tomarán como referencia para saber el nivel de optimización que se ha conseguido en la solución final. En el segundo paso, los autores utilizan todos estos parámetros como puntos de entrada y se implementará un algoritmo genético que funcione exclusivamente con operadores de mutación. Tras ejecutarlo después de diversas generaciones nos propondrá una serie de soluciones, todas ellas con un gran nivel de optimización. De esta manera se consigue encontrar una solución que se adapte a las necesidades del cliente y a las necesidades de cada proyecto, que deje a un lado las consideraciones subjetivas de cada individuo y al mismo tiempo con un nivel de optimización que, sin ser el óptimo, resulta bastante aceptable. Uno de los factores más importantes en la ingeniería de requisitos actual consiste en identificar los requisitos funcionales, no solo el mero hecho de identificarlos correctamente. Es necesario además que sean identificados lo antes posible para así ahorrar costes y errores en el proyecto. Precisamente este es el tema que aborda (Casamayor et al., 2009). Dicho proyecto de investigación tiene como resultado una aplicación que por medio de estrategias de categorización de texto supervisado consiguen desarrollar un método para categorizar los requisitos a partir de su lenguaje natural. Dichos datos serán calculados y dependerán de sus instancias de entrenamiento, teniendo así la ventaja de poder adaptarse a diferentes escenarios. El objetivo principal de dicho proyecto de investigación consiste en guiar el proceso de creación de requisitos, ofreciendo así consejos útiles identificandorequisitos no funcionales que suelen aparecer repetidas veces a lo largo de los proyectos informativos. Para conseguir dicho objetivo los autores utilizan algoritmos de aprendizaje automático semi-supervisado que son capaces de clasificar los requisitos en diferentes categorías a la par que identifican ciertas propiedades textuales por cada requisito. Los resultados muestran una tasa de acierto del setenta por ciento, sin llegar a ser un porcentaje muy alto, han conseguido crear una evidencia empírica de que el aprendizaje automático semi-supervisado tiene un coste de esfuerzo menor a la par que puede ofrecer relativamente buenos resultados en comparación con la clasificación humana manual de los requisitos. Por otra parte en la tercera referencia fuertemente relacionada (Garousi, 2010) se tiene como resultado la creación de una herramienta que consigue medir y predecir la utilidad que va a tener un requisito en el futuro, consiguiendo mejorar el sistema previamente establecido mediante el uso de algoritmos genéticos. En dicho sistema se toma como punto de entrada diagramas propios de UML, y a partir de estos datos se utilizará una herramienta que realiza un test de estrés a cada uno de los requisitos por medio de algoritmos genéticos. Al mismo tiempo, también se efectuará un análisis empírico de los datos obtenidos. El objetivo principal de dicho proyecto es por lo tanto la mejora de la eficiencia, una mayor eficacia y la planificación de un proyecto en materia de ingeniería de requisitos. Así mismo, se utilizarán también la evaluación empírica para medir la robustez y la escalabilidad del enfoque propuesto. Un punto para destacar en este estudio es su originalidad, siendo el primero que ha sido capaz de crear una herramienta que realiza un test de stress a los requisitos por medio de algoritmos genéticos, superando así limitaciones existentes hasta el momento mayormente relacionadas con la escalabilidad y la robustez. Por otra parte, también explican que el sistema todavía conlleva una serie de limitaciones en algunos casos de uso, por ejemplo, en cuanto al rendimiento. Se crea así un punto de vista interesante con un enfoque diferente en el que se busca el mismo objetivo que en este proyecto de investigación, la creación de requisitos de calidad de una manera eficiente y automática. En nuestra cuarta referencia fuertemente relacionada (Mat Jani & Tariqul Islam, 2012) con un enfoque muy similar y con un objetivo será en este caso la creación de un corpus de requisitos efectivo y de calidad. Para conseguir este objetivo se ha creado un marco de trabajo que es capaz de obtener un buen nivel de resultados mediante la utilización de redes neuronales, así como también el razonamiento de casos que han sido incluidos previamente en el sistema para poder calcular una solución más realista. Un resumen de los diferentes procesos secuenciales de este trabajo se puede encontrar en la Figura 2. Fig 2. Flujo de trabajo para conseguir calidad de requisitos por medio de razonamiento basado en casos y redes neuronales (Mat Jani & Tariqul Islam, 2012) En primer lugar, dicho método aplicará las técnicas propias de SQA (Software Quality Assurance) para asegurarse de que el corpus de requisitos cumple ciertas directrices de calidad. A continuación, se realizará también un análisis de calidad por cada uno de los requisitos. Estableciendo como criterios principales: lo completos que sean, la consistencia, la modificabilidad, la ambigüedad y la facilidad de entendimiento. Para la evaluación de calidad se utilizará un sistema basado la aplicación de redes neuronales y el razonamiento basado en casos. Como conclusión se podría decir que este estudio nos avanza un paso más hacia la creación de requisitos de calidad cumpliendo además ciertos estándares. Contiene un enfoque bastante diferente del resto y crea además un sistema con un buen nivel de eficiencia teniendo en cuenta la gran reducción de tiempo que supone en el proceso de evaluación de la calidad de requisitos. Un buen ejemplo de predicción del rendimiento de los requisitos basados en modelos estadísticos es aportado en (Dargan et al., 2014). En dicho artículo científico se introduce un modelo estadístico que utiliza los factores propios de la calidad de requisitos para conseguir predecir el rendimiento del sistema de manera operacional. Dicho modelo ha sido creado con la utilización de datos empíricos recolectados dentro de diferentes programas del propio gobierno federal. Para realizar dicha predicción se incluirán, entre otras cosas, la utilización de una herramienta que validará desde el punto lingüístico cada requisito. Posteriormente se creará un modelo de clasificación y se aplicará la técnica de la cross-validación para validar las predicciones realizadas en un escenario con datos reales. Finalmente me gustaría comentar un artículo científico (Parra et al., 2015) relacionado con la tesis principal de Eugenio Parra de la cual se hablará en detalle más adelante. En la actualidad, la identificación de la calidad de requisitos resulta de vital importancia para así poder replanificar el proyecto, analizando costes y estableciendo acuerdos más coherentes y específicos entre el cliente y la empresa aportadora del servicio. Para poder conseguir dicho objetivo se propone un método basado en los siguientes pasos. Primero de todo, se tomará como parámetro de entrada el corpus de requisitos al que se le serán extraídos una serie de métricas relacionadas con la calidad del lenguaje. Algunos ejemplos de dichos atributos pueden ser: la voz pasiva, o el número de caracteres situados entre los signos de puntuación. Una vez que se han extraído dichas características, en el estudio se propone un método capaz de identificar la calidad de requisitos por medio de la utilización de algoritmos de aprendizaje automático. Los resultados finales tras la aplicación de este método en un escenario real consiguieron obtener un 86.1% de exactitud. Sin duda el trabajo que está más relacionado con este proyecto es la tesis (Parra, 2016). Los resultados de dicha tesis consisten además en el punto de partida de la investigación actual. Cabe destacar que las dos tesis buscan los mismos objetivos: la creación de requisitos de calidad con un sistema automatizado que favorezca tanto la eficacia como la eficiencia en materia de ingeniería de requisitos. Para ello, se ha diseñado un método que sigue los siguientes pasos secuenciales: Fig 3. Descripción de los procesos del método propuesto(Parra, 2016) Primero de todo, se generarán clasificadores que evaluarán la calidad de requisitos con un porcentaje considerable de aciertos mediante el uso de árboles de decisión. Dichos arboles de decisión clasificaran de manera binaria a los requisitos dependiendo de su calidad, identificado en el conjunto de datos con los valores cero y uno. Dichos resultados han sido comparados y contrastados con las clasificaciones realizadas por los expertos en materia en un escenario real. Además de ello, también se ha medido la eficacia de los clasificadores por medio del método de cross- validación. En una segunda parte del método se tomarán como parámetro de entrada todos los requisitos considerados como de mala calidad y se utilizarán las reglas generadas por los propios árboles de decisión que consiguieron clasificar los requisitos para proponer soluciones eficientes sobre cómo poder modificar los requisitos que han sido considerados como de mala calidad. Entre los puntos fuertes de este proyecto de investigación se puede destacar su validación, obteniendo resultados contrastables de manera cuantitativa en un escenario real. Así como también lo completo del enfoque propuesto, consiguiendo no solo identificar los requisitos que son más propensos a ser problemáticos, sinocomo también aportando soluciones automáticas y generando patrones para la creación de requisitos de buena calidad. 2.3 La originalidad de la propuesta: Finalmente me gustaría dedicar una sección para explicar la originalidad de la propuesta, detallando cuál es la parte diferenciadora con respecto al resto de proyectos de investigación y justificando su originalidad, dado que aportar algo nuevo al estado del arte actual se considera uno de los pilares fundamentales del mundo científico. De acuerdo con el método expuesto en el proyecto anterior (Parra, 2016) se utilizaban las propias reglas generadas por el árbol de decisión para crear propuestas de mejora, lo cual nos permite alcanzar las opciones óptimas de manera muy eficiente. Sin embargo, también se encuentra con las siguientes limitaciones: • El proyecto se limita a utilizar como clasificador un árbol de decisión, mientras que puede haber otro tipo de clasificadores más exactos y eficientes que se están descartando. • Además, debido a lo anterior, el método es difícilmente extrapolable a diferentes escenarios. Por ejemplo ¿Y si se quiere utilizar regresión en lugar de clasificación? ¿Y si se quiere utilizar un clasificador diferente a un árbol de decisión? • A pesar de que se consigue encontrar la solución óptima, el abanico de propuestas es relativamente reducido. Por lo que si al usuario no le gusta es posible que tenga que escoger otra solución que sea bastante menos eficiente. Los principales puntos fuertes de nuestro proyecto en cuanto a su originalidad son: • La utilización de algoritmos genéticos como propuestas de mejora nos permite prescindir del tipo de clasificador que utilicemos. Teniendo por lo tanto una mayor flexibilidad se pueden utilizar algoritmos con mejores resultados a la par que se pueden adaptar mejor a las necesidades de cada proyecto en cuestión. • Los algoritmos genéticos nos permiten tener un abanico de propuestas de mejora más amplio, consiguiendo además un nivel de exactitud y eficiencia aceptables. • Este proyecto consiste en el único enfoque hasta la fecha con el siguiente método: procesamiento del lenguaje natural para la extracción de características, evaluación de la calidad de requisitos por medio de clasificadores e implementación de algoritmos genéticos para crear propuestas de mejora. Aportando por lo tanto un método original utilizable en casos reales. A diferencia de (Parra et al., 2015), en donde se utilizan las propias reglas del árbol de decisión para la búsqueda de requisitos de calidad con la mayor eficiencia en costes de esfuerzo. Capítulo 3: hipótesis de trabajo Para validar este proyecto de investigación se han formulado una serie de hipótesis clasificadas en dos grupos: hipótesis generales y específicas. Hipótesis generales • Se puede calcular de manera heurística el coste de esfuerzo para cambiar cada atributo en todos los requisitos. • Se puede crear un método que permita la clasificación, mejora y optimización de los requisitos por medio de clasificadores y algoritmos genéticos. Hipótesis específicas: • Se pueden utilizar algoritmos de inteligencia artificial de cualquier tipo (supervisado, no supervisado o redes neuronales) aplicados a la ingeniería de requisitos de tal manera que sean capaces de identificar patrones que les permitan clasificar dichos requisitos dependiendo de su calidad con un buen nivel de fiabilidad. • Se pueden utilizar algoritmos genéticos que nos proporcionen múltiples propuestas de cambio para mejorar la calidad de los requisitos de mala calidad optimizando así el coste de esfuerzo de cambio. Capítulo 4: planteamiento del problema Ya sea porque no se ha enfocado el proyecto en el alcance adecuado o porque no se han entendido correctamente las necesidades o las peticiones del cliente, son muchos los proyectos informáticos (el 47% según Project management institute) que fracasan cada año al intentar satisfacer las necesidades de sus respectivos clientes. Como a los clientes no les gusta la solución aportada y piensan que eso no es lo que han pedido, se generan diversos problemas tales como: sobrecostes, dado que hay que cambiar la solución, imagen de falta de profesionalidad por parte de la empresa que aporta del servicio, así como también una falta de satisfacción por parte del cliente. Todo ello supone un gran sobrecoste para la empresa y uno de los principales problemas en la planificación de un proyecto. Además de ello, el impacto de los problemas planteados es directamente proporcional al tiempo en el que se han detectado, cuanto más tarde se detecten estas incoherencias con el cliente, mayor sobre costes y más difícil será de cambiar la solución. Por lo tanto, cuanto antes se sea consciente de ello y antes se aporten soluciones, mayor beneficio se obtendrá. Para poder solucionar los problemas anteriormente mencionados existe la ingeniería de requisitos, de la cual se pueden derivar una serie de ventajas tales como: ahorro de costes, mejora de la capacidad de predicción de los cronogramas dentro del proyecto y, por lo tanto, una mejora de la planificación. Así como también un mejor entendimiento de las necesidades y de las peticiones del cliente y finalmente un menor tiempo de desarrollo del proyecto. Los beneficios derivados de la utilización de la ingeniería de requisitos son innegables, el problema es que su utilización también conlleva un sobre esfuerzo y por lo tanto un sobre coste. Para enfrentarse a este problema no es necesario únicamente encontrar el enfoque adecuando. Nuestro método ideal consistirá también en un sistema eficiente, automatizado y fácilmente adaptable a las necesidades de cada proyecto. Dentro del campo de la ingeniería de requisitos se ubica este proyecto de investigación en donde se persiguen como objetivos principales la identificación de la calidad de los requisitos, la generación de propuestas de cambio para poder modificar los requisitos identificados con mala calidad y todo ello será realizado de la manera más eficiente, eficaz y automatizada posible, evitando generar sobrecoste a la par de reducir al máximo el tiempo de espera para calcular los resultados. Para poder conseguir estos objetivos se ha desarrollado un método que es capaz de identificar y de cambiar los requisitos considerados como de mala calidad de acuerdo con una serie de estándares preestablecidos desde el inicio de la planificación del proyecto, incrementando así su eficacia. Dicho método seguirá los siguientes pasos secuenciales: Uno de los prerrequisitos actuales para poder aplicar nuestro método es la de obtener un corpus de requisitos de varios proyectos informáticos, preferiblemente enfocados a la misma área a tratar, dichos requisitos serán analizados por medio del procesamiento del lenguaje natural. Se extraerán diferentes características como, por ejemplo: • Atributo de clasificador binario, indicando si está en voz activa o pasiva • El número de caracteres situados entre signos de puntuación • El número de frases que contiene cada requisito. Estos tres son ejemplos de las características que se extraerán por cada requisito. En concreto se extraerá un total de veintisiete atributos diferentes tomados a partir de un corpus de mil treintaicinco requisitos diferentes. Todos los requisitos han sido de proyectos reales, que han sido clasificados por expertos de INCOSE dependiendo de su propio criterio siendo este uno de los principales puntos fuertes del trabajo. Una vez que se tenga procesada la información en nuestro sistema, nuestro método funcionara de acuerdo con los siguientes pasos secuenciales: • Primer paso: extracción de características por medio del procesamiento del lenguaje natural: Primero de todo será necesario una extracción de características por medio del procesamiento del
Compartir