Composing adaptive software

P.K. McKinley, S.M. Sadjadi, E.P. Kasten, B.H.C. Cheng
2004 Computer  
Middleware Compositional adaptation Separation of concerns Computational reflection Component-based design Figure 1. Main technologies supporting compositional adaptation: separation of concerns, computational reflection, and component-based design. Composing Adaptive Software I nterest in adaptive computing systems has increased dramatically in the past few years, and a variety of techniques now allow software to adapt dynamically to its environment. Two revolutions in the computing field are
more » ... riving this development. First is the emergence of ubiquitous computing, 1 which focuses on dissolving traditional boundaries for how, when, and where humans and computers interact. For example, mobile computing devices must adapt to variable conditions on wireless networks and conserve limited battery life. Second is the growing demand for autonomic computing, 2 which focuses on developing systems that can manage and protect themselves with only high-level human guidance. This capability is especially important to systems such as financial networks and power grids that must survive hardware component failures and security attacks. There are two general approaches to implementing software adaptation. Parameter adaptation modifies program variables that determine behavior. The Internet's Transmission Control Protocol is an often-cited example: TCP adjusts its behavior by changing values that control window management and retransmissions in response to apparent network congestion. But parameter adaptation has an inherent weakness. It does not allow new algorithms and components to be added to an application after the original design and construction. It can tune parameters or direct an application to use a different existing strategy, but it cannot adopt new strategies. By contrast, compositional adaptation exchanges algorithmic or structural system components with others that improve a program's fit to its current environment. With compositional adaptation, an application can adopt new algorithms for addressing concerns that were unforeseen during development. This flexibility supports more than simple tuning of program variables or strategy selection. It enables dynamic recomposition of the software during execution-for example, to switch program components in and out of a memory-limited device or to add new behavior to deployed systems. Dynamic recomposition of software dates back to the earliest days of computing, when self-modifying code supported runtime program optimization and explicit management of physical memory. However, such programs were difficult to write and debug. Several new software tools and technologies now help address these problems. Given the increasing pace of research in compositional adaptation, we offer a review of the supporting technologies, proposed solutions, and areas that require further study.
doi:10.1109/mc.2004.48 fatcat:clqdgahgzzarniquazmudawi4q