Framework PON C++ 4.0: contribuição para a concepção de aplicações no paradigma orientado a notificações por meio de programação genérica - Neves, Felipe dos Santos (2021)
O Paradigma Orientado a Notificações (PON) é uma nova abordagem para a construção de sistemas computacionais. O PON propõe a computação por meio de um modelo de entidades reativas desacopladas que interagem por meio de notificações pontuais, dentre as quais se divide e separa a computação facto-execucional da computação lógico-causal. Com isso é possível reduzir ou eliminar redundâncias temporais e estruturais, comuns em outros paradigmas de programação, que podem afetar o desempenho dos programas. Ainda, o desacoplamento intrínseco entre as entidades do PON facilita a construção de sistemas concorrentes e/ou distribuídos. Além disso, a estrutura orientada a regras do PON tende a facilitar o desenvolvimento por permitir programar em alto nível de abstração. O PON apresenta várias materializações em software, sendo as mais maduras tecnologicamente aquelas que se dão por meio de frameworks, desenvolvidos em diferentes linguagens de programação. Dentre estes frameworks o que apresenta o maior grau de maturidade e estabilidade é o Framework PON C++ 2.0. Entretanto, o Framework PON C++ 2.0 ainda apresenta certas limitações, como excessiva verbosidade, baixa flexibilidade de tipos e baixa flexibilidade algorítmica. Nesse contexto este trabalho propõe o desenvolvimento de um novo framework, denominado Framework PON C++ 4.0, com o objetivo de remover as limitações presentes no Framework PON C++ 2.0, bem como as imperfeições do Framework PON C++ 3.0 que envolve multithread/multicore, de forma a melhorar a usabilidade do PON e seu desempenho neste âmbito. O Framework PON C++ 4.0 é desenvolvido utilizando técnicas de programação genérica, por meio de recursos adicionados nas versões do padrão ISO C++11, C++14, C++17 e C++20, bem como aplicando o método de desenvolvimento orientado a testes. Esta dissertação de mestrado apresenta os resultados obtidos com a implementação do Framework PON C++ 4.0 por meio de um conjunto de aplicações pertinentes, tanto em ambiente single thread quanto multithread/multicore. Tais aplicações são um sistema de sensores e uma aplicação de controle automatizado de tráfego, oriundos do grupo de pesquisa, e dos algoritmos Bitonic Sort e Random Forest oriundos da literatura. Tais aplicações foram executadas e comparadas em termos de desempenho com as mesmas aplicações implementadas no Framework PON C++ 2.0, Framework PON Elixir/Erlang e também implementações no Paradigma Orientado a Objetos (POO) em linguagem de programação C++ e Paradigma Procedimental (PP) em linguagem de programação C. Como resultado destas comparações, o novo Framework PON C++ 4.0 se mostra superior ao Framework PON C++ 2.0 tanto em tempo de execução como consumo de memória nos cenários avaliados, além de apresentar balanceamento de carga comparável aos do Framework PON Elixir/Erlang em ambiente multicore. As melhorias na usabilidade são adicionalmente avaliadas e atestadas pelo feedback de desenvolvedores do PON.