ACM Home Page
Please provide us with feedback. Feedback
Can we refactor conditional compilation into aspects?
Full text PdfPdf (2.24 MB)
Source
Aspect-oriented software development archive
Proceedings of the 8th ACM international conference on Aspect-oriented software development table of contents
Charlottesville, Virginia, USA
SESSION: DSAL and applications table of contents
Pages 243-254  
Year of Publication: 2009
ISBN:978-1-60558-442-3
Authors
Bram Adams  Queen's University, Kingston, ON, Canada
Wolfgang De Meuter  Vrije Universiteit Brussel, Brussels, Belgium
Herman Tromp  Ghent University, Ghent, Belgium
Ahmed E. Hassan  Queen's University, Kingston, ON, Canada
Sponsors
SIGSOFT: ACM Special Interest Group on Software Engineering
SIGPLAN: ACM Special Interest Group on Programming Languages
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 9,   Downloads (12 Months): 85,   Citation Count: 0
Additional Information:

abstract   references   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1509239.1509274
What is a DOI?

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
 
3
 
4
 
5
6
 
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
 
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
31
 
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/.

Collaborative Colleagues:
Bram Adams: colleagues
Wolfgang De Meuter: colleagues
Herman Tromp: colleagues
Ahmed E. Hassan: colleagues