<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Developing Smart Agriculture Applications: Experiences and Lessons Learnt</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Isaac Nyabisa Oteyo</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Kennedy Kambona</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jesse Zaman</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Wolfgang De Meuter</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Elisa Gonzalez Boix</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Software Languages Lab, Vrije Universiteit Brussel</institution>
          ,
          <addr-line>Pleinlaan 2 1050 Brussels</addr-line>
          ,
          <country country="BE">Belgium</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-Smart agriculture applications are promising to improve traditional agriculture in developing regions. Farmers use these applications to collect data on agricultural activities and monitor different conditions in modern farms. However, from the development point of view, these applications are often implemented using text-based programming languages that require experienced programmers. Visual languages can be an alternative to text-based languages that may allow non-expert programmers (e.g., farmers) to implement these applications and make adjustments to existing ones. This study considers two exemplars of concrete and deployable smart agriculture applications (WebLog and UtafitiLog) developed using two different technologies. The study defines a set of parameters to evaluate these exemplars from which lessons are drawn that can be generalised to other smart agriculture applications. Index Terms-mobile applications, smart agriculture, distributed computing</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Smart agriculture aims to improve processes in modern
farms to handle the increasing global demand for food. In
developing regions, smart agriculture is partially realised by
means of distributed mobile applications running on
smartphones. Farmers in these regions have the applications
installed and configured on their smartphones from where they
can collect data and monitor environmental conditions on the
farm. Farming activities in these regions happen in small scale
farms [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] typically located in remote areas that are faced with
intermittent network connection issues [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]–[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. These
intermittent network connection issues contribute towards lowering
adoption rates for smart agriculture applications in developing
regions. Also, the nature of modern farms requires distributed
mobile applications that can be reconfigured to serve different
crops and farming seasons [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] i.e., the data parameters to be
collected vary for various crops and farming seasons. These
applications require to be extended and reconfigured to meet
the varying data parameters for various crops or farming
seasons. Hence, developing mobile software applications is
emerging as one of the vital sectors in smart agriculture to
promote sustainable food security [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. However, programmers
face several challenges while developing these applications
[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]; (i) changing application scenarios and as a consequence
application requirements, (ii) limited development time, and
(iii) intermittent network connection issues. During
implementation, developers can use either text-based or visual languages
to address the aforementioned concerns and the resulting
challenges.
      </p>
      <p>This study considers exemplars of two concrete and
deployable smart agriculture applications (WebLog and UtafitiLog)
implemented using two different technologies. The study
defines a set of parameters to evaluate these exemplars from
which lessons are drawn that can bee generalised to other
smart agriculture applications. This study is guided by the
following research question;</p>
      <sec id="sec-1-1">
        <title>How do text-based and visual languages compare when used to implement smart agriculture applications?</title>
        <p>In the subsequent sections, the paper is organised as follows.
Section II presents the motivation and running example on
smart agriculture applications. This is followed by the
application implementations in section III. Section IV presents
the evaluation and comparison, while section V presents the
discussions and the lessons learnt from the implementation.
Section VI presents the related work and lastly, section VII
presents the conclusions and gives directions for future work.</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>II. SMART AGRICULTURE APPLICATION</title>
      <p>In this work, we focus on small-scale farmers in
developing regions requiring distributed mobile smart agriculture
applications to collect different kinds of data. The data is
collected in a remote farm that is faced with intermittent
network connection issues. Data gathered from a variety of
weather sensors in the farm (e.g., temperature and humidity
sensors) is uploaded automatically to a server and can be
used by the farmer to make informed decisions on required
agronomic practices such as initiating programmed misting
of crops when temperatures exceed a set threshold. Changes
in the data collected from the weather sensors are expected
to reflect in real-time once uploaded onto the server. Using
the distributed mobile application, the farmer can scan a crop
label to invoke an interactive data input form that is adjustable
depending on parameters of interest. These parameters may
vary with regard to the farming season or type of crop, among
others.</p>
      <p>To guide our implementation, we derived the following
functional requirements; (i) user login to access application
services, (ii) viewing weather data on a dashboard, (iii) tagging
and scanning plant labels, (iv) generating data collection
surveys, (v) saving collected data to a database, (vi) fetching
and receiving data from weather sensors, (vii) generating alerts
based on set thresholds, and (viii) storing data on the mobile
device when the network becomes unavailable.</p>
      <p>Copyright © 2020 for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0)</p>
      <p>From this application example, we consider the following
(non-functional) requirements that form the key features for
modern smart agriculture applications in developing regions.</p>
      <p>Offline accessibility: The application should continue
functioning whenever the network connection becomes
unavailable. The application should use a client-side
database to store data locally on the mobile device while
waiting for the network connection to be regained.</p>
      <p>Reactivity: The application should respond to events
originating from the external environment in real-time.</p>
      <p>Also, the application should support generating relevant
notifications as soon as data from sensors is received
to motivate farming decisions, e.g., misting crops when
temperatures exceed certain thresholds.</p>
      <p>Reconfigurability: It should be possible to change and
adapt existing application components to fit different
scenarios after the initial development. For example, it
should be possible to change the data collection survey
to meet data collection requirements for different farming
seasons or crops.</p>
      <p>Extensibility: It should be possible to add new features
and services to the application after implementation,
e.g., by supporting Applications Programming Interfaces
(APIs) or reusable components.</p>
      <p>
        Based on these requirements, our goal was to get insights
on developing smart agriculture applications for small-scale
farmers in developing regions. We conducted preliminary
experiments to compare the technologies used in implementing
the exemplar applications and provide the lessons learnt. The
implemented applications meet the requirements derived in
this section. WebLog was implemented using React-Native
framework for JavaScript while UtafitiLog was implemented
using DisCoPar [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. DisCoPar is a reactive visual
domainspecific language (VDSL) specially designed for implementing
citizen science observatories in which applications are
represented as visual flow-graphs [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
    </sec>
    <sec id="sec-3">
      <title>III. APPLICATION IMPLEMENTATIONS</title>
      <p>In this section, we describe the implementation details for
WebLog and UtafitiLog following the requirements identified
in section II. These requirements were translated into
application modules to support modular design with APIs. The
development process followed an incremental and iterative
mechanism. This enabled documenting the design process,
results, and lessons learnt throughout the development phases.
One developer was engaged in implementing both
applications. As previously mentioned, WebLog and UtafitiLog were
implemented using text-based and visual languages
respectively.</p>
      <sec id="sec-3-1">
        <title>A. Application Architecture</title>
        <p>
          The architecture for both applications is presented in Fig. 1.
Both applications provide similar services that are linked to a
Node.js server. The applications consist of an Android mobile
application to gather data, a server to store the collected data
and generate notifications, and a web client that acts as a
dashboard to the server. Both applications are targeted to run
on the Android platform since it is a popular platform in
developing regions [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]. As shown in Fig. 1, the mobile
application and web dashboard communicate with the server
via RESTful APIs, HTTP requests, and web sockets. Sensor
data coming from the sensor cloud is saved to the server
from where it is reactively pushed to the mobile client and
dashboard using web sockets. Communication between the
server and clients happens through web sockets.
        </p>
        <p>Client-side</p>
        <p>Web dashboard</p>
        <p>In WebLog, the mobile application, server, and web
dashboard are implemented in JavaScript. React-Native and
ReactJS frameworks were used to implement the mobile application
and web dashboard respectively. The server was implemented
using Node.js linked to MongoDB for data storage. The mobile
application is composed of different parts (views/screens)
implemented as React-Native components (e.g., Login, Scan,
SensorData, DataCollection components etc.) to realise the
services the application offers. The application dashboard is
the entry point that anchors all application views to one central
navigation point. From the anchor point, users can navigate to
the various sections of the application.</p>
        <p>WebLog adheres to the previously identified requirements as
follows;</p>
        <p>1) Offline accessibility: WebLog uses a client-side database
that runs on the mobile device to store data whenever the
network becomes unavailable. The application keeps a counter
that indicates to the user the number of unsynchronised
records. If a farmer is collecting plant morphological data
and a network disconnection occurs before sending the data
to the server, the data is saved locally awaiting the network
reconnection. When the network becomes unavailable, the
application creates a database on the mobile device to save
data as illustrated in Fig. 2. The application uploads locally
stored data to the remote server when the network becomes
available and deletes the local copies to free up storage space.</p>
        <p>2) Reactivity: Code Listing 1 shows the specification for
sending weather data to clients via sockets. Clients have to
register to receive updates from the defined socket. New data
updates are automatically pushed to the client (line 14 in code
Listing 1). For example, the application provides a service to
Connection available</p>
        <p>Remote database</p>
        <p>Upload data
to remote
server</p>
        <p>Connection
unavailable
Client-side
database</p>
        <p>Connection regained
Delete local
copies</p>
        <p>Upload</p>
        <p>data
monitor temperature, humidity, and pressure conditions. This
data is displayed on a component that is updated whenever
the server receives new data.
1 sendSensorDataToClients = data =&gt; {
2 const socketIds = Object.keys(this.</p>
        <p>sockets);
let allSockets = this.sockets;
if (socketIds.length === 0) {
console.log("No client sockets.");
return;
}
const dataToSend = {</p>
        <p>Temperature: data.temperature,</p>
        <p>Humidity: data.humidity
};
console.log("Sending sensor data!");
socketIds.forEach(socketId =&gt; {
allSockets[socketId].emit("</p>
        <p>socket_name", dataToSend);
15
16 };</p>
        <p>});</p>
        <p>Listing 1: Sending weather data to clients via sockets
Also, notifications are generated based on set thresholds. For
example, to generate alerts, we can set the threshold values
at 25◦C and 35% for temperature and humidity in tropical
regions respectively.</p>
        <p>3) Reconfigurability: WebLog can be used to collect
different kinds of data. Each time a data collection instance is
created, it requires generating the corresponding data collection
survey. Also, threshold values to generate notifications in [R2]
can be changed to fit different scenarios. The data collection
survey and threshold values for notifications can be changed
by non-experienced programmers e.g., farmers via provided
reconfiguration interfaces.</p>
        <p>4) Extensibility: WebLog has been implemented as a textual
component-based system with APIs that allow extending the
application with new services. However, this extensibility is
done in code since WebLog was implemented using a textual
language.</p>
      </sec>
      <sec id="sec-3-2">
        <title>C. UtafitiLog</title>
        <p>
          As mentioned before, UtafitiLog was implemented using
DisCoPar, a VDSL for visual programming designed for
building applications for citizen science observatories (CSOs)
[
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. In DisCoPar, programs are constructed by means of
visual components. These components have an execution scope
i.e., mobile, server, and web. To build an application, the
components are wired together into a flow-graph using arcs
and application components use these arcs to exchange data.
Fig. 3 shows the application flow-graph for UtafitiLog. The
flow-graph is read from left to right. Each connection has an
arrow on it indicating the direction of data flow. By design,
the application flow-graph is a directed acyclic graph. Each
component is coloured based on its execution scope1. This
execution scope facilitates building distributed applications.
        </p>
        <p>Components have output ports for emitting data and
input ports for receiving data. These ports are typed based
on the data that they emit or receive. On the application
flowgraph (Fig. 3), each port is colour-coded with the type of data
it emits or receives2. The arcs connecting components on the
application flow-graph assume the colour of the origin port.
These arcs represent data dependencies and always flow from
the output ports of source components to the input ports of
destination components. To explain these data dependencies,
we split them into output and input data dependencies. Each
component has at least one input or output data dependency
with some components having multiple data dependencies
because of having multiple input or output ports.</p>
        <p>To implement UtafitiLog, we first identified the components
that we required. The application flow-graph illustrated in
Fig. 3 uses 26 components. Out of the 26, we reused 20
components from the existing component library. We
implemented the remaining 6 components and published them
to the component library. In regard to component scope, 6
components execute on the mobile device (i.e., Scan,
ObservationPopSurvey, BufferObservation, and Label), 9 components
execute on the web (i.e., Label, LineChart, Alert, and Table),
and 11 components execute on the server (i.e., SensorWeather,</p>
      </sec>
      <sec id="sec-3-3">
        <title>Rounding, IsGreaterThan, AddDataToObservation, ObservationDatabase, and ObservationToTable).</title>
        <p>In Fig. 3, SensorWeather receives temperature, humidity,
and pressure weather data from the sensor cloud and passes
it as numeric values to the Rounding components that are
used to set the precision level. SensorWeather component
emits numeric data values which are accepted as input to
the Rounding component. Data values (numeric) from the
Rounding component are passed to the Label components for
display and the LineChart components for visualisation on
the dashboard. To generate notifications, the data is passed
1Black coloured components execute on mobile device; grey coloured
components execute on the web; and light-grey coloured components execute
on the server.</p>
        <p>2Blue coloured ports receive or emit numeric data values; black ports
receive or emit any data values; orange coloured ports emit or receive
boolean values; green coloured ports emit or receive observations;
and yellow coloured ports emit or receive datasets
through IsGreaterThan component where thresholds are set.
IsGreaterThan component accepts numeric data values and
outputs boolean values. The input value is compared to the
set threshold and if it evaluates to true, a notification is
fired. The Alert component is used to display the notification
message on the dashboard. Scanning of plant labels is done via
the Scan component while creating data collection surveys is
done using the ObservationPopUpSurvey. BufferObservation
component supports offline accessibility while
ObservationDatabase component connects the application to the database.
AddDataToObservation component is used to aggregate data
(observations) from different components.</p>
        <p>UtafitiLog adheres to the previously identified requirements
as follows;</p>
      </sec>
      <sec id="sec-3-4">
        <title>1) Offline accessibility: The BufferObservation component</title>
        <p>is used to support offline accessibility by keeping copies of
data on a client-side database each time the network breaks.
The data collected when the network is unavailable is sent to
the remote server when the network is regained.</p>
        <p>2) Reactivity: UtafitiLog exploits the reactive and
eventdriven design of DisCoPar VDSL ensuring the application
components continue executing whenever they receive data
on their input ports. The execution of one component in the
application flow-graph triggers the execution of subsequent
components that depend on the output from the previous
component. Also, notifications are generated based on threshold
values. In our application, using IsGreaterThan component we
can set 25◦C and 35% threshold values for temperature and
humidity in a tropical region respectively.</p>
        <p>3) Reconfigurability: The data collection survey is
implemented as a reconfigurable component to allow collection of
different kinds of data. For example, each time the farming
season changes and the data collection parameters change,
the survey component is reconfigured to reflect the new data
parameters. Also, threshold values for generating notifications
can be changed for different farming scenarios. The
ObservationPopUpSurvey and IsGreaterThan components are easily
reconfigurable with minimal programming experience e.g., by
farmers.</p>
        <p>4) Extensibility: Adding new features or functionalities to
the application is done by incorporating components from the
component library to the application flow-graph. The
application flow-graph can also be updated by removing components.
Both adding and removing components can be done even when
the application is already deployed.</p>
      </sec>
      <sec id="sec-3-5">
        <title>D. Application Services</title>
        <p>To provide the functionality described in section II, both
applications provide similar services i.e., (i) user registration,
(ii) plant label scanning, (iii) generating data collection
surveys, (iv) generating alerts based on weather information, and
(v) visualising weather information on a dashboard. These
applications present two perspectives to users; one perspective
for logged in users and another for visitors. By default, a
landing page is presented to a user visiting the application
and is not yet logged in. This default landing page allows the
user to navigate to the registration page to create an account or
login page for authorisation and authentication to proceed to
other application services. User registration is a public service
that allows users to sign up into the application. Once logged
in, the user can proceed to the application dashboard from
where one can navigate to different sections of the application.
The scanning service uses the device camera to read the
plant labels and invoke the data collection surveys which are
generated in both applications. Also, the alerts in the two
applications are displayed on the web dashboard based on
adjustable thresholds.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>IV. EVALUATION AND COMPARISON</title>
      <p>In this section, we compare WebLog and UtafitiLog. We use
the features derived in section II as the primary criteria for
qualitative evaluation. Since both applications support similar
features and functionalities, and both are implemented in the
same software stack, we postulate that both implementations
exhibits similar performance. Therefore, the evaluation in this
study is focused on the following questions;
[EQ1] Which strategies are followed to implement the
requirements identified in section II?
[EQ2] What is the disk space utilisation for the
implemented applications?
[EQ3] How do the implemented applications compare to
other smart agriculture applications?</p>
      <sec id="sec-4-1">
        <title>A. Implementation Strategies</title>
        <p>In this section, we compare the implementation strategies
used by both applications to adhere to the requirements in
section II.</p>
        <p>
          1) Offline accessibility: Both applications support offline
accessibility by keeping copies of data in a client-side database
whenever the network becomes unavailable. Different
strategies exist in the literature for implementing offline accessibility
e.g., caching, local storage, and client-side database [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]–[
          <xref ref-type="bibr" rid="ref15">15</xref>
          ].
Caching and local storage have limitations of size which are
addressed by the client-side database strategy [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]. The use
of a database running on mobile devices for data storage
significantly eliminates the need for infrastructure to host
database servers in the farm. It also eliminates the need for
middleware to cache data in the cloud.
        </p>
        <p>2) Reactivity: Both applications support reactivity in
different ways. UtafitiLog exploits the reactive and event-driven
design of DisCoPar VDSL that ensures application components
continue executing as long as they keep receiving data on their
input ports. Execution of one component in the application
flow-graph triggers the execution of subsequent components
that depend on the output from the previous component.
WebLog utilises reactive libraries to implement web sockets
that push data to clients. Clients have to register to receive
data from these sockets; new data is automatically pushed to
the client.</p>
        <p>3) Reconfigurability: Both applications support
reconfigurability to adapt to different requirements within the farm. For
example, changing the data collection surveys to fit different
crops or farming seasons, the two applications make use of
reconfigurable data collection surveys. This makes it easier for
the farmer to reuse the same applications to collect different
kinds of information on the farm for different farming seasons
or various crops.</p>
        <p>
          4) Extensibility: Both applications are extensible to add
new features and functionalities. Since each service in WebLog
is implemented as a textual component, extending the
application requires coding. Extensibility in UtafitiLog happens at
two levels; (i) at the code level to add new components to the
component library and (ii) the application flow-graph level to
add or remove features from an existing application. Also,
both applications support APIs for programmers to extend
application services. Since both applications are implemented
as components (either textual or visual components) they
support variability. In this case, variability allows reconfiguring
and extending the applications to meet new or changing
requirements i.e., adaptation [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]. For example, anticipating
changing thresholds to generate alerts and allowing the user to
change them appropriately. The user can also specify the alert
messages and change the data collection surveys. Application
flow-graph for UtafitiLog is changeable to add or remove
components. Changes done at the application flow-graph level
require minimal programming experience and therefore can be
considered suitable for non-experienced programmers.
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>B. Disk Space Utilisation</title>
        <p>Farmers in developing regions operate in remote areas
and in most cases depend on paid mobile data to download
and install applications on their mobile devices. The cost of
mobile data positively correlates to the size of applications
to download. Therefore, in this section, we measured (i) the
size of the compiled application i.e., downloadable APK size,
and (ii) disk space utilised by the installed application on the
mobile device. The second parameter is important especially
for resource constrained devices that, typically, have limited
persistent memory available. In terms of downloadable APK
file size, WebLog and UtafitiLog resulted in 25 MB and 10.8
MB respectively. In terms of disk space, WebLog utilised
122 MB, while UtafitiLog used 36.04 MB. The substantially
more disk space used by WebLog could be as a result of
insufficient compaction of the application bytecode. Also,
React Native builds native libraries for armebi and x86
device architectures into the same APK, hence the larger APK
size in WebLog compared to UtafitiLog. To minimise this size,
it requires creating APKs for each device architecture.</p>
      </sec>
      <sec id="sec-4-3">
        <title>C. Comparison to other Smart Agriculture Applications</title>
        <p>
          The applications presented in Table I support different
activities on the farm e.g., crop disease diagnosis [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]; monitoring
[
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]–[
          <xref ref-type="bibr" rid="ref23">23</xref>
          ]; crop nutrient computation [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]; data collection [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ],
[
          <xref ref-type="bibr" rid="ref25">25</xref>
          ]; and cost management [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ]. Only MobiCrop [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] supports
offline accessibility through caching which has limitations of
storage size. Unlike most of the existing smart agriculture
applications, WebLog and UtafitiLog are offline accessible,
reactive, and reconfigurable. The implementations support
APIs and components that allow extending the applications
to add new services.
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>V. DISCUSSION AND LESSONS LEARNT</title>
      <p>In this section, we discuss how text-based and visual
languages compare in implementing smart agriculture
applications. We re-examine the overall research question and provide
the lessons learnt from the implementation.</p>
      <sec id="sec-5-1">
        <title>A. Text-based vs. Visual Languages</title>
        <p>The overall research question in this paper is how text-based
and visual languages compare when used to implement smart
agriculture applications. We address this research question
with the specific research evaluation questions [EQ1], [EQ2],
and [EQ3] introduced and described in section IV.</p>
        <p>
          Different visual programming languages already exist in
the literature. In our implementation, we limit ourselves to
DisCoPar VDSL which falls within the family of flow-based
visual programming languages. In general, these languages
require modelling software applications as directed graphs
that connect networks of nodes. The nodes exchange data
via arcs connecting them. Applications take different names
depending on the language e.g., flows (Node-RED3, FRED
[
          <xref ref-type="bibr" rid="ref28">28</xref>
          ], and D-NR [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ]), pipes (NoFlo4, WotKit [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ]), and
process (MsgFlo5). Also, these languages provide different
constructs for application development e.g., nodes
(NodeRED, D-NR, FRED, and NoFlo), components (MsgFlo,
DisCoPar), and processors (WotKit). The languages
further provide channels to link different logical entities of
an application. These channels are mainly wires
(NodeRED, D-NR, and FRED) and edges (NoFlo, MsgFlo, and
WotKit). Applications in these languages are presented as
graphs and application components react to any incoming data
on their input ports. Apart from DisCoPar, none of the other
surveyed languages supports mobile applications i.e., they do
not support exporting application flow-graphs for execution in
mobile platforms.
        </p>
        <p>
          Writing software using textual languages still dominates the
current practice in application development [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ]. In this paper,
our choice for React-Native framework for WebLog
implementation was motivated by its support for cross-platform
development. Similarly, DisCoPar VDSL supports cross-platform
development in addition to the visual components. Though
3https://nodered.org
4http://noflojs.org
5https://msgflo.org/
textual languages have been used in software development for
years they still face some limitations that can be overcome by
visual languages, e.g., the cognitive load that they impose on
non-expert programmers as opposed to visual languages [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ].
Even though, visual languages promise a better alternative
to application development, the visual components are still
implemented using textual languages. This means the
underlying architectures for visual languages have to be properly
and adequately crafted to allow easy addition of new visual
programming constructs. Both text-based and visual languages
can be used to develop smart agriculture applications with
similar features. However, we take the view that text-based
languages require adequate prior programming experience
compared to visual languages. From the implementation
experience, several differences become apparent and we raise them
in the subsequent section as lessons learnt.
        </p>
      </sec>
      <sec id="sec-5-2">
        <title>B. Lessons Learnt</title>
        <p>Even though the approaches used in implementing our
application yield two concrete and deployable applications
with the same functionalities, there are key lessons learnt from
the implementation and these are;</p>
        <p>1) Programming effort and code reusability: Every
functionality in WebLog was implemented from scratch and this
required more programming effort. On the contrary,
components were reused to implement UtafitiLog; only a few
additional components were programmed to meet the
application implementation requirements. UtafitiLog took faster
to yield an application compared to WebLog, but required
some changes to be done on DisCoPar. In general, visual
components developed to implement UtafitiLog were reusable
and helped reduce on the overall time taken to implement the
application.</p>
        <p>2) Cross-platform development: Though our applications
were targeted for the Android platform, our implementation
technologies support cross-platform development. This gave
us room to write non-platform specific code that could be
compiled to respective target platforms. This leads us to think
that cross-platform development can serve different farmers
with varied mobile hardware and software configurations.</p>
        <p>3) Programming experience: Overall, while implementing
WebLog required more programming expertise, using
components to implement UtafitiLog required less programming
expertise. Since, UtafitiLog demonstrates the simplified
expressive power of VDSLs in representing software
applications, we believe non-experienced programmers like farmers
can use such technology to reconfigure their smart agriculture
applications.</p>
      </sec>
      <sec id="sec-5-3">
        <title>4) Software development support: Relying on libraries and</title>
        <p>tools helped in implementing the application requirements and
evaluating the performance of the implemented applications.
As such, using software tools like editor, debuggers, monitors,
and profilers boosts the process of implementing and
evaluating smart agriculture applications.</p>
      </sec>
      <sec id="sec-5-4">
        <title>5) Distributed applications: Both approaches support im</title>
        <p>plementing distributed applications. However, UtafitiLog uses
scoped components that make implementing distributed
applications easier for non-experienced programmers compared to
WebLog. In WebLog, the client and server-side were
implemented separately before linking them together.</p>
        <p>6) Performance impact: There is no significant
performance impact for the technologies used in implementing the
two applications. Hence, we argue in support of the notion that
using either a textual or a visual language yields applications
with similar performance. This further implies that visual
languages can be used as an alternative for building smart
agriculture applications.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>VI. RELATED WORK</title>
      <p>In this section, we present the related work on studies
documenting experiences in implementing smart agriculture
solutions and applications. To the best of our knowledge,
there is no published report documenting experiences on
implementing mobile applications for smart agriculture. We
therefore, first, base our related work on experience reports
for smart agriculture solutions addressing some of the issues
described in section II. Secondly, we present related work on
textual vs graphical representation of software applications.</p>
      <sec id="sec-6-1">
        <title>A. Smart Agriculture Solutions</title>
        <p>
          Several studies document experiences in implementing
Internet of Things solutions for smart agriculture [
          <xref ref-type="bibr" rid="ref33">33</xref>
          ]–[
          <xref ref-type="bibr" rid="ref35">35</xref>
          ]. For
instance, Gunasekera et al. [
          <xref ref-type="bibr" rid="ref33">33</xref>
          ] document their experiences
in implementing IoT solutions to meet different changing
user requirements with less programming effort and also offer
offline accessibility. Though the work promises to offer offline
accessibility, this is done by providing a feature to export data
into CSV files for offline accessibility. Jayaraman et al. [
          <xref ref-type="bibr" rid="ref34">34</xref>
          ]
report on building a smart agriculture platform that can allow
adding new sensors with ease and allow real-time analysis
of data coming from the sensors. The study supports
"doit-yourself" concept for non-experienced programmers to add
new sensors to the platform and extend its functionality. In
their implementation, they use query-processing to fetch data
and trigger events.
        </p>
      </sec>
      <sec id="sec-6-2">
        <title>B. Textual vs Graphical Software Representation</title>
        <p>
          Several studies have focused on textual and graphical
representation of software. For instance, Heijstek et al. [
          <xref ref-type="bibr" rid="ref36">36</xref>
          ]
analyse the effectiveness of visual or textual artefacts in
communicating software design decisions. The findings show
that neither diagrams nor textual descriptions is significantly
more efficient to communicate software design decisions to
developers. However, this may not apply to non-experienced
developers as highlighted in the study done by Jolak et al.,
[
          <xref ref-type="bibr" rid="ref37">37</xref>
          ] (preprint). The findings in this study show that describing
software designs graphically is better than textual descriptions
i.e., graphical descriptions promote better recall for developers.
        </p>
        <p>
          Labunets et al. [
          <xref ref-type="bibr" rid="ref38">38</xref>
          ] investigate comprehending software
risk models using graphical, tabular, and textual notations.
The findings show that the tabular notation is comprehensible
in both recall and precision. However, this is still subject to
cognitive complexity of software tasks.
        </p>
        <p>
          Other studies have focused on making programming more
available to naive developers. For instance, the study done
by Mason and Dave [
          <xref ref-type="bibr" rid="ref39">39</xref>
          ] compares block-based (visual) vs
flow-based programming for naive developers. With visual
programming, non-programmers do not need to have the
same investment in particular syntax or semantics for textual
languages.
        </p>
        <p>
          Lastly, Sharafi et al. [
          <xref ref-type="bibr" rid="ref40">40</xref>
          ] investigate modelling and
presenting software requirements using graphical vs. textual
representations. The findings show no significant difference in using
either textual or graphical representations. However, the study
notes that training developers can significantly improve the
efficiency of using graphical representations.
        </p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>VII. CONCLUSION AND FUTURE WORK</title>
      <p>In this paper, we sought to understand how text-based and
visual languages compare in implementing smart agriculture
applications. We implemented exemplar smart agriculture
applications using two different technologies resulting in two
concrete and deployable applications with similar
functionalities i.e., WebLog and UtafitiLog. WebLog was implemented
using a text-based programming language while UtafitiLog
was implemented using a VDSL. The findings show that both
languages can be used to develop smart agriculture
applications with similar performance. However, text-based languages
require adequate prior programming experience compared to
visual languages. VDSLs may provide a better alternative to
allow non-experienced programmers (e.g., farmers) to adapt
applications for different uses with minimal prior
programming experience. Future work entails conducting controlled
experiments to determine the cognitive load that textual and
visual languages have on experienced and non-experienced
application developers.</p>
    </sec>
    <sec id="sec-8">
      <title>ACKNOWLEDGMENT</title>
      <p>This work is supported by the Legumes Centre for Food and
Nutrition Security (LCEFoNS) programme which is funded by
VLIR-UOS. The programme is a North-South Collaboration
between the Katholieke Universiteit Leuven, Vrije Universiteit
Brussel (both in Belgium) and Jomo Kenyatta University of
Agriculture and Technology (Kenya).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>H. B.</given-names>
            <surname>Fiehn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Schiebel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. F.</given-names>
            <surname>Avila</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Miller</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Mickelson</surname>
          </string-name>
          , “
          <article-title>Smart agriculture system based on deep learning,”</article-title>
          <source>in Proceedings of the 2nd International Conference on Smart Digital Environment</source>
          . New York, NY, USA: ACM,
          <year>2018</year>
          , pp.
          <fpage>158</fpage>
          -
          <lpage>165</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>M.</given-names>
            <surname>Bacco</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Barsocchi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Ferro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Gotta</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Ruggeri</surname>
          </string-name>
          , “
          <source>The Digitisation of Agriculture: A Survey of Research Activities on Smart Farming,” Array</source>
          , vol.
          <volume>3</volume>
          -
          <issue>4</issue>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>11</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Ayaz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ammad-Uddin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Sharif</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mansour</surname>
          </string-name>
          , and E.
          <string-name>
            <surname>-H. M. Aggoune</surname>
          </string-name>
          , “
          <article-title>Internet-of-</article-title>
          <string-name>
            <surname>Things (IoT)-Based Smart</surname>
          </string-name>
          Agriculture:
          <article-title>Toward Making the Fields Talk</article-title>
          ,” IEEE Access, vol.
          <volume>7</volume>
          , pp.
          <volume>129</volume>
          <fpage>551</fpage>
          -
          <lpage>129</lpage>
          583,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>M. O'Grady</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Langton</surname>
            , and
            <given-names>G.</given-names>
          </string-name>
          <article-title>O'Hare, “Edge computing: A tractable model for smart agriculture?</article-title>
          ”
          <source>Artificial Intelligence in Agriculture</source>
          , vol.
          <volume>3</volume>
          , pp.
          <fpage>42</fpage>
          -
          <lpage>51</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>A.</given-names>
            <surname>Eitzinger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Cock</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Atzmanstorfer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. R.</given-names>
            <surname>Binder</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Läderach</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Bonilla-Findji</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Bartling</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Mwongera</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Zurita</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Jarvis</surname>
          </string-name>
          , “
          <article-title>GeoFarmer: A monitoring and feedback system for agricultural development projects,” Computers and Electronics in Agriculture</article-title>
          , vol.
          <volume>158</volume>
          , pp.
          <fpage>109</fpage>
          -
          <lpage>121</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A.</given-names>
            <surname>Kamilaris</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Pitsillides</surname>
          </string-name>
          , “
          <article-title>Mobile Phone Computing and the Internet of Things: A Survey,”</article-title>
          <source>IEEE Internet of Things Journal</source>
          , vol.
          <volume>3</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>885</fpage>
          -
          <lpage>898</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>C. S. M.</given-names>
            <surname>Babou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B. O.</given-names>
            <surname>Sane</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Diane</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Niang</surname>
          </string-name>
          , “
          <article-title>Home edge computing architecture for smart and sustainable agriculture and breeding</article-title>
          ,” in ACM International Conference Proceeding Series,
          <year>2019</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>7</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>S.</given-names>
            <surname>Al-Ratrout</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O. Husain</given-names>
            <surname>Tarawneh</surname>
          </string-name>
          , M. HusniAltarawneh, and M. Yosef Altarawneh, “
          <article-title>Mobile Application Development Methodologies Adopted in Omani Market: A Comparative Study</article-title>
          ,”
          <source>International Journal of Software Engineering &amp; Applications</source>
          , vol.
          <volume>10</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>13</fpage>
          -
          <lpage>22</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>J.</given-names>
            <surname>Zaman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Kambona</surname>
          </string-name>
          , and W. De Meuter, “
          <article-title>DISCOPAR: A Visual Reactive Programming Language for Generating Cloud-Based Participatory Sensing Platforms</article-title>
          ,”
          <source>in Proceedings of the 5th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems</source>
          . New York, NY, USA: ACM,
          <year>2018</year>
          , pp.
          <fpage>31</fpage>
          -
          <lpage>40</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>J.</given-names>
            <surname>Zaman</surname>
          </string-name>
          and W. De Meuter, “
          <article-title>DisCoPar: Distributed Components for Participatory Campaigning</article-title>
          ,” in
          <source>2015 IEEE International Conference on Pervasive Computing and Communication Workshops</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>160</fpage>
          -
          <lpage>165</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>K.</given-names>
            <surname>Heimerl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Menon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Hasan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Ali</surname>
          </string-name>
          , E. Brewer, and T. Parikh, “
          <article-title>Analysis of Smartphone Adoption and Usage in a Rural Community Cellular Network</article-title>
          ,” in ACM International Conference Proceeding Series, vol.
          <volume>15</volume>
          ,
          <string-name>
            <surname>Singapore</surname>
          </string-name>
          ,
          <year>2015</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>4</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>S.</given-names>
            <surname>Ahmad</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. L.</given-names>
            <surname>Haamid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z. A.</given-names>
            <surname>Qazi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Zhou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Benson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>and I. A.</given-names>
            <surname>Qazi</surname>
          </string-name>
          , “
          <article-title>A view from the other side: Understanding mobile phone characteristics in the developing world</article-title>
          ,
          <source>” in Proceedings of the ACM SIGCOMM Internet Measurement Conference</source>
          , Santa Monica, CA,
          <year>2016</year>
          , pp.
          <fpage>319</fpage>
          -
          <lpage>325</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>R. K.</given-names>
            <surname>Lomotey</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Chai</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. K.</given-names>
            <surname>Ahmed</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Deters</surname>
          </string-name>
          , “
          <article-title>Distributed mobile application for crop farmers</article-title>
          ,”
          <source>in MEDES'13 Proceedings of the Fifth International Conference on Management of Emergent Digital EcoSystems</source>
          , Luxembourg,
          <year>2013</year>
          , pp.
          <fpage>135</fpage>
          -
          <lpage>139</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>C.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B. C.</given-names>
            <surname>Fruin</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Samet</surname>
          </string-name>
          , “SAC:
          <article-title>Semantic Adaptive Caching for Spatial Mobile Applications</article-title>
          ,”
          <source>in Proceedings of the 21st ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems</source>
          . New York, NY, USA: ACM,
          <year>2013</year>
          , pp.
          <fpage>174</fpage>
          -
          <lpage>183</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>F. A.</given-names>
            <surname>Marco</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Gallud</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V. M. R.</given-names>
            <surname>Penichet</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Winckler</surname>
          </string-name>
          , “
          <article-title>A ModelBased Approach for Supporting Offline Interaction with Web Sites Resilient to Interruptions,” in Current Trends in Web Engineering</article-title>
          ,
          <string-name>
            <given-names>Q. Z.</given-names>
            <surname>Sheng</surname>
          </string-name>
          and J. Kjeldskov, Eds. Cham: Springer International Publishing,
          <year>2013</year>
          , pp.
          <fpage>156</fpage>
          -
          <lpage>171</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>A.</given-names>
            <surname>Wharry</surname>
          </string-name>
          , “HTML5 Offline Technologies,”
          <year>2014</year>
          . [Online]. Available: http://andreawharry.com/assets/img/portfolio/WharryAndreaFinalPaper.pdf
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>A.</given-names>
            <surname>Fortier</surname>
          </string-name>
          , G. Rossi,
          <string-name>
            <given-names>S. E.</given-names>
            <surname>Gordillo</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Challiol</surname>
          </string-name>
          , “
          <article-title>Dealing with variability in context-aware mobile software,”</article-title>
          <source>The Journal of Systems and Software</source>
          , vol.
          <volume>83</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>915</fpage>
          -
          <lpage>936</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>M. A.</given-names>
            <surname>Carmona</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F. J.</given-names>
            <surname>Sautua</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Pérez-Hernández</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <surname>J. I. Mandolesi</surname>
          </string-name>
          , “AgroDecisor EFC:
          <article-title>First Android™ app decision support tool for timing fungicide applications for management of late-season soybean diseases,” Computers and Electronics in Agriculture</article-title>
          , vol.
          <volume>144</volume>
          , pp.
          <fpage>310</fpage>
          -
          <lpage>313</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>M. F. Is</surname>
            ¸ik,
            <given-names>Y.</given-names>
          </string-name>
          <string-name>
            <surname>Sönmez</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Yilmaz</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          <string-name>
            <surname>Özdemir</surname>
            , and
            <given-names>E. N.</given-names>
          </string-name>
          <string-name>
            <surname>Yilmaz</surname>
          </string-name>
          , “
          <article-title>Precision Irrigation System (PIS) using sensor network technology integrated with IOS/Android Application,”</article-title>
          <source>Applied Sciences (Switzerland)</source>
          , vol.
          <volume>7</volume>
          , no.
          <issue>891</issue>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>14</lpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>M.</given-names>
            <surname>Caria</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Schudrowitz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Jukan</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Kemper</surname>
          </string-name>
          , “
          <article-title>Smart farm computing systems for animal welfare monitoring</article-title>
          ,
          <source>” in 2017 40th International Convention on Information and Communication Technology, Electronics and Microelectronics</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>152</fpage>
          -
          <lpage>157</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>P.</given-names>
            <surname>Serikul</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Nakpong</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Nakjuatong</surname>
          </string-name>
          , “
          <article-title>Smart Farm Monitoring via the Blynk IoT Platform</article-title>
          ,” in
          <source>2018 Sixteenth International Conference on ICT and Knowledge Engineering</source>
          . Bangkok, Thailand: IEEE,
          <year>2018</year>
          , pp.
          <fpage>70</fpage>
          -
          <lpage>75</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>F.</given-names>
            <surname>Carpio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Jukan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. I. M.</given-names>
            <surname>Sanchez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Amla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Kemper</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Isabel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Sanchez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Amla</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Kemper</surname>
          </string-name>
          , “
          <article-title>Beyond Production Indicators: A Novel Smart Farming Application and System for Animal Welfare</article-title>
          ,”
          <source>in Proceedings of the Fourth International Conference on AnimalComputer Interaction</source>
          ,
          <year>2017</year>
          , pp.
          <volume>7</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>7</lpage>
          :
          <fpage>11</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>M.</given-names>
            <surname>Ryu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Yun</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Miao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I. Y.</given-names>
            <surname>Ahn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. C.</given-names>
            <surname>Choi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Kim</surname>
          </string-name>
          , “
          <article-title>Design and implementation of a connected farm for smart farming system,” 2015 IEEE Sensors</article-title>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>4</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>M. V.</given-names>
            <surname>Bueno-Delgado</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Molina-Martínez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Correoso-Campillo</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Pavón-Mariño</surname>
          </string-name>
          , “
          <article-title>Ecofert: An Android application for the optimization of fertilizer cost in fertigation,” Computers and Electronics in Agriculture</article-title>
          , vol.
          <volume>121</volume>
          , pp.
          <fpage>32</fpage>
          -
          <lpage>42</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>C. L.</given-names>
            <surname>Bazzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. P.</given-names>
            <surname>Jasse</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. S.</given-names>
            <surname>Graziano Magalhães</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. K.</given-names>
            <surname>Michelon</surname>
          </string-name>
          , E. G. de Souza,
          <string-name>
            <given-names>K.</given-names>
            <surname>Schenatto</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Sobjak</surname>
          </string-name>
          , “
          <article-title>AgDataBox API - Integration of data and software in precision agriculture,” SoftwareX</article-title>
          , vol.
          <volume>10</volume>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Murakami</surname>
          </string-name>
          , “iFarm:
          <article-title>Development of web-based system of cultivation and cost management for agriculture,”</article-title>
          <source>in Proceedings of the 8th International Conference on Complex, Intelligent and Software Intensive Systems</source>
          ,
          <year>2014</year>
          , pp.
          <fpage>624</fpage>
          -
          <lpage>627</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>M.</given-names>
            <surname>Colezea</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Musat</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Pop</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Negru</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Dumitrascu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Mocanu</surname>
          </string-name>
          , “
          <article-title>CLUeFARM: Integrated web-service platform for smart farms,” Computers and Electronics in Agriculture</article-title>
          , vol.
          <volume>154</volume>
          , pp.
          <fpage>134</fpage>
          -
          <lpage>154</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>M.</given-names>
            <surname>Blackstock</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Lea</surname>
          </string-name>
          , “
          <article-title>FRED: A Hosted Data Flow Platform for the IoT</article-title>
          ,”
          <source>in Proceedings of the 1st International Workshop on Mashups of Things and APIs</source>
          ,
          <year>2016</year>
          , pp.
          <volume>2</volume>
          :
          <fpage>1</fpage>
          -
          <issue>2</issue>
          :
          <fpage>5</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>N. K.</given-names>
            <surname>Giang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Blackstock</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Lea</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V. C.</given-names>
            <surname>Leung</surname>
          </string-name>
          , “
          <article-title>Developing IoT applications in the Fog: A Distributed Dataflow approach</article-title>
          ,”
          <source>in Proceedings - 2015 5th International Conference on the Internet of Things</source>
          , IoT
          <year>2015</year>
          . IEEE,
          <year>2015</year>
          , pp.
          <fpage>155</fpage>
          -
          <lpage>162</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>M.</given-names>
            <surname>Blackstock</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Lea</surname>
          </string-name>
          , “
          <article-title>IoT mashups with the WoTKit,”</article-title>
          <source>in Proceedings of 2012 International Conference on the Internet of Things</source>
          ,
          <string-name>
            <surname>IOT</surname>
          </string-name>
          <year>2012</year>
          . Wuxi, China: IEEE,
          <year>2012</year>
          , pp.
          <fpage>159</fpage>
          -
          <lpage>166</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Wang</surname>
          </string-name>
          , “
          <article-title>Towards component-based software engineering</article-title>
          ,
          <source>” Journal of Computing in Small Colleges</source>
          , vol.
          <volume>16</volume>
          , pp.
          <fpage>182</fpage>
          -
          <lpage>194</lpage>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <surname>K. J. Harms</surname>
          </string-name>
          , “
          <article-title>Applying cognitive load theory to generate effective programming tutorials</article-title>
          ,” in
          <source>2013 IEEE Symposium on Visual Languages and Human Centric Computing</source>
          ,
          <year>2013</year>
          , pp.
          <fpage>179</fpage>
          -
          <lpage>180</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <given-names>K.</given-names>
            <surname>Gunasekera</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. N.</given-names>
            <surname>Borrero</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Vasuian</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K. P.</given-names>
            <surname>Bryceson</surname>
          </string-name>
          , “
          <article-title>Experiences in building an IoT infrastructure for agriculture education,” Procedia Computer Science</article-title>
          , vol.
          <volume>135</volume>
          , pp.
          <fpage>155</fpage>
          -
          <lpage>162</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <given-names>P. P.</given-names>
            <surname>Jayaraman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Yavari</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Georgakopoulos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Morshed</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Zaslavsky</surname>
          </string-name>
          , “
          <article-title>Internet of things platform for smart farming: Experiences and lessons learnt</article-title>
          ,
          <source>” Sensors</source>
          , vol.
          <volume>16</volume>
          , no.
          <issue>11</issue>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>17</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <given-names>N.</given-names>
            <surname>Dlodlo</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Kalezhi</surname>
          </string-name>
          , “
          <article-title>The internet of things in agriculture for sustainable rural development</article-title>
          ,”
          <source>in Proceedings of 2015 International Conference on Emerging Trends in Networks and Computer Communications</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>13</fpage>
          -
          <lpage>18</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [36]
          <string-name>
            <given-names>W.</given-names>
            <surname>Heijstek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Kühne</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M. R. V.</given-names>
            <surname>Chaudron</surname>
          </string-name>
          , “
          <article-title>Experimental analysis of textual and graphical representations for software architecture design,” in 2011 International Symposium on Empirical Software Engineering and Measurement</article-title>
          . IEEE,
          <year>2011</year>
          , pp.
          <fpage>167</fpage>
          -
          <lpage>176</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          [37]
          <string-name>
            <given-names>R.</given-names>
            <surname>Jolak</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Savary-Lelanc</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Dalibor</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Wortmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Hebig</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Vincur</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            <surname>Polasek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X. Le</given-names>
            <surname>Pallec</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Gerard</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Chaudron</surname>
          </string-name>
          , “
          <article-title>Software Engineering Whispers: The Effect of Textual Vs</article-title>
          .
          <source>Graphical Software Design Descriptions on Software Design Communication,” EMSE Journal.</source>
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          [38]
          <string-name>
            <given-names>K.</given-names>
            <surname>Labunets</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Massacci</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Tedeschi</surname>
          </string-name>
          , “
          <article-title>Graphical vs. tabular notations for risk models: On the role of textual labels and complexity</article-title>
          ,” in
          <source>2017 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement</source>
          . IEEE,
          <year>2017</year>
          , pp.
          <fpage>267</fpage>
          -
          <lpage>276</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          [39]
          <string-name>
            <given-names>D.</given-names>
            <surname>Mason</surname>
          </string-name>
          and
          <string-name>
            <given-names>K.</given-names>
            <surname>Dave</surname>
          </string-name>
          , “
          <article-title>Block-based versus flow-based programming for naive programmers,” in 2017 IEEE Blocks</article-title>
          and Beyond Workshop. IEEE,
          <year>2017</year>
          , pp.
          <fpage>25</fpage>
          -
          <lpage>28</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref40">
        <mixed-citation>
          [40]
          <string-name>
            <given-names>Z.</given-names>
            <surname>Sharafi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Marchetto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Susi</surname>
          </string-name>
          , G. Antoniol, and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Guéhéneuc</surname>
          </string-name>
          , “
          <article-title>An empirical study on the efficiency of graphical vs. textual representations in requirements comprehension</article-title>
          ,
          <source>” in 2013 21st International Conference on Program Comprehension. IEEE</source>
          ,
          <year>2013</year>
          , pp.
          <fpage>33</fpage>
          -
          <lpage>42</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>