<- Atrás

Revista ELECTRO

Vol. 43 – Año 2021

Artículo

TÍTULO

Uso de Patrones de Diseño y Metaprogramación para Construir APIs de IoT Usando C++

AUTORES

Alberto Pacheco, Jesús Escobar, Edgar Trujillo

RESUMEN

Ante el explosivo crecimiento del internet de las cosas, resulta imperativo desarrollar software embebido para ecosistemas cada vez más complejos y heterogéneos. La meta programación y diseño de patrones permiten reusar componentes para diferentes plataformas, sin embargo, la eficiencia requerida para un sistema IoT puede limitar su uso. El presente trabajo demuestra que es posible diseñar APIs para IoT suficientemente genéricas, robustas, portables y eficientes aplicando la metaprogramación con templates de C++. Para su desarrollo se aplicó un proceso iterativo (tres ciclos) de investigación-acción validado bajo diferentes plataformas, dispositivos, sensores y actuadores logrando un código más compacto y un rendimiento equiparable a la versión implementada en lenguaje C.

Palabras Clave: Internet de las Cosas; Metaprogramación; Diseño de APIs; Patrones de diseño; Software embebido; Investigación-acción.

ABSTRACT

The explosive growth of the internet of things urges the need of embedded software best adapted to increasingly complex and heterogeneous ecosystems. Meta programming and design patterns allow the reuse of components for different platforms, however the efficiency required for an IoT system can limit its possible practical use. This work shows a generic, robust, portable and efficient API for IoT that applied C++ template metaprogramming, developed through an iterative action-research process validated in different platforms, devices, sensors and actuators, performing as well as its C version.

Keywords: IoT; Metaprogramming; API design; Design patterns; Embedded software; Action-research.

REFERENCIAS

[1] M. Reddy, API Design for C++, Morgan Kaufmann, 2011.
[2] M. Biehl, API Architecture: The Big Picture for Building APIs, CreateSpace, 2015. ISBN: 9781508676645
[3] A. Chatzigeorgiou & G. Stephanides, Evaluating performance and power of OOP vs. procedural prog. in embedded processors, en Reliable Soft Tech, 2361 (1):65–75, Springer, 2002. doi: 10.1007/3-540-48046-3_5
[4] E. Alligand & J Falcou, Practical C++ Metaprogramming. O'Reilly, 2016. ISBN: 9781491955031
[5] B. Andrist & V. Sehr, C++ High Performance: Boost and optimize the performance of your C++17 code, Packt, 2017.
[6] D. Vandevoorde & N. Josuttis, C++ Templates: The Complete Guide, Pearson, 2002. ISBN: 9780672334054
[7] R. Damasevicius & V. Stuikys, High-Level Models for Transformation-Oriented Design of Hardware and Embedded Systems, en Adv Electrical and Computer Eng, 8(2):86-94, 2008, doi: 10.4316/AECE.2008.02016
[8] W. Raschke, et al., Patterns for hardware-independent development for embedded systems, en Proc. Euro. Conf. on Pattern Lang. Programs, 1–14, 2014. doi: 10.1145/2721956.2721959
[9] S. Meyers, Effective C++ in an Embedded Environment, Artima, 2015.
[10] C. Chakraborty et al., A comprehensive review on device-to-device com. paradigm: trends, challenges and apps, en Wireless Pers Commun, 114:185–207, 2020. doi: 10.1007/s11277-020-07358-3
[11] P. Sethi, & S. Sarangi, Internet of Things: Architectures, Protocols, and Applications, en J. Electrical and Computer Eng., 1-25, 2017
[12] J. Escobar, Red Tipo Malla Propagable para Telemetría en IoT (tesis en desarrollo), TecNM IT Chihuahua, 2021.
[13] TensorFlow, TensorFlow Lite para microcontroladores, 2021. doi: 10.5281/zenodo.4724125
[14] E. Gamma, et al., Patrones de Diseño. Addison Wesley, 1995.
[15] K. Petersen, et al., Action research as a model for industry-academia collaboration in the software engineering context, en ACM Proc. Int. Works. Ind. Collab. on SE, 2014, 55–62, doi: 10.1145/2647648.2647656
[16] M. Staron, Action Research as Research Methodology in Software Engineering, en Action Research in Software Engineering, Springer, 2020
[17] N. Surendra & S Nazir, Creating info systems using Agile dev practices: an action research study, en Euro. J. Info Sys, 28(5):549-565, 2019
[18] C. Preschern, API patterns in C, en ACM Proc. Euro. Conf. on Pattern Lang. Programs, pp. 1–11, 2016. doi: 10.1145/3011784.3011791
[19] D. Nesteruk, Design patterns in modern C++. Apress, 2018.
[20] N. Josuttis, C++17- La guía completa (trad. J. Estrada). LeanPub, 2020.
[21] Compiler Explorer on-line C++ compiler, 2021. https://godbolt.org 55

CITAR COMO:

Alberto Pacheco, Jesús Escobar, Edgar Trujillo, "Uso de Patrones de Diseño y Metaprogramación para Construir APIs de IoT Usando C++", Revista ELECTRO, Vol. 43, 2021, pp. 50-55.

VERSIÓN PDF

(Abrir archivo PDF en una nueva pestaña)