Evolution as≪ Reflections on the Design≫
W Cazzola - Models@ run. time: Foundations, Applications, and …, 2014 - Springer
Models@ run. time: Foundations, Applications, and Roadmaps, 2014•Springer
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 …
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 …
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.
Springer
顯示最佳搜尋結果。 查看所有結果