4 research outputs found

    PRF: A Framework for Building Automatic Program Repair Prototypes for JVM-Based Languages

    Full text link
    PRF is a Java-based framework that allows researchers to build prototypes of test-based generate-and-validate automatic program repair techniques for JVM languages by simply extending it with their patch generation plugins. The framework also provides other useful components for constructing automatic program repair tools, e.g., a fault localization component that provides spectrum-based fault localization information at different levels of granularity, a configurable and safe patch validation component that is 11+X faster than vanilla testing, and a customizable post-processing component to generate fix reports. A demo video of PRF is available at https://bit.ly/3ehduSS.Comment: Proceedings of the 28th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE '20

    Enhancing Genetic Improvement of Software with Regression Test Selection

    Get PDF
    Genetic improvement uses artificial intelligence to automatically improve software with respect to non-functional properties (AI for SE). In this paper, we propose the use of existing software engineering best practice to enhance Genetic Improvement (SE for AI). We conjecture that existing Regression Test Selection (RTS) techniques (which have been proven to be efficient and effective) can and should be used as a core component of the GI search process for maximising its effectiveness. To assess our idea, we have carried out a thorough empirical study assessing the use of both dynamic and static RTS techniques with GI to improve seven real-world software programs. The results of our empirical evaluation show that incorporation of RTS within GI significantly speeds up the whole GI process, making it up to 78% faster on our benchmark set, being still able to produce valid software improvements. Our findings are significant in that they can save hours to days of computational time, and can facilitate the uptake of GI in an industrial setting, by significantly reducing the time for the developer to receive feedback from such an automated technique. Therefore, we recommend the use of RTS in future test-based automated software improvement work. Finally, we hope this successful application of SE for AI will encourage other researchers to investigate further applications in this area

    Reparação automática de programas: Exploração do potencial em contexto industrial

    Get PDF
    Today the automatic repair of programs is an issue increasingly discussed. The discussion of it comes from the evolution and advancement of technology, namely the environments of continuous integration and continuous delivery (CI/CD). These environments imply that the delivery of functional software is increasingly accelerated, and sometimes defects delay this process, implying the traditional debugging by a programmer, with the aim of detecting the defect and repairing it with quality. Automatic programming has been showing an increasing evolution, namely through techniques of automatic repair of APR programs. These techniques focus on the identification, localization, generation of correction and verification of the repaired version of the defective program, avoiding the programmer's effort in the identification and debugging process. This work aims at experimenting with two automatic repair tools, Arja and jGenProg, implanted in a pipeline, in an industrial context. The tools evaluation was done through the process of comparing them between themselves and with manual repairing process, and with the application of two questionnaires. In conclusion, both tools were able to be implanted in a pipeline, despite the necessary time required. The jGenProg tool revels a better performance, because it could detect a suspicious case and presented an even more completed report. However, the inquired developers choose the manual repairing process, against any of the evaluated tools.A reparação automática de software ou programas é uma temática que, hoje em dia, é cada vez mais discutida. A discussão da mesma advém da evolução e do avanço da tecnologia, nomeadamente os ambientes de integração e entrega contínuos. Estes ambientes requerem que a entrega de software funcional seja cada vez mais acelerada, sendo que por vezes os defeitos atrasam este processo, implicando a tradicional depuração por parte de um programador, com o objetivo de detetar o defeito e o reparar com qualidade. A programação automática tem vindo a demonstrar uma crescente evolução, nomeadamente através de técnicas de reparação automática de programas. Estas técnicas concentram-se na identificação, localização, geração de correção e verificação da versão reparada do programa com defeito, evitando o esforço do programador no processo de identificação e depuração. Este trabalho visa a experimentação de duas ferramentas de reparação automática, a Arja e a jGenProg, implantadas numa pipeline, em contexto industrial. A avaliação das ferramentas foi efetuada através da comparação entre elas e com a reparação manual e recorrendo a dois questionários. Conclui-se que ambas as ferramentas são passíveis de implantar em pipeline, apesar do tempo necessário poder ser superior ao desejado. A ferramenta jGenProg apresentou um melhor desempenho, pois conseguiu detetar um caso suspeito e apresenta um relatório mais completo. Todavia, os programadores inquiridos preferem a reparação manual a quaisquer uma das duas ferramentas avaliadas
    corecore