"Program, enhance thyself!": demand-driven pattern-oriented program enhancement
|
||||||||||||||||||||||
ABSTRACTProgram enhancement refers to adding new functionality to an existing program. We argue that repetitive program enhancement tasks can be expressed as patterns, and that the application of such enhancement patterns can be automated. This paper presents a novel approach to pattern-oriented automated enhancement of object-oriented programs. Our approach augments the capabilities of an aspect compiler to capture the programmer's intent to enhance a program. In response to the programmer referencing a piece of functionality that is non-existent, our approach automatically synthesizes aspect code to supply the required functionality transparently. To improve flexibility and facilitate reuse, the synthesis and application of the new functionality is guided by declarative whenthen rules, concisely expressed using a rule base.
Our extensible automated program enhancement system, called DRIVEL1, extends the AspectJ compiler with aspect generating capabilities. The generation is controlled using the DROOLS rules engine. To validate our approach and automated tool, we have created a collection of enhancement libraries and used DRIVEL to apply them to the LibX Edition Builder, a large-scale, widely-used Web application. DRIVEL automatically enhanced the LibX Edition Builder's XML processing modules with structural navigation capabilities and caching, eliminating the need to implement this functionality by hand.
AUTHORS
|
|
||||||||||||||||||||||||||||||||||||||||
| View colleagues of Eli Tilevich | |||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
| View colleagues of Godmar Back | |||||||||||||||||||||||||||||||||||||||||
REFERENCESNote: 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
|
||
|
2
|
Bailey, A., and Back, G. LibX-a Firefox extension for enhanced library access. Library Hi Tech 24, 2 (2006), 290--304.
|
|
|
3
|
||
|
4
|
||
|
5
|
||
|
6
|
||
| |
7
|
|
| |
8
|
Nelio Cacho , Claudio Sant'Anna , Eduardo Figueiredo , Alessandro Garcia , Thais Batista , Carlos Lucena, Composing design patterns: a scalability study of aspect-oriented programming, Proceedings of the 5th international conference on Aspect-oriented software development, March 20-24, 2006, Bonn, Germany [doi>10.1145/1119655.1119672]
|
|
9
|
||
|
10
|
||
|
11
|
Codehaus Opensource Software Community. The Castor project. http://www.castor.org/index.html.
|
|
|
12
|
Coward, D. Java Servlet Specification Version 2.4, 2004.
|
|
| |
13
|
|
|
14
|
||
|
15
|
Eclipse Foundation. Eclipse Java development tools. http://www.eclipse.org/jdt.
|
|
|
16
|
||
|
17
|
Forgy, C. Rete: A Fast Algorithm for the Many Patterns/Many Objects Match Problem. Artificial Intelligence 19, 1 (1982), 17--37.
|
|
|
18
|
||
|
19
|
Garrett, J. J. Ajax: A new approach to web applications, 2005. http://www.adaptivepath.com/publications/essays/archives/000385.php.
|
|
|
20
|
||
| |
21
|
|
| |
22
|
William G. Griswold, Just-in-time architecture: planning software in an uncertain world, Joint proceedings of the second international software architecture workshop (ISAW-2) and international workshop on multiple perspectives in software development (Viewpoints '96) on SIGSOFT '96 workshops, p.8-11, October 16-18, 1996, San Francisco, California, USA [doi>10.1145/243327.243336]
|
| |
23
|
|
|
24
|
Hammouda, I. A tool infrastructure for model-driven development using aspectual patterns. Model-driven Software Development - Volume II of Research and Practice in Software Engineering (2005), 139--178.
|
|
| |
25
|
|
| |
26
|
|
|
27
|
||
|
28
|
||
|
29
|
||
|
30
|
Johnson, R. E., and Foote, B. Designing reusable classes. Journal of Object-Oriented Programming 1, 2 (1988), 22--35.
|
|
|
31
|
||
|
32
|
Kalleberg, K. T., and Visser, E. Fusing a transformation language with an open compiler. In Seventh Workshop on Language Descriptions, Tools, and Applications (LDTA'07) (Braga, Portugal, March 2007), A. Sloane and A. Johnstone, Eds., pp. 18--31.
|
|
|
33
|
||
|
34
|
||
|
35
|
||
|
36
|
||
|
37
|
Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J. M., and Irwing, J. Aspect-oriented programming. In ECOOP (1997), Springer-Verlag.
|
|
|
38
|
||
|
39
|
||
|
40
|
LibX TEAM. LibX browser plugin for libraries. http://libx. org.
|
|
|
41
|
||
|
42
|
||
|
43
|
||
|
44
|
Morel, B., and Alexander, P. Automating component adaptation for reuse. In Proceedings of the 18th IEEE International Conference on Automated Software Engineering (2003), pp. 142--151.
|
|
|
45
|
||
| |
46
|
|
|
47
|
||
|
48
|
||
|
49
|
||
|
50
|
||
|
51
|
Penix, J., and Alexander, P. Toward automated component adaptation. In Proceedings of the Ninth International Conference on Software Engineering and Knowledge Engineering (1997), Knowledge Systems Institute, pp. 535--542.
|
|
|
52
|
Proctor, M., Neale, M., Lin, P., and Frandsen, M. Drools Documentation. Tech. rep., JBoss Inc., 2006.
|
|
| |
53
|
Macneil Shonle , William G. Griswold , Sorin Lerner, Beyond refactoring: a framework for modular maintenance of crosscutting design idioms, Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering, September 03-07, 2007, Dubrovnik, Croatia [doi>10.1145/1287624.1287650]
|
|
54
|
Simonyi, C. The Death of Computer Languages, the Birth of Intentional Programming. In NATO Science Committee Conference (1995).
|
|
|
55
|
Smaragdakis, Y., and Batory, D. Application generators. Encyclopedia of Electrical and Electronics Engineering (2000).
|
|
|
56
|
||
|
57
|
Sutter, H. The free lunch is over: A fundamental turn toward concurrency in software. Dr. Dobbs Journal 30, 3 (2005).
|
|
|
58
|
||
|
59
|
CITED BY5 Citations
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INDEX TERMSThe ACM Computing Classification System (CCS rev.2012)
PUBLICATION| Title | AOSD '08 Proceedings of the 7th international conference on Aspect-oriented software development table of contents | ||||||||||||||||||||||||||||||||||||||||||||||
| Conference Chair | Theo D'Hondt Vrije Universiteit Brussel, Belgium | ||||||||||||||||||||||||||||||||||||||||||||||
| Pages | 13-24 | ||||||||||||||||||||||||||||||||||||||||||||||
| Publication Date | 2008-03-31 (yyyy-mm-dd) | ||||||||||||||||||||||||||||||||||||||||||||||
| Sponsors | AOSA Aspect-Oriented Software Association | ||||||||||||||||||||||||||||||||||||||||||||||
| In-Cooperations | SIGPLAN ACM Special Interest Group on Programming Languages | ||||||||||||||||||||||||||||||||||||||||||||||
| SIGSOFT ACM Special Interest Group on Software Engineering | |||||||||||||||||||||||||||||||||||||||||||||||
| Publisher | ACM New York, NY, USA ©2008 | ||||||||||||||||||||||||||||||||||||||||||||||
| ISBN: 978-1-60558-044-9 doi>10.1145/1353482.1353485 | |||||||||||||||||||||||||||||||||||||||||||||||
| Conference |
MODULARITYModularity (formerly known as Aspect-oriented Software Development - AOSD)
|
||||||||||||||||||||||||||||||||||||||||||||||
| Paper Acceptance Rate 17 of 79 submissions, 22% | |||||||||||||||||||||||||||||||||||||||||||||||
| Overall Acceptance Rate 178 of 718 submissions, 25% | |||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||
REVIEWS
COMMENTSBe the first to comment To Post a comment please sign in or create a free Web account
Table of Contents| SESSION: Aspects and generative programming | ||
| AspectT: aspect-oriented test case instantiation | ||
| Sebastian Benz | ||
| Pages: 1-12 | ||
| doi>10.1145/1353482.1353484 | ||
Full text: PDF
|
||
|
Test case instantiation is the transformation of abstract test cases into executable test scripts. Abstract test cases are either created during model based test case generation or are manually defined in a suitable modeling notation. The transformation ...
expand
|
||
| "Program, enhance thyself!": demand-driven pattern-oriented program enhancement | ||
| Eli Tilevich, Godmar Back | ||
| Pages: 13-24 | ||
| doi>10.1145/1353482.1353485 | ||
Full text: PDF
|
||
|
Program enhancement refers to adding new functionality to an existing program. We argue that repetitive program enhancement tasks can be expressed as patterns, and that the application of such enhancement patterns can be automated. This paper presents ...
expand
|
||
| Modularity first: a case for mixing AOP and attribute grammars | ||
| Pavel Avgustinov, Torbjörn Ekman, Julian Tibble | ||
| Pages: 25-35 | ||
| doi>10.1145/1353482.1353486 | ||
Full text: PDF
|
||
|
We have reimplemented the frontend of the extensible AspectBench Compiler for AspectJ, using the aspect-oriented meta-compiler JastAdd. The original frontend was purely object-oriented. Each frontend extends Java with AspectJ and an additional set of ...
expand
|
||
| SESSION: Reasoning about aspects | ||
| AJANA: a general framework for source-code-level interprocedural dataflow analysis of AspectJ software | ||
| Guoqing Xu, Atanas Rountev | ||
| Pages: 36-47 | ||
| doi>10.1145/1353482.1353488 | ||
Full text: PDF
|
||
|
Aspect-oriented software presents new challenges for the designers of static analyses. Our work aims to establish systematic foundations for dataflow analysis of AspectJ software. We propose a control- and data-flow program representation for AspectJ ...
expand
|
||
| Reasoning about aspects with common sense | ||
| Klaus Ostermann | ||
| Pages: 48-59 | ||
| doi>10.1145/1353482.1353489 | ||
Full text: PDF
|
||
|
There has been a lot of debate about the modularity of aspect-oriented programs, and in particular the ability to reason about such programs in a modular way, although it has never been defined precisely what modular reasoning means. This work analyzes ...
expand
|
||
| SESSION: Programming language design and implementation I | ||
| StrongAspectJ: flexible and safe pointcut/advice bindings | ||
| Bruno De Fraine, Mario Südholt, Viviane Jonckers | ||
| Pages: 60-71 | ||
| doi>10.1145/1353482.1353491 | ||
Full text: PDF
|
||
|
AspectJ was designed as a seamless aspect-oriented extension of the Java programming language. However, unlike Java, AspectJ does not have a safe type system: an accepted binding between a pointcut and an advice can give rise to type errors at runtime. ...
expand
|
||
| EJFlow: taming exceptional control flows in aspect-oriented programming | ||
| Nelio Cacho, Fernando Castor Filho, Alessandro Garcia, Eduardo Figueiredo | ||
| Pages: 72-83 | ||
| doi>10.1145/1353482.1353492 | ||
Full text: PDF
|
||
|
Many of the problems that stem from the use of exception handling are caused by the local way in which exceptions are handled. It demands that developers understand the source of an exception, the place where it is handled, and everything in between. ...
expand
|
||
| Relational aspects as tracematches | ||
| Eric Bodden, Reehan Shaikh, Laurie Hendren | ||
| Pages: 84-95 | ||
| doi>10.1145/1353482.1353493 | ||
Full text: PDF
|
||
|
The relationships between objects in an object-oriented program are an essential property of the program's design and implementation. Two previous approaches to implement relationships with aspects were association aspects, an AspectJ-based language ...
expand
|
||
| Test-based pointcuts for robust and fine-grained join point specification | ||
| Kouhei Sakurai, Hidehiko Masuhara | ||
| Pages: 96-107 | ||
| doi>10.1145/1353482.1353494 | ||
Full text: PDF
|
||
|
We propose test-based pointcuts, a novel pointcut mechanism for AspectJ-like aspect-oriented programming languages. The idea behind the test-based pointcuts is to specify join points through unit test cases associated with the target program. ...
expand
|
||
| SESSION: Aspects for adaptation and variability support | ||
| Edicts: implementing features with flexible binding times | ||
| Venkat Chakravarthy, John Regehr, Eric Eide | ||
| Pages: 108-119 | ||
| doi>10.1145/1353482.1353496 | ||
Full text: PDF
|
||
|
In a software product line, the binding time of a feature is the time at which one decides to include or exclude a feature from a product. Typical binding site implementations are intended to support a single binding time only, e.g., compile time ...
expand
|
||
| Support for distributed adaptations in aspect-oriented middleware | ||
| Eddy Truyen, Nico Janssens, Frans Sanen, Wouter Joosen | ||
| Pages: 120-131 | ||
| doi>10.1145/1353482.1353497 | ||
Full text: PDF
|
||
|
Many aspect-oriented middleware platforms support run-time aspect weaving, but do not support coordinating distributed changes to a set of aspects at run-time. A distributed change entails weaving or unweaving multiple inter-dependent aspects that are ...
expand
|
||
| SESSION: Tool support | ||
| Tool-supported refactoring of aspect-oriented programs | ||
| Jan Wloka, Robert Hirschfeld, Joachim Hänsel | ||
| Pages: 132-143 | ||
| doi>10.1145/1353482.1353499 | ||
Full text: PDF
|
||
|
Aspect-oriented programming languages provide new composition mechanisms for improving the modularity of crosscutting concerns. Implementations of such language support use advanced program representations, like abstract syntax trees or stack traces, ...
expand
|
||
| Tool support for understanding and diagnosing pointcut expressions | ||
| Lingdong Ye, Kris De Volder | ||
| Pages: 144-155 | ||
| doi>10.1145/1353482.1353500 | ||
Full text: PDF
|
||
|
In this paper, we present algorithms that compute two kinds of information that can help AspectJ developers diagnose and fix potential problems with their pointcuts. First, we present an algorithm to compute almost matched joinpoints. Second, we present ...
expand
|
||
| View-based maintenance of graphical user interfaces | ||
| Peng Li, Eric Wohlstadter | ||
| Pages: 156-167 | ||
| doi>10.1145/1353482.1353501 | ||
Full text: PDF
|
||
|
One difficulty in software maintenance is that the relationship between observed program behavior and source code is not always clear. In this paper we are concerned specifically with the maintenance of graphical user interfaces (GUIs). User interface ...
expand
|
||
| SESSION: Programming language design and implementation II | ||
| Expressive scoping of dynamically-deployed aspects | ||
| Éric Tanter | ||
| Pages: 168-179 | ||
| doi>10.1145/1353482.1353503 | ||
Full text: PDF
|
||
|
Several aspect languages and frameworks have recognized the need for dynamic deployment of aspects. However, they do not provide sufficiently expressive means to precisely specify the scope of deployed aspects. As a result, programmers have to resort ...
expand
|
||
| Lightweight virtual machine support for AspectJ | ||
| Ryan M. Golbeck, Samuel Davis, Immad Naseer, Igor Ostrovsky, Gregor Kiczales | ||
| Pages: 180-190 | ||
| doi>10.1145/1353482.1353504 | ||
Full text: PDF
|
||
|
Advice weaving can be efficiently supported with only lightweight enhancements to existing Virtual Machines. Performing weaving at the Java bytecode (JBC) level while preserving appropriate metadata enables the VM to understand the AspectJ-specific semantics ...
expand
|
||
| Nu: a dynamic aspect-oriented intermediate language model and virtual machine for flexible runtime adaptation | ||
| Robert Dyer, Hridesh Rajan | ||
| Pages: 191-202 | ||
| doi>10.1145/1353482.1353505 | ||
Full text: PDF
|
||
|
A variety of dynamic aspect-oriented language constructs are proposed in recent literature with corresponding, compelling use cases. Such constructs demonstrate the need to dynamically adapt the set of join points intercepted at a fine-grained level. ...
expand
|
||