Merge branch 'master' of git.martlubbers.net:msc-thesis1617
[msc-thesis1617.git] / intro.intro.tex
1 \subsection{Internet of Things}
2 \Gls{IoT} technology is emerging rapidly. It offers myriads of solutions
3 and is transforming the way people interact with technology.
4
5 The term \gls{IoT} was coined around 1999 to describe \gls{RFID} devices and
6 the communication between them. After a small slumber of the term, it
7 resurfaced recently and has changed definition slightly. In the current day and
8 age, \gls{IoT} encompasses all small devices that communicate with each other
9 and --- most of all --- with the world. It has been estimated that there will
10 be around 30 billion \gls{IoT} devices online in 2020. Even today, \gls{IoT}
11 devices are already in everyone's household in the form of smart electricity
12 meters, smart fridges, smartphones, smart watches. These devices are often
13 equipped with sensors, \gls{GNSS} modules\footnote{e.g.\ the American \gls{GPS}
14 or the Russian \gls{GLONASS}.} and actuators~\cite{da_xu_internet_2014}. With
15 these new technologies, information can be tracked accurately using little
16 power, bandwidth and money. Moreover, \gls{IoT} technology is coming into
17 healthcare as well~\cite{riazul_islam_internet_2015}. For example, for a few
18 euros a consumer ready fitness tracker watch can be bought that tracks
19 heartbeat and respiration levels.
20
21 The architecture of \gls{IoT} systems is often divided into layers. A very
22 popular division is the four layer architecture but there are also proponents
23 of a five layer structure. The first layer of the four layer architecture is
24 the sensing layer. This layer contains the actual sensing and acting hardware.
25 In a smart electricity meter, this layer would contains the sensors detecting
26 the current drawn. There are myriads of device available to use in this layer
27 and they can be programmed using a variety of different low level programming
28 languages such as \gls{C++}, \gls{C} but also higher level languages such as
29 \gls{Python} and \gls{LUA}. The second layer of \gls{IoT} is the networking
30 layer and is responsible for connecting the first layer with the outer world.
31 In a smart electricity meter, this would be the \textsc{GSM} modem connecting
32 the meter to a server. Existing networking techniques --- such as WiFi and
33 \textsc{GSM} --- are used to convey \gls{IoT} information but there are also
34 specialized communication techniques devised for \gls{IoT} such as ZigBee, LoRa
35 and Bluetooth Low Energy. The third layer is called the service layer. This layer is
36 responsible for all the servicing and business rules surrounding the
37 application. It provides \glspl{API} and interfaces to, and storage of the
38 data. Finally, the fourth layer is the application layer. This final layer
39 provides the applications that the user can use to interact with the \gls{IoT}
40 devices and their data. In a smart electricity meter, this layer would be the
41 app that can be used to monitor the electricity consumption.
42
43 The separation of \gls{IoT} in layers is a difficulty when developing \gls{IoT}
44 applications. All layers use different paradigms, languages and architectures
45 which leads to isolated logic which makes it difficult to integrate. Rolling
46 out changes to the system is also complicated since reprogramming
47 microcontrollers in the field is very expensive. Even the changing a few
48 parameters on a device requires often a full reprogram.
49
50 \subsection{Task Oriented Programming}
51 The \gls{TOP} paradigm and the corresponding \gls{iTasks} implementation offer
52 a high abstraction level for real world workflow
53 tasks~\cite{plasmeijer_itasks:_2007}. These workflow tasks can be described
54 through an \gls{EDSL} hosted in the purely functional programming language
55 \gls{Clean}. \glspl{Task} are the basic building blocks of the language and
56 they resemble actual workflow tasks. For the specification, the system will
57 generate a multi-user web application. This web service can be accessed through
58 a browser and is used to complete these \glspl{Task}. Familiar workflow
59 patterns like sequential, parallel and conditional \glspl{Task} chaining can be
60 modelled in the language.
61
62 \Gls{iTasks} has shown to be useful in many fields of operation such as
63 incident management~\cite{lijnse_top_2013}. \Gls{iTasks} is highly type driven
64 and is built on generic functions that generate functionality for the given
65 types. This results in the programmer having to do very little implementation
66 work on details such as user interfaces. It is possible to change the derived
67 functions and adapt them to needs.