Las alumnas de Ingeniería Informática de la Universidad de Burgos, Lorena Gil López y Raquel Pastor Bueno, han ganado el Premio i3 al mejor Proyecto Fin de Carrera: por su trabajo "CloneSearch: Sistema de Detección de Código Duplicado como Soporte a Herramientas SCM", que otorga el Colegio Profesional de Ingenieros en Informática de Castilla y León, dentro de la 3ª Noche de la Ingeniería Informática de Castilla y León. El proyecto ha destacado por su originalidad y carácter innovador, y aún más especialmente en su aplicabilidad.
Además han resultado premiados:
· Premio a la Institución Pública más relevante: Consejería de Administración Autonómica de la Junta de Castilla y León.
· Premio al Ingeniero del año: Juan Manuel Corchado, Decano de la Facultad de Ciencias de la Universidad de Salamanca.
· Premio a la Empresa de Informática más relevante: Códice Software, con sede central en el Parque Tecnológico de Boecillo.
CloneSearch es un paquete integrado compuesto por una aplicación Windows y un plug-in para Microsoft Visual Studio que permite realizar búsquedas de código similar y la detección de posibles renombrados sobre lenguajes fuente Java o C#. CloneSearch ofrece posibilidades totalmente innovadoras para el usuario a la hora de configurar las búsquedas, presentar los resultados o utilizarlos.
La aplicación Windows dispone de una interfaz amigable y muy intuitiva, ofreciendo todas las características de los principales IDEs del mercado (Visual Studio, Eclipse…); con un entorno configurable y muy completo y listo para su internacionalización.
El jurado resalta en el proyecto la dificultad de desarrollar un aplicativo tan orientado al sector industrial de la Ingeniería en Informática. El proyecto, aporta valores muy novedosos al trabajo de análisis y mantenimiento de software siguiendo los cánones de la Ingeniería en Informática, bajo un entorno de trabajo extraordinariamente cuidado.
Es de resaltar la practicidad y viabilidad en este campo del proyecto, así como la fusión de múltiples herramientas de relevancia en el mercado que soporta, que lo avalan como un proyecto perfectamente comercializable.
CloneSearch realiza un parseo sobre los ficheros fuente para obtener un conjunto de tókenes (unidad mínima del lenguaje, p.ej. if, while, case…), de forma que posteriormente serán analizados por un potente algoritmo implementado, GST-KR, en busca de código duplicado atendiendo a la estructura del lenguaje.
La búsqueda de código similar se puede realizar a diferentes niveles: archivo, clase, método o fragmento. Por ejemplo, si se selecciona un método, la herramienta mostrará parejas de código similar con respecto a otros métodos de las clases seleccionadas, y así respectivamente.
CloneSearch ofrece la posibilidad al usuario de configurar las búsquedas: Versión del algoritmo, Niveles de precisión, Conjuntos de tókenes, Búsquedas semánticas, Filtros estadísticos y Métricas de código.
El resultado de la búsqueda es gráfico y muy intuitivo, gracias a un panel que contiene un árbol de resultados navegable y almacenable persistentemente. También se puede visualizar un gráfico resumen de barras y líneas con los porcentajes de similitud, así como los valores de las métricas de código asociadas a cada par de elementos (clase, método…) sobre los que se ha realizado la búsqueda.
Adicionalmente, el usuario puede realizar una detección de posibles renombrados de clase o método.
El plug-in para Visual Studio tiene idéntica funcionalidad y apariencia que la aplicación Windows, de forma que la curva de aprendizaje del usuario es mínima.
CloneSearch ofrece soluciones para los distintos problemas derivados del código duplicado y de baja calidad como son:
-Refactorizaciones automáticas: pull-up method, renombrados…
-Soporte a SCM (Software Configuration Management)
Permite conocer la historia de un fragmento de código entre distintas versiones de un proyecto.
Facilita las integraciones o merges, de forma que es capaz de detectar si un fragmento de código ha sido movido o incluso modificado en distintas versiones de un archivo, pudiéndose incluso llegar a realizar la integración sin la intervención humana.