Investigating Code Reuse in Software Redesign: A Case Study
2026-04-09 • Software Engineering
Software Engineering
AI summaryⓘ
The authors studied how software projects redesign their code to improve quality without breaking functionality, focusing on two popular static analysis tools. They found that reusing code and tests during redesign is complex and often incomplete, causing bugs to carry over. To help, they developed a method using clone detection to better track corresponding code between old and new versions. Their approach reduced unnecessary matches and improved accuracy, and they contributed fixes back to the open-source projects they studied.
software redesignstatic analysiscode reuseclone detectiontest portingSootFindBugspull requestssemantic alignmentsoftware migration
Authors
Xiaowen Zhang, Huaien Zhang, Shin Hwei Tan
Abstract
Software redesign preserves functionality while improving quality attributes, but manual reuse of code and tests is costly and error-prone, especially in crossrepository redesigns. Focusing on static analyzers where cross-repo redesign needs often arise, we conduct a bidirectional study of the ongoing Soot/SootUp redesign case using an action research methodology that combines empirical investigation with validated open-source contributions. Our study reveals: (1) non-linear migration which necessitates bidirectional reuse, (2) deferred reuse via TODOs, (3) neglected test porting, and (4) residual bug propagation during migrations. We identify tracking corresponding code and tests as the key challenge, and address it by retrofitting clone detection to derive code mappings between original and redesigned projects. Guided by semantic reuse patterns derived in our study, we propose Semantic Alignment Heuristics and a scalable hierarchical detection strategy. Evaluations on two redesigned project pairs (Soot/SootUp and FindBugs/SpotBugs) show that our approach achieves an average reduction of 33-99% in likely irrelevant clones at a SAS threshold of 0.5 across all tool results, and improves precision up to 86% on our benchmark of 1,749 samples. Moreover, we contribute to the redesigned projects by submitting five issues and 10 pull requests, of which eight have been merged.