Navegando por Autor "Pinto, Felipe Alves Pereira"
Agora exibindo 1 - 9 de 9
- Resultados por página
- Opções de Ordenação
Tese An automated approach for performance deviation analysis of evolving software systems(Universidade Federal do Rio Grande do Norte, 2015-11-18) Pinto, Felipe Alves Pereira; Kulesza, Uira; ; http://lattes.cnpq.br/0189095897739979; ; http://lattes.cnpq.br/6163607072712192; Cacho, Nelio Alessandro Azevedo; ; http://lattes.cnpq.br/4635320220484649; Batista, Thais Vasconcelos; ; http://lattes.cnpq.br/5521922960404236; Almeida, Eduardo Santana de; ; http://lattes.cnpq.br/8538761803577291; Maia, Marcelo de Almeida; ; http://lattes.cnpq.br/4915659948263445The maintenance and evolution of software systems have become a critical task over the last years due to the diversity and high demand of features, devices and users. The ability to understand and analyze how newly introduced changes impact the quality attributes of the architecture of those software systems is an essential prerequisite for avoiding the deterioration of the engineering quality of them during their evolution. This thesis proposes an automated approach for the deviation analysis of the quality attribute of performance in terms of execution time (response time). It is implemented by a framework that adopts dynamic analysis and mining software repository techniques to provide an automated way to revel potential sources - commits and issues - of performance deviation in scenarios of an evolving software system. The approach defines four phases: (i) preparation - choosing the scenarios and preparing the target releases; (ii) dynamic analysis - determining the performance of scenarios and methods by calculating their execution time; (iii) deviation analysis - processing and comparing the results of the dynamic analysis for different releases; and (iv) repository mining - identifying development issues and commits associated with performance deviation. Several empirical studies have been developed to assess the approach from different perspectives. An initial study shows the feasibility of the approach to support traceability of quality attributes with static analysis. An exploratory study analyzed the usefulness and domain independence of the proposal in automatically identifying source code assets with performance deviation and the changes that have affected them during an evolution. This study was performed using three systems: (i) SIGAA - a web academic management system; (ii) ArgoUML - an UML modeling tool; and (iii) Netty - a network application framework. A third study has performed an evolutionary analysis of applying the approach to multiple releases of Netty, and the web frameworks Wicket and Jetty. It has analyzed twenty-one releases (seven releases of each system) and addressed a total of 57 scenarios. Overall, we have found 14 scenarios with significant performance deviation for Netty, 13 for Wicket, and 9 for Jetty. In addition, the feedback obtained from an online survey with eight developers of Netty, Wicket and Jetty is also discussed. Finally, in our last study, we built a performance regression model in order to indicate the properties of code changes that are more likely to cause performance degradation. We mined a total of 997 commits, of which 103 were retrieved from degraded code assets, 19 from optimized, while 875 had no impact on execution time. Number of days before release and day of week were the most relevant variables of commits that cause performance degradation in our model. The receiver operating characteristic (ROC) area of our regression model is 60%, which means that deciding if a commit will cause performance degradation or not by using the model is 10% better than a random guess.Dissertação CodeTrack: uma ferramenta para análise contínua de conflitos indiretos de software(2017-08-31) Oliveira Neto, João Victor de; Lima, Gleydson de Azevedo Ferreira; Kulesza, Uira; http://lattes.cnpq.br/0189095897739979; http://lattes.cnpq.br/4986614168117334; http://lattes.cnpq.br/5736903367841961; Medeiros, Sérgio Queiroz de; http://lattes.cnpq.br/0310395336626784; Pinto, Felipe Alves Pereira; http://lattes.cnpq.br/6163607072712192A necessidade de evolução nos softwares tornou-se cada vez mais frequente e a engenharia de software precisou se adaptar para entregar produtos de qualidade em prazos cada vez menores. Para que o software continue sendo útil ao longo do tempo, para o propósito ao qual foi desenvolvido, é necessário que sejam realizadas mudanças ou incluídas novas funcionalidades para que este acompanhe as mudanças no contexto do negócio. Com essas mudanças, é inevitável que o software passe a aumentar de tamanho e, consequentemente, em complexidade. Essa expansão do software cria relacionamentos de dependência entre componentes do código-fonte e essas dependências se propagam em uma cadeia de dependências à medida que a aplicação cresce. Reescrever o mesmo trecho de código é uma prática não recomendada no desenvolvimento de software, pois implica em replicar código de forma distribuída e desordenada. Ao fazer o reuso, o mesmo trecho já escrito é referenciado em diferentes funcionalidades do sistema através da cadeia de dependência e chamadas de métodos, fazendo com que diferentes partes do código que estejam associadas a diferentes funcionalidades passem a depender de um mesmo componente. Alterações de trechos de código que possuem relação direta ou indireta com diferentes casos de uso podem levar a falhas imprevistas da aplicação, pois dependendo do número de artefatos envolvidos e da extensão da cadeia de dependências relacionada ao código alterado, uma mudança pode impactar um outro caso de uso que aparentemente não tem relação com o trecho de código modificado. Prever impactos decorrentes de alterações em um artefato é uma tarefa que exige tempo para análise, profundo conhecimento do código-fonte e esforço de teste. Este trabalho apresenta uma abordagem para automatizar a identificação de possíveis conflitos indiretos através de uma ferramenta, capaz de determinar quais casos de uso possuem maior probabilidade de serem impactados por mudanças no código-fonte, podendo assim direcionar os esforços de testes de forma mais eficaz. Foi elaborado um estudo para avaliar um projeto real de dimensão extensa que não possui uma suíte de testes automatizados e a ferramenta desenvolvida mostrou-se eficiente para detectar conflitos indiretos em diferentes cenários e também provou, através de um experimento empírico, que a maior parte das falhas decorrentes de conflitos indiretos teriam sido evitadas caso a ferramenta tivesse sido utilizada ainda na fase de desenvolvimento.Dissertação Especificação e monitoramento dinâmico da política de tratamento de exceções(2016-02-25) Abrantes, Joilson Vidal; Coelho, Roberta de Souza; ; ; Aranha, Eduardo Henrique da Silva; ; Pinto, Felipe Alves Pereira; ; Almeida, Rodrigo Bonifácio de;A política de tratamento de exceções de um sistema compreende o conjunto de regras de design que especificam o comportamento e tratamento das condições excepcionais, ou seja, define como as exceções devem ser manuseadas e disparadas. Essa política geralmente não é documentada e fica definida implicitamente pelo arquiteto do sistema. Por essa razão os desenvolvedores podem pensar que apenas inserindo blocos try-cach em todos locais onde exceções podem potencialmente ser lançadas estão lidando adequadamente com as condições excepcionais de um sistema. Porém este comportamento pode transformar o tratamento das condições excepcionais em uma generalização do mecanismo "goto", tornando o programa mais complexo e menos confiável. Este trabalho propõe uma linguagem específica de domínio, chamada ECL (Exception Contract Language) para especificar a política de tratamento de exceções e uma ferramenta de monitoramento em tempo de execução que verifica dinamicamente a política de tratamento de exceções. Essa ferramenta é chamada de DAEH (Dynamic Analysis of Exception Handling e é implementada na forma de uma biblioteca de aspectos, que pode ser adicionada a uma aplicação Java sem a necessidade de alterar o código fonte da mesma. Esta abordagem foi aplicada a dois sistemas WEB, a quatro versões do framework JUnit e a uma aplicaticação móvel. Os resultados indicam que esta abordagem pode ser usada para expressar e automaticamente verificar a política de tratamento de exceções de sistemas, e, consequentemente apoiar o desenvolvimento de sistemas Java mais robustos.Dissertação Um estudo de avaliação e documentação de arquiteturas de software na indústria(2016-08-25) Silva, Júlio César Leôncio da; Kulesza, Uira; Pinto, Felipe Alves Pereira; ; http://lattes.cnpq.br/6163607072712192; ; http://lattes.cnpq.br/0189095897739979; ; http://lattes.cnpq.br/6687140805305537; Guerra, Eduardo Martins; ; http://lattes.cnpq.br/3413978291577451; Figueira Filho, Fernando Marques; ; http://lattes.cnpq.br/6874649375434646Muitas vezes o arquiteto de software responsável pela definição e avaliação da arquitetura de software não consegue estabelecer quais requisitos não-funcionais devem ser priorizados no desenvolvimento de seus sistemas. Com isso, falhas podem ocorrer durante a execução do sistema demandando mais tempo e recursos para que seja corrigido. Em muitos casos, com a inexperiência dos arquitetos ou a necessidade de disponibilização rápida de um sistema, os requisitos não-funcionais não são considerados durante a definição da arquitetura de software e também não é feita a devida documentação da arquitetura, tornando difícil o acesso e entendimento da arquitetura pelos demais integrantes da equipe e dificultando a manutenção de componentes/módulos da arquitetura e respectivos relacionamentos. Este trabalho buscou levantar junto às empresas de software, públicas e privadas, quais as principais estratégias utilizadas na definição e avaliação da arquitetura, principalmente na obtenção e cumprimento dos requisitos não-funcionais, e documentação arquitetural. Nosso estudo contou com a participação de 17 arquitetos de software para responder o questionário proposto. Com a realização do questionário identificamos que os requisitos não-funcionais de desempenho e confiabilidade são os mais importantes a serem atendidos pela arquitetura e que mesmo com a existência de algumas abordagens para a avaliação de arquiteturas, elas não parecem estar bem difundidas e/ou utilizadas entre os arquitetos. Ao tratar especificamente o requisito de desempenho, os arquitetos julgaram que em uma análise de desempenho de um sistema de software a informação mais importante a ser exibida deve ser o tempo de resposta das requisições a um determinado cenário, acompanhado do tempo de execução dos métodos que fazem parte desse cenário. Em relação à documentação arquitetural, a maioria dos entrevistados afirmaram utilizar, no mínimo, algum tipo de documentação no momento de criação de um sistema de software, destacando-se a utilização de diagramas de classe e de componentes como as formas mais comuns de documentação utilizadas pelos arquitetos. Além disso, o trabalho propõe a utilização de um guia que busca auxiliar arquitetos de software na atividade de avaliação do cumprimento dos requisitos não-funcionais pela arquitetura durante a evolução do sistema, priorizando o requisito não-funcional de desempenho. Ao avaliar a aplicação do guia, os entrevistados apontaram a abordagem de análise de logs para identificar os cenários prioritários numa avaliação de desempenho como uma das principais contribuições do guia e que poderia facilitar na identificação e comparação das versões dos seus sistemas.TCC Uma experiência de automação de testes no contexto do sistema web Sigsaúde(Universidade Federal do Rio Grande do Norte, 2022-12-14) Calixta, Mayara Lima; Kulesza, Uirá; Pinto, Felipe Alves Pereira; Cirilo, Elder José ReioliEste trabalho apresenta uma experiência de automação de testes que teve como objetivo em sua conclusão reduzir o tempo gasto com retrabalho com testes manuais e uma rápida detecção de bugs, visando garantir uma melhor qualidade de software para os usuários do sistema em questão. Este trabalho tem como objeto de estudo a Plataforma Integrada de Serviços de Saúde (SigSaúde) que vem sendo desenvolvida pela Universidade Federal do Rio Grande do Norte (UFRN) como um sistema web, tendo como foco principal o atendimento à sociedade pelas unidades da área de saúde da UFRN. O projeto desenvolvido possui foi dividido em 6 etapas principais: (i) definição dos cenários de testes que deveriam ser automatizados de acordo com alguns critérios estabelecidos; (ii) análise dos critérios de aceitação de cada cenário de teste; (iii) modelagem dos cenários de testes utilizado a sintaxe gherkin; (iv) implementação dos cenários de testes utilizando as ferramentas Python, Robot Framework e Selenium; (v) execução dos cenários de testes local e remotamente através de um pipeline de integração contínua no repositório online GitHub através da funcionalidade Actions; e (vi) análise dos resultados através de relatórios de métricas gerados após o término da execução dos testes pelo Robot Framework. O trabalho também apresenta um comparativo entre os resultados obtidos pelo projeto com os testes manuais que são ainda realizados atualmente na plataforma SigSaúde.Dissertação Um framework baseado em modelos para desenvolvimento de sistemas multimídia distribuídos autoadaptativos(Universidade Federal do Rio Grande do Norte, 2011-01-19) Pinto, Felipe Alves Pereira; Lopes, Adilson Barboza; ; http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4794786D9; ; http://lattes.cnpq.br/6163607072712192; Kulesza, Uira; ; http://lattes.cnpq.br/0189095897739979; Rosa, Nelson Souto; ; http://lattes.cnpq.br/4220236737158909Sistemas multimídia distribuídos possuem características bastante variáveis, podendo implicar em novos requisitos à medida que novas tecnologias são disponibilizadas ou na necessidade de adequação de acordo com a quantidade de recursos disponíveis. Dessa forma, tais aplicações devem ser capazes de realizar ajustes e adaptações dinâmicas, permitindo alterar sua estrutura e comportamento. Com o objetivo de prover capacidades de autoadaptação nesses sistemas, este trabalho apresenta uma abordagem de adaptação baseada em modelos. É proposto um framework reflexivo e baseado em componentes para a construção e suporte de sistemas multimídia distribuídos autoadaptativos, fornecendo várias facilidades para o desenvolvimento e evolução de tais sistemas, como adaptação dinâmica. A proposta do framework é manter um ou mais modelos de representação do sistema em tempo de execução, de modo que alguma entidade externa possa realizar uma análise desses modelos identificando problemas e tentando resolvê-los. Esses modelos integram o metanível reflexivo das aplicações atuando como uma autorrepresentação do sistema. Para isso, o framework define um metamodelo para a descrição de aplicações multimídia distribuídas autoadaptativas, o qual é capaz de representar componentes e seus relacionamentos, políticas para especificação de QoS e ações de adaptação. Adicionalmente, é proposta uma ADL e uma arquitetura para adaptação baseada em modelos. Como estudo de caso o trabalho apresenta alguns cenários buscando exemplificar o uso do framework na prática, com e sem o uso da ADL, bem como verificar algumas características relacionadas à adaptação dinâmicaDissertação Uma linguagem específica de domínio para geração de testes de performance(2016-08-30) Marinho, Thiago David dos Santos; Kulesza, Uira; Pinto, Felipe Alves Pereira; ; http://lattes.cnpq.br/6163607072712192; ; http://lattes.cnpq.br/0189095897739979; ; http://lattes.cnpq.br/5558236729546117; Ramalho, Franklin de Souza; ; http://lattes.cnpq.br/2469816352786812; Medeiros, Sérgio Queiroz de; ; http://lattes.cnpq.br/0310395336626784Este trabalho apresenta a ferramenta GenMeter, composta por: (i) uma linguagem específica de domínio utilizada para descrever textualmente testes de performance; e (ii) um componente que utiliza os testes descritos para gerar projetos em diferentes plataformas de execução de testes de performance. O objetivo é utilizar os conceitos definidos na linguagem para abstrair os conceitos de cada plataforma, que muitas vezes são modelados diferentemente, quanto à nomenclatura e/ou estrutura, e até dependentes da ferramenta, ao invés de apenas do domínio. A ferramenta proposta oferece suporte para testes de serviços SOAP, REST e de aplicações web para JMeter e Silk Performer. Ela também permite a customização para novos tipos de testes e plataformas alvo. Foram feitos estudos para avaliar o uso da ferramenta: 3 testes de aplicações Web, REST e SOAP foram reescritos na linguagem específica de domínio (DSL - domain specific language) e então foram gerados projetos nas plataformas de destino, para que fossem executados. A partir dos ajustes e novas implementações necessários para a geração dos projetos, obteve-se feedback referente a capacidade de customização da ferramenta em relação aos tipos de aplicações e características de plataformas e organizações. Além disso, os scripts também foram avaliados em relação à sua concisão: além dos testes implementados com a DSL e com o Silk Performer, foram criados testes com a ferramenta Gatling.io (também baseados no teste da empresa). Comparou-se o total de palavras necessárias para a definição de cada teste, além da relação entre o número de palavras reservadas e o total de palavras, e a relação entre o número de palavras reservadas fora do contexto e o total de palavras reservadas. Os testes criados com a DSL GenMeter possuem, em média, 59,15% menos palavras em relação aos testes de Silk Performer e 39,43% em relação aos testes de Gatling.io, com exceção de um tipo de teste, em que a especificação com a DSL ficou com pouco mais que o dobro (138,35%) de palavras. Na segunda comparação, em média, os testes com a GenMeter apresentaram um percentual de 56,33% de palavras reservadas em relação ao total, contra 39,98% do Silk Performer e 67,03% do Gatling.io. Esta comparação pode ser interpretada como a quantidade de informação adicional que o usuário precisa fornecer pra cada linguagem, além das estruturas fornecidas pela mesma. Já na terceira comparação, que pode ser interpretada como o quanto a sintaxe da linguagem hospedeira pode interferir na visualização das informações dos testes, a GenMeter teve em média 23,57% de palavras reservadas fora do contexto em relação ao total de palavras reservadas, contra 53,38% do Silk Performer e 54,60% do Gatling. Dessa forma, foi possível observar os benefícios de utilizar a DSL para diferentes tipos de aplicações, customizando-a de acordo com determinados conceitos e características de plataformas e organizações.Dissertação PerfMiner Visualizer: uma ferramenta para análise da evolução do atributo de qualidade de desempenho em sistemas de software(2017-07-26) Silva, Leo Moreira; Kulesza, Uira; Pinto, Felipe Alves Pereira; http://lattes.cnpq.br/6163607072712192; http://lattes.cnpq.br/0189095897739979; http://lattes.cnpq.br/4853538472620935; Silva, Lyrene Fernandes da; http://lattes.cnpq.br/6082948468501249; Novais, Renato LimaA manutenção e a evolução dos sistemas de software podem trazer várias mudanças de código que podem potencialmente reduzir sua qualidade e aumentar sua complexidade. Um atributo de qualidade crítico que é afetado ao longo do tempo é o desempenho do sistema. Assim, sem o devido acompanhamento, esse atributo de qualidade pode deixar de ser atendido adequadamente. A área de visualização de software propõe o uso de técnicas cujo objetivo é melhorar o entendimento do software e tornar mais produtivo o seu processo de desenvolvimento. Neste contexto, este trabalho apresenta o PerfMiner Visualizer - uma ferramenta para visualizar e analisar desvios de desempenho em evoluções subsequentes de um sistema de software. Através de visualizações de grafos de chamadas e sumarização de cenários, a ferramenta permite que desenvolvedores e arquitetos possam identificar cenários e métodos que tiveram variações no seu desempenho, inclusive as potenciais causas desses desvios através dos commits. O trabalho também apresenta um estudo empírico que avalia o uso da ferramenta aplicando-a em 10 versões de evolução de 2 sistemas open source de domínios diferentes e submetendo questionários online para obter feedback dos seus desenvolvedores e arquitetos. Os resultados do estudo conduzido trazem evidências preliminares da eficácia das visualizações providas pela ferramenta em comparação com dados tabulares. Além disso, o algoritmo de supressão de nós da visualização do grafo de chamadas foi capaz de reduzir entre 73,77% e 99,83% a quantidade de nós a serem exibidos para o usuário, permitindo que ele possa identificar mais facilmente as possíveis causas das variações.TCC Usando técnicas de mineração de repositórios software para apoiar a automação de testes de software(Universidade Federal do Rio Grande do Norte, 2019-06-13) Rêgo Neto, José Gameleira do; Kulesza, Uirá; Coelho, Roberta de Souza; Pinto, Felipe Alves PereiraO desenvolvimento de sistemas de software de qualidade exige a aplicação de técnicas de teste de software que buscam minimizar o aparecimento de comportamentos inesperados. Em grandes projetos, a tendência é termos uma maior quantidade de testes, sendo desejável a automação de uma parte considerável deles. Em um cenário ideal, todos os testes existentes poderiam ser automatizados, entretanto, normalmente existe um grande custo associado a tal automação. Este trabalho de conclusão de curso tem como objetivo utilizar técnicas de mineração de repositórios de software para prover indicadores de quais testes manuais são bons candidatos a serem automatizados. Buscando alcançar tal objetivo, o trabalho utiliza informações relacionadas a similaridade de testes automatizados e manuais, assim como informações de quais funcionalidades de um dado sistema são mais executadas e apresentam mais erros no ambiente de produção. Tais informações são então utilizadas para produzir um ranqueamento de prioridade de testes manuais candidatos existentes a serem automatizados. A abordagem proposta é demonstrada e aplicada sobre informações e artefatos de testes do Sistema Integrado de Gestão de Atividades Acadêmicas (SIGAA).