Macro Impact Analysis Using Macro Slicing

Abstract

The expressiveness of the C/C++ preprocessing facility enables the development of highly configurable source code. However, the usage of language constructs like macros also bears the potential of resulting in highly incomprehensible and unmaintainable code, which is due to the flexibility and the “cryptic” nature of the preprocessor language. This could be overcome if suitable analysis tools were available for preprocessor-related issues, however, this is not the case (for instance, none of the modern Integrated Development Environments provides features to efficiently analyze and browse macro usage). A conspicuous problem in software maintenance is the correct (safe and efficient) management of change. In particular, due to the aforementioned reasons, determining efficiently the impact of a change in a specific macro definition is not yet possible. In this paper, we describe a method for the impact analysis of macro definitions, which significantly differs from the previous approaches. We reveal and analyze the dependencies among macro-related program points using the so-called macro slices.

Publication
Proceedings of the 2nd International Conference on Software and Data Technologies (ICSOFT 2007), Barcelona, Spain, Pages 230–235

BibTeX:

@InProceedings{VBF07,
    author    = {Vid{\'a}cs, L{\'a}szl{\'o} and Besz{\'e}des, {\'A}rp{\'a}d and Ferenc, Rudolf},
    title     = {Macro Impact Analysis Using Macro Slicing},
    booktitle = {Proceedings of the 2nd International Conference on Software and Data Technologies (ICSOFT 2007)},
    year      = {2007},
    volume    = {SE},
    pages     = {230--235},
    address   = {Barcelona, Spain},
    month     = jul,
    publisher = {INSTICC Press},
    keywords  = {Change impact analysis, macros, preprocessing, C, C++, program understanding, program analysis, maintenance, program slicing, dynamic analysis},
}