No system is exempted from the need of evolving either to fix bugs or to add new features. To evolve becomes particularly problematic when the system to evolve can not be stopped. Traditionally the evolution of a nonstopping system is tackled on by calculating all the possible evolutions in advance and hardwiring them in the application itself. This approach gives origin to the code pollution phenomenon where the code of the application is polluted by code that could never be applied. The approach has the following defects: i) code bloating, ii) it is impossible to forecast any possible change and iii) the code becomes hard to read and maintain. Computational reflection by definition allows an application to introspect and intercede on its own structure and behavior endowing, therefore, a reflective application with (potentially) the ability of self-adapting. Furthermore, to deal with the evolution as a nonfunctional concerns, i.e., that can be separated from the current implementation of the application, can limit the code pollution phenomenon. To bring the design information (model and/or architecture) at run-time provides the application with a basic knowledge about itself to reflect on when a change is necessary. The availability of such a knowledge at run-time frees the designer from forecasting and including any possible evolution for its application in favor of a sort of evolutionary engine that, to some extent, can evaluate which countermove to apply. In this contribution, the author will explore the role of reflection in the development of self-adapting applications and in particular the benefits of planning the evolution on the application design information rather than directly on the code.
|Titolo:||Cogito, Ergo Muto!|
CAZZOLA, WALTER (Primo)
|Parole Chiave:||reflection, software evolution, design information|
|Settore Scientifico Disciplinare:||Settore INF/01 - Informatica|
|Data di pubblicazione:||set-2009|
|Tipologia:||Book Part (author)|
|Appare nelle tipologie:||03 - Contributo in volume|