Comparison of Code Quality and Best Practices in IoT and non-IoT Software

Nour Khezemi,Sikandar Ejaza,Naouel Moha,Yann-Gaël Guéhéneuc
2024-08-06
Abstract:Context: IoT systems, networks of connected devices powered by software, require studying software quality for maintenance. Despite extensive studies on non-IoT software quality, research on IoT software quality is lacking. It is uncertain if IoT and non-IoT systems software are comparable, hindering the confident application of results and best practices gained on non-IoT systems. Objective: Therefore, we compare the code quality of two equivalent sets of IoT and non-IoT systems to determine whether there are similarities and differences. We also collect and revisit software-engineering best practices in non-IoT contexts to apply them to IoT. Method: We design and apply a systematic method to select two sets of 94 non-IoT and IoT systems software from GitHub with comparable characteristics. We compute quality metrics on the systems in these two sets and then analyse and compare the metric values. We analyse in depth and provide specific examples of IoT system's complexity and how it manifests in the codebases. After the comparison, We systematically select and present a list of best practices to address the observed difference between IoT and non-IoT code. Results: Through a comparison of metrics, we conclude that software for IoT systems is more complex, coupled, larger, less maintainable, and cohesive than non-IoT systems. Several factors, such as integrating multiple hardware and software components and managing data communication between them, contribute to these differences. Considering these differences, we present a revisited best practices list with approaches, tools, or techniques for developing IoT systems. As example, applying modularity, and refactoring are best practices for lowering the complexity. Conclusion: Based on our work, researchers can now make an informed decision using existing studies on the quality of non-IoT systems for IoT systems.
Software Engineering
What problem does this paper attempt to address?
The problem that this paper attempts to solve is a comparative study on the code quality between Internet of Things (IoT) system software and non - IoT system software. Specifically, researchers hope to determine whether there are similarities and differences between them by comparing the code quality of the two systems, as well as the impact of these differences on software development and maintenance practices. The research background points out that although there has been a great deal of research on the software quality of non - IoT systems, there is a relative lack of similar research on IoT systems. This has led to a key question: Can IoT system software be compared with non - IoT system software? If not, can the existing best practices for non - IoT systems be directly applied to IoT systems? To answer these questions, researchers designed and applied a systematic method. They selected two groups of 94 IoT and non - IoT system software with comparable characteristics from GitHub. By calculating and analyzing various quality indicators in these systems and in - depth analyzing the complexity of some IoT systems and their performance in the code base, researchers aim to reveal the unique challenges of IoT system software and propose a list of best practices adapted to the IoT environment. These best practices are designed to solve common problems in IoT systems such as high complexity, low maintainability and readability, thus providing guidance for developers to help them optimize the software development process of IoT systems. In general, the core issue of this paper is to explore the differences in quality between IoT system software and non - IoT system software, and how to adjust or develop new best practices in software engineering according to these differences to better support the development and maintenance of IoT systems.