← Últimos artículos
💻 computer science

What Characterizes Pairwise Modular Smells?

Este estudio caracteriza los "Pairwise Modular Smells" mediante la identificación de 19 características de relación de pares, el entrenamiento de modelos de aprendizaje automático en más de 6 millones de pares de entidades de 11 proyectos Java para predecir pares inapropiadamente separados y colocalizados con mejoras significativas en la precisión, y la interpretación de los resultados para revelar factores influyentes específicos, como las dependencias y la similitud semántica, que impulsan estos defectos arquitectónicos.

Autores originales: Chenxing Zhong, Daniel Feitosa, Paris Avgeriou, Huang Huang, Wei Song, He Zhang

Publicado 2026-06-23
📖 5 min de lectura🧠 Análisis profundo

Autores originales: Chenxing Zhong, Daniel Feitosa, Paris Avgeriou, Huang Huang, Wei Song, He Zhang

Artículo original bajo licencia CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta es una explicación generada por IA del artículo a continuación. No ha sido escrita ni avalada por los autores. Para mayor precisión técnica, consulte el artículo original. Leer descargo de responsabilidad completo

Imagina que eres el gerente de una biblioteca enorme y bulliciosa. El objetivo de una buena biblioteca es tener los libros organizados en secciones lógicas: "Cocina", "Historia", "Ciencia", etc. Esto facilita que las personas encuentren lo que necesitan y que los bibliotecarios mantengan todo ordenado.

En el mundo del software, estas "secciones" se llaman módulos. Un "buen" módulo agrupa archivos que trabajan estrechamente entre sí (alta cohesión) y mantiene separados de aquellos archivos que no tienen mucha relación entre sí (bajo acoplamiento).

Sin embargo, con el tiempo, las bibliotecas pueden volverse desordenadas. Los libros terminan mezclados en los estantes equivocados. En el software, este desorden se llama "Smell" (olor). No es un mal olor, sino una señal de que algo está estructuralmente mal y podría causar dolores de cabeza más adelante.

El Problema: El "Pairwise Modular Smell" (PairSmell)

En un estudio previo, los autores introdujeron una nueva forma de encontrar estos desórdenes llamada PairSmell. En lugar de mirar toda la biblioteca a la vez, miran pares de libros (archivos).

Hacen una pregunta simple: "¿Estos dos archivos pertenecen a la misma sección o deberían estar en secciones diferentes?"

Para responder a esto, utilizan un panel de "bibliotecarios expertos" (herramientas de software automatizadas). Si todos los expertos están de acuerdo en que el Archivo A y el Archivo B deberían estar juntos, pero la biblioteca actualmente los tiene en secciones diferentes, eso es un problema. Esto se llama InSep (Separación Inapropiada).

Por el contrario, si los expertos dicen que deberían estar en secciones diferentes, pero la biblioteca los tiene pegados en la misma caja, eso también es un problema. Esto se llama InCol (Colocación Inapropiada).

La Brecha: El estudio anterior podía encontrar estos problemas, pero no podía explicar fácilmente por qué eran un problema. Era como un médico que dice: "Usted tiene fiebre", pero no explica si es causada por la gripe, una infección o simplemente por estar bajo el sol. Los desarrolladores necesitaban saber por qué un par era desordenado para poder arreglarlo correctamente.

La Solución: Investigando la "Personalidad" de los Pares

Este nuevo artículo pregunta: ¿Qué rasgos específicos hacen que un par de archivos tenga más probabilidades de estar en el lugar equivocado?

Los autores trataron esto como una historia de detectives. Reunieron una lista de 19 "rasgos de personalidad" (características) que describen cómo se relacionan dos archivos entre sí. Estos rasgos incluyen:

  • Dependencias: ¿Con cuántos otros archivos habla este archivo?
  • Palabras Compartidas: ¿Utilizan el mismo vocabulario técnico?
  • Tamaño: ¿Qué tan grandes son los archivos?
  • Complejidad: ¿Qué tan difíciles son de entender?

Luego, introdujeron estos rasgos en un "Cerebro" de Aprendizaje Automático (un modelo computacional) entrenado con más de 6 millones de pares de archivos de 11 proyectos de software de código abierto diferentes (como Kafka, Hadoop y Druid).

Los Hallazgos: ¿Qué hace que un par sea "apestoso"?

La computadora aprendió a detectar los "olores" con alta precisión. Más importante aún, los autores le preguntaron a la computadora qué rasgos eran las mayores señales de alerta.

1. Para archivos que deberían estar juntos pero están separados (InSep)

El modelo encontró que los archivos separados son propensos a ser "apestosos" (incorrectamente separados) si:

  • Tienen demasiadas conexiones "salientes": Imagina a dos personas en habitaciones diferentes que constantemente gritan instrucciones al mismo grupo de personas en el pasillo. Si dependen fuertemente de los mismos recursos externos, probablemente deberían estar en la misma habitación para coordinarse mejor.
  • Comparten demasiadas palabras con el resto del sistema: Si ambos archivos hablan constantemente de los mismos conceptos que todos los demás en el edificio, es probable que sean parte del mismo "equipo" y no deberían estar aislados.
  • Son muy simples (pocos campos): Si dos archivos son pequeños y simples pero dependen el uno del otro, mantenerlos separados es como poner un zapato izquierdo y uno derecho en cajas diferentes. Son demasiado simples para justificar su separación.

2. Para archivos que están juntos pero deberían estar separados (InCol)

El modelo encontró que los archivos pegados son propensos a ser "apestosos" (incorrectamente agrupados) si:

  • No hablan el mismo idioma (Baja Similitud Semántica): Si un archivo trata sobre "Cocina" y el otro sobre "Historia", pero están en la misma caja, eso es un error. El modelo verifica si usan términos técnicos similares; si no es así, no deberían estar juntos.
  • No comparten muchas palabras entre sí: Incluso si están en la misma caja, si nunca mencionan las mismas cosas, es probable que no estén relacionados.
  • Tienen demasiadas conexiones "entrantes": Imagina una sola oficina donde 50 personas de otros departamentos vienen constantemente a dejar trabajo. Si dos archivos en un mismo módulo están siendo bombardeados por solicitudes de todas partes, ese módulo probablemente está demasiado saturado y necesita dividirse para manejar la carga.

Por qué esto es importante

Los autores proporcionan un "Manual de Usuario" para los desarrolladores. Ahora, en lugar de solo ver una bandera roja que dice "Esto está mal", un desarrollador puede ver por qué:

  • "Ah, estos dos archivos están separados, pero ambos dependen de los mismos 50 otros archivos. Debería moverlos juntos".
  • "Ah, estos dos archivos están juntos, pero uno es una herramienta de utilidad y el otro es una herramienta de lógica de negocio, y no comparten vocabulario. Debería separarlos".

La Conclusión

Este artículo toma un problema complejo de software —figurar por qué los módulos de software están desordenados— y lo descompone en rasgos simples y comprensibles. Al usar un enfoque de "detective" con aprendizaje automático, identificaron los "rasgos de personalidad" específicos (como cuántas conexiones tiene un archivo o cuántas palabras comparte) que señalan un error de diseño. Esto ayuda a los desarrolladores no solo a encontrar el desorden, sino a comprender la causa raíz para que puedan limpiarlo de manera efectiva.

¿Ahogado en artículos de tu campo?

Recibe resúmenes diarios de los artículos más novedosos que coincidan con tus palabras clave de investigación — con resúmenes técnicos, en tu idioma.

Probar Digest →