related.tex 2.31 KB
\section{Related Work}
\label{sec-related}

New systems such as EnFrame~\cite{arxiv13-enframe} reflect growing interest
in managing uncertainty at the language level. EnFrame focuses on enabling
programming with uncertain data, rather than the runtime adaptation enabled
by \texttt{maybe}.

Aspect oriented programming (AOP)~\cite{aop} aims to increase modularity
through the separation of cross-cutting concerns. The programmer expresses
cross-cutting concerns in stand alone modules, or aspects, which specify a
computation to be performed as well as points in the program at which that
computation should be performed. Fundamentally, the goals of AOP and the
\texttt{maybe} statement differ, with AOP focusing on modularity and
\texttt{maybe} focused on enabling adaptation by expressing uncertainty.

\texttt{maybe} shares similaries with language-based approaches to adapting
energy consumption such as Eon~\cite{sensys07-eon} and
Levels~\cite{sensys07-levels}. However, these approaches still require
programmers to express certainty by associating code with energy states,
rather than allowing the \texttt{maybe} system to determine which energy
states are appropriate. \texttt{maybe} can also enable adaptation driven by
goals other than energy management.

Attempts to enable more adaptive mobile systems date back to systems such as
Odyssey~\cite{odyssey-sosp97}. However, a taxonomy of approaches to enabling
adaptation on early mobile systems~\cite{badrinath2000conceptual} reflects
the focus of early efforts on incorporating adaptation into libraries that
could be used by multiple apps. As we have pointed out previously, while
adaptation libraries are useful, \texttt{maybe} statements can make them more
powerful by allowing programmers to express uncertainty.

Recent approaches that allow mobile devices to effectively offload
computation by automating client-cloud partitioning are also related to the
\texttt{maybe} statement. Systems such as Tactics~\cite{tactics-mobisys03}
and MAUI~\cite{maui-mobisys10} used a variety of approaches to enabling this
form of adaptation but are narrowly-focused on harnessing opportunities for
remote execution. At present \texttt{maybe} focuses on single-device
adaptation, but we are interested in exploring the ability to use uncertainty
to distribute computation between multiple devices as future work.