Large-scale semi-automated migration of legacy C/C plus plus test code

被引:4
|
作者
Schuts, Mathijs T. W. [1 ,2 ]
Aarssen, Rodin T. A. [3 ,4 ]
Tielemans, Paul M. [1 ]
Vinju, Jurgen J. [3 ,4 ]
机构
[1] Philips, Best, Netherlands
[2] Radboud Univ Nijmegen, Software Sci, Nijmegen, Netherlands
[3] Ctr Wiskunde & Informat, Software Anal & Transformat, Amsterdam, Netherlands
[4] Eindhoven Univ Technol, Software Engn & Technol, Eindhoven, Netherlands
来源
SOFTWARE-PRACTICE & EXPERIENCE | 2022年 / 52卷 / 07期
关键词
parsers; pattern matching; program analysis; refactoring; source code generation;
D O I
10.1002/spe.3082
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
This is an industrial experience report on a large semi-automated migration of legacy test code in C and C++. The particular migration was enabled by automating most of the maintenance steps. Without automation this particular large-scale migration would not have been conducted, due to the risks involved in manual maintenance (risk of introducing errors, risk of unexpected rework, and loss of productivity). We describe and evaluate the method of automation we used on this real-world case. The benefits were that by automating analysis, we could make sure that we understand all the relevant details for the envisioned maintenance, without having to manually read and check our theories. Furthermore, by automating transformations we could reiterate and improve over complex and large scale source code updates, until they were "just right." The drawbacks were that, first, we have had to learn new metaprogramming skills. Second, our automation scripts are not readily reusable for other contexts; they were necessarily developed for this ad-hoc maintenance task. Our analysis shows that automated software maintenance as compared to the (hypothetical) manual alternative method seems to be better both in terms of avoiding mistakes and avoiding rework because of such mistakes. It seems that necessary and beneficial source code maintenance need not to be avoided, if software engineers are enabled to create bespoke (and ad-hoc) analysis and transformation tools to support it.
引用
收藏
页码:1543 / 1580
页数:38
相关论文
共 50 条
  • [21] Automated C/C plus plus Program Repair for High -Level Synthesis via Large Language Models
    Xu, Kangwei
    Zhang, Grace Li
    Yin, Xunzhao
    Zhuo, Chang
    Schlichtmann, Ulf
    Li, Bing
    2024 ACM/IEEE 6TH SYMPOSIUM ON MACHINE LEARNING FOR CAD, MLCAD 2024, 2024,
  • [22] Do names echo semantics? A large-scale study of identifiers used in C plus plus 's named casts
    Petrescu, Constantin Cezar
    Smith, Sam
    Giavrimis, Rafail
    Dash, Santanu Kumar
    JOURNAL OF SYSTEMS AND SOFTWARE, 2023, 202
  • [23] A C plus plus Shared-Memory Ring-Buffer Framework for Large-Scale Data Acquisition Systems
    Ingles, Rolando
    Orlikowski, Mariusz
    Napieralski, Andrzej
    PROCEEDINGS OF THE 24TH INTERNATIONAL CONFERENCE MIXED DESIGN OF INTEGRATED CIRCUITS AND SYSTEMS - MIXDES 2017, 2017, : 161 - 166
  • [24] Vulnerable C/C plus plus Code Usage in IoT Software Systems
    Alnaeli, Saleh M.
    Sarnowski, Melissa
    Aman, Md Sayedul
    Abdelgawad, Ahmed
    Yelamarthi, Kumar
    2016 IEEE 3RD WORLD FORUM ON INTERNET OF THINGS (WF-IOT), 2016, : 348 - 352
  • [25] Generate Test Data from C/C plus plus Source Code using Weighted CFG and Boundary Values
    Tran Nguyen Huong
    Do Minh Kha
    Hoang-Viet Tran
    Pham Ngoc Hung
    2020 12TH INTERNATIONAL CONFERENCE ON KNOWLEDGE AND SYSTEMS ENGINEERING (IEEE KSE 2020), 2020, : 97 - 102
  • [26] Static analysis to make the most of CHERI C/C plus plus for existing code: improving memory safety at scale
    Dudina, Irina
    Stark, Ian
    INTERNATIONAL JOURNAL ON SOFTWARE TOOLS FOR TECHNOLOGY TRANSFER, 2025,
  • [27] MegaVul: A C/C plus plus Vulnerability Dataset with Comprehensive Code Representations
    Ni, Chao
    Shen, Liyu
    Yang, Xiaohu
    Zhu, Yan
    Wang, Shaohua
    2024 IEEE/ACM 21ST INTERNATIONAL CONFERENCE ON MINING SOFTWARE REPOSITORIES, MSR, 2024, : 738 - 742
  • [28] Parsing C/C plus plus Code without Pre-processing
    Padioleau, Yoann
    COMPILER CONSTRUCTION, PROCEEDINGS, 2009, 5501 : 109 - 125
  • [29] Interactive C plus plus code development using C plus plus Explorer and GitHub classroom for educational purposes
    Diehl, Patrick
    Brandt, Steven R.
    CONCURRENCY AND COMPUTATION-PRACTICE & EXPERIENCE, 2023, 35 (18):
  • [30] Computing with CodeRunner at Coventry University Automated summative assessment of Python']Python and C plus plus code
    Croft, David
    England, Matthew
    PROCEEDINGS OF THE 4TH CONFERENCE ON COMPUTING EDUCATION PRACTICE, CEP 2020, 2020,