decisions. Since IoT applications tend to be complex,
improving the understandability of the system
architecture may help future maintenance efforts
significantly. Design patterns offer a shared
vocabulary, making it easier to discuss and document
system components and interactions.
Adding to Security and Robustness
Reusing proven solutions contributes to the system
robustness. Patterns aid designers in recognizing
situations where design reuse is possible or advisable.
Several well-tested solutions to common architectural
challenges are described in patterns, including
managing hardware failures or isolating critical
components to prevent system-wide breakdown. By
incorporating design patterns, developers can build
IoT systems that can maintain high availability under
varying conditions.
5 CONCLUSIONS
The IoT field is still in exponential growth. New
companies, technologies, devices, protocols,
platforms and versions emerge continuously and in
large quantity. Integration and maintenance
challenges will keep troubling IoT system
development in foreseeable future. Design patterns
help in setting clear design goals for the system.
Scalability and maintainability can be promoted
at all levels of system development. Applying
patterns in solving or refactoring individual design
problems at object or function level helps in creating
elegant implementations that can be easily
understood and upgraded. Structuring larger
components or subsystems with pattern-oriented
solutions improves the extensibility and integrability
of the system at larger scale. Design patterns give
ideas for designing robust IoT software architectures
and tackle complexity of large heterogenous systems.
In addition to the newer microservices and IoT
patterns, the object-oriented patterns can be utilized
in IoT context.
This article contributes to the body of knowledge
in IoT architectures and design, providing practical
guidance for system architects and developers dealing
with IoT environments that must manage dynamic
workloads, changing requirements and future
expansion. We provide concrete examples how
design pattern concepts can be applied in real-world
scenarios, bridging the gap between abstract ideas
and practical implementation. We believe this helps
practitioners and researchers to understand the
nuances of scalability issues or integration challenges
involved in IoT projects. Our project of bringing data
from multiple sensor networks together into single
middleware hopefully inspires researchers and
developers working on similar projects.
REFERENCES
Actility (2024). ThingPark X IoT Flow Overview.
https://docs.thingpark.com/thingpark-x/latest/.
Amazon (2024). What is Amazon API Gateway?
https://docs.aws.amazon.com/apigateway/latest/
developerguide/welcome.html.
Bardsley, D., Ryan L. and Howard J. (2018). Serverless
Performance and Optimization Strategies. In IEEE
International Conference on Smart Cloud, pp. 19-26.
Beck K. et al. (1996). Industrial experience with design
patterns. In Proceedings of IEEE 18th International
Conference on Software Engineering, pp. 103-114.
Bloom, G., Alsulami, B., Nwafor E. and Bertolotti, I. C.
(2018). Design patterns for the industrial Internet of
Things. In 14th IEEE International Workshop on
Factory Communication Systems, pp. 1-10.
Chandra, G. S., and Mahindra, T. (2016). Pattern language
for IoT applications. In PLoP Conference, pp. 1-8.
Crestani, A., Tetu, R., Douin, J.-M. and Paradinas, P.
(2021). Energy Cost of IoT Design Patterns. In 8th
International Conference on Future Internet of Things
and Cloud, pp. 383-387.
Eugster, P., Felber, P., Guerraoui, R. and Kermarrec, A.
(2003). The many faces of publish/subscribe. In ACM
Computing. Surveys, vol. 35, 2, pp. 114–131.
Fernandez, E. B., Washizaki, H., Yoshioka, N. and Okubo,
T. (2021). The design of secure IoT applications using
patterns: State of the art and directions for research. In
Internet of Things, vol. 15.
Gamma, E., Helm, R., Johnson, R. and Vlissides, J. (1994).
Design Patterns: Elements of Reusable Object-Oriented
Software. Addison-Wesley, USA.
Hohpe, G. and Woolf, B. (2003). Enterprise Integration
Patterns: Designing, Building, and Deploying
Messaging Solutions. Addison-Wesley, USA.
Mateos, C., Crasso, M., Zunino, A. and Campo, M. (2010).
Separation of concerns in service-oriented applications
based on pervasive design patterns. In Proceedings of
ACM Symposium on Applied Computing), pp. 849-853.
Patel, P. and Cassou, D. (2015). Enabling high-level
application development for the Internet of Things. In
Journal of Systems and Software, vol. 103, pp. 62-84.
Pike, R. (2012). Go at Google: Language Design in the
Service of Software Engineering. https://go.dev/talks/.
Qanbari S. et al. (2016). IoT Design Patterns:
Computational Constructs to Design, Build and
Engineer Edge Applications. In IEEE First
International Conference on Internet-of-Things Design
and Implementation, pp. 277-282.
Raiturkar, J. (2018). Hands-On Software Architecture with
Golang. Packt Publishing Ltd, UK.