Resumo: |
Desde o início da aplicação de máquinas para a resolução de problemas complexos a Ciência da Computação começou a criar áreas para se adaptar as novas necessidades. Uma dessas áreas foi a Inteligência Artificial, que tinha como intuito criar entidades inteligentes para a resolução de problemas. Com o crescimento da complexidade desses problemas, a Inteligência Artificial teve que lidar com situações cujos dados enviados para as máquinas não eram completos ou confiáveis, abrindo o campo para a Modelagem da Incerteza. Nessa direção, percebe-se que diferentes problemas podem lidar com tipos de dados distintos, o que acaba por suscitar a existência de várias técnicas para a Modelagem de Incerteza, entre as quais destaco as mais frequentemente utilizadas: Lógica Difusa, Redes Bayesianas, Teoria da Evidência de Dempster-Shafer e Teoria dos Fatores de Certeza. Essas teorias envolvem grande carga matemática, além de revelarem regras complexas para implementação, o que provocou o surgimento de softwares com a finalidade de auxiliar no desenvolvimento e resolução de problemas que envolvem a incerteza, esses programas são chamados Shells. De outro lado, com a expansão e aumento da demanda de softwares pela população em geral, a necessidade de se desenvolver softwares mais ágeis e que tivessem seus resultados fornecidos de modo seguro e sem erro fez com que a Ciência da Computação criasse uma área para desenvolver e estudar metodologias de desenvolvimento e promover também processos que garantissem, através de testes, a qualidade do software desenvolvido, a essa área denominou-se Engenharia de Software. A proposta dessa pesquisa foi a de avaliar o desempenho da Shell Pegasus Uncertainty Modeling, desenvolvida na Universidade do Extremo Sul Catarinense (UNESC), submetendo-a a uma série de testes de qualidade e agilidade, afim de se criar um relatório e divulgá-la com mais amplitude e confiabilidade dentro da comunidade científica. A metodologia dos testes baseou-se na captura e análise dos tempos de execução das inferências nos módulos da Shell. Para executar tal captura foi utilizada a ferramenta de análise de desempenho JProfiler, a qual auxilia na observação da execução de softwares, mostrando os tempos de execução dos processos, a quantidade de memória utilizada em cada processo e as classes e funções utilizadas. Após a captura dos tempos de execução, esses tempos foram inseridos em um gráfico de dispersão, a fim de se analisar sua oscilação. Logo após foram criadas médias de cada módulo, as quais também foram inseridas em um gráfico de dispersão aplicando os formalismos de análise de regressão (linear e polinomial) e de coeficiente de determinação (r²), a fim de se analisar sua taxa de crescimento. Baseando-se nos tempos de execução, foi feita uma pesquisa sobre algoritmos, citanda suas classes e níveis de complexidade. Utilizando-se dos tempos capturados, chegou-se a conclusão que a SHELL cresce de modo linear, com um algoritmo O(n), o qual é o terceiro em nível de complexidade e é um dos algoritmos com maior eficiência. |