What Characterizes Pairwise Modular Smells?
Diese Studie charakterisiert Pairwise Modular Smells, indem sie 19 Paarbeziehungsmerkmale identifiziert, maschinelle Lernmodelle auf Basis von über 6 Millionen Entitätspaaren aus 11 Java-Projekten trainiert, um inapt getrennte und kollokierte Paare mit signifikanten Genauigkeitsverbesserungen vorherzusagen, und die Ergebnisse interpretiert, um spezifische einflussreiche Faktoren wie Abhängigkeiten und semantische Ähnlichkeit aufzuzeigen, die diese architektonischen Mängel vorantreiben.
Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
Stellen Sie sich vor, Sie sind der Manager einer riesigen, belebten Bibliothek. Das Ziel einer guten Bibliothek ist es, Bücher in logische Abschnitte zu organisieren: „Kochen“, „Geschichte“, „Wissenschaft“ usw. Dies macht es den Menschen leicht, das zu finden, was sie brauchen, und den Bibliothekaren, die Ordnung zu halten.
In der Welt der Software werden diese „Abschnitte“ als Module bezeichnet. Ein „gutes“ Modul gruppiert Dateien, die eng zusammenarbeiten (hohe Kohäsion), und hält sie von Dateien getrennt, die nicht wirklich miteinander kommunizieren (niedrige Kopplung).
Mit der Zeit können Bibliotheken jedoch unordentlich werden. Bücher werden in die falschen Kisten gemischt. In der Software wird dieses Chaos als „Smell“ (Geruch) bezeichnet. Es ist kein schlechter Geruch, sondern ein Zeichen dafür, dass etwas strukturell falsch ist und später Kopfschmerzen verursachen könnte.
Das Problem: Der „Pairwise Modular Smell“ (PairSmell)
In einer vorangegangenen Studie führten die Autoren eine neue Methode zur Identifizierung dieser Unordnung namens PairSmell ein. Anstatt die gesamte Bibliothek auf einmal zu betrachten, betrachtet PairSmell Paare von Büchern (Dateien).
Sie stellen eine einfache Frage: „Gehören diese zwei Dateien in denselben Abschnitt oder sollten sie in unterschiedlichen liegen?“
Um dies zu beantworten, nutzen sie ein Gremium aus „Experten-Bibliothekaren“ (automatisierte Software-Tools). Wenn alle Experten übereinstimmen, dass Datei A und Datei B zusammengehören, sie aber in der Bibliothek derzeit in unterschiedlichen Abschnitten untergebracht sind, liegt ein Problem vor. Dies wird als InSep (Inappropriate Separation – Unangemessene Trennung) bezeichnet.
Umgekehrt gilt auch: Wenn die Experten sagen, dass sie in unterschiedliche Abschnitte gehören, sie aber in der Bibliothek in derselben Box feststecken, ist das ebenfalls ein Problem. Dies wird als InCol (Inappropriate Collocation – Unangemessene Zusammenstellung) bezeichnet.
Die Lücke: Die vorangegangene Studie konnte diese Probleme zwar finden, aber sie konnte nicht einfach erklären, warum es Probleme waren. Es war wie ein Arzt, der sagt: „Sie haben Fieber“, aber nicht erklärt, ob es durch die Grippe, eine Infektion oder nur durch die Sonne verursacht wurde. Entwickler mussten wissen, warum ein Paar „unordentlich“ war, um es korrekt korrigieren zu können.
Die Lösung: Die Untersuchung der „Persönlichkeit“ der Paare
Diese neue Arbeit stellt die Frage: Welche spezifischen Merkmale machen ein Paar von Dateien wahrscheinlich zu einem Ort an der falschen Stelle?
Die Autoren nahmen dies wie einen Detektivfall in die Hand. Sie erstellten eine Liste von 19 „Persönlichkeitsmerkmalen“ (Charakteristika), die beschreiben, wie zwei Dateien miteinander in Beziehung stehen. Diese Merkmale umfassen:
- Abhängigkeiten (Dependencies): Mit wie vielen anderen Dateien kommuniziert diese eine Datei?
- Gemeinsame Wörter (Shared Words): Verwenden sie denselben technischen Wortschatz?
- Größe (Size): Wie groß sind die Dateien?
- Komplexität (Complexity): Wie schwer sind sie zu verstehen?
Sie speisten diese Merkmale dann in ein Maschinelles Lernen „Gehirn“ (ein Computermodell) ein, das mit über 6 Millionen Paaren von Dateien aus 11 verschiedenen Open-Source-Softwareprojekten (wie Kafka, Hadoop und Druid) trainiert wurde.
Die Ergebnisse: Was macht ein Paar „smelly“?
Der Computer lernte, die „Smells“ mit hoher Genauigkeit zu erkennen. Wichtiger noch: Die Autoren fragten den Computer, welche Merkmale die größten Warnsignale darstellten.
1. Für Dateien, die zusammengehören, aber getrennt sind (InSep)
Das Modell fand heraus, dass getrennte Dateien wahrscheinlich „smelly“ (falsch getrennt) sind, wenn:
- Sie zu viele „ausgehende“ Verbindungen haben: Stellen Sie sich zwei Personen in verschiedenen Räumen vor, die ständig Anweisungen an dieselbe Gruppe von Menschen im Flur schreien. Wenn sie sich stark auf die gleichen externen Ressourcen verlassen, sollten sie wahrscheinlich im selben Raum sein, um besser zu koordinieren.
- Sie zu viele Wörter mit dem Rest des Systems teilen: Wenn beide Dateien ständig über dieselben Konzepte wie alle anderen im Gebäude sprechen, sind sie wahrscheinlich Teil desselben „Teams“ und sollten nicht isoliert sein.
- Sie sehr einfach sind (wenig Felder besitzen): Wenn zwei Dateien klein und einfach sind, sich aber gegenseitig abhängen, ist es, als würde man einen linken und einen rechten Schuh in verschiedene Kartons legen. Sie sind zu einfach, um eine Trennung zu rechtfertigen.
2. Für Dateien, die zusammen sind, aber getrennt sein sollten (InCol)
Das Modell fand heraus, dass zusammengehörige Dateien „smelly“ (falsch gruppiert) sind, wenn:
- Sie nicht dieselbe Sprache sprechen (Geringe semantische Ähnlichkeit): Wenn eine Datei über „Kochen“ und die andere über „Geschichte“ handelt, aber in derselbe Karton gehören, ist das ein Fehler. Das Modell prüft, ob sie ähnliche technische Begriffe verwenden; wenn nicht, sollten sie nicht zusammen sein.
- Sie nicht viele Wörter miteinander teilen: Selbst wenn sie in derselben Box sind, wenn sie niemals dieselben Dinge erwähnen, sind sie wahrscheinlich nicht miteinander verwandt.
- Sie zu viele „eingehende“ Verbindungen haben: Stellen Sie sich ein einzelnes Büro vor, in das 50 verschiedene Personen aus anderen Abteilungen kommen, um Arbeit abzugeben. Wenn zwei Dateien in demselben Modul ständig Anfragen von überall her erhalten, ist dieses Modul wahrscheinlich zu überfüllt und muss aufgeteilt werden, um die Last zu bewältigen.
Warum das wichtig ist
Die Autoren stellen den Entwicklern eine „Bedienungsanleitung“ zur Verfügung. Jetzt sehen Entwickler nicht mehr nur ein Warnflag, das sagt: „Das ist falsch“, sondern sie sehen das Warum:
- „Ah, diese zwei Dateien sind getrennt, aber beide hängen von denselben 50 anderen Dateien ab. Ich sollte sie zusammenführen.“
- „Ah, diese zwei Dateien sind zusammen, aber die eine ist ein Hilfswerkzeug und die andere ein Business-Logic-Tool, und sie haben keinen gemeinsamen Wortschatz. Ich sollte sie trennen.“
Das Fazit
Diese Arbeit nimmt ein komplexes Softwareproblem – herauszufinden, warum Softwaremodule unordentlich sind – und bricht es in einfache, verständliche Merkmale herunter. Durch den Einsatz eines „Detektiv-Ansatzes“ mit maschinellem Lernen haben die Autoren die spezifischen „Persönlichkeitsmerkmale“ (wie die Anzahl der Verbindungen einer Datei oder die Anzahl der Wörter, die sie teilt) identifiziert, die auf einen Designfehler hindeuten. Dies hilft Entwicklern, nicht nur das Chaos zu finden, sondern die Ursache zu verstehen, damit sie es effektiv bereinigen können.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.