Preprint
Article

Advancements in Software Engineering for IoT Applications: Addressing Challenges and Seizing Opportunities

Altmetrics

Downloads

135

Views

48

Comments

0

This version is not peer-reviewed

Submitted:

08 July 2024

Posted:

10 July 2024

You are already at the latest version

Alerts
Abstract
The rapid proliferation of Internet of Things (IoT) technology has ushered in a new era of connectivity, allowing billions of devices to produce extensive data. Significant challenges in software engineering need to be addressed for full utilization of Internet of Things (IoT) applications. This article examines the challenges in Internet of Things, software engineering and discusses current developments aimed at addressing these issues and seizing new opportunities. We examine the challenges associated with Internet of Things software development, including resource constraints, device diversity, security vulnerabilities, and data management concerns. New studies have indicated the use of advanced techniques like as containerization, model-driven development, AI and ML integration, and robust security frameworks. Moreover, the significance of system architecture is explained, including the device, network, and cloud layers, with an emphasis on the principles of reusability, scalability, and modularity. Results and conversations explore the complexities of security measures, emerging opportunities, and scaling solutions made possible by simulation tools, penetration testing, and cross-domain development platforms. The study expects IoT system evolution and emphasises the need for continual software and firmware changes, testing, and deployment.
Keywords: 
Subject: Computer Science and Mathematics  -   Software

I. Introduction

With its cutting-edge technology, the Internet of Things (IoT) is paving the way for a future where all gadgets can connect with each other, share data, and make our lives easier and more efficient than ever before. The potential impact of Internet of Things applications is immense, given the widespread use of linked devices in several fields like smart homes, healthcare, transportation, and industrial automation. To fully realize its promise, however, one must first overcome the many obstacles that lay beneath the surface of this technical wonder. An incredible number of devices, sensors, and actuators have come together to build complex networks, marking a major milestone in the development of the Internet of Things (IoT). From neighborhood networks to international infrastructures, these systems produce massive amounts of data that provide the groundwork for game-changing discoveries and offerings. The complexities of software engineering, however, become more apparent as IoT networks grow in size and complexity [1]. Through an investigation into the intricate realm of Internet of Things (IoT) software engineering, the purpose of this study is to uncover the challenges that stand in the way of development as well as the opportunities for enhancement. Through a review of recent research efforts, innovative methodologies, and growing patterns, the objective of this paper is to provide a comprehensive overview of the current position in the field of software engineering for the Internet of Things. This research covers a wide range of subjects related to Internet of Things software engineering [2]. This article provides a comprehensive overview of the topic by investigating the basic features of Internet of Things (IoT) applications, researching the complexities of system architecture, and investigating the most current developments in AI, ML, and security frameworks. This research aims to uncover strategies to overcome barriers and realize the full potential of IoT applications by analyzing resources, device heterogeneity, security risks, and data management complications [3].

II. Complexities in IoT Software Engineering to Thrive in the Complicated World of Internet of Things

software engineering, one must possess an all-encompassing understanding of the challenges and intricacies that are intrinsic to this ever-changing industry [4].

A. Characteristics of IoT Applications

Determining what makes Internet of Things apps unique is the first step in grasping the intricacies of software engineering. Here we'll look at the dispersed IoT ecosystems, the many devices that make them up, and the data-driven processes that make them tick.

B. Need for Software Engineering Practices

As IoT application complexity rises, the need for robust s oftware engineering approaches becomes more apparent by t he day. To ensure the dependability, scalability, and maintainability of software for the Internet of Things, this section delves into the importance of disciplined engineering methods.

C. Overview of Software Engineering Phases

Providing a comprehensive overview of the main phases in software engineering can help create a roadmap for overcoming difficulties brought by the Internet of Things. All of the steps, from system design to maintenance, contribute to the seamless integration and operation of IoT applications.

III. Challenges in IoT Software Engineering

To ensure the robustness of software construction for the Internet of Things, this subsection explores alternative ideas and potential actions, taking into mind challenges like scalability and security [13].

A. Scalability and Solutions

Scalability is a major challenge in IoT software engineering due to the rapid growth of connected devices and data. To tackle this, researchers have developed solutions like containerization, edge computing, and distributed architectures. Distributed architectures distribute tasks among many nodes to improve scalability and reduce device load. Edge computing reduces latency and optimizes bandwidth by processing data closer to its source [10]. Technologies like Docker and Kubernetes enable lightweight and portable software delivery, enhancing scalability and resource efficiency.

B. Security Measures

Authentication, encryption, and access control bolster confidentiality in safeguarding sensitive information for companies. Encryption methods like SSL/TLS ensure secure connections between IoT devices and backend systems, protecting data during transit. Authentication mechanisms such as biometric verification and multi-factor authentication confirm users' and devices' identities, thwarting unauthorized access. Implementing access control measures limits unauthorized acts by restricting rights and permissions.

C. Opportunities and Advancements

IoT software engineering presents a number of opportunities and advancements, some of which are discussed in this article. These include the utilization of cross-domain development tools, simulation tools, and penetration testing.
1.
Cross-Domain Development Tools
Cross-domain development tools streamline IoT software development by integrating various technologies, protocols, and platforms. Frameworks, libraries, and APIs aid in creating interoperable and scalable IoT applications. These tools simplify the development process, reducing time-to-market by bridging gaps between hardware, software, and networking domains (Fig. 1).
Figure 1. Leverage cross-domain development tools to enable code reusability and reduce development time.
Figure 1. Leverage cross-domain development tools to enable code reusability and reduce development time.
Preprints 111543 g001
2.
Simulation Tools and Testbeds
Simulation tools and testbeds enable developers to assess IoT application performance in controlled environments by simulating real-world scenarios. These technologies create digital representations of IoT systems, allowing for validation and evaluation of features, scalability, and durability. Rigorous testing with simulation tools and testbeds is recommended to minimize risks and ensure product dependability. This helps developers identify and resolve issues before deploying IoT apps in production environments (Fig. 2).
Figure 2. Simulation tools and testbeds to emulate real-world IoT environments and identify potential issues.
Figure 2. Simulation tools and testbeds to emulate real-world IoT environments and identify potential issues.
Preprints 111543 g002
3.
Penetration Testing
Penetration testing simulates cyber-attacks to assess the security of IoT apps and infrastructure. It uncovers vulnerabilities, misconfigurations, and flaws in IoT deployments, enabling proactive security measures. By identifying and fixing security holes early, penetration testing helps protect sensitive data and maintain IoT system integrity (Fig. 3).
Figure 3. Penetration testing to identify security vulnerabilities and ensure data privacy.
Figure 3. Penetration testing to identify security vulnerabilities and ensure data privacy.
Preprints 111543 g003

IV. Challenges in Software Engineering for IoT Applications

Navigating the intricate landscape of IoT software engineering is not without its challenges. The purpose of this part is to shed light on the specific issues that need to be overcome in order to guarantee the dependability, scalability, and security of applications that are connected to the Internet of Things network (Fig. 4) [4,5,6].

A. Resource Constraints

Memory, Processing Power, and Energy: IoT devices face constraints in memory, processing power, and energy. This limits data storage, computation, and battery life. Solutions require lightweight algorithms, optimization, and energy- efficient protocols to maximize performance within these limitations (Table 1).

B. Heterogeneity of Devices and Protocols

1. 
Diverse Hardware and Software Characteristics: The IoT ecosystem comprises diverse devices, each with unique hardware specs, operating systems, and software setups. This diversity complicates software development, deployment, and upkeep, requiring developers to accommodate individual device characteristics. Considering potential compatibility issues stemming from hardware, sensor, and communication changes is crucial throughout application development.
2. 
Communication Protocols: IoT devices utilize diverse communication protocols like MQTT, CoAP, and HTTP for inter-device and backend communication. Achieving seamless communication and data exchange across networks demands overcoming compatibility and interoperability barriers among protocols. Careful selection and configuration of protocols are essential to meet application requirements and constraints, considering factors like latency, bandwidth utilization, and security.

C. Security Concerns

Threats and Vulnerabilities: Security is a major concern in IoT due to connected devices and potential breaches. Risks include unauthorized access, data breaches, malware, and denial-of-service attacks. Vulnerabilities in firmware, network protocols, and cloud services worsen threats. Effective authentication, encryption, access control, and intrusion detection are crucial. Implement these measures across the entire IoT ecosystem, from device to cloud (Table 1).

D. Data Management

Large-Scale Data Generation and Processing: IoT applications generate vast data volumes from sensors, actuators, and linked objects, termed the "Internet of Things." Managing and processing this data pose significant challenges in storage, processing, and analysis. The scale, speed, and diversity of IoT data may exceed traditional data systems' capacities, requiring innovative solutions for real- time data intake, storage, and analysis. Ensuring data integrity, privacy, and legal compliance is crucial to maintain trust in IoT systems (Table 1).
Table 1. IoT Applications, Addressing Challenges and Seizing Opportunities [2,3,4,5].
Table 1. IoT Applications, Addressing Challenges and Seizing Opportunities [2,3,4,5].
Challenge/ Opportunity
Advancements



Connectivity Issues
• Development of lightweight communication protocols such as MQTT and CoAP
• Integration of edge computing to reduce data transmission
• Implementation of mesh networking for enhanced coverage and reliability


Security Risks
• Adoption of end-to-end encryption techniques
• Integration of secure boot mechanisms
• Implementation of device authentication and authorization protocols




Interoperability
• Standardization efforts by organizations like IEEE and IETF
• Development of middleware solutions for protocol translation
• Use of APIs and SDKs for seamless integration with different platforms




Scalability
• Employment of containerization technologies like Docker and Kubernetes
• Implementation of distributed computing architectures
• Utilization of auto-scaling algorithms for resource management



Data Management
• Deployment of IoT-specific databases like MongoDB and InfluxDB
• Utilization of stream processing frameworks such as Apache Kafka and Apache Flink
• Integration of machine learning for real-time data analytics and anomaly detection



Energy Efficiency
• Optimization of software algorithms for reduced energy consumption
• Utilization of low-power communication protocols like LoRaWAN
• Implementation of sleep modes and duty cycling to minimize energy usage




Reliability
• Implementation of redundant systems for fault tolerance
• Adoption of over-the-air (OTA) updates for remote maintenance
• Employment of testing frameworks like JUnit and Mockito for robustness testing
Figure 4. Advancements in IoT software engineering.
Figure 4. Advancements in IoT software engineering.
Preprints 111543 g004

V. Artificial Intelligence and Machine Learning

A. Enhancing Functionality and Performance

AI and ML enhance IoT functionality and performance by automating data analysis and real-time decision-making. Predictive analytics can detect equipment breakdowns, enabling proactive maintenance. ML models improve accuracy and efficiency over time by learning from data streams. Integrating AI and ML into IoT applications unlocks automation, optimization, and intelligent decision-making, benefiting sectors like healthcare, manufacturing, transportation, and smart cities [7].

B. Model-Driven Development

Model-driven development (MDD) in software engineering guides creation, deployment, and maintenance using abstract models. MDD boosts consistency, productivity, and maintainability in IoT apps. Developers design code systematically by capturing IoT system features and behaviors in abstract models. MDD allows rapid prototyping and iterative testing, minimizing errors through automated code translation. Overall, MDD enhances IoT app quality, speeds up development, and reduces time-to-market [8].

C. Domain-Specific Language (DSL)

Recent research in IoT software engineering has shown significant progress with a model-driven methodology, particularly employing Domain-Specific Languages (DSL). Developers can express IoT concepts accurately and succinctly using DSLs tailored to IoT system requirements. Utilizing DSLs streamlines IoT application design and execution, reducing time and complexity. DSLs also facilitate domain expert involvement by allowing expression of specific requirements in familiar language. Overall, the model-driven approach with DSLs holds promise for improving software quality and accelerating IoT application development [4].

D. AI and Machine Learning Integration

Anomaly Detection and Predictive Capabilities: Recent studies emphasize integrating machine learning into AI and IoT for improved functionality. Machine learning algorithms such as neural networks and decision trees allow IoT apps to analyze vast data, detect irregularities, and make real-time predictions. Leveraging historical data, IoT systems proactively detect issues, optimize resource allocation, and enhance efficiency [7]. For instance, machine learning identifies sensor anomalies, predicts equipment failures, and optimizes energy usage in smart buildings. Combining AI and machine learning equips IoT apps with advanced analytics, fostering automation, optimization, and innovation.

E. Security Frameworks

Addressing Vulnerabilities in IoT Applications: Strong security frameworks for IoT apps, addressing flaws and risks. With rising linked devices, safeguarding IoT systems crucial. IoT security frameworks provide comprehensive protections against theft, manipulation, and unauthorized access. Combining authentication, encryption, access control, intrusion detection, and secure communication ensures IoT installations are protected. Incorporating security measures in design builds trust and ensures confidentiality, integrity, and availability for IoT applications [1].

VI. System Architecture for IoT Software Engineering

Emphasizing the critical nature of system architecture, this section delves into how a well-planned architecture guarantees the effective deployment of Internet of Things applications [8].

A. Importance of System Architecture

It outlines components, interfaces, and interactions of IoT applications. A well-designed architecture ensures easy integration of devices, protocols, and data sources, ensuring scalability, flexibility, and maintainability. System architecture significantly impacts resource efficiency, latency, and security in the IoT ecosystem. It drives efficient development and deployment by defining clear boundaries and responsibilities, fostering collaboration among teams and stakeholders [9].

B. Main Layers

Analyzing the main layers of IoT system architecture, this subsection provides insights into the device layer, network layer, cloud layer, and application layer [10,11,12].
1. 
Device Layer
IoT devices contain embedded software, sensors, and actuators for local processing and data gathering. They face limitations in energy, processing, and memory. Efficient design requires considering factors like power consumption and real-time responsiveness.
2. 
Network Layer
Connectivity between IoT devices, gateways, and backend systems is managed here using various networking technologies. Activities include data transmission, routing, and protocol translation. Managing bandwidth, optimizing latency, and implementing security measures are key.
3. 
Cloud Layer
Centralized storage, processing, and analytics for IoT data are provided here. Cloud resources include servers, databases, and analytics platforms. Scalable storage, processing, and advanced analytics enable insights from IoT data. Cloud services also facilitate remote device monitoring, updates, and integration with enterprise systems.
4. 
Application Layer
Focuses on high-level functions like machine learning for analytics and predictive maintenance, over-the-air updates for software, user interfaces, and domain-specific languages for streamlined development.
Table 2. Different layers of the IoT architecture.
Table 2. Different layers of the IoT architecture.
Application Layer
✓ Machine Learning Integration: Real-time data analytics, predictive maintenance, anomaly detection
✓ Over-the-Air (OTA) Updates: Remote updates for software and firmware
✓ User Interfaces: Mobile apps, web dashboards
✓ Domain-Specific Languages (DSLs): Streamlined development
Cloud Layer
✓ Cloud Storage: Scalable databases like MongoDB, InfluxDB
✓ Stream Processing: Frameworks like Apache Kafka, Apache Flink
✓ Data Analytics: Advanced analytics platforms, machine learning models
✓ Security Frameworks: End-to-end encryption, secure boot mechanisms, authentication and authorization protocols
Network Layer
✓ Communication Protocols: MQTT, CoAP, HTTP
✓ Edge Computing: Data processing closer to source
✓ Mesh Networking: Enhanced coverage and reliability
✓ Standardization and Interoperability: Middleware solutions, APIs, SDKs
Device Layer
✓ Embedded Software: Firmware updates, real-time responsiveness
✓ Resource Optimization: Low-power algorithms, sleep modes, duty cycling
✓ Device Authentication: Ensuring secure device identities
✓ Redundant Systems: Ensuring fault tolerance and reliability

VII. Future Directions

Anticipating the fact that the landscape of Internet of Things systems is always shifting, this section investigates potential future paths and factors to take into consideration for continuous software and firmware updates.

A. Evolving Nature of IoT Systems

The dynamic evolution of Internet of Things (IoT) systems is the subject of this subsection, which also forecasts future trends and advancements. The Internet of Things (IoT) is characterised by its dynamic and ever-evolving nature, which is driven by developments in technology, shifting consumer expectations, and novel use cases [13]. As IoT systems continue to proliferate across various industries and domains, several key trends and developments are expected to shape the future of IoT:
1. 
Interoperability and Standardization: An ever- increasing number of Internet of Things (IoT) devices and platforms necessitates standardisation and interoperability to guarantee smooth integration and communication between various systems. To facilitate interoperability across various devices and platforms, future IoT systems would most likely embrace standardised frameworks and protocols
2. 
Edge Computing: A rising trend towards edge computing, which involves processing and analysing data closer to the source, is being driven by the ever-increasing volume of data created by IoT devices. Internet of Things (IoT) applications that are sensitive to latency and have bandwidth constraints can benefit from edge computing since it decreases latency, bandwidth utilisation, and dependence on centralised cloud infrastructure [6].
3. 
AI and Machine Learning: Improving the intelligence and functionality of IoT systems is anticipated to be largely driven by the integration of AI and ML approaches. Automated decision-making, anomaly detection, predictive maintenance, and real-time data analytics are some of the expected uses of AI and ML algorithms in future Internet of Things systems [7].
4. 
Security and Privacy: Concerns about security and privacy are likely to continue to take centre stage as the number of Internet of Things (IoT) devices continues to grow and vital infrastructure becomes more linked. Encryption, authentication, access control, and secure firmware upgrades are some of the strong security features that future IoT devices will need to include to safeguard data from cyber threats and keep it private [1].

B. Ongoing Software and Firmware Updates

This emphasises the need of continuous updates and discusses factors to consider while testing and implementing software and firmware updates in IoT systems. Maintaining the safety, efficiency, and usefulness of Internet of Things (IoT) devices and systems requires constant changes to software and firmware. Nevertheless, there are several obstacles specific to updating IoT devices, including limited resources, connectivity problems, and the dispersed nature of IoT deployments. Several factors concerning the testing and deployment of software and firmware updates in IoT systems are emphasised in order to overcome these obstacles [14,15,16]:
1. 
Compatibility Testing: Prior to distributing software and firmware upgrades, compatibility testing should be carried out to confirm that the updates are compatible with the hardware, software, and configurations that are already in place. Compatibility testing is a useful tool for identifying potential conflicts, dependencies, and problems that may occur during the process of updating.
2. 
Over-the-Air (OTA) Updates: OTA updates allow for the remote deployment of software and firmware updates to Internet of Things devices, thereby reducing the need for manual intervention. However, in order to avoid unauthorised access and tampering, over-the-air (OTA) updates would need to include sophisticated security features. The implementation of secure over-the-air (OTA) protocols, encryption, and authentication techniques is recommended in order to safeguard against potential security violations.
3. 
Rollback Mechanisms: Rollback procedures: In the event that upgrades are unsuccessful or compatibility problems arise, rollback procedures should be in place so that the prior version of software or firmware can be reverted to. Rollback mechanisms serve as a safety net in the event that unanticipated problems arise during the process of updating, thereby ensuring the continuity of operations and reducing the amount of downtime that occurs.
4. 
Testing in Real-world Environments: Software and firmware updates should be tested in real-world scenarios in order to simulate realistic usage situations and discover any issues that may develop in production deployments. This must be done in order to ensure that the software and firmware are functioning properly. It is important to confirm the performance, dependability, and stability of updates before they are released to a wider audience. Real-world testing helps validate these aspects.
5. 
User Communication and Feedback: It is essential to maintain effective communication with end-users throughout the update process in order to provide them with information regarding the intentions, advantages, and potential consequences of upgrades. In order to gain insights into the user experience, identify any faults or concerns, and prioritise future improvements based on user demands and preferences, it is important to solicit feedback from users.

VIII. Conclusion

This part concludes the investigation of developments in IoT software engineering by summarising major discoveries, analysing implications for future IoT applications, and providing closing views and recommendations.

A. Summary of Key Findings

This section summarises the key findings and insights discovered during the research. It revisits the paper's main topics, emphasising the issues encountered in IoT software engineering, the novel techniques and solutions presented, and the possible influence on the future of IoT applications. By summarising major findings, readers are reminded of the paper's main points.

B. Implications of Future IoT Applications

This subsection examines the larger implications of the research findings for the trajectory of future IoT applications, including how the insights and breakthroughs highlighted in the article may alter the IoT technology landscape. It explores the potential ramifications for many industries and sectors, emphasising prospects for innovation, improvement, and growth. This segment sheds light on the changing role of IoT technology in defining the future of linked systems by investigating the implications for future IoT applications.

C. Final Thoughts and Recommendations

This chapter concludes with views and actionable recommendations based on a thorough examination of software engineering developments in the IoT area. It could include proposals for future research areas, practical recommendations for industry practitioners, or thoughts on the importance of the research findings. This segment concludes with closing comments and recommendations, giving readers a feeling of finality while also inspiring future exploration and action in the subject of IoT software engineering.

References

  1. Celik, Z.B., Fernandes, E., Pauley, E., Tan, G. and McDaniel, P., 2019. Program analysis of commodity IoT applications for security and privacy: Challenges and opportunities. ACM Computing Surveys (CSUR), 52(4), pp.1-30. [CrossRef]
  2. Bandyopadhyay, D. and Sen, J., 2011. Internet of things: Applications and challenges in technology and standardization. Wireless personal communications, 58, pp.49-69. [CrossRef]
  3. Wang, M. and Mittal, A., 2024. Innovative Solutions: Cloud Computing and AI Synergy in Software Engineering. Asian American Research Letters Journal, 1(1).
  4. Kamruzzaman, M.M., Alrashdi, I. and Alqazzaz, A., 2022. New opportunities, challenges, and applications of edge-AI for connected healthcare in internet of medical things for smart cities. Journal of Healthcare Engineering, 2022. [CrossRef]
  5. Sallam, K., Mohamed, M. and Mohamed, A.W., 2023. Internet of Things (IoT) in supply chain management: challenges, opportunities, and best practices. Sustainable Machine Intelligence Journal, 2, pp.3- 1. [CrossRef]
  6. Chen, L. and Li, M., 2024. AI-Enabled Cloud Platforms: Revolutionizing Software Development. Asian American Research Letters Journal, 1(1).
  7. Pan, Y. and Zhang, L., 2021. Roles of artificial intelligence in construction engineering and management: A critical review and future trends. Automation in Construction, 122, p.103517. [CrossRef]
  8. Shahinmoghadam, M. and Motamedi, A., 2019, May. Review of BIM- centred IoT deployment–state of the art, opportunities, and challenges. In Proceedings of the 36th International Symposium on Automation and Robotics in Construction (ISARC 2019) (pp. 1268-1275).
  9. Rossi, M. and Russo, G., 2024. Innovative Solutions: Cloud Computing and AI Synergy in Software Engineering. MZ Journal of Artificial Intelligence, 1(1), pp.1-9.
  10. Lone, A.N., Mustajab, S. and Alam, M., 2023. A comprehensive study on cybersecurity challenges and opportunities in the IoT world. Security and Privacy, 6(6), p.e318. [CrossRef]
  11. Rahim, M.A., Rahman, M.A., Rahman, M.M., Asyhari, A.T., Bhuiyan,.
  12. M.Z.A. and Ramasamy, D., 2021. Evolution of IoT-enabled.
  13. connectivity and applications in automotive industry: A review. Vehicular Communications, 27, p.100285. [CrossRef]
  14. Debnath, D. and Chettri, S.K., 2021. Internet of Things: Current Research, Challenges, Trends and Applications. In Applications of Artificial Intelligence in Engineering: Proceedings of First Global Conference on Artificial Intelligence and Applications (GCAIA 2020) (pp. 679-694). Springer Singapore.
  15. Shafik, W., 2024. Blockchain-Based Internet of Things (B-IoT): Challenges, Solutions, Opportunities, Open Research Questions, and Future Trends. Blockchain-based Internet of Things, pp.35-58.
  16. Banafaa, M., Shayea, I., Din, J., Azmi, M.H., Alashbi, A., Daradkeh,.
  17. Y.I. and Alhammadi, A., 2023. 6G mobile communication technology: Requirements, targets, applications, challenges, advantages, and opportunities. Alexandria Engineering Journal, 64, pp.245-274. [CrossRef]
  18. Pool, R., van Berkel, J., van den Braak, S., Harbers, M. and Bargh, M.S., 2020. The internet of things in a smart society: How government policy can help seize opportunities and mitigate threats. Beyond Smart and Connected Governments: Sensors and the Internet of Things in the Public Sector, pp.25-48.
  19. Müller, O. and Weber, S., 2024. AI-Enabled Cloud Platforms: Revolutionizing Software Development. MZ Journal of Artificial Intelligence, 1(1), pp.1-10.
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.
Copyright: This open access article is published under a Creative Commons CC BY 4.0 license, which permit the free download, distribution, and reuse, provided that the author and preprint are cited in any reuse.
Prerpints.org logo

Preprints.org is a free preprint server supported by MDPI in Basel, Switzerland.

Subscribe

© 2024 MDPI (Basel, Switzerland) unless otherwise stated