skip to main content
research-article

An Analysis of Language-Level Support for Self-Adaptive Software

Published:01 July 2013Publication History
Skip Abstract Section

Abstract

Self-adaptive software has become increasingly important to address the new challenges of complex computing systems. To achieve adaptation, software must be designed and implemented by following suitable criteria, methods, and strategies. Past research has been mostly addressing adaptation by developing solutions at the software architecture level. This work, instead, focuses on finer-grain programming language-level solutions. We analyze three main linguistic approaches: metaprogramming, aspect-oriented programming, and context-oriented programming. The first two are general-purpose linguistic mechanisms, whereas the third is a specific and focused approach developed to support context-aware applications. This paradigm provides specialized language-level abstractions to implement dynamic adaptation and modularize behavioral variations in adaptive systems.

The article shows how the three approaches can support the implementation of adaptive systems and compares the pros and cons offered by each solution.

References

  1. Appeltauer, M., Hirschfeld, R., Haupt, M., Lincke, J., and Perscheid, M. 2009. A comparison of context-oriented programming languages. In Proceedings of the International Workshop on Context-Oriented Programming (COP’09). ACM, New York, 1--6. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Appeltauer, M., Haupt, M., and Hirschfeld, R. 2010a. Layered method dispatch with invokedynamic: An implementation study. In Proceedings of the 2nd International Workshop on Context-Oriented Programming (COP’10). ACM, New York, 4:1--4:6. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Appeltauer, M., Hirschfeld, R., Masuhara, H., Haupt, M., and Kawauchi, K. 2010b. Event-specific software composition in context-oriented programming. In Proceedings of the 9th International Conference on Software Composition (SC’10). B. Baudry and E. Wohlstadter Eds., Lecture Notes in Computer Science Series, vol. 6144, Springer, 50--65. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Appeltauer, M., Hirschfeld, R., Haupt, M., and Masuhara, H. 2011. ContextJ: Context-oriented programming with Java. Inf. Media Technol. 6, 2, 399--419.Google ScholarGoogle Scholar
  5. Aracic, I., Gasiunas, V., Mezini, M., and Ostermann, K. 2006. An overview of CaesarJ. In Transactions on Aspect-Oriented Software Development. I. A. Rashid and M. Aksit Eds., Lecture Notes in Computer Science Series, vol. 3880, Springer, 135--173. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Avgustinov, P., Christensen, A. S., Hendren, L., Kuzins, S., Lhoták, J., Lhoták, O., de Moor, O., Sereni, D., Sittampalam, G., and Tibble, J. 2005. Optimising AspectJ. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’05). ACM, New York, 117--128. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Bachara, P., Blachnicki, K., and Zielinski, K. 2010. Framework for application management with dynamic aspects J-EARS case study. Inf. Softw. Technol. 52, 67--78. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Baresi, L., Di Nitto, E., and Ghezzi, C. 2006. Toward open-world software: Issue and challenges. Comput. 39, 10, 36--43. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Bellifemine, F. L., Caire, G., and Greenwood, D. 2007. Developing Multi-Agent Systems with JADE. Wiley Series in Agent Technology. John Wiley and Sons. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Blair, G. S., Coulson, G., Andersen, A., Blair, L., Clarke, M., Costa, F., Duran-Limon, H., Fitzpatrick, T., Johnston, L., Moreira, R., Parlavantzas, N., and Saikoski, K. 2001. The design and implementation of Open ORB 2. IEEE Distrib. Syst. Online 2. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Bockisch, C., Arnold, M., Dinkelaker, T., and Mezini, M. 2006a. Adapting virtual machine techniques for seamless aspect support. SIGPLAN Not. 41, 10, 109--124. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Bockisch, C., Kanthak, S., Haupt, M., Arnold, M., and Mezini, M. 2006b. Efficient control flow quantification. In Proceedings of the 21st Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA’06). ACM, New York, 125--138. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Bollert, K. 1999. On weaving aspects. In Proceedings of the Workshop on Aspect-Oriented Programming (ECOOP’99). Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Boner, J. 2004. AspectWerkz - Dynamic AOP for Java. In Proceedings of the 3rd International Conference on Aspect-Oriented Software Development (AOSD’04).Google ScholarGoogle Scholar
  15. Bordini, R. H., Hübner, J. F., and Vieira, R. 2005. Jason and the Golden Fleece of agent-oriented programming. In Multi-Agent Programming: Languages, Platforms and Applications. R. H. Bordini, M. Dastani, J. Dix, and A. E. F. Seghrouchni Eds., Multiagent Systems, Artificial Societies, and Simulated Organizations, vol. 15, Springer, New York, 3--37.Google ScholarGoogle Scholar
  16. Brichau, J. and Haupt, M. 2005. Survey of aspect-oriented languages and execution models. Tech. rep. AOSD-Europe-VUB-01, AOSD-Europe.Google ScholarGoogle Scholar
  17. Bruneton, E., Lenglet, R., and Coupaye, T. 2002. ASM: A code manipulation tool to implement adaptable systems. In Proceedings of the Adaptable and Extensible Component Systems. 1--12.Google ScholarGoogle Scholar
  18. Bull, J. M., Smith, L. A., Westhead, M. D., Henty, D. S., and Davey, R. A. 1999. A methodology for benchmarking Java Grande applications. In Proceedings of the ACM Conference on Java Grande (JAVA’99). ACM, New York, 81--88. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Bull, J. M., Smith, L. A., Westhead, M. D., Henty, D. S., and Davey, R. A. 2000. A benchmark suite for high performance Java. Concurr. Pract. Exper. 12, 6, 375--388.Google ScholarGoogle ScholarCross RefCross Ref
  20. Capra, L., Emmerich, W., and Mascolo, C. 2003. CARISMA: Context-aware reflective middleware system for mobile applications. IEEE Trans. Softw. Engin. 29, 10, 929--945. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Chan, A. T. S. and Chuang, S.-N. 2003. MobiPADS: A reflective middleware for context-aware mobile computing. IEEE Trans. Softw. Eng. 29, 12, 1072--1085. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Charfi, A. and Mezini, M. 2004. Aspect-oriented web service composition with AO4BPEL. In Proceedings of the European Conference on Web Services (ECOWA’94). L.-J. Zhang and M. Jeckle Eds., Lecture Notes in Computer Science Series, vol. 3250, Springer, 168--182.Google ScholarGoogle Scholar
  23. Chiba, S. 1995. A metaobject protocol for C++. In Proceedings of the 10th Annual Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA’95). ACM, New York, 285--299. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Cibrán, M. A., Verheecke, B., Vanderperren, W., Suvée, D., and Jonckers, V. 2007. Aspect-oriented programming for dynamic web service selection, integration and management. World Wide Web 10, 3, 211--242. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Costanza, P. and D’Hondt, T. 2008. Feature descriptions for context-oriented programming. In Proceedings of the 12th International Conference on Software Product Lines (SPLC’08). 9--14.Google ScholarGoogle Scholar
  26. Costanza, P. and Hirschfeld, R. 2005. Language constructs for context-oriented programming: An overview of ContextL. In Proceedings of the Symposium on Dynamic Languages (DLS’05). ACM Press, New York, 1--10. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Costanza, P. and Hirschfeld, R. 2007. Reflective layer activation in contextL. In Proceedings of the ACM Symposium on Applied Computing (SAC’07). Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Costanza, P., Hirschfeld, R., and De Meuter, W. 2006. Efficient layer activation for switching context-dependent behavior. In Proceedings of the 7th Joint Conference on Modular Programming Languages (JMLC’06). Springer, 84--103. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Courbis, C. and Finkelstein, A. 2005. Towards aspect weaving applications. In Proceedings of the 27th International Conference on Software Engineering (ICSE’05). ACM, New York, 69--77. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Dahm, M. and Berlin, F. U. 1998. Byte code engineering with the BCEL api. Tech. rep. B-17-98, Freie Universitt Berlin - Institut fr Informatik.Google ScholarGoogle Scholar
  31. Dastani, M. 2008. 2APL: A practical agent programming language. Auton. Agents Multi-Agent Syst. 16, 3, 214--248. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. David, P.-C. and Ledoux, T. 2006. An aspect-oriented approach for developing self-adaptive fractal components. In Proceedings of the 5th International Conference on Software Composition (SC’06). Springer, 82--97. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Dawson, D., Desmarais, R., Kienle, H. M., and Müller, H. A. 2008. Monitoring in adaptive systems using reflection. In Proceedings of the International Workshop on Software Engineering for Adaptive and Self-Managing Systems (SEAMS’08). ACM Press, New York, 81--88. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Denys, G., Piessens, F., and Matthijs, F. 2002. A survey of customizability in operating systems research. ACM Comput. Surv. 34, 450--468. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Dowling, J., Schäfer, T., Cahill, V., Haraszti, P., and Redmond, B. 2000. Using reflection to support dynamic adaptation of system software: A case study driven evaluation. In Proceedings of the 1st OOPSLA Workshop on Reflection and Software Engineering: Reflection and Software Engineering. Papers from OORaSE 1999. Springer, 169--188. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Durr, P., Staijen, T., Bergmans, L., and Aksit, M. 2005. Reasoning about semantic conflicts between aspects. In Proceedings of the European Interactive Workshop on Aspects in Software.Google ScholarGoogle Scholar
  37. Eliassen, F., Andersen, A., Blair, G. S., Costa, F., Coulson, G., Goebel, V., Ivind Hansen, Kristensen, T., Plagemann, T., Rafaelsen, H. O., Saikoski, K. B., and Yu, W. 1999. Next generation middleware: Requirements, architecture, and prototypes. In Proceedings of the 7th IEEE Workshop on Future Trends in Distributed Computing Systems. IEEE Computer Society Press, 60--65. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Engel, M. and Freisleben, B. 2005. Supporting autonomic computing functionality via dynamic operating system kernel aspects. In Proceedings of the 4th International Conference on Aspect-Oriented Software Development (AOSD’05). ACM, New York, 51--62. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Epifani, I., Ghezzi, C., Mirandola, R., and Tamburrelli, G. 2009. Model evolution by run-time parameter adaptation. In Proceedings of the 31st International Conference on Software Engineering (ICSE’09). IEEE Computer Society, 111--121. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Gamma, E., Helm, R., Johnson, R. E., and Vlissides, J. M. 1993. Design patterns: Abstraction and reuse of object-oriented design. In Proceedings of the 7th European Conference on Object-Oriented Programming (ECOOP’93). Springer, 406--431. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Gelernter, D. 1985. Generative communication in Linda. ACM Trans. Program. Lang. Syst. 7, 1, 80--112. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Ghezzi, C., Pradella, M., and Salvaneschi, G. 2011. An evaluation of the adaptation capabilities in programming languages. In Proceedings of the 6th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS’11). ACM Press, New York, 50--59. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. González, S., Mens, K., and Heymans, P. 2007. Highly dynamic behaviour adaptability through prototypes with subjective multimethods. In Proceedings of the Symposium on Dynamic Languages (DLS’07). ACM Press, New York, 77--88. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. González, S., Cardozo, N., Mens, K., Cádiz, A., Libbrecht, J.-C., and Goffaux, J. 2010. Subjective-C: Bringing context to mobile platform programming. In Proceedings of the International Conference on Software Language Engineering.Google ScholarGoogle Scholar
  45. Gowing, B. and Cahill, V. 1995. Making meta-object protocols practical for operating systems. In Proceedings of the 4th International Workshop on Object-Orientation in Operating Systems. 52--55. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Grace, P., Blair, G., and Samuel, S. 2003. ReMMoC: A reflective middleware to support mobile client interoperability. In Proceedings of the OTM Confederated International Conferences, CoopIS, DOA, and ODBASE. R. Meersman, Z. Tari, and D. Schmidt Eds., Lecture Notes in Computer Science Series, vol. 2888, Springer, 1170--1187.Google ScholarGoogle Scholar
  47. Greenwood, P. and Blair, L. 2003. Using dynamic aspect-oriented programming to implement an autonomic system. In Proceedings of the Dynamic Aspect Workshop (DAW’04).Google ScholarGoogle Scholar
  48. Greenwood, P. and Blair, L. 2006. A framework for policy driven auto-adaptive systems using dynamic framed aspects. In Transactions on Aspect-Oriented Software Development II. Springer, 30--65. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Haupt, M. and Mezini, M. 2004. Micro-measurements for dynamic aspect-oriented systems. In Proceedings of the 5th Annual International Conference on Object-Oriented and Internet-Based Technologies, Concepts, and Applications for a Nerworked World. M. Weske and P. Liggesmeyer Eds., Lecture Notes in Computer Science Series, vol. 3263, Springer, 277--305.Google ScholarGoogle Scholar
  50. Haupt, M., Mezini, M., Bockisch, C., Dinkelaker, T., Eichberg, M., and Krebs, M. 2005. An execution layer for aspect-oriented programming languages. In Proceedings of the 1st ACM/USENIX International Conference on Virtual Execution Environments (VEE’05). ACM Press, New York, 142--152. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Hellerstein, J. L. 2009. Configuring resource managers using model fuzzing: A case study of the .NET thread pool. In Proceedings of the 11th IFIP/IEEE International Conference on Symposium on Integrated Network Management (IM’09). IEEE Press, 1--8. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Hewitt, C., Bishop, P., and Steiger, R. 1973. A universal modular actor formalism for artificial intelligence. In Proceedings of the 3rd International Joint Conference on Artificial Intelligence (IJCAI’73). Morgan Kaufmann Publishers, San Francisco, CA, 235--245. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Hirschfeld, R. 2003. AspectS - aspect-oriented programming with Squeak. In Revised Papers from the International Conference on NetObjectDays on Objects, Components, Architectures, Services, and Applications for a Networked World (NODe’02). Springer, 216--232. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Hirschfeld, R., Costanza, P., and Nierstrasz, O. 2008. Context-oriented programming. J. Object Technol. 7, 3.Google ScholarGoogle ScholarCross RefCross Ref
  55. Hsieh, W., Fiuczynski, M., Garrett, C., Savage, S., Becker, D., and Bershad, B. 1996. Language support for extensible operating systems. In Proceedings of the Workshop on Compiler Support for System Software. 127--133.Google ScholarGoogle Scholar
  56. Huebscher, M. C. and McCann, J. A. 2008. A survey of autonomic computing -- Degrees, models, and applications. ACM Comput. Surv. 40, 7:1--7:28. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Itoh, J.-I., Lea, R., and Yokote, Y. 1995. Using meta-objects to support optimisation in the Apertos operating system. In Proceedings of the USENIX Conference on Object-Oriented Technologies (COOTS’95). USENIX Association, Berkeley, CA, 11--11. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Janik, A. and Zielinski, K. 2010a. Aaop-based dynamically reconfigurable monitoring system. Inf. Softw. Technol. 52, 380--396. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Janik, A. and Zielinski, K. 2010b. Adaptability mechanisms for autonomic system implementation with aaop. Softw. Pract. Exper. 40, 209--223. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Kamina, T., Aotani, T., and Masuhara, H. 2010. Designing event-based context transition in context-oriented programming. In Proceedings of the 2nd International Workshop on Context-Oriented Programming (COP’10). ACM Press, New York, 2:1--2:6. Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Kamina, T., Aotani, T., and Masuhara, H. 2011. EventCJ: A context-oriented programming language with declarative event-based context transition. In Proceedings of the 10th International Conference on Aspect-Oriented Software Development (AOSD’11). ACM Press, New York, 253--264. Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Kephart, J. O. 2005. Research challenges of autonomic computing. In Proceedings of the 27th International Conference on Software Engineering (ICSE’05). ACM Press, New York, 15--22. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. Kephart, J. O. and Chess, D. M. 2003. The vision of autonomic computing. Comput. 36, 41--50. Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. Kiczales, G. and Rivieres, J. D. 1991. The Art of the Metaobject Protocol. MIT Press, Cambridge, MA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., and Irwin, J. 1997. Aspect-oriented programming. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP’97). Lecture Notes in Computer Science, vol. 1241, Springer, 220--242.Google ScholarGoogle ScholarCross RefCross Ref
  66. Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., and Griswold, W. 2001. An overview of AspectJ. In Proceedings of the 15th European Conference on Object-Oriented Programming (ECOOP’01). J. Knudsen Ed., Lecture Notes in Computer Science Series, vol. 2072, Springer, 327--354. Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Kon, F., Costa, F., Blair, G., and Campbell, R. H. 2002. The case for reflective middleware. Comm. ACM 45, 33--38. Google ScholarGoogle ScholarDigital LibraryDigital Library
  68. Koppen, C. and Storzer, M. 2004. PCDiff: Attacking the fragile pointcut problem. In European Interactive Workshop on Aspects in Software (EIWAS’04). K. Gybels, S. Hanenberg, S. Herrmann, and J. Wloka Eds.,Google ScholarGoogle Scholar
  69. Krahn, R., Lincke, J., and Hirschfeld, R. 2012. Efficient layer activation in ContextJS. In IEEE Conference on Creating, Connecting and Collaborating through Computing (C5). Google ScholarGoogle ScholarDigital LibraryDigital Library
  70. Kramer, J. and Magee, J. 2007. Self-managed systems: An architectural challenge. In Proceedings of the Conference on Future of Software Engineering (FOSE’07). IEEE Computer Society, 259--268. Google ScholarGoogle ScholarDigital LibraryDigital Library
  71. Laddad, R. 2009. AspectJ in Action: Enterprise AOP with Spring Applications 2nd Ed. Manning Publications, Greenwich, CT. Google ScholarGoogle ScholarDigital LibraryDigital Library
  72. Lamm, E. 2001. Component libraries and language features. In Proceedings of the 6th International Conference Leuven on Reliable Software Technologies (Ada-Europe’01). D. Craeynest and A. Strohmeier Eds., Lecture Notes in Computer Science, vol. 2043, Springer, 215--228. Google ScholarGoogle ScholarDigital LibraryDigital Library
  73. Ledoux, T. 1997. Implementing proxy objects in a reflective ORB. In Proceedings of the Workshop on CORBA: Implementation, Use and Evaluation (ECOOP’97).Google ScholarGoogle Scholar
  74. Lincke, J., Appeltauer, M., Steinert, B., and Hirschfeld, R. 2011. An open implementation for context-oriented layer composition in ContextJS. Sci. Comput. Program. 76, 12, 1194--1209. Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. Madany, P. W., Islam, N., Kougiouris, P., and Campbell, R. H. 1992. Reification and reflection in C++: An operating systems perspective. Tech. rep. UIUCDCS-R-92-1736, University of Illinois at Urbana-Champaign.Google ScholarGoogle Scholar
  76. Maes, P. 1987. Concepts and experiments in computational reflection. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA’87). ACM Press, New York, 147--155. Google ScholarGoogle ScholarDigital LibraryDigital Library
  77. Mamei, M. and Zambonelli, F. 2009. Programming pervasive and mobile computing applications: The TOTA approach. ACM Trans. Softw. Eng. Methodol. 18, 4, 15:1--15:56. Google ScholarGoogle ScholarDigital LibraryDigital Library
  78. Masuhara, H., Matsuoka, S., Watanabe, T., and Yonezawa, A. 1992. Object-oriented concurrent reflective languages can be implemented efficiently. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA’92). ACM Press, New York, 127--144. Google ScholarGoogle ScholarDigital LibraryDigital Library
  79. McKinley, P. K., Sadjadi, S. M., Kasten, E. P., and Cheng, B. H. C. 2004. Composing adaptive software. Comput. 37, 56--64. Google ScholarGoogle ScholarDigital LibraryDigital Library
  80. Menezes, R. and Tolksdorf, R. 2003. A new approach to scalable Linda-systems based on swarms. In Proceedings of the ACM Symposium on Applied Computing (SAC’03). ACM Press, New York, 375--379. Google ScholarGoogle ScholarDigital LibraryDigital Library
  81. Murphy, A. L., Picco, G. P., and Roman, G.-C. 2006. LIME: A coordination model and middleware supporting mobility of hosts and agents. ACM Trans. Softw. Eng. Methodol. 15, 3, 279--328. Google ScholarGoogle ScholarDigital LibraryDigital Library
  82. Nagy, I., Bergmans, L., and Aksit, M. 2004. Declarative aspect composition. In Software-Engineering Properties of Languages for Aspect Technologies (SPLAT!): in conjunction with the 3rd International Conference on Aspect-Oriented Software Development (AOSD’04).Google ScholarGoogle Scholar
  83. Nagy, I., Bergmans, L., and Aksit, M. 2005. Composing aspects at shared join points. In Proceedings of International Conference NetObjectDays (NODe’05). Springer.Google ScholarGoogle Scholar
  84. Nicoara, A., Alonso, G., and Roscoe, T. 2008. Controlled, systematic, and efficient code replacement for running Java programs. In Proceedings of the 3rd ACM SIGOPS/EuroSys European Conference on Computer Systems (Eurosys’08). ACM Press, New York, 233--246. Google ScholarGoogle ScholarDigital LibraryDigital Library
  85. Okamuray, H., Ishikawayy, Y., and Tokoroy, M. 1992. AL-1/D: A distributed programming system with multi-model reflection framework. In Workshop on New Models for Software Architecture.Google ScholarGoogle Scholar
  86. Oreizy, P., Medvidovic, N., and Taylor, R. N. 1998. Architecture-based runtime software evolution. In Proceedings of the 20th International Conference on Software Engineering (ICSE’98). IEEE Computer Society, 177--186. Google ScholarGoogle ScholarDigital LibraryDigital Library
  87. Oreizy, P., Medvidovic, N., and Taylor, R. N. 2008. Runtime software adaptation: Framework, approaches, and styles. In Companion of the 30th International Conference on Software Engineering (ICSE’08). ACM Press, New York, 899--910. Google ScholarGoogle ScholarDigital LibraryDigital Library
  88. Pawlak, R., Seinturier, L., Duchien, L., and Florin, G. 2001. JAC: A flexible solution for aspect-oriented programming in Java. In Proceedings of the 3rd International Conference REFLECTION. A. Yonezawa and S. Matsuoka Eds., Lecture Notes in Computer Science, vol. 2192, Springer, 1--24. Google ScholarGoogle ScholarDigital LibraryDigital Library
  89. Pawlak, R., Seinturier, L., Duchien, L., Florin, G., Legond-Aubry, F., and Martelli, L. 2004. JAC: An aspect-based distributed dynamic framework. J. Softw. Practice Exper. 34, 12, 1119--1148 Google ScholarGoogle ScholarDigital LibraryDigital Library
  90. Popovici, A., Gross, T., and Alonso, G. 2002. Dynamic weaving for aspect-oriented programming. In Proceedings of the 1st International Conference on Aspect-Oriented Software Development (AOSD’02). ACM Press, New York, 141--147. Google ScholarGoogle ScholarDigital LibraryDigital Library
  91. Popovici, A., Alonso, G., and Gross, T. 2003. Just-in-time aspects: Efficient dynamic weaving for Java. In Proceedings of the 2nd International Conference on Aspect-Oriented Software Development (AOSD’03). ACM Press, New York, 100--109. Google ScholarGoogle ScholarDigital LibraryDigital Library
  92. Rao, A. S. 1996. AgentSpeak(L): BDI agents speak out in a logical computable language. In Proceedings of the 7th European Workshop on Modeling Autonomous Agents in a Multi-Agent World: Agents Breaking Away (MAAMAW’96). Springer, 42--55. Google ScholarGoogle ScholarDigital LibraryDigital Library
  93. Rashid, A., Moreira, A., and Araújo, J. 2003. Modularisation and composition of aspectual requirements. In Proceedings of the 2nd International Conference on Aspect-Oriented Software Development (AOSD’03). ACM Press, New York, 11--20. Google ScholarGoogle ScholarDigital LibraryDigital Library
  94. Redmond, B. and Cahill, V. 2006. Supporting unanticipated dynamic adaptation of application behaviour. In Proceedings of the 16th European Conference on Object-Oriented Programming (ECOOP’02). B. Magnusson Ed., Lecture Notes in Computer Science, vol. 2374, Springer, 29--53. Google ScholarGoogle ScholarDigital LibraryDigital Library
  95. Rho, T., Appeltauer, M., Lerche, S., Cremers, A. B., and Hirschfeld, R. 2011. A context management infrastructure with language integration support. In Proceedings of the 3rd International Workshop on Context-Oriented Programming (COP’11). ACM Press, New York, 3:1--3:6. Google ScholarGoogle ScholarDigital LibraryDigital Library
  96. Rivard, F. 1996. A new smalltalk kernel allowing both explicit and implicit metaclass programming. In Proceedings of the Workshop on Extending the Smalltalk Language (OOPSLA’96).Google ScholarGoogle Scholar
  97. Roman, M., Kon, F., and Campbell, R. 1999. Design and implementation of runtime reflection in communication middleware: The dynamicTAO case. In Proceedings of the 19th IEEE International Conference on Distributed Computing Systems Workshops on Electronic Commerce and Web-based Applications/Middleware. 122--127.Google ScholarGoogle Scholar
  98. Rose, J. R. 2009. Bytecodes meet combinators: Invokedynamic on the JVM. In Proceedings of the 3rd Workshop on Virtual Machines and Intermediate Languages (VMIL’09). ACM Press, New York, 2:1--2:11. Google ScholarGoogle ScholarDigital LibraryDigital Library
  99. Sadjadi, S. M., McKinley, P. K., Cheng, B. H. C., and Stirewalt, R. E. K. 2004. TRAP/J: Transparent generation of adaptable Java programs. In Proceedings of the International Symposium on Distributed Objects and Applications (DOA’04).Google ScholarGoogle Scholar
  100. Sadjadi, S. M., McKinley, P. K., and Cheng, B. H. C. 2005. Transparent shaping of existing software to support pervasive and autonomic computing. In Proceedings of the Workshop on Design and Evolution of Autonomic Application Software (DEAS’05). ACM Press, New York, 1--7. Google ScholarGoogle ScholarDigital LibraryDigital Library
  101. Salehie, M. and Tahvildari, L. 2009. Self-adaptive software: Landscape and research challenges. ACM Trans. Auton. Adapt. Syst. 4, 14:1--14:42. Google ScholarGoogle ScholarDigital LibraryDigital Library
  102. Salvaneschi, G., Ghezzi, C., and Pradella, M. 2011a. Context-oriented programming: A programming paradigm for autonomic systems. CoRR abs/1105.0069. http://arxiv.org/vc/arxiv/papers/1105/1105.0069vl.pdf.Google ScholarGoogle Scholar
  103. Salvaneschi, G., Ghezzi, C., and Pradella, M. 2011b. JavaCtx: Seamless toolchain integration for context-oriented programming. In Proceedings of the 3rd International Workshop on Context-Oriented Programming (COP’11). ACM Press, New York, 4:1--4:6. Google ScholarGoogle ScholarDigital LibraryDigital Library
  104. Salvaneschi, G., Ghezzi, C., and Pradella, M. 2012a. Context-oriented programming: A software engineering perspective. J. Syst. Softw. 85, 8, 1801--1817. Google ScholarGoogle ScholarDigital LibraryDigital Library
  105. Salvaneschi, G., Ghezzi, C., and Pradella, M. 2012b. ContextErlang: Introducing context-oriented programming in the actor model. In Proceedings of the 11th Annual International Conference on Aspect-Oriented Software Development (AOSD’12). ACM Press, New York, 191--202. Google ScholarGoogle ScholarDigital LibraryDigital Library
  106. Sato, Y., Chiba, S., and Tatsubori, M. 2003. A selective, just-in-time aspect weaver. In Proceedings of the 2nd International Conference on Generative Programming and Component Engineering (GPCE’03). Springer, 189--208. Google ScholarGoogle ScholarDigital LibraryDigital Library
  107. Ségura-Devillechaise, M., Menaud, J.-M., Muller, G., and Lawall, J. L. 2003. Web cache prefetching as an aspect: Towards a dynamic-weaving based solution. In Proceedings of the 2nd International Conference on Aspect-Oriented Software Development (AOSD’03). ACM Press, New York, 110--119. Google ScholarGoogle ScholarDigital LibraryDigital Library
  108. Sharifi, A., Srikantaiah, S., Mishra, A. K., Kandemir, M., and Das, C. R. 2011. Mete: Meeting end-to-end QoS in multicores through system-wide resource management. SIGMETRICS Perform. Eval. Rev. 39, 1, 13--24. Google ScholarGoogle ScholarDigital LibraryDigital Library
  109. Shoham, Y. 1993. Agent-oriented programming. Artif. Intell. 60, 1, 51--92. Google ScholarGoogle ScholarDigital LibraryDigital Library
  110. Shoham, Y. and Leyton-Brown, K. 2008. Multiagent Systems: Algorithmic, Game-Theoretic, and Logical Foundations. Cambridge University Press, Cambridge, UK. Google ScholarGoogle ScholarDigital LibraryDigital Library
  111. Smith, B. C. 1984. Reflection and semantics in lisp. In Proceedings of the 11th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages (POPL’84). ACM Press, New York, 23--35. Google ScholarGoogle ScholarDigital LibraryDigital Library
  112. Spinczyk, O., Gal, A., and Schröder-Preikschat, W. 2002. AspectC++: An aspect-oriented extension to the c++ programming language. In Proceedings of the 40th International Conference on Tools Pacific: Objects for Internet, Mobile and Embedded Applications (CRPIT’02). 53--60. Google ScholarGoogle ScholarDigital LibraryDigital Library
  113. Stroud, R. J. and Wu, Z. 1996. Using metaobject protocols to satisfy non-functional requirements. In Advances in Object-Oriented Metalevel Architectures and Reflection. C. Zimmerman Ed.Google ScholarGoogle Scholar
  114. Suvée, D., Vanderperren, W., and Jonckers, V. 2003. JAsCo: An aspect-oriented approach tailored for component based software development. In Proceedings of the 2nd International Conference on Aspect-Oriented Software Development (AOSD’03). ACM Press, New York, 21--29. Google ScholarGoogle ScholarDigital LibraryDigital Library
  115. Tarr, P., Ossher, H., Harrison, W., and Sutton, Jr., S. M. 1999. N degrees of separation: Multidimensional separation of concerns. In Proceedings of the 21st International Conference on Software Engineering (ICSE’99). ACM Press, New York, 107--119. Google ScholarGoogle ScholarDigital LibraryDigital Library
  116. Tatsubori, M., Chiba, S., Itano, K., and Killijian, M.-O. 1999. OpenJava: A class-based macro system for Java. In Proceedings of the 1st OOPSLA Workshop on Reflection and Software Engineering: Reflection and Software Engineering. 117--133. Google ScholarGoogle ScholarDigital LibraryDigital Library
  117. Vanderperren, W., Suvée, D., Verheecke, B., Cibrán, M. A., and Jonckers, V. 2005. Adaptive programming in JAsCo. In Proceedings of the 4th International Conference on Aspect-Oriented Software Development (AOSD’05). ACM Press, New York, 75--86. Google ScholarGoogle ScholarDigital LibraryDigital Library
  118. Vasseur, A. 2004. Dynamic aop and runtime weaving for Java -- How does AspectWerkz address it? In Proceedings of the DAW Dynamic Aspects Workshop. 135--145.Google ScholarGoogle Scholar
  119. Viroli, M., Casadei, M., Montagna, S., and Zambonelli, F. 2011. Spatial coordination of pervasive services through chemical-inspired tuple spaces. ACM Trans. Auton. Adapt. Syst. 6, 2, 14:1--14:24. Google ScholarGoogle ScholarDigital LibraryDigital Library
  120. White, S., Hanson, J., Whalley, I., Chess, D., and Kephart, J. 2004. An architectural approach to autonomic computing. In Proceedings of the International Conference on Autonomic Computing. 2--9. Google ScholarGoogle ScholarDigital LibraryDigital Library
  121. Whitehouse, K., Sharp, C., Brewer, E., and Culler, D. 2004. Hood: A neighborhood abstraction for sensor networks. In Proceedings of the 2nd International Conference on Mobile Systems, Applications, and Services (MobiSys’04). ACM Press, New York, 99--110. Google ScholarGoogle ScholarDigital LibraryDigital Library
  122. Win, B. D., Vanhaute, B., and Decker, B. D. 2001. Security through aspect-oriented programming. In Proceedings of the 1st Annual Working Conference on Network Security: Advances in Network and Distributed Systems Security. 125--138. Google ScholarGoogle ScholarDigital LibraryDigital Library
  123. Winikoff, M. 2005. JACK intelligent agents: An industrial strength platform. In Multi-Agent Programming, Languages: Platforms and Applications, Springer, 175--193.Google ScholarGoogle Scholar
  124. Xu, J., R, B., and Zorzo, A. F. 1996. Implementing software-fault tolerance in C++ and Open C++: An object-oriented and reflective approach. In Proceedings of the International Workshop on Computer Aided Design, Test, and Evaluation for Dependability. 224--229.Google ScholarGoogle Scholar
  125. Yang, Z., Cheng, B. H. C., Stirewalt, R. E. K., Sowell, J., Sadjadi, S. M., and McKinley, P. K. 2002. An aspect-oriented approach to dynamic adaptation. In Proceedings of the 1st Workshop on Selfhealing Systems (WOSS’02). ACM Press, New York, 85--92. Google ScholarGoogle ScholarDigital LibraryDigital Library
  126. Yokote, Y. 1992. The Apertos reflective operating system: The concept and its implementation. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA’92). ACM Press, New York, 414--434. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. An Analysis of Language-Level Support for Self-Adaptive Software

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM Transactions on Autonomous and Adaptive Systems
        ACM Transactions on Autonomous and Adaptive Systems  Volume 8, Issue 2
        July 2013
        123 pages
        ISSN:1556-4665
        EISSN:1556-4703
        DOI:10.1145/2491465
        Issue’s Table of Contents

        Copyright © 2013 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 1 July 2013
        • Accepted: 1 December 2012
        • Revised: 1 November 2012
        • Received: 1 July 2012
        Published in taas Volume 8, Issue 2

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article
        • Research
        • Refereed

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!