Exploring Variational Graph Auto-Encoders for Extract Class Refactoring Recommendation
Pritom Saha Akash, Kevin Chen-Chuan Chang

TL;DR
This paper introduces a novel method using variational graph auto-encoders to automatically refactor God classes into smaller, more cohesive classes by learning method representations and clustering them effectively.
Contribution
The paper presents a new graph-based approach leveraging variational auto-encoders for automatic class refactoring, improving upon existing methods in identifying and splitting God classes.
Findings
The approach outperforms existing methods in class cohesion metrics.
It effectively clusters methods into more cohesive classes.
Experimental results on real-world systems validate its effectiveness.
Abstract
The code smell is a sign of design and development flaws in a software system that reduces the reusability and maintainability of the system. Refactoring is done as an ongoing practice to remove the code smell from the program code. Among different code smells, the God class or Blob is one of the most common code smells. A god class contains too many responsibilities, violating object-oriented programming design's low coupling and high cohesiveness principles. This paper proposes an automatic approach to extracting a God class into multiple smaller classes with more specific responsibilities. To do this, we first construct a graph of methods (as nodes) for the concerning god class. The edge between any two methods is determined by their structural similarity, and the feature for each method is initialized using different semantic representation methods. Then, the variational graph…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software Testing and Debugging Techniques · Software Engineering Techniques and Practices
