Loading...
Source-to-Source Refactoring and Elimination of Global Variables in C Programs
Sankaranarayanan, Hemaiyer ; Kulkarni, Prasad A.
Sankaranarayanan, Hemaiyer
Kulkarni, Prasad A.
Citations
Altmetric:
Abstract
A global variable in C/C++ is one that is declared outside a function, and whose scope extends the lifetime of the entire
program. Global variables cause problems for program dependability, maintainability, extensibility, verification, and
thread-safety. However, global variables can also make co
ding more convenient and improve program performance. We
have found the use of global variables to remain unabated and
extensive in real-world software. In this paper we present
a source-to-source refactoring tool to au
tomatically detect and localize global variables in a program. We implement a
compiler based transformation to find the
best location to redefine each global va
riable as a local. For each global, our
algorithm initializes the corresponding new local variable, pa
sses it as an argument to necessary functions, and updates
the source lines that used the global to now instead use th
e corresponding local or argumen
t. We also characterize the
use of global variables in standard benchmark programs. We study the effect of our transformation on static program
properties, such as change in the number of function ar
guments and program state visibility. Additionally, we quantify
dynamic program features, including memory and runtime performance, before and after our localizing transformation.
Description
A grant from the One-University Open Access Fund at the University of Kansas was used to defray the author’s publication fees in this Open Access journal. The Open Access Fund, administered by librarians from the KU, KU Law, and KUMC libraries, is made possible by contributions from the offices of KU Provost, KU Vice Chancellor for Research & Graduate Studies, and KUMC Vice Chancellor for Research. For more information about the Open Access Fund, please see http://library.kumc.edu/authors-fund.xml.
Date
2013-05-01
Journal Title
Journal ISSN
Volume Title
Publisher
Scientific Research
Research Projects
Organizational Units
Journal Issue
Keywords
Citation
Sankaranarayanan, H. and Kulkarni, P.A. (2013) Source-to-Source Refactoring and Elimination of Global Variables in C Programs. A Journal of Software Engineering and Applications, 1-10. http://dx.doi.org/10.4236/jsea.2013.65033