Footprint and feature management using aspect-oriented programming techniques

Applications accrue features in response to the needs of all users, yet the associated code bloating and performance loss often render an application unsuitable for some users, particularly those interested in using the application in an embedded system. As a result, developers are often faced with either reinventing pieces of an application, custom tailored to their needs, or they are faced with the daunting task of refactoring an existing application to obtain an appropriate subset of that application's functionality. In either case, subsequent development, maintenance and testing of the application becomes more complex, due to the effects of future revisions on all of the derived subsets.In this paper, we report on our experience in obtaining subsets of an application's functionality, using a relatively new programming-language paradigm and tool to achieve the subsets compositionally. Instead of refactoring a large, feature-rich application, a feature can be added by including that feature's aspect in the set provided to an aspect compiler. In particular, a minimal, base implementation was developed in Java and features were added by supplying the appropriate advice to an AspectJ compiler. We describe our approach and present footprint and performance results for automatically derived subsets of an event channel.

[1]  Christopher Gill,et al.  Building Customizable Middleware using Aspect Oriented Programming , 2001 .

[2]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[3]  Frederick P. Brooks,et al.  No Silver Bullet: Essence and Accidents of Software Engineering , 1987 .

[4]  Douglas C. Schmidt,et al.  The design and performance of a real-time CORBA event service , 1997, OOPSLA '97.

[5]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[6]  Gerald Brose,et al.  JacORB 1.4 Programming Guide , 2002 .

[7]  Douglas C. Schmidt,et al.  Designing and Optimizing a Scalable CORBA Notification Service , 2001 .

[8]  Doug Lea Concurrent Programming in Java. Second Edition: Design Principles and Patterns , 1999 .

[9]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[10]  Ken Arnold,et al.  The Java Programming Language , 1996 .

[11]  Douglas C. Schmidt,et al.  Patterns and performance of a CORBA event service for large-scale distributed interactive simulations , 2002, Comput. Syst. Sci. Eng..

[12]  A. Watson,et al.  OMG (Object Management Group) architecture and CORBA (common object request broker architecture) specification , 2002 .

[13]  Douglas C. Schmidt,et al.  Designing and Optimizing a Scalable CORBA Notification Service , 2001, OM '01.

[14]  Wolfgang Schröder-Preikschat,et al.  AspectC++: an aspect-oriented extension to the C++ programming language , 2002 .

[15]  Roger Riggs,et al.  A Distributed Object Model for the Java System , 1996, Comput. Syst..

[16]  Massachusett Framingham,et al.  The Common Object Request Broker: Architecture and Specification Version 3 , 2003 .