http://repositorio.unb.br/handle/10482/32475
Arquivo | Descrição | Tamanho | Formato | |
---|---|---|---|---|
2018_RenoMedeirosDantas.pdf | 648,34 kB | Adobe PDF | Visualizar/Abrir |
Título: | Transformações de programa para suportar a evolução da linguagem Java |
Autor(es): | Dantas, Reno Medeiros |
Orientador(es): | Almeida, Rodrigo Bonifácio de |
Assunto: | Linguagem de programação (Computadores) Engenharia de software Software - desenvolvimento Java (Linguagem de programação de computador) |
Data de publicação: | 27-Ago-2018 |
Data de defesa: | 29-Set-2017 |
Referência: | DANTAS, Reno Medeiros. Transformações de programa para suportar a evolução da linguagem Java. 2017. 10, 54 f., il. Dissertação (Mestrado em Informática)—Universidade de Brasília, Brasília, 2017. |
Resumo: | Considerando a literatura de Engenharia de Software, tem sido reportado que os custos mais altos de desenvolvimento estão relacionados com as atividades de manutenção de software. De forma frequente, os sistemas precisam se adaptar às inovações negociais e tecnológicas. Similarmente, as linguagens de programação passam por um processo de evolução contínua – conforme os recursos (e limitações) de uma linguagem são melhor compreendidas, novas construções de linguagem são introduzidas. Todavia, quando um novo recurso estende ou modifica uma construção de linguagem, com o intuito de melhorar a facilidade de entendimento, manutenabilidade ou eficiência, recursos linguísticos anteriores passam a ser considerados obsoletos. Nesse sentido, a coexistência de construções novas e legadas em uma linguagem tende a aumentar a complexidade de manutenção dos sistemas existentes, bem como dificultar o aprendizado por parte dos desenvolvedores, que precisam conhecer estratégias diferentes de implementação para uma mesma situação. Esta dissertação tem como objetivo explorar o uso de suporte ferramental para apoiar técnicas de transformação de programas, na intenção de adaptar sistemas legados para usar construções mais recentes da linguagem de programação Java, que vem passando por um processo relativamente contínuo de melhoria. No total, foram implementadas seis transformações, que permitem, por exemplo, introduzir a construção multi-catch e expressões lambda em sistemas Java legados. Para compreender a aceitação dessas transformações por parte da comunidade de de desenvolvimento de software, foram aplicadas 2.371 transformações de programas em 40 projetos de código aberto. Foi identificado que transformações mais simples (como a introdução do operador diamante) possuem uma aceitação maior do que as transformações que apresentam um maior impacto no código fonte (como as transformações que convertem enhanced for loops em expressões lambda). |
Abstract: | Considering the Software Engineering literature, it has been reported that most resources are spent during the activites of software maintenance. Often, software systems have to be adapted according either to the changes of the business needs or technology innovation. In a similar way, programming languages also have to evolve continually—as soon as the language resources (and limitations) are better understood, new programming languages constructs and features should be introduced. However, whenever a new feature is introduced in a programming language, some of the old constructs and idioms become obsolete. Accordingly, the coexistence of new and old constructs and idioms makes the programs hard to evolve and understand. In this master dissertation, we explore the use of program transformations that evolve Java legacy systems towards the use of new programming language constructs. We have implemented six transformations that allow, for instance, the automatic introduction of mult-catch and lambda expressions constructs in Java legacy systems. In order to understand the acceptance of this kind of transformation, we performed 2,371 transformation in 40 open-source projects. We realized that simple transformations (such as the introduction of the diamond operator) are more likely to be accepted than transformations that substantially change the code (such as the transformations that replace enhanced for loops by lambda expressions). |
Unidade Acadêmica: | Instituto de Ciências Exatas (IE) Departamento de Ciência da Computação (IE CIC) |
Informações adicionais: | Dissertação (mestrado)—Universidade de Brasília, Instituto de Ciências Exatas, Departamento de Ciência da Computação, 2017. |
Programa de pós-graduação: | Programa de Pós-Graduação em Informática |
Licença: | A concessão da licença deste item refere-se ao termo de autorização impresso assinado pelo autor com as seguintes condições: Na qualidade de titular dos direitos de autor da publicação, autorizo a Universidade de Brasília e o IBICT a disponibilizar por meio dos sites www.bce.unb.br, www.ibict.br, http://hercules.vtls.com/cgi-bin/ndltd/chameleon?lng=pt&skin=ndltd sem ressarcimento dos direitos autorais, de acordo com a Lei nº 9610/98, o texto integral da obra disponibilizada, conforme permissões assinaladas, para fins de leitura, impressão e/ou download, a título de divulgação da produção científica brasileira, a partir desta data. |
Aparece nas coleções: | Teses, dissertações e produtos pós-doutorado |
Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.