skip to main content
10.1145/1353482.1353485acmotherconferencesArticle/Chapter ViewAbstractPublication PagesmodularityConference Proceedingsconference-collections
research-article

"Program, enhance thyself!": demand-driven pattern-oriented program enhancement

Published: 31 March 2008 Publication History

Abstract

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 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.

References

[1]
Back, G. Datascript - a specification and scripting language for binary data. In Proceedings of the ACM Conference on Generative Programming and Component Engineering Proceedings (GPCE 2002), published as LNCS 2487 (Pittsburgh, PA, Oct. 2002), ACM, pp. 66--77.
[2]
Bailey, A., and Back, G. LibX-a Firefox extension for enhanced library access. Library Hi Tech 24, 2 (2006), 290--304.
[3]
Basili, V., and Boehm, B. COTS-based systems top 10 list. Computer 34, 5 (2001), 91--95.
[4]
Boehm, B., and Abts, C. COTS integration: Plug and pray? Computer 32, 1 (1999), 135--138.
[5]
Boehm, B. W. Software Engineering Economics. Prentice Hall PTR, Upper Saddle River, NJ, 1981.
[6]
Boehm, B. W. A spiral model of software development and enhancement. Computer 21, 5 (1988), 61--72.
[7]
Bryant, A., Catton, A., Volder, K. D., and Murphy, G. C. Explicit programming. In AOSD 2002 (New York, NY, USA, 2002), ACM, pp. 10--18.
[8]
Cacho, N., Sant'Anna, C., Figueiredo, E., Garcia, A., Batista, T., and Lucena, C. Composing design patterns: a scalability study of aspect-oriented programming. In 5th International Conference on Aspect-Oriented Software Development (Bonn, Germany, 2006), ACM Press, pp. 109--121.
[9]
Chen, H., and Cheng, R. ZK: Ajax without the Javascript Framework. aPress, Aug. 2007.
[10]
Clarke, S., and Walker, R. J. Composition patterns: an approach to designing reusable aspects. In 23rd International Conference on Software Engineering (Toronto, 2001), IEEE Computer Society, pp. 5--14.
[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]
Cunha, C. A., Sobral, J. L., and Monteiro, M. P. Reusable aspect-oriented implementations of concurrency patterns and mechanisms. In 5th International Conference on Aspect-Oriented Software Development (Bonn, Germany, 2006), ACM Press, pp. 134--145.
[14]
Czarnecki, K., and Eisenecker, U. Generative programming: methods, tools, and applications. ACM Press/Addison-Wesley Publishing Co. New York, NY, USA, 2000.
[15]
Eclipse Foundation. Eclipse Java development tools. http://www.eclipse.org/jdt.
[16]
Egyed, A., and Balzer, R. Integrating cots software into systems through instrumentation and reasoning. Automated Software Engineering 13, 1 (2006), 41--64.
[17]
Forgy, C. Rete: A Fast Algorithm for the Many Patterns/Many Objects Match Problem. Artificial Intelligence 19, 1 (1982), 17--37.
[18]
Gamma, E., Helm, R., Johnson, R., and Vlissides, J. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Longman Publishing Co., Inc., 1995.
[19]
Garrett, J. J. Ajax: A new approach to web applications, 2005. http://www.adaptivepath.com/publications/essays/archives/000385.php.
[20]
Goth, G. XML: The Center of Attention Up and Down the Stack. Distributed Systems Online, IEEE 7, 1 (2006), 3--3.
[21]
Gray, J., and Roychoudhury, S. A technique for constructing aspect weavers using a program transformation engine. In AOSD '04: Proceedings of the 3rd international conference on Aspect-oriented software development (New York, NY, USA, 2004), ACM Press, pp. 36--45.
[22]
Griswold, W. G. Just-in-time architecture: planning software in an uncertain world. In 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 (New York, NY, USA, 1996), ACM Press, pp. 8--11.
[23]
Griswold, W. G., and Notkin, D. Automated assistance for program restructuring. ACM Trans. Softw. Eng. Methodol. 2, 3 (1993), 228--269.
[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]
Hannemann, J., and Kiczales, G. Design pattern implementation in Java and AspectJ. In 17th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (Seattle, Washington, 2002), ACM Press, pp. 161--173.
[26]
Heineman, G. T. Adaptation and software architecture. In 3rd International Workshop on Software Architecture (Orlando, Florida, 1998), ACM Press, pp. 61--64.
[27]
Henthorne, C., and Tilevich, E. Code generation on steroids: Enhancing COTS code generators via generative aspects. In Second International Workshop on Incorporating COTS Software into Software Systems: Tools and Techniques IWICS 2007 (2007).
[28]
Hürsch, W. L., and Seiter, L. M. Automating the evolution of object-oriented systems. In International Symposium on Object Technologies for Advanced Software (1996), Springer Verlag, Lecture Notes in Computer Science, pp. 2--21.
[29]
Johnson, R. J2EE development frameworks. Computer 38, 1 (2005), 107--110.
[30]
Johnson, R. E., and Foote, B. Designing reusable classes. Journal of Object-Oriented Programming 1, 2 (1988), 22--35.
[31]
Kalleberg, K., and Visser, E. Combining Aspect Oriented and Strategic Programming. Electronic Notes in Theoretical Computer Science 147 (2006), 5--30.
[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]
Kellens, A., Mens, K., Brichau, J., and Gybels, K. Managing the evolution of aspect-oriented software with modelbased pointcuts. In ECOOP 2006 Object-Oriented Programming (2006), vol. 4067, Springer Verlag, pp. 501--525.
[34]
Keller, R. Binary component adaptation. In 12th European Conference on Object-Oriented Programming (1998), Springer-Verlag, pp. 307--329.
[35]
Kemerer, C., and Slaughter, S. Determinants of software maintenance profiles: an empirical investigation. Journal of Software Maintenance Research and Practice 9, 4 (1997), 235--251.
[36]
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., and Griswold, W. G. An overview of AspectJ. In ECOOP (2001), Springer-Verlag.
[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]
Kniesel, G. Type-safe delegation for run-time component adaptation. In 13th European Conference on Object-Oriented Programming (1999), Springer-Verlag, pp. 351--366.
[39]
Lehman, M. M., and Belady, L. A., Eds. Program evolution: processes of software change. Academic Press Professional, Inc., San Diego, CA, USA, 1985.
[40]
LibX TEAM. LibX browser plugin for libraries. http://libx. org.
[41]
Lieberherr, K. J. Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns. PWS Publishing Company, Boston, 1996. ISBN 0-534-94602-X.
[42]
Lientz, B., and Swanson, E. Software Maintenance Management. Addison-Wesley Longman Publishing Co., Inc. Boston, MA, USA, 1980.
[43]
McLaughlin, L. Automated programming: the next wave of developer power tools. Software, IEEE 23, 3 (2006), 91--93.
[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]
Morel, B., and Alexander, P. Spartacas: Automating component reuse and adaptation. IEEE Transactions on Software Engineering 30, 9 (2004), 587--600.
[46]
Morisio, M., Seaman, C. B., Parra, A. T., Basili, V. R., Kraft, S. E., and Condon, S. E. Investigating and improving a cots-based software development. In ICSE '00: Proceedings of the 22nd international conference on Software engineering (New York, NY, USA, 2000), ACM Press, pp. 32--41.
[47]
Notkin, D., and Griswold, W. G. Extension and software development. In Proceedings of the 10th International Conference on Software Engineering (Singapore, 1988), IEEE Computer Society Press, pp. 274--283.
[48]
Oreizy, P., Medvidovic, N., and Taylor, R. Architecture-based runtime software evolution. In Proceedings of the 20th International Conference on Software Engineering (ICSE) (1998), pp. 177--186.
[49]
Orleans, D., and Lieberherr, K. DJ: Dynamic Adaptive Programming in Java. In Reflection 2001: Meta-level Architectures and Separation of Crosscutting Concerns (2001), Springer.
[50]
Parnas, D. L. Designing software for ease of extension and contraction. In 3rd International Conference on Software Engineering (Atlanta, Georgia, 1978), IEEE Press, pp. 264--277.
[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]
Shonle, M., Griswold, W., and Lerner, S. Beyond refactoring: a framework for modular maintenance of crosscutting design idioms. In Proceedings of the 14th ACM SIGSOFT Symposium on Foundations of Software Engineering (FSE) (2007), ACM Press New York, NY, USA, pp. 175--184.
[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]
Soares, S., Borba, P., and Laureano, E. Distribution and Persistence as Aspects. Software: Practice&Experience 36, 6 (2006).
[57]
Sutter, H. The free lunch is over: A fundamental turn toward concurrency in software. Dr. Dobbs Journal 30, 3 (2005).
[58]
Tatsubori, M., Chiba, S., Killijian, M.-O., and Itano, K. OpenJava: A class-based macro system for Java. In Reflection and Software Engineering. Springer Verlag, 2000, pp. 117--133.
[59]
Wilde, N., Matthews, P., and Huitt, R. Maintaining objectoriented software. IEEE Software 10, 1 (1993), 75--80.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Other conferences
AOSD '08: Proceedings of the 7th international conference on Aspect-oriented software development
March 2008
212 pages
ISBN:9781605580449
DOI:10.1145/1353482
  • Conference Chair:
  • Theo D'Hondt
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

  • AOSA: Aspect-Oriented Software Association

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 31 March 2008

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. aspect-oriented programming
  2. meta-programming
  3. patterns
  4. program enhancement
  5. rules engines

Qualifiers

  • Research-article

Conference

AOSD08
Sponsor:
  • AOSA

Acceptance Rates

Overall Acceptance Rate 41 of 139 submissions, 29%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)4
  • Downloads (Last 6 weeks)0
Reflects downloads up to 30 Jan 2025

Other Metrics

Citations

Cited By

View all

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media