-
Notifications
You must be signed in to change notification settings - Fork 0
/
eup.tex
43 lines (41 loc) · 2.25 KB
/
eup.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
\subsection{Streaming for End-Users}\label{sec:eup} % Martin
\begin{figure}[!h]
\centerline{\includegraphics[width=\columnwidth]{CallStats.jpg}}
\vspace*{-3mm}
\caption{\label{fig:activesheets}ActiveSheets example.}
\vspace*{-4mm}
\end{figure}
We use the term \emph{end-users} to refer to users without particular
software development training. Probably the most successful
programming tool for end-users is spreadsheet formulas. And from the
early days of VisiCalc in 1979~\cite{bricklin_frankston_1979},
spreadsheet formulas have been \emph{reactive} in the sense that any
changes in their inputs trigger an automatic recomputation of their
outputs. Therefore, in 2014, Vaziri et al.\ designed \textsf{ActiveSheets}, a
spreadsheet-based stream programming model~\cite{vaziri_et_al_2014}.
Figure~\ref{fig:activesheets} gives an example that implements a
similar computation as Figure~\ref{fig:cql}.
Cells \lstinline{A3:B8} contain a sliding window of recent call
records, which ActiveSheets updates from live input data. Cells
\lstinline{D6:F6} contain the output data, \mbox{(re-)}com\-pu\-ted
using reactive spreadsheet formulas. The formula
\mbox{\lstinline{E6=COUNTIF(A3:A8,D6)}} counts how many calls in the
window are as long as a longest call. The formula
\mbox{\lstinline{F6=INDEX(B3:B8,F2)}} uses the relative index \lstinline{F2}
of the longest \lstinline{len} to retrieve the corresponding
caller. ActiveSheets was influenced by
synchronous dataflow, discussed in Section~\ref{sec:sdf}.
%
%% After the initial ActiveSheets paper, there has been additional work
%% on using spreadsheets to develop stream processing applications.
%% ActiveSheets has been extended with time-based windows, key-based
%% partitions, and performance optimizations~\cite{hirzel_et_al_2016}.
%% And Chang and Myers hooked up streaming spreadsheets with REST APIs and
%% JSON~\cite{chang_myers_2015}.
Of course, spreadsheets are not the
only approach for end-user programming. For instance,
\textsf{MARIO} constructed streaming applications automatically based
on search terms~\cite{riabov_et_al_2008}. Linehan et al.\ used a
controlled natural language for specifying event processing
rules~\cite{linehan_et_al_2011}. And \textsf{TEM} used model-driven
development based on a spreadsheet~\cite{etzion_et_al_2016}.