ABSTRACT
This paper presents an approach to update object-oriented applications at run time. We introduce an update model that leverages aspect technology to express a software update as a modular unit. Although many updates remain encapsulated within a single method body, the nature of software updates is clearly crosscutting: Classes depend on each other, and if the interface of one class changes, all clients of the class are affected. We have designed and implemented an update analyzer that automatically compares two versions of a Java program and extracts the necessary updates expressed as aspects. As execution platform, we rely on an aspect-enabled virtual machine to weave the generated updating aspects at run time. The update analyzer uses only a small subset of the user-level services provided by the VM: around advice for method redefinitions as well as field and method pointcuts for single join-point selection. To validate our approach, we have conducted an empirical study on eight real-world Java applications whose versions encompass several years of development. The study shows that most updates (i.e., 98%) can be handled by the dynamic updating system and that most updates (i.e., 92%) can be extracted fully automatically or with only modest programmer intervention.
- S. Apel, T. Thomas, and G. Saake. Aspectual Mixin Layers: Aspects and Features in Concert. In ICSE, pages 122--131, 2006. Google ScholarDigital Library
- A. Bergel, S. Ducasse, and O. Nierstrasz. Classbox/J: Controlling the Scope of Change in Java. In OOPSLA, pages 177--189, 2005. Google ScholarDigital Library
- G. Bierman, M. Parkinson, and J. Noble. UpgradeJ: Incremental Typechecking for Class Upgrades. In ECOOP, pages 235--259, 2008. Google ScholarDigital Library
- C. Bockisch, M. Haupt, M. Mezini, and K. Ostermann. Virtual Machine Support for Dynamic Join Points. In AOSD, pages 83--92, 2004. Google ScholarDigital Library
- S. Cech Previtali. Dynamic Updating of Object-Oriented Software Systems Based on Aspects. PhD thesis, ETH Zurich, 2009. Dissertation ETH No. 18361.Google Scholar
- S. Cech Previtali and T. R. Gross. Dynamic Updating of Software Systems Based on Aspects. In ICSM, pages 83--92, 2006. Google ScholarDigital Library
- S. Cech Previtali and T. R. Gross. Annotations for Seamless Aspect-based Software Evolution. In RAM-SE, pages 27--32, July 2008.Google Scholar
- S. Cech Previtali, M. Schäuble, and T. R. Gross. Revision Classes for Explicit Versioning. In RAM-SE, pages 1--6, 2009. Google ScholarDigital Library
- C. Chambers, D. Ungar, and E. Lee. An Efficient Implementation of SELF a Dynamically-Typed Object-Oriented Language Based on Prototypes. SIGPLAN Notices, 24(10):49--70, 1989. Google ScholarDigital Library
- C. Clifton, T. Millstein, G. T. Leavens, and C. Chambers. MultiJava: Design Rationale, Compiler Implementation, and Applications. TOPLAS, 28(3):517--575, 2006. Google ScholarDigital Library
- S. Collin, D. Colnet, and O. Zendra. Type Inference for Late Binding: The SmallEiffel Compiler. In JMLC, pages 67--81, 1997. Google ScholarDigital Library
- M. Denker, T. G#238;rba, A. Lienhard, O. Nierstrasz, L. Renggli, and P. Zumkehr. Encapsulating and Exploiting Change with Changeboxes. In ICDL, pages 25--49, 2007. Google ScholarDigital Library
- M. Dmitriev. Profiling Java Applications using Code Hotswapping and Dynamic Call Graph Revelation. In WOSP, pages 139--150, 2004. Google ScholarDigital Library
- R. Dyer and H. Rajan. Nu: a Dynamic Aspect-Oriented Intermediate Language Model and Virtual Machine for Flexible Runtime Adaptation. In AOSD, pages 191--202, 2008. Google ScholarDigital Library
- E. Ernst. Family Polymorphism. In ECOOP, pages 303--326, 2001. Google ScholarDigital Library
- M. Haupt. Virtual Machine Support for Aspect-Oriented Programming Languages. PhD thesis, Software Technology Group, Darmstadt University of Technology, 2006.Google Scholar
- G. Hjálmtýsson and R. S. Gray. Dynamic CGoogle Scholar
- Classes: A Lightweight Mechanism to Update Code in a Running Program. In USENIX Tech. Conf., 1998. Google ScholarDigital Library
- U. Hölzle, C. Chambers, and D. Ungar. Optimizing Dynamically-Typed Object-Oriented Languages with Polymorphic Inline Caches. In ECOOP, pages 21--38, 1991. Google ScholarDigital Library
- G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. G. Griswold. An Overview of AspectJ. In ECOOP, pages 327--353, 2001. Google ScholarDigital Library
- B. Meyer. Object-Oriented Software Construction. Prentice Hall, 2nd edition, 1997. Google ScholarDigital Library
- M. Mezini and K. Ostermann. Integrating Independent Components with On-demand Remodularization. In OOPSLA, pages 52--67, 2002. Google ScholarDigital Library
- I. Neamtiu, M. Hicks, G. Stoyle, and M. Oriol. Practical Dynamic Software Updating for C. In PLDI, pages 72--83, 2006. Google ScholarDigital Library
- A. Nicoarua, G. Alonso, and T. Roscoe. Controlled, Systematic, and Efficient Code Replacement for Running Java Programs. In EuroSys, pages 233--246, 2008. Google ScholarDigital Library
- A. Orso, A. Rao, and M. J. Harrold. A Technique for Dynamic Updating of Java Software. In ICSM, pages 649--658, 2002. Google ScholarDigital Library
- M. Paleczny, C. A. Vick, and C. Click. The Java HotSpot Server Compiler. In USENIX JVM Research and Techn. Symposium, 2001. Google ScholarDigital Library
- A. Popovici, G. Alonso, and T. R. Gross. Just-in-time Aspects: Efficient Dynamic Weaving for Java. In AOSD, pages 100--109, 2003. Google ScholarDigital Library
- A. Popovici, T. R. Gross, and G. Alonso. Dynamic Weaving for Aspect-Oriented Programming. In AOSD, pages 141--147, 2002. Google ScholarDigital Library
- X. Qi and A. C. Myers. Sharing Classes Between Families. In PLDI, pages 281--292, 2009. Google ScholarDigital Library
- S. Subramanian, M. Hicks, and K. S. McKinley. Dynamic Software Updates: A VM-centric Approach. In PLDI, pages 1--12, 2009. Google ScholarDigital Library
- D. Suvée, W. Vanderperren, and V. Jonckers. JAsCo: An Aspect-Oriented Approach Tailored for Component based Software Development. In AOSD, pages 21--29, 2003. Google ScholarDigital Library
- E. Tempero, G. Bierman, J. Noble, and M. Parkinson. From Java to UpgradeJ: An Empirical Study. In HotSWUp, pages 1--5, 2008. Google ScholarDigital Library
- E. Tempero, J. Noble, and H. Melton. How Do Java Programs Use Inheritance? An Empirical Study of Inheritance in Java Software. In ECOOP, pages 667--691, 2008. Google ScholarDigital Library
- G. Thomas, N. Geoffray, C. Clément, and B. Folliot. Designing Highly Flexible Virtual Machines: The JnJVM Experience. Softw. Pract. Exper., 38(15):1643--1675, 2008. Google ScholarDigital Library
- E. Truyen and W. Joosen. Run-Time and Atomic Weaving of Distributed Aspects. TAOSD II, 4242:147--181, 2006. Google ScholarDigital Library
- K. Waldén and J.-M. Nerson. Seamless Object-Oriented Software Architecture. Prentice Hall, 1994.Google Scholar
- A. Warth, M. Stanojević, and T. Millstein. Statically Scoped Object Adaptation with Expanders. In OOPSLA, pages 37--56, 2006. Google ScholarDigital Library
- O. Zendra, D. Colnet, and S. Collin. Efficient Dynamic Dispatch without Virtual Function Tables: The SmallEiffel Compiler. In OOPSLA, pages 125--141, 1997. Google ScholarDigital Library
- O. Zendra and K. Driesen. Stress-testing Control Structures for Dynamic Dispatch in Java. In USENIX JVM Research and Techn. Symposium, pages 105--118, 2002. Google ScholarDigital Library
Index Terms
- Aspect-based dynamic software updating: a model and its empirical evaluation
Recommendations
Managing crosscutting concerns during software evolution tasks: an inquisitive study
AOSD '02: Proceedings of the 1st international conference on Aspect-oriented software developmentCode is modularized, for many reasons, including making it easier to understand, change, and verify. Aspect-oriented programming approaches extend the kind of code that can be modularized, enabling the modularization of crosscutting code. We conducted ...
Interaction awareness for aspect refactoring
AOAsia '13: Proceedings of the 8th international workshop on Advanced modularization techniquesAspect Refactoring includes two phases: aspect mining and aspect extraction. Aspect mining is used to identify crosscutting concerns from the OO program. Aspect extraction extracts the identified crosscutting concerns from the OO program and refactors ...
Fraglight: shedding light on broken pointcuts in evolving aspect-oriented software
SPLASH Companion 2015: Companion Proceedings of the 2015 ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for HumanityPointcut fragility is a well-documented problem in Aspect-Oriented Programming; changes to the base-code can lead to join points incorrectly falling in or out of the scope of pointcuts. Deciding which pointcuts have broken due to base-code changes is a ...
Comments