Enhancing Embedded Software in the Internet of Things Domain: Exploring JavaScript on Resource-Constrained Devices.
Resumo
O desenvolvimento de software embarcado para a Internet das Coisas (IoT)
tem se concentrado predominantemente em linguagens de programação compi ladas, como C e C++, sendo C a mais utilizada. No entanto, a linguagem C tem
desvantagens, incluindo falta de orientação a objetos, ausência de tratamento de
exceções, sem mecanismo automatizado para alocal e liberar memória (garbage
colletor), gerenciamento manual de memória e outros aspectos que podem tornar o
desenvolvimento de software desafiador, considerando o aumento da complexidade
dos requisitos de software embarcado. Em contrapartida, linguagens interpretadas
como Python e JavaScript (JS) surgem como alternativas para melhorar a qualidade
do software e o nível de abstração das aplicações. Embora linguagens interpretadas
possam trazer vantagens para software embarcado, como flexibilidade e facilidade
de uso, seu modelo de execução (interpretação) pode demandar maior consumo de
recursos, restringindo seu uso em dispositivos com recursos limitados. Este estudo
investiga métodos para melhorar o desempenho do software embarcado para reduzir
o consumo de recursos no contexto IoT, com foco em dispositivos com recursos
limitados. Em particular, escolhemos o JavaScript como alternativa à linguagem
C e realizamos investigações para melhorar seu desempenho. Para fazer isso,
começamos com uma revisão sistemática da literatura para entender a relação entre
JS e IoT. Em seguida, analisamos a linguagem JavaScript para entender seu impacto
em dispositivos restritos e realizamos experimentos usando benchmarks e aplica tivos reais. Como resultado, produzimos um conjunto de diretrizes para melhorar
a qualidade do código, uma ferramenta (JSGuide) para detecção de code smells
e desenvolvemos uma estrutura baseada em funções assíncronas (JSEVAsync)
para ajudar os desenvolvedores a criar melhores soluções embarcadas. Nossas
descobertas mostram que o uso de uma linguagem interpretada no desenvolvimento
de software embarcado é viável e melhora as métricas de tempo de design, como
manutenibilidade, legibilidade e reutilização de código.