At their most essential, aspect languages, program analysis tools, and refactoring tools attempt to give programmers mechanisms to make it more cost effective to manage the crosscutting behavior in their programs. Arcum is a tool to help manage crosscutting that lets programmers define custom program checks and program transformations, using a declarative language. In this paper we present a study aimed at investigating how programmers use Arcum for managing the complexity of crosscutting. In particular, we recorded and transcribed three pairs of programmers performing a variety of tasks using Arcum. By informally analyzing the language in the transcript, we identify the metaphors that the participants used to think about crosscutting design idioms, and the development styles that they used to build solutions. Based on these observations, we reflect on how the use of Arcum relates to traditional programming and AOP approaches, and propose improvements to be made to the development environment to help programmers handle the challenges of crosscutting code. A key observation was that the programmers actively and ingeniously sought ways to force the tool to give early feedback, suggesting that AOP tools like Arcum could do more to support early feedback.
The authors of these documents have submitted their reports to this technical report series for the purpose of non-commercial dissemination of scientific work. The reports are copyrighted by the authors, and their existence in electronic format does not imply that the authors have relinquished any rights. You may copy a report for scholarly, non-commercial purposes, such as research or instruction, provided that you agree to respect the author's copyright. For information concerning the use of this document for other than research or instructional purposes, contact the authors. Other information concerning this technical report series can be obtained from the Computer Science and Engineering Department at the University of California at San Diego, firstname.lastname@example.org.
[ Search ]