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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
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)
Badouel, E., Oliver, J.: Reconfigurable Nets, a Class of High Level Petri Nets Supporting Dynamic Changes within Workflow Systems. RR PI-1163, IRISA (1998)
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)
Barais, O., Le Meur, A.-F., Duchien, L., Lawall, J.L.: Software Architecture Evolution. In: Software Evolution, pp. 233–262. Springer (2008)
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)
Bencomo, N.: On the Use of Software Models during Software Execution. In: Proc. of MISE 2009, Vancouver, Canada (May 2009)
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)
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)
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)
Booch, G., Rumbaugh, J., Jacobson, I.: The Unified Modeling Language User Guide, 3rd edn. Object Technology Series. Addison-Wesley (February 1999)
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)
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)
Capra, L., Cazzola, W.: Self-Evolving Petri Nets. Journal of Universal Computer Science 13(13), 2002–2034 (2007)
Cazzola, W.: Evaluation of Object-Oriented Reflective Models. In: Proc. of EWROOPS 1998, Brussels, Belgium (July 1998)
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)
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)
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)
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)
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)
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)
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)
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)
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)
Costa-Soria, C.: Dynamic Evolution and Reconfiguration of Software Architectures through Aspects. Ph.D. Thesis, Universitat Politècnica de València (June 2011)
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)
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)
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)
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)
DeRemer, F., Kron, H.H.: Programming-in-the-large versus Programming-in-the-small. IEEE Transactions on Software Engineering 2, 80–86 (1976)
Dobson, S.: Fulfilling the Vision of Autonomic Computing. IEEE Computer 43(1), 35–41 (2010)
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)
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)
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)
Ferber, J.: Computational Reflection in Class Based Object Oriented Languages. In: Proc. of OOPSLA 1989, pp. 317–326. ACM (October 1989)
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)
Garlan, D., Schmerl, B., Cheng, S.-W.: Software Architecture-Based Self-Adaptation. In: Autonomic Computing and Networking, pp. 31–55. Springer (2009)
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)
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)
Huang, G., Mei, H., Yang, F.-Q.: Runtime Software Architecture Based on Reflective Middleware. Journal of Information Science 47(5), 555–576 (2004)
Hürsch, W., Videira Lopes, C.: Separation of Concerns. Technical Report NU-CCS-95-03, Northeastern University, Boston (February 1995)
Kabanov, J.: JRebel Tool Demo. ENTCS 264(4), 51–57 (2011)
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)
Caskurlu, B.: Model Driven Engineering. In: Butler, M., Petre, L., Sere, K. (eds.) IFM 2002. LNCS, vol. 2335, pp. 286–298. Springer, Heidelberg (2002)
Kephart, J.O., Chess, D.M.: The Vision of Autonomic Computing. IEEE Computer 36(1), 41–50 (2003)
Kiczales, G., des Rivières, J., Bobrow, D.G.: The Art of the Metaobject Protocol. MIT Press, Cambridge (1991)
Kon, F., Costa, F., Blair, G., Campbell, R.H.: The Case for Reflective Middleware. Commun. ACM 45(6), 33–38 (2002)
Kramer, J., Magee, J.: Self-Managed Systems: an Architectural Challenge. In: Proc. of FoSE 2007, Minneapolis, USA, pp. 259–268. IEEE (May 2007)
Kruchten, P.: The 4+1 View Model of Architecture. IEEE SW 12(6), 61–70 (1995)
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
Lehman, M.M.: Laws of Software Evolution Revisited. In: Montangero, C. (ed.) EWSPT 1996. LNCS, vol. 1149, pp. 108–124. Springer, Heidelberg (1996)
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)
Maes, P.: Concepts and Experiments in Computational Reflection. In: Proc. of OOPSLA 1987, Orlando, USA, pp. 147–156. ACM (October 1987)
Magee, J., Kramer, J.: Self-Organising Software Architecture. In: Proc. of ISAW 1996, San Francisco, CA, USA, pp. 35–38. ACM (October 1996)
Mens, T., Wermelinger, M.: Separation of Concerns for Software Evolution. Journal of Maintenance and Evolution 14(5), 311–315 (2002)
Murphy, G.C.: Architecture for Evolution. In: Proc. of ISAW 1996, San Francisco, CA, USA, pp. 83–86. ACM (October 1996)
Nierstrasz, O., Achermann, F.: Supporting Compositional Styles for Software Evolution. In: Proc. of ISPSE 2000, Kanazawa, Japan, pp. 11–19 (November 2000)
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)
OMG. OMG-XML Metadata Interchange (XMI) Specification, v1.2. OMG Modeling and Metadata Specifications (January 2002), http://www.omg.org
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)
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)
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)
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)
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)
Rank, S.: Architectural Reflection for Software Evolution. In: Proc. of RAM-SE 2005, Glasgow, Scotland, pp. 53–58 (July 2005)
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)
Salehie, M., Tahvildari, L.: Self-Adaptive Software: Landscape and Research Challenges. Trans. on Autonomous and Adaptive Systems 14, 14:1–14:42 (2009)
Savigni, A., Tisato, F.: Designing Traffic Control Systems. A Software Engineering Perspective. In: Proc. of Jubilee 2000 Conference, Roma, Italy (September 2000)
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)
Würthinger, T., Wimmer, C., Stadler, L.: Dynamic Code Evolution for Java. In: Proc. of PPPJ 2010, Vienna, Austria, pp. 10–19 (September 2010)
Yoder, J.W., Johnson, R.E.: The Adaptive Object-Model Architectural Style. In: Proc. of WICSA 2002, pp. 3–27. Kluwer (August 2002)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)