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 条
  • [41] NOBRAINER: A Tool for Example-Based Transformation of C/C plus plus Code
    Savchenko, V. V.
    Sorokin, K. S.
    Bronshtein, I. E.
    Volkov, A. S.
    Kachanov, V. V.
    Pankratenko, G. A.
    Ermakov, M. K.
    Markov, S. I.
    Spiridonov, A. V.
    Aleksandrov, I. V.
    PROGRAMMING AND COMPUTER SOFTWARE, 2020, 46 (05) : 362 - 372
  • [42] Nobrainer: An Example-Driven Framework for C/C plus plus Code Transformations
    Savchenko, Valeriy
    Sorokin, Konstantin
    Pankratenko, Georgiy
    Markov, Sergey
    Spiridonov, Alexander
    Alexandrov, Ilia
    Volkov, Alexander
    Sun, Kwangwon
    PERSPECTIVES OF SYSTEM INFORMATICS (PSI 2019), 2019, 11964 : 140 - 155
  • [43] Fast analysis of source code in C and C plus
    Savitskii, V. O.
    Sidorov, D. V.
    PROGRAMMING AND COMPUTER SOFTWARE, 2013, 39 (01) : 49 - 55
  • [44] Detection of Memory Leaks in C/C plus plus Code via Machine Learning
    Andrzejak, Artur
    Eichler, Felix
    Ghanavati, Mohammadreza
    2017 IEEE 28TH INTERNATIONAL SYMPOSIUM ON SOFTWARE RELIABILITY ENGINEERING WORKSHOPS (ISSREW 2017), 2017, : 252 - 258
  • [45] CoBOT: Static C/C plus plus Bug Detection in the Presence of Incomplete Code
    Gao, Qing
    Zhang, Shikun
    Chen, Xianglong
    Ma, Sen
    Shao, Sihao
    Sui, Yulei
    Zhao, Guoliang
    Ma, Luyao
    Ma, Xiao
    Duan, Fuyao
    Deng, Xiao
    2018 IEEE/ACM 26TH INTERNATIONAL CONFERENCE ON PROGRAM COMPREHENSION (ICPC 2018), 2018, : 385 - 388
  • [46] GoCxx: a tool to easily leverage C plus plus legacy code for multicore-friendly Go libraries and frameworks
    Binet, Sebastien
    INTERNATIONAL CONFERENCE ON COMPUTING IN HIGH ENERGY AND NUCLEAR PHYSICS 2012 (CHEP2012), PTS 1-6, 2012, 396
  • [47] An automated test data generation method for void pointers and function pointers in C/C plus plus libraries and embedded projects
    Lam Nguyen Tung
    Hoang-Viet Tran
    Khoi Nguyen Le
    Pham Ngoc Hung
    INFORMATION AND SOFTWARE TECHNOLOGY, 2022, 145
  • [48] A semi-automated large-scale process for the production of recombinant tagged proteins in the Baculovirus expression system
    Schlaeppi, Jean-Marc
    Henke, Mario
    Mahnke, Marion
    Hartmann, Steffen
    Schmitz, Rita
    Pouliquen, Yann
    Kerins, Brendan
    Weber, Eric
    Kolbinger, Frank
    Kocher, Hans P.
    PROTEIN EXPRESSION AND PURIFICATION, 2006, 50 (02) : 185 - 195
  • [49] Migrating large codebases to C plus plus Modules
    Takahashi, Y.
    Shadura, O.
    Vassilev, V.
    19TH INTERNATIONAL WORKSHOP ON ADVANCED COMPUTING AND ANALYSIS TECHNIQUES IN PHYSICS RESEARCH, 2020, 1525
  • [50] A Research Method for Semi-Automated Large-Scale Cultivation of Maize to Full Maturity in an Artificial Environment
    Wiethorn, Matthew
    Penn, Chad
    Camberato, James
    AGRONOMY-BASEL, 2021, 11 (10):