Skip to main content

Evolution as ≪Reflections on the Design≫

  • Chapter
Models@run.time

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 8378))

Abstract

No system escapes from the need of evolving either to fix bugs, to be reconfigured or to add new features. To evolve becomes particularly problematic when the system to evolve cannot be stopped.

Traditionally the evolution of a continuously running system is tackled on by calculating all the possible evolutions in advance and coding them in the artifact itself. This approach gives origin to the code pollution phenomenon where the code is polluted by code that could never be applied. The approach has the following defects: i) code bloating, ii) it is impossible to predict any possible change and iii) the code becomes hard to read and maintain.

Computational reflection by definition allows an artifact to introspect and to intercede on its own structure and behavior endowing, therefore, a reflective artifact with (potentially) the ability of self-evolving. Furthermore, to deal with the evolution as a nonfunctional concern can limit the code pollution phenomenon.

To bring the design information (model and/or architecture) at run-time provides the artifact with a basic knowledge about itself to reflect on when a change is necessary and on how to deploy it. The availability of such a knowledge at run-time enables the designer of postponing the planning and the coding of the evolution to when and only when really necessary. Reflection permits to separate the evolution from the artifact and the design information allows a (semi-)automatic planning of how the artifact should evolve when necessary.

In this contribution, we overview the role that reflection and design information have in the development of self-evolving artifacts. Moreover, we summarize the lesson learned as a high-level reflective architecture to support dynamic self-evolution in various contexts and we show how some of the existing frameworks adhere to such an architecture and how the kind of evolution affects their structure.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Andersson, J., de Lemos, R., Malek, S., Weyns, D.: Reflecting on Self-Adaptive Software Systems. In: Proc. of SEAMS 2009, Vancouver, Canada, pp. 38–47 (May 2009)

    Google Scholar 

  2. Badouel, E., Oliver, J.: Reconfigurable Nets, a Class of High Level Petri Nets Supporting Dynamic Changes within Workflow Systems. RR PI-1163, IRISA (1998)

    Google Scholar 

  3. Barais, O., Cariou, E., Duchien, L., Pessemier, N., Seinturier,L.: TranSAT: A Framework for the specification of Software Architecture Evolution. In: Proc. of WCAT 2004, pp. 31–38, Oslo, Norway (June 2004)

    Google Scholar 

  4. Barais, O., Le Meur, A.-F., Duchien, L., Lawall, J.L.: Software Architecture Evolution. In: Software Evolution, pp. 233–262. Springer (2008)

    Google Scholar 

  5. Bencomo, N.: Supporting the Modelling and Generation of Reflective Middleware Families and Applications using Dynamic Variability. Phd thesis, Computing Department, Lancaster University, Lancaster, United Kingdom (March 2008)

    Google Scholar 

  6. Bencomo, N.: On the Use of Software Models during Software Execution. In: Proc. of MISE 2009, Vancouver, Canada (May 2009)

    Google Scholar 

  7. Black, S.: The Role of Ripple Effect in Software Evolution. In: Software Evolution and Feedback, ch. 12, pp. 249–268. John Wiley & Sons, Ltd. (June 2006)

    Google Scholar 

  8. Blair, G.S., Coulson, G., Blair, L., Duran-Limon, H., Grace, P., Moreira, R., Parlavantzas, N.: Reflection, Self-Awareness and Self-Healing in OpenORB. In: Proc. of WOSS 2002, Charleston, South Carolina, USA, pp. 9–14. ACM (November 2002)

    Google Scholar 

  9. Bobrow, D.G., Gabriel, R.G., White, J.L.: CLOS in Context - The Shape of the Design Space. In: OOP: The CLOS Perspective, pp. 29–61. MIT Press (1993)

    Google Scholar 

  10. Booch, G., Rumbaugh, J., Jacobson, I.: The Unified Modeling Language User Guide, 3rd edn. Object Technology Series. Addison-Wesley (February 1999)

    Google Scholar 

  11. Buckley, J., Mens, T., Zenger, M., Rashid, A., Kniesel, G.: Towards a Taxonomy of Software Change. J.of SW Maintenance and Evolution 17(5), 309–332 (2005)

    Article  Google Scholar 

  12. Cabac, L., Duvigneau, M., Moldt, D., Rölke, H.: Modeling Dynamic Architectures Using Nets-Within-Nets. In: Ciardo, G., Darondeau, P. (eds.) ICATPN 2005. LNCS, vol. 3536, pp. 148–167. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  13. Capra, L., Cazzola, W.: Self-Evolving Petri Nets. Journal of Universal Computer Science 13(13), 2002–2034 (2007)

    Google Scholar 

  14. Cazzola, W.: Evaluation of Object-Oriented Reflective Models. In: Proc. of EWROOPS 1998, Brussels, Belgium (July 1998)

    Google Scholar 

  15. Cazzola, W., Coplien, J.O., Ghoneim, A., Saake, G.: Framework Patterns for the Evolution of Nonstoppable Software Systems. In: Proc. of VikingPLoP 2002, Højstrupgård, Denmark, pp. 35–54. Microsoft Business Solutions (September 2002)

    Google Scholar 

  16. Cazzola, W., Ghoneim, A.: Software Evolution through Dynamic Adaptation of Its OO Design. In: Ryan, M.D., Meyer, J.-J.C., Ehrich, H.-D. (eds.) Objects, Agents, and Features. LNCS, vol. 2975, pp. 67–80. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  17. Cazzola, W., Ghoneim, A., Saake, G.: System Evolution through Design Information Evolution: a Case Study. In: Proc. of IASSE 2004, pp. 145–150 (July 2004)

    Google Scholar 

  18. Cazzola, W., Pini, S., Ancona, M.: AOP for Software Evolution: A Design Oriented Approach. In: SAC 2005, Santa Fe, USA, pp. 1356–1360. ACM Press (March 2005)

    Google Scholar 

  19. Cazzola, W., Pini, S., Ghoneim, A., Saake,G.: Co-Evolving Application Code and Design Models by Exploiting Meta-Data. In: Proc. of SAC 2007, Seoul, South Korea, pp. 1275–1279. ACM Press (March 2007)

    Google Scholar 

  20. Cazzola, W., Rossini, N.A., Al-Refai, M., France, R.B.: Fine-Grained Software Evolution Using UML Activity and Class Models. In: Moreira, A., Schätz, B., Gray, J., Vallecillo, A., Clarke, P. (eds.) MODELS 2013. LNCS, vol. 8107, pp. 271–286. Springer, Heidelberg (2013)

    Chapter  Google Scholar 

  21. Cazzola, W., Rossini, N.A., Bennett, P., Mandalaparty, S.P., France, R.: Fine-grained semi-automated runtime evolution. In: MoDELS@Run-Time, vol. 8378, pp. 237–258. Springer, Heidelberg (2014)

    Google Scholar 

  22. Cazzola, W., Savigni, A., Sosio, A., Tisato, F.: Architectural Reflection: Bridging the Gap Between a Running System and its Architectural Specification. In: Proc. of REF 1998, Firenze, Italia, pp. 12-1–12-6. IEEE (March 1998)

    Google Scholar 

  23. Cazzola, W., Savigni, A., Sosio, A., Tisato, F.: Rule-Based Strategic Reflection: Observing and Modifying Behaviour at the Architectural Level. In: Proc.,of ASE 1999, Cocoa Beach, Florida, USA, pp. 263–266 (October 1999)

    Google Scholar 

  24. Costa-Soria, C.: Dynamic Evolution and Reconfiguration of Software Architectures through Aspects. Ph.D. Thesis, Universitat Politècnica de València (June 2011)

    Google Scholar 

  25. Costa-Soria, C., Hervás-Muñoz, D., Pérez Benedí, J., Carsí Cubel, J.Á.: A Reflective Approach for Supporting the Dynamic Evolution of Component Types. In: Proc. of ICECCS 2009, Potsdam, Germany, pp. 301–310 (June 2009)

    Google Scholar 

  26. Cottenier, T., van den Berg, A., Elrad, T.: Motorola WEAVR: Aspect Orientation and Model-Driven Engineering. J. of Object Technology 6(7), 51–88 (2007)

    Article  Google Scholar 

  27. Coulson, G., Blair, G., Grace, P., Taiani, F., Joolia, A., Lee, K., Ueyama, J., Sivaharan, T.: A Generic Component Model for Building Systems Software. ACM Transactions on Computer Systems 26(1), 1–29 (2008)

    Article  Google Scholar 

  28. Dellarocas, C., Klein, M., Shrobe, H.: An Architecture for Constructing Self-Evolving Software Systems. In: Proc. of IWSA 1998, USA, pp. 29–32 (November 1998)

    Google Scholar 

  29. DeRemer, F., Kron, H.H.: Programming-in-the-large versus Programming-in-the-small. IEEE Transactions on Software Engineering 2, 80–86 (1976)

    Article  MathSciNet  MATH  Google Scholar 

  30. Dobson, S.: Fulfilling the Vision of Autonomic Computing. IEEE Computer 43(1), 35–41 (2010)

    Article  Google Scholar 

  31. Dowling, J., Cahill, V.: The K-Component Architecture Meta-model for Self-Adaptive Software. In: Matsuoka, S. (ed.) Reflection 2001. LNCS, vol. 2192, pp. 81–88. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  32. Dowling, J., Schäfer, T., Cahill, V., Haraszti, P., Redmond, B.: Using Reflection to Support Dynamic Adaptation of System Software: A Case Study Driven Evaluation. In: Cazzola, W., Houmb, S.H., Tisato, F. (eds.) Reflection and Software Engineering. LNCS, vol. 1826, pp. 169–188. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  33. Dzidek, W.J., Arisholm, E., Briand, L.C.: A Realistic Empirical Evaluation of the Costs and Benefits of UML in Software Maintenance. IEEE Transactions on Software Engineering 34(3), 407–432 (2008)

    Article  Google Scholar 

  34. Ferber, J.: Computational Reflection in Class Based Object Oriented Languages. In: Proc. of OOPSLA 1989, pp. 317–326. ACM (October 1989)

    Google Scholar 

  35. Garlan, D., Cheng, S.-W., Huang, A.-C., Schmerl, B., Steenkiste, P.: Rainbow: Architecture-Based Self Adaptation with Reusable Infrastructure. IEEE Computer 37(10), 46–54 (2004)

    Article  Google Scholar 

  36. Garlan, D., Schmerl, B., Cheng, S.-W.: Software Architecture-Based Self-Adaptation. In: Autonomic Computing and Networking, pp. 31–55. Springer (2009)

    Google Scholar 

  37. Goldsby, H.J., Cheng, B.H.C.: Automatically Generating Behavioral Models of Adaptive Systems to Address Uncertainty. In: Czarnecki, K., Ober, I., Bruel, J.-M., Uhl, A., Völter, M. (eds.) MODELS 2008. LNCS, vol. 5301, pp. 568–583. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  38. Gregersen, A.R., Jørgensen, B.N.: Dynamic Update of Java Applications — Balancing Change Flexibility vs Programming Transparency. Journal of Software Maintenance and Evolution: Research and Practice 21(2), 81–112 (2009)

    Article  Google Scholar 

  39. Huang, G., Mei, H., Yang, F.-Q.: Runtime Software Architecture Based on Reflective Middleware. Journal of Information Science 47(5), 555–576 (2004)

    Google Scholar 

  40. Hürsch, W., Videira Lopes, C.: Separation of Concerns. Technical Report NU-CCS-95-03, Northeastern University, Boston (February 1995)

    Google Scholar 

  41. Kabanov, J.: JRebel Tool Demo. ENTCS 264(4), 51–57 (2011)

    Google Scholar 

  42. Keeney, J., Cahill, V.: Chisel: A Policy-Driven, Context-Aware, Dynamic Adaptation Framework. In: Proc. of POLICY 2003, Como, Italy, pp. 3–14 (June 2003)

    Google Scholar 

  43. Caskurlu, B.: Model Driven Engineering. In: Butler, M., Petre, L., Sere, K. (eds.) IFM 2002. LNCS, vol. 2335, pp. 286–298. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  44. Kephart, J.O., Chess, D.M.: The Vision of Autonomic Computing. IEEE Computer 36(1), 41–50 (2003)

    Article  Google Scholar 

  45. Kiczales, G., des Rivières, J., Bobrow, D.G.: The Art of the Metaobject Protocol. MIT Press, Cambridge (1991)

    Google Scholar 

  46. Kon, F., Costa, F., Blair, G., Campbell, R.H.: The Case for Reflective Middleware. Commun. ACM 45(6), 33–38 (2002)

    Article  Google Scholar 

  47. Kramer, J., Magee, J.: Self-Managed Systems: an Architectural Challenge. In: Proc. of FoSE 2007, Minneapolis, USA, pp. 259–268. IEEE (May 2007)

    Google Scholar 

  48. Kruchten, P.: The 4+1 View Model of Architecture. IEEE SW 12(6), 61–70 (1995)

    Google Scholar 

  49. Lehman, M.M.: Programs, Life Cycles, and Laws of Software Evolution. Proc. of the IEEE 68(9), 1060–1076 (1980); Special Issue on Software Engineering

    Article  Google Scholar 

  50. Lehman, M.M.: Laws of Software Evolution Revisited. In: Montangero, C. (ed.) EWSPT 1996. LNCS, vol. 1149, pp. 108–124. Springer, Heidelberg (1996)

    Chapter  Google Scholar 

  51. Lehman, M.M., Fernández-Ramil, J.C., Kahen, G.: A Paradigm for the Behavioural Modelling of Software Processes using System Dynamics. Technical Report 2001/8, Imperial College, London, United Kingdom (September 2001)

    Google Scholar 

  52. Maes, P.: Concepts and Experiments in Computational Reflection. In: Proc. of OOPSLA 1987, Orlando, USA, pp. 147–156. ACM (October 1987)

    Google Scholar 

  53. Magee, J., Kramer, J.: Self-Organising Software Architecture. In: Proc. of ISAW 1996, San Francisco, CA, USA, pp. 35–38. ACM (October 1996)

    Google Scholar 

  54. Mens, T., Wermelinger, M.: Separation of Concerns for Software Evolution. Journal of Maintenance and Evolution 14(5), 311–315 (2002)

    Article  Google Scholar 

  55. Murphy, G.C.: Architecture for Evolution. In: Proc. of ISAW 1996, San Francisco, CA, USA, pp. 83–86. ACM (October 1996)

    Google Scholar 

  56. Nierstrasz, O., Achermann, F.: Supporting Compositional Styles for Software Evolution. In: Proc. of ISPSE 2000, Kanazawa, Japan, pp. 11–19 (November 2000)

    Google Scholar 

  57. Nierstrasz, O., Denker, M., Renggli, L.: Model-Centric, Context-Aware Software Adaptation. In: Cheng, B.H.C., de Lemos, R., Giese, H., Inverardi, P., Magee, J. (eds.) Software Engineering for Self-Adaptive Systems. LNCS, vol. 5525, pp. 128–145. Springer, Heidelberg (2009)

    Chapter  Google Scholar 

  58. OMG. OMG-XML Metadata Interchange (XMI) Specification, v1.2. OMG Modeling and Metadata Specifications (January 2002), http://www.omg.org

  59. Oreizy, P., Gorlick, M.M., Taylor, R.N., Heimbigner, D., Johnson, G., Medvidovic, N., Quilici, A., Rosenblum, D.S., Wolf, A.L.: An Architecture Based Approach to Self-Adaptive Software. IEEE Intelligent Systems, 54–62 (1999)

    Google Scholar 

  60. Perrouin, G., Morin, B., Chauvel, F., Fleurey, F., Klein, J., Traon, Y.L., Barais, O., Jézéquel, J.-M.: Towards Flexible Evolution of Dynamically Adaptive Systems. In: Proc. of ICSE 2012, Zürich, Switzerland, pp. 1353–1356. IEEE (June 2012)

    Google Scholar 

  61. Pukall, M., Grebhahn, A., Schröter, R., Kästner, C., Cazzola, W., Götz, S.: JavAdaptor: Unrestricted Dynamic Software Updates for Java. In: Proc. of ICSE 2011, Waikiki, Honolulu, Hawaii, pp. 989–991. IEEE (May 2011)

    Google Scholar 

  62. Pukall, M., Kästner, C., Cazzola, W., Götz, S., Grebhahn, A., Schöter, R., Saake, G.: JavAdaptor — Flexible Runtime Updates of Java Applications. Software—Practice and Experience 43(2), 153–185 (2013)

    Article  Google Scholar 

  63. Pukall, M., Kästner, C., Saake, G.: Towards Unanticipated Runtime Adaptation of Java Applications. In: Proc. of APSEC 2008, Bejing, China, pp. 85–92. IEEE Computer Society (December 2008)

    Google Scholar 

  64. Rank, S.: Architectural Reflection for Software Evolution. In: Proc. of RAM-SE 2005, Glasgow, Scotland, pp. 53–58 (July 2005)

    Google Scholar 

  65. Rouvoy, R., Barone, P., Ding, Y., Eliassen, F., Hallsteinsen, S., Lorenzo, J., Mamelli, A., Scholz, U.: MUSIC: Middleware Support for Self-Adaptation in Ubiquitous and Service-Oriented Environments. In: Cheng, B.H.C., de Lemos, R., Giese, H., Inverardi, P., Magee, J. (eds.) Self-Adaptive Systems. LNCS, vol. 5525, pp. 164–182. Springer, Heidelberg (2009)

    Google Scholar 

  66. Salehie, M., Tahvildari, L.: Self-Adaptive Software: Landscape and Research Challenges. Trans. on Autonomous and Adaptive Systems 14, 14:1–14:42 (2009)

    Google Scholar 

  67. Savigni, A., Tisato, F.: Designing Traffic Control Systems. A Software Engineering Perspective. In: Proc. of Jubilee 2000 Conference, Roma, Italy (September 2000)

    Google Scholar 

  68. Ubayashi, N., Akatoki, H., Nomura, J.: Pointcut-based Architectural Interface for Bridging a Gap between Design and Implementation. In: Proc. of RAM-SE 2009, Genoa, Italy (July 2009)

    Google Scholar 

  69. Würthinger, T., Wimmer, C., Stadler, L.: Dynamic Code Evolution for Java. In: Proc. of PPPJ 2010, Vienna, Austria, pp. 10–19 (September 2010)

    Google Scholar 

  70. Yoder, J.W., Johnson, R.E.: The Adaptive Object-Model Architectural Style. In: Proc. of WICSA 2002, pp. 3–27. Kluwer (August 2002)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2014 Springer International Publishing Switzerland

About this chapter

Cite this chapter

Cazzola, W. (2014). Evolution as ≪Reflections on the Design≫. In: Bencomo, N., France, R., Cheng, B.H.C., Aßmann, U. (eds) Models@run.time. Lecture Notes in Computer Science, vol 8378. Springer, Cham. https://doi.org/10.1007/978-3-319-08915-7_10

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-08915-7_10

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-08914-0

  • Online ISBN: 978-3-319-08915-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics