From: Mart Lubbers Date: Sat, 29 Apr 2017 13:08:34 +0000 (+0200) Subject: add images, update intro, add iTasks intro X-Git-Tag: hand-in~138 X-Git-Url: https://git.martlubbers.net/?a=commitdiff_plain;h=dc057560c806a535088e1d9ebdbdd0737467ecc3;p=msc-thesis1617.git add images, update intro, add iTasks intro --- diff --git a/Makefile b/Makefile index 04e20c5..9c08e6e 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,7 @@ all: $(addsuffix .pdf,$(DOCS)) $(LATEX) $(LATEXFLAGS) -ini -jobname="$(basename $@)" "&$(LATEX) $<\dump" %.pdf: %.mlog - if $(GREP) -iFq 'Rerun to get' $<; then $(LATEX) $(LATEXFLAGS) $(basename $<); fi + if $(GREP) -iFq 'Rerun' $<; then $(LATEX) $(LATEXFLAGS) $(basename $<); fi %.mlog: %.tex %.fmt $(wildcard *.bib) $(wildcard *.tex) $(LATEX) $(LATEXFLAGS) $< diff --git a/examples/.gitignore b/examples/.gitignore new file mode 100644 index 0000000..9e4e1e8 --- /dev/null +++ b/examples/.gitignore @@ -0,0 +1,5 @@ +Clean System Files +name +name-data +name-www +name-sapl diff --git a/img/taskex1.png b/img/taskex1.png new file mode 100644 index 0000000..cbef4d2 Binary files /dev/null and b/img/taskex1.png differ diff --git a/img/taskex2.png b/img/taskex2.png new file mode 100644 index 0000000..41f1935 Binary files /dev/null and b/img/taskex2.png differ diff --git a/img/taskex3.png b/img/taskex3.png new file mode 100644 index 0000000..6768004 Binary files /dev/null and b/img/taskex3.png differ diff --git a/introduction.tex b/introduction.tex index b2ae11c..6ec3e65 100644 --- a/introduction.tex +++ b/introduction.tex @@ -4,26 +4,39 @@ high abstraction level of real life workflow tasks. Through an \gls{EDSL} that programmers can model workflow tasks. The system will then generate a multi-user web service. This web service can be accessed through a browser and used to complete these \glspl{Task}. Familiar workflow patterns like sequence, -parallel and conditional tasks can be modelled. +parallel and conditional tasks can be modelled. From the \gls{Task} description +the system will generate an multi-user web application for real life tasks. -describes workflows as \glspl{Task}. From the \gls{Task} description the system genThe system is originally designed to generate applications for real -life tasks that have to be \todo{cont.} +\gls{iTasks} has been shown to be useful in many fields of operation such as incident +management~\cite{lijnse_top_2013}. Interfaces are automatically generated for +the types of data which makes rapid development possible. However, while the +tasks in the \gls{iTasks} system model after real life workflow tasks the +modelling is very high level. It is difficult to connect actual tasks to the +real tasks and let them interact. A lot of the actual tasks can be +\emph{performed} by small \gls{IoT} devices. Nevertheless, adding such devices +to the current system is difficult to say the least as it was not designed to +cope with these devices. -\gls{iTasks} has been shown to be useful in fields such as incident -management~\cite{lijnse_top_2013}. However, there still lacks support for small -devices to be added in the workflow. In principle such adapters can be written -as \glspl{SDS}\footnote{Similar as to resources such as time are available in +In the current system such adapters, in principle, can be written as +\glspl{SDS}\footnote{Similar as to resources such as time are available in the current \gls{iTasks} implementation} but this requires a very specific -adapter to be written for every device and functionality. Oortgiese et al.\ -lifted \gls{iTasks} from a single server model to a distributed server -architecture~\cite{oortgiese_distributed_2017} that is also runnable on smaller -devices like \acrshort{ARM}. However, this is limited to fairly high -performance devices that are equipped with high speed communication lines. -Devices in \gls{IoT} often only have \gls{LTN} communication with low bandwidth -and a very limited amount of processing power. \glspl{mTask} will bridge this -gap. It can run on devices as small as Arduino microcontrollers and operates -via the same paradigms as regular \glspl{Task}. The \glspl{mTask} have access -to \glspl{SDS} and can run small imperative programs. +adapter to be written for every device and functionality. Moreover, this does +not allow you to build in logic into the device. A lot of the small \gls{IoT} +devices have limited processing power but can still contain decision making. +Oortgiese et al.\ lifted \gls{iTasks} from a single server model to a +distributed server architecture~\cite{oortgiese_distributed_2017} that is also +runnable on smaller devices like \acrshort{ARM}. However, this is limited to +fairly high performance devices that are equipped with high speed communication +lines. Devices in \gls{IoT} often only have \gls{LTN} communication with low +bandwidth and a very limited amount of processing power and are therefore not +suitable to run an entire \gls{iTasks} core. + +\glspl{mTask} will bridge this gap by introducing a new communication protocol, +device server application and \glspl{Task} synchronizing the formers. +The system can run on devices as small as Arduino microcontrollers and +operates via the same paradigms and patterns as regular \glspl{Task}. +\glspl{mTask} can run small imperative programs written in a \gls{EDSL} and +have access to \glspl{SDS}. \section{Document structure} The structure of the thesis is as follows. @@ -37,3 +50,5 @@ Chapter~\ref{chp:conclusion} concludes by answering the research questions and discusses future research. Appendix~\ref{app:communication-protocol} shows the concrete protocol used for communicating between the server and client. +Appendix~\ref{app:device-interface} shows the concrete interface for the +devices. diff --git a/methods.tex b/methods.tex index 18cc188..473efcf 100644 --- a/methods.tex +++ b/methods.tex @@ -1,11 +1,45 @@ \section{\acrlong{TOP}} \gls{TOP} is a recent new programming paradigm implemented as -\gls{iTasks}~\cite{achten_introduction_2015} in -the pure lazy functional language \gls{Clean} +\gls{iTasks}\cite{achten_introduction_2015} in the pure lazy functional +language \gls{Clean}\cite{brus_cleanlanguage_1987}. \gls{iTasks} is a +\gls{EDSL} to model workflow tasks in the broadest sense. A \CI{Task} is just +a function that, given some state, returns the observable value of the +\CI{TaskValue}. A simple example is shown in Listing~\ref{lst:taskex} +accompanied with Figure~\ref{fig:taskex1},~\ref{fig:taskex2} and~% +\ref{fig:taskex3}. + +\begin{lstlisting}[language=Clean,label={lst:taskex},% + caption={An example \gls{Task} for entering a name}] +:: Name = { firstname :: String + , lastname :: String + } + +derive class iTask Name + +enterInformation :: String [EnterOption m] -> (Task m) | iTask m + +enterName :: Task Name +enterName = enterInformation "Enter your name" [] +\end{lstlisting} -\todo{Main terms} -The lazy functional programming language based on graph rewriting -\gls{Clean}~\cite{brus_cleanlanguage_1987} +\begin{figure}[H] + \begin{subfigure}{.25\textwidth} + \centering + \includegraphics[width=.9\linewidth]{taskex1} + \caption{Initial interface}\label{fig:taskex1} + \end{subfigure} + \begin{subfigure}{.25\textwidth} + \centering + \includegraphics[width=.9\linewidth]{taskex2} + \caption{Incomplete entrance}\label{fig:taskex2} + \end{subfigure} + \begin{subfigure}{.25\textwidth} + \centering + \includegraphics[width=.9\linewidth]{taskex3} + \caption{Complete entry}\label{fig:taskex3} + \end{subfigure} + \caption{Example of a generated user interface} +\end{figure} \section{\acrlong{EDSL}s} \glspl{mTask} are expressed in a class based shallowly embedded \gls{EDSL}. diff --git a/thesis.pre b/thesis.pre index ef1cc96..9ec3c0a 100644 --- a/thesis.pre +++ b/thesis.pre @@ -12,6 +12,9 @@ \usepackage{subcaption} % Subcaptions \usepackage{lipsum} % dummy text \usepackage{listings} % source code +\usepackage{float} % floating images + +\graphicspath{{img/}} \urlstyle{same} \hypersetup{% @@ -23,6 +26,7 @@ pdfkeywords={TOP,iTasks,Clean,Function Programming,IoT}, hidelinks=true } + \pdfstringdefDisableCommands{% \def\acrlong#1{}% \def\acrshort#1{}% @@ -81,6 +85,8 @@ {.&&.}{{\texttt{.\&\&.}}}4 } +\newcommand{\CI}[1]{\lstinline[language=Clean]|#1|} + \lstset{% breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace breaklines=true, % sets automatic line breaking