An efficient heuristic algorithm for software module clustering optimization

An efficient heuristic algorithm for software module clustering optimization

Resumen

En el ciclo de vida de los proyectos software, las tareas de mantenimiento suelen representar el 75% del costo total, donde la mayor parte del esfuerzo se dedica a comprender el programa. Para mejorar la mantenibilidad de los proyectos software, el código suele dividirse en componentes, que luego se agrupan en diferentes módulos siguiendo buenos principios de diseño, reduciendo el acoplamiento e incrementando la cohesión.

El Software Module Clustering Problem (SMCP) es un problema de optimización que busca maximizar la modularidad de los proyectos de software en el contexto del área de Search-Based Software Engineering. En el SMCP, los proyectos suelen modelarse como grafos. Por lo tanto, el SMCP puede interpretarse como un problema de particionado de grafos, que es NP-difícil.

En este trabajo, proponemos un nuevo algoritmo heurístico para la modularización de software, basado en la metodología Greedy Randomized Adaptive Search Procedure (GRASP) con Variable Neighborhood Descent (VND). Presentamos una categorización triple de vecindarios para el SMCP y aprovechamos información específica del dominio para filtrar soluciones poco prometedoras.

Nuestra propuesta ha sido probada con éxito sobre un conjunto de proyectos de software reales, superando al mejor enfoque previo del estado del arte en términos de calidad, y en tiempos de cómputo muy reducidos. Por lo tanto, podría integrarse en herramientas de desarrollo de software para mejorar la calidad de los proyectos en tiempo real.


Citar

Yuste, J., Duarte, A., & Pardo, E. G. (2022). An efficient heuristic algorithm for software module clustering optimization. Journal of Systems and Software, 190, 111349.