A Survey on Visual Programming Languages in Internet of Things

the original


Introduction
User interaction is the main concern in today's software industry.Among many existing techniques, the implication behind Visual Programming Language (VPL) is the most promising and prevalent.A VPL is like any available programming language that lets user create programs by manipulating program elements graphically (while allowing programming with visual expressions, spatial arrangement of graphic symbol, etc.) rather than by specifying them textually [1].For instance, many VPLs which are also known as Dataflow Languages are designed based on the idea of utilizing arrows and boxes, where arrows are used to connect the boxes by establishing a seamless relationship between boxes (i.e., entity).VPLs are normally used for educational, multimedia, video games, system development/simulation, automation, and data warehousing/business analytics purposes.For example, (a) Scratch [2], a platform of Massachusetts Institute of Technology, is designed for the kids in class 12 and after school programs; (b) Pure Data (Pd) [3] is designed for creating interactive multimedia and computer music; (c) Unreal Engine 4 [4] uses "Blueprints" to program video games; (d) VisSim [5] allows user to make complex mathematical models in smarter and faster way while executing them in real-time; (e) CiMPLE [6] is used for teaching automation through robotics; and (f) IBM Cognos Business Intelligence [7] is used for front-end programming in Business Intelligence (BI) applications whereby generating SQL queries to run against Relational Data Base Management Systems (RDBMS).Figure 1 presents the percentagewise distribution of VPLs in the illustrated domains.Out of 89 differently surveyed VP/Ls, system simulation and multimedia hold 60% of the market, marking 35% and 25%, respectively.
Although, several domains of applications are under the practice of VPLs, an emerging field of computing-Internet of Things (IoT) is still lingering far behind other sectors.In IoT, researchers direct main attention towards interconnection between several heterogenous objects or "things" with each other by means of interoperable and unified platform creation to provide smarter and more efficient way of communication between digital and physical world.Applications of IoT include key areas like domotics, healthcare, smart city, automation, transport, education, environment monitoring, and industry [8][9][10][11][12][13][14][15].In this context, we may refer to Gartner which has envisioned that about 50 billion of things will be connected to the Internet by 2020.This has already created a huge buzz in the IT industry especially in manufacturing sector where 12.4 billion USD's business was recorded at the end of 2015 [16].Despite IoT's prospect, very few attentions have been given over the development and designing process of programming languages, mainly at Device-to-Device (D2D) relationship [17].VPL would in this regard act as a key tool for further enhancement, progress, and motivation towards developers in this field (i.e., IoT) while reducing timeto-market in product (software/hardware) development life cycle.This, in turn, necessitates the need of study and analysis of VPL and its impact on IoT that has not been yet proved by existing literatures.This paper surveys current VPLs being used for application developments in IoT specific framework.
The key contributions of this paper are given as follows: The existing VPLs, involved in this study, are sometimes not just language by itself but a full-fledged IDE.They have been divided into two segments based on their usage licensing, that is, (a) open source and (b) proprietary platform.Further the survey is performed on four classes of characteristics such as programming environment, license, project repository, and platform support.

Open Source Platforms
(1) Node-Red.It is a visual tool developed for wiring IoT centric applications being hosted on the Github repository (https://github.com/node-red/node-red).It can be run on variety of hardware and software platforms such as Raspberry Pi, BeagleBone Black, Docker, Arduino, Android, IBM Bluemix, Amazon Web Services, and Microsoft Azure under Open Source-Apache 2.0 license.During development of IoT applications, the following APIs are taken into consideration: Admin HTTP API, Runtime API, Storage API, and Editor UI API for administration, embedding other application, runtime data storage and running jQuery template, respectively.It further supports JavaScript, HTML, and JSON language for node creation activities normally found at following port http://localhost:1880.
(2) NETLab Toolkit.It is helpful for drag and drop based IoT based applications development process hosted at http://www.netlabtoolkit.org.Further it provides a simple web interface to connect sensors, actuators, media, and networks associated with smart widgets for development of quick prototype iteration, experiment, and testing just by sketching in heterogenous genre of hardware and building the connected systems.Arduino and latest Linux embedded systems like the Raspberry Pi, Intel Galileo, and Arduino Tre are currently supported.HTML5, Node.JS, and JavaScript are used for application sketching and server programming purposes under the GNU General Public License.
(3) Ardublock.It is a dedicated GPL, hosted at http://blog .ardublock.com, for programming Arduino and its variant platforms.It runs on Eclipse IDE (as well as Arduino IDE) while allowing developer to code in Java under the GNU General Public License.It is a popular web based VPL platform that helps user to connect and visually program Arduino to create an IoT based application.
(4) Scratch for Android (s4a).It is Scratch modification, made for integration and experimentation with Arduino base IoT products, currently hosted at http://s4a.cat.The s4a has designated protocol stack for communication with Arduino boards.It also supports Android users to get associated with Arduino through HTTP by means of Scratch based remote sensor protocol under the GNU General Public License v2 (GPL2).
(5) Modkit.It is another drag and drop VPL, designed for popular microcontrollers including Arduino, littleBits, Particle Photon, MSP340, Tiva C launch pad, and Wiring S, being hosted at http://modkit.io.It also supports Scratch like event driven and multithreaded model for building IoT related products at ease.This VPL belongs to get build in desktop environment under the GNU General Public License.
(6) miniBloq.This VPL platform is for programming Mul-tiplo6, Arduino, RedBot, and RedBoard in desktop environment.It is available at http://blog.minibloq.orgunder the Robot Group Multiplo Pacifist License (RMPL) that is an MIT license with a restriction over the development on defence and military projects.C++ language is key of this VPL that runs with help of wxWidgets (http://www.wxwidgets.org).(7) NooDL.It provides an efficient and effortless web based visual programming environment for IoT related product developments, currently hosted at http://www.getnoodl.com.It supports Arduino and any other physical devices while considering underlying "virtual things" aspect with it.Besides, Bluetooth based local communication with the devices is also possible that allows MQTT broker agent (API) for seamless connection.Dynamic data visualization and analytics are also integrated with this VPL that may be used to access the data stored at local or remote cloud servers with support of Android.NooDL is restricted with the NooDL End User License (NEUL) [18].It does not provide any external programming language support for coding the applications however.

Proprietary Platforms
(1) DGLux5.It is a drag and drop based VPL platform for development of IoT applications, currently hosted at http://www.dglogik.com/products/dglux5-ioe-application-platform.This desktop centric approach has link, command, and control data dash board.It provides a personalized interaction by leveraging flexible deployment options (hardware platforms), customized chart, and real-time visualization tool under DGLux Engineering License.
(2) AT&T Flow Designer.It is built upon cloud based timeseries data storage platform while involving an intuitive visual tool that enables developer to create IoT supported prototype, being hosted at https://flow.att.com.It offers a special inclusion named "nodes" that is already preconfigured to allow seamless and smooth access to multiple data sources, communication methods, cloud services, and device profiles.Thus, it reduces time-to-market phase in business development process.It supports several third party commercial platforms/APIs (e.g., Twilio and SMTP push mail/notification) for real-time data aggregation and communication between user and applications under the GNU General Public License v3 (GPL3).
(3) Reactive Blocks.It is a visual cum model-driven desktop development environment designed for supporting following tasks, such as, formal model analysis, hierarchical modeling, and automated code generation, available at http://www.bitreactive.com/reactive-blocks.It also provides built-in Java library so that a developer can create reusable and complex IoT applications graphically.Further, OSGi, Kura, and ESF IoT platforms can get merged with Reactive Blocks.MQTT, HTTP, and other IoT related APIs are also used for application development.Java is the key behind the production of Reactive Blocks VPL platform that helps to connect with Modbus, Raspberry Pi, and USB Camera.It is distributed in the market under the Eclipse Public License (EPL).
(4) GraspIO.It provides a drag and drop based, cloud assisted desktop application development platform for interaction with Arduino, Raspberry Pi, GIO Arm, GIO TetraPod, and GraspIO boards, currently hosted at http://www.graspio .com.It is able to support the USR-WiFi 232-G module to provide standard wireless communication by linking 3 Analog/Digital input, 11 touch points, ultrasonic, and GP2D port as sensors and 2 DC motor ports and 8 servo ports as actuators under BSD license.
(5) Wyliodrin.It is a browser enabled VPL that offers communication and development opportunities with Arduino, BeagleBone Black, Raspberry Pi, Intel Galileo, Intel Edison, UDOO, ZedBoard, and Red Pitaya platforms.It also offers multiple programming languages like C, C++, Objective-C, Shell Script, Perl, Python, JavaScript, PHP, C#, Java, Pascal, and so on to develop IoT applications.It is particularly efficient when developer wants to connect IoT devices from smart phones running on either Android or iOS under GNU General Public License v3 (GPL3).
(6) Zenodys.It a browser based specially designed VPL for leveraging IoT based industry 4.0 revolution that is evitable in coming years, hosted at https://www.zenodys.com.Its run-time environment can be deployed to the Raspberry Pi or similar other prospective Linux based industrial IoT   proprietary VPLs do infer in many ways from each other.Figure 2 illustrates the comparative analysis between these two portions of VPLs.For ease of understanding and analysis, only three crucial parameters are considered such as development environment, project repository, and hardware boards.

Conclusion
At this end, we may finally seek for pros and cons of VPLs implied into IoT summarized as follows: Pros: easy to "visualize" the programming logic (e.g., flow chart), good for naïve users to get associated with the concept of interactions among the logical structures, meant for rapid development of IoT products, less burden over handling "syntax error," and portable on a tablet (or hand held smart phone/device) or in situations where no physical keyboard is present.
Cons: sometimes large amount of time is spent over designing small IoT applications.For example, programming for blinking an LED with Arduino requires lot of graphical interconnections.
Despite VPLs' huge facilities and limited disadvantages, IoT seems to be suitably getting empowered by smooth entanglement and promotion with promising reduction in physical-digital interface.
This paper presents state-of-the-art survey in 13 existing VPLs being used for IoT application development.Popular electronic research databases such as IEEE Xplore, Google Scholar, Web of Science, Science Direct, and Springer Link and IoT specific web blogs (Postscapes, Internet of Things-Wired UK, IoT analysis and commentary-O'Reilly Radar, Internet of Things-The Guardian, and Internet of Things Council) are searched in detail while finding these VPLs.A comparative study has been performed between theses VPLs based on open source and proprietary mode of procurement.Analysis is done on four sections on each VPL that includes (1) programming environment, (2) licensing, (3) project repository, and (4) supported platforms.Presented results show a trendy inference towards implications for Arduino Scientific Programming and Raspberry Pi based hardware prototyping boards.Most of the VPLs are presently being hosted in their self-repository.Choice of the programming environment is more or less equally distributed among desktop and web versions.Licensing of such VPLs is somewhat aggregated in and around GPL but other specific types are also under the coverage.Out of the selected issues, poor user interface, slow code generation, lack of standardized model, and absence of abstraction layer seem to resist the growth of VPLs in present time.
However, naïve as well as expert researchers in collaboration with the company incorporations may join to work for the improvement of present issues to facilitate upcoming start-ups (i.e., industry-academia) while paving a prosperous future in this field.

Figure 2 :
Figure 2: Percentagewise positioning of development environment, project repository, and key hardware platforms.

Table 1 :
Comparison between open source and proprietary VPLs.

Table 1
IoT based product development not only for its incurred cost of royalty service the vender, but also for its code stratification and technological adaptation purposes.The results have been obtained by surveying the VPLs per various metrics.Few surprising items emerged which are described as follows, showing that open source and It is observed that 72% of open source and 17% of proprietary VPLs are run from the web browser without any need of installation of packages in the host machine.In context of the desktop usage (i.e., nonweb browser based), this situation is just opposite (i.e., 28% of open source and 83% of proprietary).Going to the next parameter, that is, project repository, it is seen that Github is almost equalled by both the segments (i.e., 15.5% on average) which is followed by the selfserver storage facility (i.e., 85.5% on average).Among variety of hardware platforms, Arduino and Raspberry Pi are the top two mostly compatible devices boards.Arduino leads the race, marking 85% and 33% in open source and proprietary segment, respectively.Again, the case is different in the usage of Raspberry Pi, where 28% of open source VPLs do practice on to it and 83% of proprietary.However, BeagleBone Board is also approaching to hold the first two boards.Other devices are less frequently getting accustomed with the deployments by VPLs.The GNU GPL is marking the top of the list, whereas Apache 2.0, EPL, BSD, and DGLux Engineering License are similarly gradually getting attention in the VPLs' market.The applicability of JavaScript has emerged as one of the key programming languages in terms of coding the VPLs.Out of 13 surveyed VPLs, 7 belong to open source and the rest belong to proprietary.This also shows the trend of current scenario in VPLs market for IoT development.Although there is slight difference of division among the two segments, it seems that open source VPLs are in the verge of domination of existing VPL supported IoT domain in coming times.As of Section 1, where 89 VPLs were studied over distribution among multiple domains of applications, none of these 13 VPLs was included in that list, which, surely points towards some technical and organizational challenges that are hampering the growth and adaptation of VPLs in IoT.The following section describes the challenges associated with integration of VPLs with IoT.This is another serious challenge in VPLs of IoT; there is no existing way to have a global standard model such as "mental model," used to give explanation of every human's thought process on working of "anything."Different service professionals like scientists, electrical engineers, mathematicians, IT industry programmers, and so on are taught and trained how to model the problem statement in different manner, for example, an electrical engineer who would be well qualified and able enough to predict and feel what an electrical system does by just looking at that very circuit diagram.Existing VPLs for IoT do pave the environment to the developer in many ways.Hence, there is a strong need of a standard modular structure or method so that a well-trained developer would be able to build any sort of applications on different genre of platforms.