|
ABSTRACT
Systems software uses conditional compilation to manage crosscutting concerns in a very fine-grained and efficient way, but at the expense of tangled and scattered conditional code. Refactoring of conditional compilation into aspects gets rid of these issues, but it is not clear yet for which patterns of conditional compilation aspects make sense and whether or not current aspect technology is able to express these patterns. To investigate these two problems, this paper presents a graphical ``preprocessor blueprint'' model which offers a queryable representation of the syntactical interaction of conditional compilation and the source code. A case study on the Parrot VM shows that preprocessor blueprints are able to express and query for the four commonly known patterns of conditional compilation usage, and that they allow to discover seven additional important patterns. By correlating each pattern's potential for refactoring into advice and each pattern's evolution of the number of occurrences, we show that refactoring into advice in the Parrot VM is a good alternative for three of the eleven patterns, whereas for the other patterns trade-offs have to be considered between robustness and fine-grainedness of the advice.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
B. Adams. Co-evolution of Source Code and the Build System: Impact on the Introduction of AOSD in Legacy Systems. PhD thesis, Ghent University, Ghent, Belgium, March 2008.
|
 |
2
|
Bram Adams , Bart Van Rompaey , Celina Gibbs , Yvonne Coady, Aspect mining in the presence of the C preprocessor, Proceedings of the 2008 AOSD workshop on Linking aspect technology and evolution, p.1-6, March 31-April 04, 2008, Brussels, Belgium
[doi> 10.1145/1404953.1404954]
|
| |
3
|
|
| |
4
|
|
| |
5
|
|
 |
6
|
Magiel Bruntink , Arie van Deursen , Maja D'Hondt , Tom Tourwé, Simple crosscutting concerns are not so simple: analysing variability in large-scale idioms-based implementations, Proceedings of the 6th international conference on Aspect-oriented software development, March 12-16, 2007, Vancouver, British Columbia, Canada
[doi> 10.1145/1218563.1218586]
|
| |
7
|
|
| |
8
|
cloc. http://cloc.sourceforge.net.
|
 |
9
|
|
| |
10
|
B. Du Bois, B. Van Rompaey, K. Meijfroidt, and E. Suijs. Supporting reengineering scenarios with FETCH: an experience report. In Proc. of the 3rd International ERCIM Workshop on Software Evolution, ICSM, pages 69--82, Paris, France, October 2007.
|
| |
11
|
M. Eaddy and A. V. Aho. Statement annotations for fine-grained advising. In Proc. of the Workshop on Reflection, AOP, and Meta-Data for Software Evolution (RAM-SE), ECOOP, pages 89--99, Nantes, France, July 2006. Fakultät für Informatik, Universität Magdeburg.
|
| |
12
|
|
| |
13
|
|
| |
14
|
|
| |
15
|
Fetch. http://lore.cmi.ua.ac.be/fetchWiki/index.php.
|
 |
16
|
Eduardo Figueiredo , Nelio Cacho , Claudio Sant'Anna , Mario Monteiro , Uira Kulesza , Alessandro Garcia , Sergio Soares , Fabiano Ferrari , Safoora Khan , Fernando Castor Filho , Francisco Dantas, Evolving software product lines with aspects: an empirical study on design stability, Proceedings of the 30th international conference on Software engineering, May 10-18, 2008, Leipzig, Germany
[doi> 10.1145/1368088.1368124]
|
| |
17
|
|
 |
18
|
|
| |
19
|
|
| |
20
|
G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. V. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-Oriented Programming. In Proc. of the 11th European Conference on Object-Oriented Programming (ECOOP), volume 1241, pages 220---242, Jyväskylä, Finland, 1997. Springer-Verlag.
|
| |
21
|
G. Kniesel, T. Rho, and S. Hanenberg. Evolvable pattern implementations need generic aspects. In Proc. of the Workshop on Reflection, AOP and Meta-Data for Software Evolution (RAM-SE), ECOOP. Springer Verlag, Oslo, Norway, June 2004.
|
| |
22
|
|
| |
23
|
|
| |
24
|
|
| |
25
|
P. Livadas and D. Small. Understanding code containing preprocessor constructs. Proc. of the IEEE 3d Workshop on Program Comprehension, pages 89--97, November 1994.
|
 |
26
|
|
| |
27
|
|
| |
28
|
Parrot VM. http://parrotcode.org/.
|
| |
29
|
Parrot VM design documents. http://www.parrotcode.org/docs/pdd/.
|
 |
30
|
Alison Reynolds , Marc E. Fiuczynski , Robert Grimm, On the feasibility of an AOSD approach to Linux kernel extensions, Proceedings of the 2008 AOSD workshop on Aspects, components, and patterns for infrastructure software, p.1-7, March 31-April 08, 2008, Brussels, Belgium
[doi> 10.1145/1404891.1404899]
|
 |
31
|
Nieraj Singh , Celina Gibbs , Yvonne Coady, C-CLR: a tool for navigating highly configurable system software, Proceedings of the 6th workshop on Aspects, components, and patterns for infrastructure software, p.9-es, March 12-16, 2007, Vancouver, British Columbia, Canada
[doi> 10.1145/1233901.1233910]
|
| |
32
|
H. Spencer and G. Collyer. #ifdef considered harmful or portability experience with C News. In R. Adams, editor, Proc. of the USENIX Conference, pages 185--198, Baltimore, MD, USA, June 1992. USENIX Association.
|
| |
33
|
|
| |
34
|
A. Sutton and J. Maletic. How we manage portability and configuration with the C preprocessor. In Proc. of the 23rd International Conference on Software Maintenance (ICSM), Paris, France, October 2007.
|
| |
35
|
Uncrustify. http://uncrustify.sourceforge.net/.
|
| |
36
|
|
| |
37
|
|
| |
38
|
D. A. Wheeler. Sloccount. http://www.dwheeler.com/sloccount/.
|
INDEX TERMS
Primary Classification:
D.
Software
D.2
SOFTWARE ENGINEERING
D.2.7
Distribution, Maintenance, and Enhancement
Subjects:
Restructuring, reverse engineering, and reengineering
Additional Classification:
D.
Software
D.1
PROGRAMMING TECHNIQUES
D.1.m
Miscellaneous
D.3
PROGRAMMING LANGUAGES
D.3.4
Processors
Subjects:
Preprocessors
General Terms:
Documentation,
Experimentation,
Measurement
Keywords:
aosd,
aspicere,
conditional compilation,
historical analysis,
parrot vm,
r3v3rs3
|