机构地区:[1]School of Computer Science and Technology,Xi’an Jiaotong University,Xi’an 710049,China [2]School of Cyber Science and Engineering,Xi’an Jiaotong University,Xi’an 710049,China [3]College of Cyber Science,Nankai University,Tianjin 300350,China [4]College of Intelligence and Computing,Tianjin University,Tianjin 300350,China [5]Department of Computer Science,Drexel University,Philadelphia 19104,USA [6]School of Computer Science and Engineering,Nanyang Technological University,Singapore 639798,Singapore
出 处:《Science China(Information Sciences)》2022年第7期98-116,共19页中国科学(信息科学)(英文版)
基 金:supported by National Key R&D Program of China (Grant No. 2020AAA0108800);National Natural Science Foundation of China (Grant Nos. 61632015, 61772408, U1766215, 61721002, 61532015, 61833015, 61902306,62072351);China Postdoctoral Science Foundation (Grant Nos. 2019TQ0251, 2020M673439);Youth Talent Support Plan of Xi’an Association for Science and Technology (Grant No. 095920201303);Ministry of Education Innovation Research Team (Grant No.IRT 17R86);Project of China Knowledge Center for Engineering Science and Technology。
摘 要:The complexity and diversity of bug fixes require developers to understand bug fixes from multiple perspectives in addition to fine-grained code changes. The dependencies among files in a software system are an important dimension to inform software quality. Recent studies have revealed that most bug-prone files are always architecturally connected with dependencies, and as one of the best practices in the industry,changes in dependencies should be avoided or carefully made during bug fixing. Hence, in this paper, we take the first attempt to understand bug fixes from the dependencies perspective, which can complement existing code change perspectives. Based on this new perspective, we conducted a systematic and comprehensive study on bug fixes collected from 157 Apache open source projects, involving 140456 bug reports and182621 bug fixes in total. Our study results show that a relatively high proportion of bug fixes(30%) introduce dependency-level changes when fixing the corresponding 33% bugs. The bugs, whose fixes introduce dependency-level changes, have a strong correlation with high priority, large fixing churn, long fixing time,frequent bug reopening, and bug inducing. More importantly, patched files with dependency-level changes in their fixes, consume much more maintenance costs compared with those without these changes. We further summarized three representative patch patterns to explain the reasons for the increasing costs. Our study unveils useful findings based on qualitative and quantitative analysis and also provides new insights that might benefit existing bug prediction techniques. We release a large set of benchmarks and also implement a prototype tool to automatically detect dependency-level changes from bug fixes, which can warn developers and remind them to design a better fix.
关 键 词:empirical software engineering software maintenance software evolution software architecture software design
分 类 号:TP311.53[自动化与计算机技术—计算机软件与理论]
正在载入数据...
正在载入数据...
正在载入数据...
正在载入数据...
正在载入数据...
正在载入数据...
正在载入数据...