Abstract

From the software point of view, the development of IoT applications differs from other kinds of applications due to the specific features that the former exhibit. In this paper, we investigate how developers contribute to IoT applications in the Open Source Software (OSS) context, to gain a deeper understanding of how their work differs from that of non-IoT applications. To that end, we conducted a quantitative analysis of a broad set of the 60 most popular publicly available IoT and non-IoT projects on GitHub. By comparing how developers contribute to these projects, our analysis provides insight into the purpose and characteristics of the code, the behavior of the contributors, and the maturity of the IoT software development ecosystem. Results reveal significant differences between IoT and non-IoT application development, in terms of how applications are realized, in the diversity of developers' specializations, and in how code is reused. This work provides evidence about some Open Source IoT software development peculiarities to be considered by future research efforts aimed at better satisfying software engineering needs in the IoT scenario.

Highlights

  • Nowadays, the Internet of Things (IoT) is a well-established paradigm that has gained prominence in several aspects of our everyday lives [1]

  • We observed that developers, involved in the creation of IoT vs. non-IoT software applications, are less oriented towards the adoption of a lead programming language, but they work with different programming languages, according to the task at hand or to the specific capability of the infrastructure where the IoT application should be deployed

  • IoT software development is known to differ from the development of other kinds of applications

Read more

Summary

Introduction

The Internet of Things (IoT) is a well-established paradigm that has gained prominence in several aspects of our everyday lives [1]. Speaking, it is based on embedding computing and communication capabilities into objects of common use [2]. According to Atzori et al [7], these technologies may be categorized into identification, sensing and communication technologies; middleware components; end-user software applications; services composition; service management; and object abstraction. While identification, sensing and communication technologies mainly concern hardware components, the other enabling technologies rely

Objectives
Findings
Discussion
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call