Learn More
Although battery capacities keep increasing, the execution demands of modern mobile devices continue to outstrip their battery lives. As a result, battery life is bound to remain a key constraining factor in the design of mobile applications. To save battery power, mobile applications are often partitioned to offload parts of their execution to a remote(More)
As energy efficiency has become a key consideration in the engineering of mobile applications, an increasing number of perfective maintenance tasks are concerned with optimizing energy consumption. However, optimizing a mobile application to reduce its energy consumption is non-trivial due to the highly volatile nature of mobile execution environments.(More)
Using cloud-based services can improve the performance, reliability, and scalability of a software application. However, transitioning an application to use cloud-based services is difficult, costly, and error-prone. The required re-engineering effort includes migrating to the cloud the functionality to be accessed as remote cloud-based services and(More)
Because middleware abstractions remove the need for low-level network programming, modern distributed component systems expose network volatility (i.e., frequent but intermittent outages) as application level exceptions, requiring custom manual handling. Unfortunately, handling network volatility effectively is nontrivial—the programmer must consider not(More)
With battery capacities remaining a key physical constraint for mobile devices , energy efficiency has become an important software design consideration. Distributed programming abstractions (e.g., sockets, RPC, messages, etc.) are an essential component of modern software, but their energy consumption characteristics are poorly understood. The programmer(More)
Due to the shift from software-as-a-product (SaaP) to software-as-a-service (SaaS), software components that were developed to run in a single address space must increasingly be accessed remotely across the network. Distribution middleware is frequently used to facilitate this transition. Yet a range of middleware platforms exist, and there are few existing(More)
Due to the shift from software-as-a-product (SaaP) to software-as-a-service (SaaS), software components that were developed to run in a single address space must increasingly be accessed remotely across the network. Distribution middleware is frequently used to facilitate this transition. Yet a range of middleware platforms exist, and there are few existing(More)
The energy demands of modern mobile devices are outstripping their battery lives. As a result, energy efficiency-fitting an energy budget and maximizing the utility of applications under given battery constraints-has become an important system design consideration. Because network communication incurs high energy costs in mobile applications, middleware(More)