Treffer: Graph-based code pattern extraction
1-902696-97-2
Weitere Informationen
Software ist in vielen Bereichen des modernen Lebens relevant. Ihre Entwicklung ist jedoch zeitaufwändig, und selbst kleine Programmfehler können verheerende Auswirkungen auf die Programmausführung haben. Mit der Etablierung von "Software Engineering" um 1960 begannen Softwareentwickler, Ingenieurprinzipien bei der Entwicklung einzusetzen. Software-Entwurfsmuster haben sich seitdem als wichtiges Werkzeug der Softwareentwicklung etabliert. Sie sind jedoch inhärent allgemein und damit nicht in der Lage, projektspezifische Zusammenhänge abzubilden. Eine große Vielfalt unterschiedlichster Anforderungen führt zu sehr vielfältiger Software. Beispielsweise ist der Quellcode für das Assistenzsystem eines Passagierflugzeugs anders strukturiert als der einer Schrittzähler-App auf dem Smartphone. Auch die Entwicklungsprozesse unterscheiden sich stark. Spezifischere Softwaremuster, die zugeschnitten sind auf die Domäne, den Enwicklungsprozess oder die Verwendung spezieller Hardware, haben potenziell eine höhere Relevanz als allgemeine Muster. Diese Arbeit beschreibt eine Methode zur automatischen Extraktion von Code-Mustern, basierend auf "Pattern Mining". Die extrahierten Muster beschreiben häufig vorgenommene Änderungen. Dazu werden öffentlich verfügbare Daten aus Versionskontrollsystemen verwendet, die eine reichhaltige Historie verschiedener Softwareprojekte halten. Der präsentierte Ansatz besteht aus drei Schritten: 1) Die Modellierung von Änderungen und ihre Extraktion aus Programmcode. Dabei werden kontextuelle Zusammenhänge zwischen den Änderungen erfasst und die Änderungen schließlich als Graph repräsentiert. 2) Mit einem spezialisierten Algorithmus werden häufige Muster aus den Graphdaten extrahiert. 3) Die Muster werden mithilfe eines neuartigen Analysewerkzeugs interpretiert, sodass tausende Muster mit jeweils tausenden Vorkommnissen überblickt werden können. Die Skalierbarkeit des Ansatzes, effektive Interpretationsmethoden sowie verschiedene Einflussfaktoren wurden mithilfe von drei Experimenten untersucht. Im ...