Deutschenglish

Framework for Automated Code Smell Correction in a Brownfield Context

Framework for Automated Code Smell Correction in a Brownfield Context
Interner Betreuer: Prof. Dr. Klaus Turowski, Christian Baumann

Im Bereich der Softwareentwicklung und -wartung kristallisiert sich mit zunehmender Zeit mehr und mehr das Problem des Verschlackens von Quelltext heraus. Durch verschiedenste Ursachen, wie Copy&Paste-Programmierung, unterschiedliche Expertisen-Level unter den Entwickler_innen oder einzuhaltende Termine, die Adhoc- oder Quick&Dirty-Lösungen begünstigen, degradiert die Qualität des Codes zusehends, sodass sich die Fortentwicklung der Code-Basis als immer problematischer und unhandlicher erweist.

Diesem Phänomen lässt sich mit modernen Entwicklungsmethoden, wie der Agilen Softwareentwicklung, Pair Programming oder Test Driven Development entgegenwirken, da sie die kontinuierliche Verbesserung des Codes begünstigen.

Das relativ junge Prinzip des Clean Code ist ein Katalog an Vorschlägen, die die Entwickler_innen dahingehend unterstützen sollen, ihren Quellcode auf einem konstant hohem Niveau zu halten und sich gegenüber dem Verfall dessen abzusichern. Projekte, die über einen langen Zeitraum gewachsen sind und nicht nach den Regeln des Clean Code erstellt wurden, werden dabei als »Brownfield« Projekte bezeichnet, also als solche, die vom Qualitätsverfall betroffen sind. Clean Code zielt dabei darauf ab, diese Projekte in ihren "sauber" implementierten Gegenpart, sogenannte »Greenfield« Projekte, umzusetzen. Dazu wird ein besonders hohes Augenmerk auf die repetitive Auseinandersetzung mit sogenannten Code Smells gelegt.

Code Smells beschreiben Regionen des Quelltexts, die zwar syntaktisch und semantisch korrekt sind, sich aber fehlerhaft "anfühlen". Beispielsweise kann eine in einem objektorientierten Umfeld implementierte Methode prozedural umgesetzt worden und dementsprechend lang sein, genannt »Long Method«. Ein weiterer prominenter Code Smell ist »Duplicated Code«, bei dem angezeigt wird, dass zwei Bereiche im Programm dasselbe erledigen und man diese Funktionalität in eine eigenständige Methode auslagern könnte.

Durch die Beschreibung und Identifizierung von Code Smells ergibt sich ein weiteres Forschungsfeld - das Refactoring. Refactoring beschreibt dabei einen Transformationsprozess (behaviour-preserving transformation), bei dem ein Programm A so umgeschrieben wird, dass das resultierende Programm B bei gleichen Eingaben verlässlich gleiche Ausgaben wie das originale A liefert. Um den Erhalt der Funktionalität zu gewährleisten muss neben einer syntaktisch korrekten Umschreibung des Abstrakten Syntaxbaums (AST), auch eine semantikbewahrende Umstellung des Kontroll- (CFG) und Abhängigkeitsflusses (PDG) von Variablen, Methoden und Klassen vorgenommen werden.

Derzeit werden die beiden Phasen des automatisierten Entfernens von Code Smells in der Literatur getrennt voneinander betrachtet. Ziel der Arbeit, die unter dem Titel "Framework for Automated Code Smell Correction in a Brownfield Context" läuft, ist deshalb einen geeigneten Rahmen für die Verquickung beider Forschungsfelder - Detektion und Korrektur - zu finden und ein Framework zu implementieren, dass sowohl automatisch die verschiedenen Code Smells aufdecken, als auch automatisiert beheben kann. Dabei soll insbesondere auf bereits existierende Ansätze, wie beispielsweise DECOR von Moha et al., zurückgegriffen und mit jungen Ansätzen aus dem Korrekturumfeld verbunden werden.