Software Engineering for Self-Adaptive Systems pp 128-145

Part of the Lecture Notes in Computer Science book series (LNCS, volume 5525) | Cite as

Model-Centric, Context-Aware Software Adaptation

  • Oscar Nierstrasz
  • Marcus Denker
  • Lukas Renggli


Software must be constantly adapted to changing requirements. The time scale, abstraction level and granularity of adaptations may vary from short-term, fine-grained adaptation to long-term, coarse-grained evolution. Fine-grained, dynamic and context-dependent adaptations can be particularly difficult to realize in long-lived, large-scale software systems. We argue that, in order to effectively and efficiently deploy such changes, adaptive applications must be built on an infrastructure that is not just model-driven, but is both model-centric and context-aware. Specifically, this means that high-level, causally-connected models of the application and the software infrastructure itself should be available at run-time, and that changes may need to be scoped to the run-time execution context.

We first review the dimensions of software adaptation and evolution, and then we show how model-centric design can address the adaptation needs of a variety of applications that span these dimensions. We demonstrate through concrete examples how model-centric and context-aware designs work at the level of application interface, programming language and runtime. We then propose a research agenda for a model-centric development environment that supports dynamic software adaptation and evolution.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Antkiewicz, M., Czarnecki, K.: Framework-specific modeling languages with round-trip engineering. In: Nierstrasz, O., Whittle, J., Harel, D., Reggio, G. (eds.) MoDELS 2006. LNCS, vol. 4199, pp. 692–706. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  2. 2.
    Atkinson, M.P., Buneman, O.P.: Types and persistence in database programming languages. ACM Computing Surveys 19(2), 105–170 (1987)CrossRefGoogle Scholar
  3. 3.
    Bawden, A.: Quasiquotation in Lisp. In: Partial Evaluation and Semantic-Based Program Manipulation, pp. 4–12 (1999)Google Scholar
  4. 4.
    Bézivin, J., Gerbé, O.: Towards a precise definition of the OMG/MDA framework. In: Proceedings of Automated Software Engineering (ASE 2001), pp. 273–282. IEEE Computer Society, Los Alamitos (2001)Google Scholar
  5. 5.
    Budinsky, F., Steinberg, D., Merks, E., Ellersick, R., Grose, T.: Eclipse Modeling Framework. Addison Wesley Professional, Reading (2003)Google Scholar
  6. 6.
    Chiba, S., Kiczales, G., Lamping, J.: Avoiding confusion in metacircularity: The meta-helix. In: Futatsugi, K., Matsuoka, S. (eds.) ISOTAS 1996. LNCS, vol. 1049, pp. 157–172. Springer, Heidelberg (1996)CrossRefGoogle Scholar
  7. 7.
    Costanza, P., Hirschfeld, R.: Language constructs for context-oriented programming: An overview of ContextL. In: Proceedings of the Dynamic Languages Symposium (DLS) 2005, co-organized with OOPSLA 2005, pp. 1–10. ACM, New York (2005)Google Scholar
  8. 8.
    Czarnecki, K., Eisenecker, U.W.: Generative programming: methods, tools, and applications. ACM Press/Addison-Wesley Publishing Co., New York (2000)Google Scholar
  9. 9.
    Denker, M.: Sub-method Structural and Behavioral Reflection. PhD thesis, University of Bern (May 2008)Google Scholar
  10. 10.
    Denker, M., Ducasse, S., Lienhard, A., Marschall, P.: Sub-method reflection. Journal of Object Technology, Special Issue (2007); Proceedings of TOOLS Europe 2007, vol. 6/9, pp. 231–251 (2007)Google Scholar
  11. 11.
    Denker, M., Gîrba, T., Lienhard, A., Nierstrasz, O., Renggli, L., Zumkehr, P.: Encapsulating and exploiting change with Changeboxes. In: Proceedings of the 2007 International Conference on Dynamic Languages (ICDL 2007), pp. 25–49. ACM Digital Library, New York (2007)Google Scholar
  12. 12.
    Denker, M., Greevy, O., Lanza, M.: Higher abstractions for dynamic analysis. In: 2nd International Workshop on Program Comprehension through Dynamic Analysis (PCODA 2006), pp. 32–38 (2006)Google Scholar
  13. 13.
    Denker, M., Greevy, O., Nierstrasz, O.: Supporting feature analysis with runtime annotations. In: Proceedings of the 3rd International Workshop on Program Comprehension through Dynamic Analysis (PCODA 2007), pp. 29–33. Technische Universiteit Delft (2007)Google Scholar
  14. 14.
    Denker, M., Suen, M., Ducasse, S.: The meta in meta-object architectures. In: Proceedings of TOOLS EUROPE 2008. LNBIP, vol. 11, pp. 218–237 (2008)Google Scholar
  15. 15.
    van Deursen, A., Klint, P.: Little languages: Little maintenance? In: Kamin, S. (ed.) First ACM-SIGPLAN Workshop on Domain-Specific Languages, DSL 1997, January 1997, pp. 109–127 (1997)Google Scholar
  16. 16.
    Fowler, M.: Language workbenches: The killer-app for domain-specific languages (June 2005),
  17. 17.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley, Reading (1995)MATHGoogle Scholar
  18. 18.
    González, S., Mens, K., Heymans, P.: Highly dynamic behaviour adaptability through prototypes with subjective multimethods. In: DLS 2007: Proceedings of the 2007 symposium on Dynamic languages, pp. 77–88. ACM, New York (2007)CrossRefGoogle Scholar
  19. 19.
    Haldimann, N., Denker, M., Nierstrasz, O.: Practical, pluggable types for a dynamic language. Journal of Computer Languages, Systems and Structures 35(1), 48–64 (2009)CrossRefGoogle Scholar
  20. 20.
    Haustein, S., Pleumann, J.: A model-driven runtime environment for web applications. Software and System Modeling 4(4), 443–458 (2005)CrossRefGoogle Scholar
  21. 21.
    Hirschfeld, R., Costanza, P., Nierstrasz, O.: Context-oriented programming. Journal of Object Technology 7(3) (March 2008)Google Scholar
  22. 22.
    Kiczales, G., des Rivières, J., Bobrow, D.G.: The Art of the Metaobject Protocol. MIT Press, Cambridge (1991)Google Scholar
  23. 23.
    Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., Irwin, J.: Aspect-Oriented Programming. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)CrossRefGoogle Scholar
  24. 24.
    Knuth, D.E.: Literate Programming. Center for the Study of Language and Information, Stanford (1992)MATHGoogle Scholar
  25. 25.
    Krahn, H., Rumpe, B., Völkel, S.: Integrated definition of abstract and concrete syntax for textual languages. In: Engels, G., Opdyke, B., Schmidt, D.C., Weil, F. (eds.) MODELS 2007. LNCS, vol. 4735, pp. 286–300. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  26. 26.
    Lehman, M., Belady, L.: Program Evolution: Processes of Software Change. Academic Press, London (1985)MATHGoogle Scholar
  27. 27.
    Magee, J., Dulay, N., Eisenbach, S., Kramer, J.: Specifying distributed software architectures. In: Botella, P., Schäfer, W. (eds.) ESEC 1995. LNCS, vol. 989, pp. 137–153. Springer, Heidelberg (1995)CrossRefGoogle Scholar
  28. 28.
    Marschall, P.: Persephone: Taking Smalltalk reflection to the sub-method level. Master’s thesis, University of Bern (December 2006)Google Scholar
  29. 29.
    Nelson, S., Pearce, D.J., Noble, J.: First class relationships for OO languages. In: Proceedings of the 6th International Workshop on Multiparadigm Programming with Object-Oriented Languages (MPOOL 2008) (2008)Google Scholar
  30. 30.
    Nierstrasz, O., Denker, M., Gîrba, T., Lienhard, A.: Analyzing, capturing and taming software change. In: Proceedings of the Workshop on Revival of Dynamic Languages (co-located with ECOOP 2006) (July 2006)Google Scholar
  31. 31.
    Nierstrasz, O., Denker, M., Gîrba, T., Lienhard, A., Röthlisberger, D.: Change-enabled software systems. In: Wirsing, M., Banâtre, J.-P., Hölzl, M. (eds.) Challenges for Software-Intensive Systems and New Computing Paradigms. LNCS, vol. 5380, pp. 64–79. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  32. 32.
    Nixon, B., Chung, L., Mylopoulos, J., Lauzon, D., Borgida, A., Stanley, M.: Implementation of a compiler for a semantic data model: Experiences with taxis. In: SIGMOD 1987: Proceedings of the 1987 ACM SIGMOD international conference on Management of data, pp. 118–131. ACM, New York (1987)CrossRefGoogle Scholar
  33. 33.
    Odersky, M.: Scala language secification v. 2.4. Technical report, École Polytechnique Fédérale de Lausanne, 1015 Lausanne, Switzerland (March 2007)Google Scholar
  34. 34.
    Ousterhout, J.K.: Scripting: Higher level programming for the 21st century. IEEE Computer 31(3), 23–30 (1998)CrossRefGoogle Scholar
  35. 35.
    Pawson, R.: Naked Objects. Ph.D. thesis, Trinity College, Dublin (2004)Google Scholar
  36. 36.
    Renggli, L., Ducasse, S., Kuhn, A.: Magritte — a meta-driven approach to empower developers and end users. In: Engels, G., Opdyke, B., Schmidt, D.C., Weil, F. (eds.) MODELS 2007. LNCS, vol. 4735, pp. 106–120. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  37. 37.
    Renggli, L., Nierstrasz, O.: Transactional memory in a dynamic language. Journal of Computer Languages, Systems and Structures 35(1), 21–30 (2009)CrossRefGoogle Scholar
  38. 38.
    Rivard, F.: Smalltalk: a reflective language. In: Proceedings of REFLECTION 1996, April 1996, pp. 21–38 (1996)Google Scholar
  39. 39.
    Rodríguez, L., Tanter, É., Noyé, J.: Supporting dynamic crosscutting with partial behavioral reflection: a case study. In: Proceedings of the XXIV International Conference of the Chilean Computer Science Society (SCCC 2004), Arica, Chile. IEEE, Los Alamitos (2004)Google Scholar
  40. 40.
    Röthlisberger, D., Denker, M., Tanter, É.: Unanticipated partial behavioral reflection: Adapting applications at runtime. Journal of Computer Languages, Systems and Structures 34(2-3), 46–65 (2008)CrossRefGoogle Scholar
  41. 41.
    Röthlisberger, D., Greevy, O., Nierstrasz, O.: Exploiting runtime information in the IDE. In: Proceedings of the 16th International Conference on Program Comprehension (ICPC 2008), pp. 63–72. IEEE Computer Society, Los Alamitos (2008)CrossRefGoogle Scholar
  42. 42.
    Schmidt, D.C.: Guest editor’s introduction: Model-driven engineering. Computer 39(2), 25–31 (2006)CrossRefGoogle Scholar
  43. 43.
    Shaw, M., Garlan, D.: Software Architecture: Perspectives on an Emerging Discipline. Prentice-Hall, Englewood Cliffs (1996)MATHGoogle Scholar
  44. 44.
    Sheard, T.: Accomplishments and research challenges in meta-programming. In: Taha, W. (ed.) SAIG 2001. LNCS, vol. 2196, pp. 2–44. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  45. 45.
    Tanter, E.: Reflection and open implementations. Technical report, University of Chile (2004)Google Scholar
  46. 46.
    Tanter, É., Gybels, K., Denker, M., Bergel, A.: Context-aware aspects. In: Löwe, W., Südholt, M. (eds.) SC 2006. LNCS, vol. 4089, pp. 227–242. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  47. 47.
    Tanter, É., Noyé, J., Caromel, D., Cointe, P.: Partial behavioral reflection: Spatial and temporal selection of reification. In: Proceedings of OOPSLA 2003, ACM SIGPLAN Notices, November 2003, pp. 27–46 (2003)Google Scholar
  48. 48.
    Tratt, L.: Domain specific language implementation via compile-time meta-programming. ACM TOPLAS 30(6), 1–40 (2008)CrossRefGoogle Scholar
  49. 49.
    Warth, A., Piumarta, I.: OMeta: an object-oriented language for pattern matching. In: DLS 2007: Proceedings of the 2007 symposium on Dynamic languages, pp. 11–19. ACM, New York (2007)CrossRefGoogle Scholar
  50. 50.
    Wirsing, M., Hölzl, M. (eds.): Report of the Beyond the Horizon thematic group 6 on Software Intensive Systems (2006)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2009

Authors and Affiliations

  • Oscar Nierstrasz
    • 1
  • Marcus Denker
    • 1
  • Lukas Renggli
    • 1
  1. 1.Software Composition GroupUniversity of BernSwitzerland

Personalised recommendations