Toward open-world software: Issues and challenges - Baresi, L.; Di Nitto, E.; Ghezzi, C. (Computer (Long Beach, Calif.), 2006)
Traditional software development is based on the closed-world assumption that the boundary between system and environment is known and unchanging. However, this assumption no longer works within today's unpredictable open-world settings, especially in ubiquitous and pervasive computing settings, which demand techniques that let software react to changes by self-organizing its structure and self-adapting its behavior. The more we move toward dynamic and heterogeneous systems, and the more we stress their self-healing and self-adapting capabilities, the more we need new approaches to develop these applications and new ways to structure and program them. Programming open systems requires new programming language features. Two features that bear investigation are introspection mechanisms to get runtime information about newly encountered services and reflective mechanisms to adapt client applications dynamically. Some existing standards, industrial products, and research prototypes that support, to a certain extent, the open-world assumptions are service-oriented technologies, publish/subscribe middleware systems, grid infrastructures, autonomic frameworks