Dynamic Deployment of Executing and Simulating Software Components
Authors: Alexander Egyed
Physical boundaries have caused software systems to become less monolithic and more distributed. The trend is progressing to a point where software systems will consist of numerous, loosely-coupled, heterogeneous software components. Increased software dynamism will allow these components to be composed, interchanged, upgraded, or even moved without shutting down the system itself. This form of dynamism is already well-supported through new programming constructs and support libraries (i.e., late binding, introspection); however, we are currently ill-equipped to analyze and simulate those kinds of systems. This paper demonstrates that software dynamism requires not only new modeling constructs but also new simulation environments. While in the past, simulation merely mimicked some real-world behavior, we argue that in the future it will become necessary to intertwine the model world with the real world. This will be essential but not limited to cases where (1) one has incomplete access to models (i.e., proprietary COTS components), (2) it is too expensive to model (i.e., Internet as a connector between software components), or (3) one has not complete faith in models (i.e., legacy components). This paper presents our approach to the concurrent execution and simulation of deployed software components. It will also discuss key differences to "traditional" simulation, emulation, and other similar concepts that are being used to integrate the model world with the real world.
Download PDF here!