An Exploratory Study on God Header Files in Open-Source C Projects

被引:0
|
作者
Wang, Yue [1 ,2 ]
Chang, Wenhui [1 ,2 ]
Zou, Yanzhen [1 ,2 ]
Xie, Bing [1 ,2 ]
机构
[1] Key Lab HCST PKU, MOE, Beijing, Peoples R China
[2] Peking Univ, SCS, Beijing, Peoples R China
关键词
software maintenance; code refactoring; header file; CACHING COMPILER;
D O I
10.1145/3671016.3671391
中图分类号
TP18 [人工智能理论];
学科分类号
081104 ; 0812 ; 0835 ; 1405 ;
摘要
God Header Files, like God Classes, pose difficulties in code understanding and lead to slow compilation in code evolution. However, there is little empirical evidence on their prevalence and impact. This study aims to investigate God Header Files in open-source C language software projects, in terms of their size, distribution, impact on compilation, and whether existing God Class refactoring approaches can decompose them effectively. We collected and quantitatively analyzed 557 popular open-source C language software projects and their commit histories, focusing on files with large code size, wide impact, and frequent modifications. Then we decomposed several typical header files using graph clustering algorithms and existing God Class refactoring methods. The most important results of our study can be summarized as follows: (1) 37.5% of the studied projects are affected by God Header Files, with 203 projects having 649 God Header Files; (2) 103 of the identified God Header Files have been modified hundreds of times, while 95% of the modifications only involve a small proportion of code. (3) Decomposing God Header Files with generic graph clustering algorithms and God Class refactoring methods could reduce recompilation to some extent during software evolution, but a new solution needs to be proposed in the future. Our study highlights the importance of God Header Files since they are widespread and can be harmful in software maintenance. Decomposition is an effective way to refactor God Header Files but better decomposing algorithms need to be proposed.
引用
收藏
页码:477 / 486
页数:10
相关论文
共 50 条
  • [1] An Exploratory Study on the Usage of Gherkin Features in Open-Source Projects
    Chandorkar, Adwait
    Patkar, Nitish
    Di Sorbo, Andrea
    Nierstrasz, Oscar
    [J]. 2022 IEEE INTERNATIONAL CONFERENCE ON SOFTWARE ANALYSIS, EVOLUTION AND REENGINEERING (SANER 2022), 2022, : 1159 - 1166
  • [2] On the fulfillment of coordination requirements in open-source software projects: An exploratory study
    Hunsen, Claus
    Siegmund, Janet
    Apel, Sven
    [J]. EMPIRICAL SOFTWARE ENGINEERING, 2020, 25 (06) : 4379 - 4426
  • [3] On the fulfillment of coordination requirements in open-source software projects: An exploratory study
    Claus Hunsen
    Janet Siegmund
    Sven Apel
    [J]. Empirical Software Engineering, 2020, 25 : 4379 - 4426
  • [4] An Exploratory Study of the Impact of Parameterization on JMH Measurement Results in Open-Source Projects
    Samoaa, Hazem
    Leitner, Philipp
    [J]. PROCEEDINGS OF THE ACM/SPEC INTERNATIONAL CONFERENCE ON PERFORMANCE ENGINEERING (ICPE '21), 2021, : 213 - 224
  • [5] Release conventions of open-source software: An exploratory study
    Chakroborti, Debasish
    Nath, Sristy Sumana
    Schneider, Kevin A.
    Roy, Chanchal K.
    [J]. JOURNAL OF SOFTWARE-EVOLUTION AND PROCESS, 2023, 35 (01)
  • [6] Exploiting Open-source Projects to Study Software Design
    Fuhrman, Christopher P.
    [J]. INFORMATICS IN EDUCATION, 2007, 6 (01): : 53 - 66
  • [7] Disseminating Architectural Knowledge on Open-Source Projects A Case Study of the Book "Architecture of Open-Source Applications"
    Robillard, Martin P.
    Medvidovic, Nenad
    [J]. 2016 IEEE/ACM 38TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE), 2016, : 476 - 487
  • [8] Permission Issues in Open-source Android Apps: An Exploratory Study
    Scoccia, Gian Luca
    Peruma, Anthony
    Pujols, Virginia
    Malavolta, Ivano
    Krutz, Daniel E.
    [J]. 2019 19TH IEEE INTERNATIONAL WORKING CONFERENCE ON SOURCE CODE ANALYSIS AND MANIPULATION (SCAM), 2019, : 238 - 249
  • [9] An investigation of misunderstanding code patterns in C open-source software projects
    Flávio Medeiros
    Gabriel Lima
    Guilherme Amaral
    Sven Apel
    Christian Kästner
    Márcio Ribeiro
    Rohit Gheyi
    [J]. Empirical Software Engineering, 2019, 24 : 1693 - 1726
  • [10] An investigation of misunderstanding code patterns in C open-source software projects
    Medeiros, Flavio
    Lima, Gabriel
    Amaral, Guilherme
    Apel, Sven
    Kastner, Christian
    Ribeiro, Marcio
    Gheyi, Rohit
    [J]. EMPIRICAL SOFTWARE ENGINEERING, 2019, 24 (04) : 1693 - 1726