Hacia el uso de sistemas de recomendación en sistemas de alta variabilidad
Abstract
Los sistemas de alta variabilidad son sistemas software cuyo comportamiento puede ser personalizado de acuerdo con las necesidades de un contexto particular. De hecho, existen sistemas de alta variabilidad que representan miles de productos. Por otra parte, en la industria encontramos los sistemas de recomendación, los cuales, permiten recomendar la serie de productos que mejor se adapten a un usuario o un contexto de uso particular. En este artículo de prospección exploramos el uso de sistemas de recomendación en el contexto de los sistemas de alta variabilidad. Asimismo, identificamos algunas tareas donde podrían ayudar a la gestión de los sistemas de variabilidad.
Full text
Hacia el uso de sistemas de recomendaci´on en sistemas de alta variabilidad Jorge L. Rodas1, Javier Olivares2, Jos´e A. Galindo2, and David Benavides3 1University of Milagro, Ecuador . [email protected] 2Inria - Rennes, France . {javier.olivares,jagalindo}@inria.fr 3University of Seville, Spain . [email protected] Resumen Los sistemas de alta variabilidad son sistemas de software que describen una gran cantidad de configuraciones. Existen sistemas de alta variabilidad que representan miles de productos. Manejar la variabilidad presente en estos sistemas es costoso y en muchos casos suele ser complicado. En la actualidad hemos visto en en la industria un notable crecimiento de los sistemas de recomendaci´on en muchos ´ambitos, como el comercio electr´onico, publicidad online, entre otros. Un sistema de recomendaci´on es un agente de software que permite hacer predicciones de una serie de productos para que se adapten mejor a las necesidades o gustos de un usuario. En este art´ıculo de prospecci´on proponemos la fusi´on de estos dos campos de la ingenier´ıa para mejorar distintas facetas dentro de la gesti´on de los sistemas de alta variabilidad. Keywords: Feature models, recommender systems, variability intensive systems 1. Introducci´on Los sistemas de alta variabilidad son sistemas de software cuyo comportamiento puede ser personalizado de acuerdo con las necesidades espec´ıficas de un contexto particular [1]. Un sistema de alta variabilidad puede ser representado por un modelo de caracter´ısticas que define el n´umero de combinaciones posibles para las configuraciones derivadas del mismo. Esta complejidad hace que el an´alisis y mejora de dichos sistemas de una forma manual sea una actividad costosa y propensa a errores. Para aliviar este problema se han propuesto m´ultiples t´ecnicas que permiten un an´alisis autom´atico de los sistemas de alta variabilidad [2]. De hecho, en la industria podemos encontrar varios ejemplos de dichos modelos que representan la variabilidad de estos sistemas en entornos reales, como el ecosistema de dispositivos m´oviles [6] o los sistemas de gesti´on de precios en la nube (cloud-price management system)[7] que describen cientos de configuraciones diferentes. Por otra parte, en la industria encontramos los sistemas de recomendaci´on. Un sistema de recomendaci´on tiene como objetivo recomendar a los usuarios los productos m´as adecuados de acuerdo a su perfil de gustos. Normalmente son usados para sugerir los productos que mejor se adaptan a un usuario o a un tipo
2 Jorge L. Rodas de usuario, satisfaciendo sus deseos y necesidades [4] . Actualmente, estos sistemas se aplican con ´exito en diferentes entornos de comercio electr´onico, como por ejemplo, la recomendaci´on de noticias, pel´ıculas, m´usica, libros, entretenimiento, entre otros. En este art´ıculo, vislumbramos el uso de sistemas de recomendaci´on para las configuraciones de distintos productos as´ı como de las caracter´ısticas de una determinada configuraci´on de producto, el testing de configuraciones propensas a errores y el diagn´ostico personalizado. La secci´on 2 muestra algunos antecedentes para comprender el alcance de la propuesta. La secci´on 3, presenta algunas de las posibles aplicaciones de los sistemas de recomendaci´on en el contexto de los sistemas de alta variabilidad y finalmente, en la secci´on 4 se concluye el trabajo. 2. Antecedentes Un sistema de recomendaci´on se define como un sistema que gu´ıa a los usuarios de forma personalizada en la b´usqueda de productos interesantes o ´utiles dentro de un gran conjunto de posibilidades a elegir. En el mercado existen experiencias pr´acticas exitosas de la implementaci´on de las tecnolog´ıas de recomendaci´on en contextos de comercio electr´onico, como los casos de Amazon [9] y Netflix [11], los mismos que han contribuido al desarrollo de sistemas de recomendaci´on en nuevos campos de aplicaci´on. En [3,4] se describen en detalle variadas aplicaciones que emplean sistemas de recomendaci´on. Los sistemas de recomendaci´on se dividen en dos grupos seg´un el m´etodo de filtrado utilizado para la generaci´on de las recomendaciones: sistemas colaborativos y sistemas basados en contenido. Los sistemas de filtrado colaborativo [8,9] se basan en el concepto de an´alisis de perfiles de usuarios, en donde las recomendaciones se generan en base a los gustos de usuarios con preferencias similares. Por ejemplo, en Movielens (https://movielens.org/), un usuario que ha evaluado una serie de pel´ıculas, recibir´a recomendaciones de otros usuarios que hayan evaluado las mismas pel´ıculas o al menos una gran parte de ellas, es decir, de aquellos usuarios con intereses similares. Los sistemas de filtrado basados en el contenido [10] son aquellos en que el usuario recibe recomendaciones basadas en sus propios gustos. En este tipo de sistemas el foco de la predicci´on est´a enmarcado en las caracter´ısticas del perfil de usuario (para un producto se considerar´ıa caracter´ısticas como el precio, marca, categor´ıa, entre otros) para hacer las recomendaciones. A modo de ejemplo, un usuario de Amazon.com a qui´en le gusta los libros de fantas´ıa, recibir´a nuevas recomendaciones de libros de ese categor´ıa. 3. Explorando la aplicabilidad de los sistemas de recomendaci´on En esta secci´on exploramos algunas de las tareas de gesti´on de sistemas de alta variabilidad que podr´ıan beneficiarse del uso de sistemas de recomendaci´on. Para hacer m´as comprensible la lectura de este art´ıculo usaremos como ejemplo un peque˜no modelo de caracter´ısticas. En los casos que se detallan a continuaci´on, llamaremos usuario al ingeniero de pruebas y personal de operaci´on dentro de un modelo de negocio.
Hacia el uso de sistemas de recomendaci´on en sistemas de alta variabilidad 3 Android Procesador PantallaBluetoothWifi ARM X86 P1={Android, Wifi, Procesador ARM} P2={Android, Wifi, Procesador X86} P3={Android, Bluetooh, Procesador ARM} P4={Android, Bluetooh, Procesador X86} P5={Android, Wifi, Bluetooh, Procesador ARM} P6={Android, Wifi, Bluetooh, Procesador X86} P7={Android, Wifi, Procesador ARM, Pantalla} P8={Android, Wifi, Procesador X86, Pantalla} P9={Android, Bluetooh, Procesador ARM, Pantalla} P10={Android, Bluetooh, Procesador X86, Pantalla} P11={Android, Wifi, Bluetooh, Procesador ARM, Pantalla} P12={Android, Wifi, Bluetooh, Procesador X86, Pantalla} Figura 1. Modelo de caracter´ısticas simplificado que describe la plataforma Android Recomendaci´on de configuraciones: Probablemente sea la aplicaci´on m´as directa de los sistemas de recomendaci´on. Consiste simplemente en recomendar productos dependiendo de configuraciones previas de otros usuarios. Por ejemplo, en la figura 1, si otros usuarios que configuraron el producto P1:Android, Wifi, Procesador ARM, tambi´en configuraron el producto P2:Android, Wifi, Procesador X86, P2 ser´a recomendado a los que seleccionaron P1. Estas recomendaciones tambi´en se podr´ıan realizar mediante filtros por contenido usando distintas funciones de proximidad entre caracter´ısticas. Recomendaci´on de caracter´ısticas: Este segundo caso de aplicaci´on es similar al primero, no obstante el sistema de recomendaci´on tomar´ıa parte durante la configuraci´on de un producto. Es decir, se encargar´ıa de recomendar las caracter´ısticas m´as seleccionadas por otros usuarios que ya han seleccionado la configuraci´on parcial actual. Por ejemplo, si un usuario ha seleccionado las caracter´ısticas Wifi ybluetooth, se le recomendar´ıa seleccionar Pantalla, Procesador ARM o Procesador X86. Recomendaci´on de configuraciones para testing: Este ´ultimo caso de aplicabilidad, representa un escenario muy interesante para los sistemas de recomendaci´on. En este caso lo que se persigue es la recomendaci´on de los productos que sean m´as susceptibles de tener errores. Para esto, partimos de la hip´otesis de que los productos con menor valoraci´on por parte de los usuarios finales, son aquellos con tendencia a contener m´as errores. Entonces, a partir de este conjunto de valoraciones sobre configuraciones en un modelo de caracter´ısticas y el uso de algoritmos de filtrado colaborativo, podr´ıamos recomendar al ingeniero de pruebas, una lista con los productos m´as ´optimos para el testing. Recomendaci´on basado en el diagn´ostico personalizado: Una de las posibles aplicaciones en el contexto de los sistemas de alta variabilidad es en la actividad de explicaci´on de errores. Actualmente, la mayor´ıa de las propuestas existentes para explicar errores no permiten optimizar el resultado de los mismos. ´ Estos tienden a mostrar la explicaci´on m´ınima (aquella que requiere del menor n´umero de cambios para solucionar el error). No obstante, esta explicaci´on m´ınima no siempre es la m´as interesante [5]. Entendemos que mediante el uso de sistemas de recomendaci´on se podr´ıan obtener aquellas explicaciones que ayuden de una manera ´optima al modelador del sistema de variabilidad. 4. Conclusiones En este art´ıculo de prospecci´on proponemos el uso de sistemas de recomendaci´on para la mejora de sistemas de alta variabilidad en casos pr´acticos concretos de aplicaci´on. Para el proceso de pruebas se emplear´an reportes de usuario tales como los reportes de errores (ingenieros de pruebas) o valoraciones (usuarios
4 Jorge L. Rodas finales) extra´ıdas de bug-trackers, tiendas de apps u otros. Esta informaci´on permitir´a construir un ambiente de pruebas y ejecutar experimentos que validen la propuesta. Para evaluar la propuesta se tiene contemplado tomar un conjunto de datos y contrastar los resultados obtenidos por el sistema de recomendaci´on versus los obtenidos aplicando un mecanismo manual. Teniendo en cuenta la importancia de los sistemas de recomendaci´on en la actualidad, y las m´ultiples l´ıneas de investigaci´on generadas en el ´area, nuestros trabajos futuros pretenden abordar los siguientes temas: Estudiar otros m´etodos de ponderaci´on de caracter´ısticas para los algoritmos de recomendaci´on que permitan descubrir interacciones entre varias caracter´ısticas de acuerdo a la valoraci´on que otorga el usuario a los productos. Combinar los m´etodos empleados en los casos presentados en esta propuesta con otros m´etodos de recomendaci´on con el objetivo de mejorar las recomendaciones que se otorga al usuario (ingeniero de pruebas o usuario final). Referencias 1. Muhammad Ali Babar, Lianping Chen, and Forrest Shull. Managing variability in software product lines. Software, IEEE, 27(3):89–91, 2010. 2. David Benavides, Sergio Segura, and Antonio Ruiz-Cort´es. Automated analysis of feature models 20 years later: A literature review. Information Systems, 35(6):615– 636, 2010. 3. Jesus Bobadilla, Antonio Hernando, Fernando Ortega, and Jesus Bernal. A framework for collaborative filtering recommender systems. Expert Systems with Applications, 38(12):14609 – 14623, 2011. 4. Jes´us Bobadilla, Fernando Ortega, Antonio Hernando, and Abraham Guti´errez. Recommender systems survey. Knowledge-Based Systems, 46:109–132, 2013. 5. Alexander Felfernig, Gerhard Friedrich, Monika Schubert, Monika Mandl, Markus Mairitsch, and Erich Teppan. Plausible repairs for inconsistent requirements. In Proceedings of the 21st International Jont Conference on Artifical Intelligence, IJCAI’09, pages 791–796, San Francisco, CA, USA, 2009. Morgan Kaufmann Publishers Inc. 6. Jos´e A Galindo, Hamilton Turner, David Benavides, and Jules White. Testing variability-intensive systems using automated analysis: an application to android. Software Quality Journal, pages 1–41, 2014. 7. Jes´us Garc´ıa-Gal´an, Omer F. Rana, Pablo Trinidad, and Antonio Ruiz-Cort´es. Migrating to the cloud: a software product line based analysis. In CLOSER, 2013. 8. Joseph A Konstan, Bradley N Miller, David Maltz, Jonathan L Herlocker, Lee R Gordon, and John Riedl. Grouplens: applying collaborative filtering to usenet news. Communications of the ACM, 40(3):77–87, 1997. 9. Greg Linden, Brent Smith, and Jeremy York. Amazon. com recommendations: Item-to-item collaborative filtering. Internet Computing, IEEE, 7(1):76–80, 2003. 10. Michael Pazzani and Daniel Billsus. Learning and revising user profiles: The identification of interesting web sites. Machine learning, 27(3):313–331, 1997. 11. Alex Tuzhilin, Yehuda Koren, Jim Bennett, Charles Elkan, and Daniel Lemire. Large-scale recommender systems and the netflix prize competition. In KDD Proceedings, 2008.