Você está na página 1de 1

Coordenação de Pós-Graduação em Ciência da Computação

Tema para Pré-Projeto de Mestrado


Linha de pesquisa: Engenharia de Software e Linguagens de Programação
Título: Continuous integration and delivery with smarter code integration
tools
Proponente: Paulo Borba (phmb at cin.ufpe.br)

Descrição:
Técnicas e ferramentas de integração e entrega contínua de software são atualmente essenciais para a
adoção de DevOps e para garantir a competitividade de empresas que desenvolvem software [1]. No
entanto, aplicar essas técnicas pode não trazer os benefícios esperados, ou até mesmo piorar a
qualidade do software e a produtividade da equipe de desenvolvimento, quando outros aspectos
importantes do processo de desenvolvimento adotado pela equipe deixam a desejar. Em particular,
prejuízos desnecessários podem ser causados tanto pela adoção de práticas inadequadas de teste quanto
pelo uso de ferramentas de integração de código imprecisas, como as atualmente utilizadas pelo Git.
Um fraco conjunto de testes pode não bloquear a integração de contribuições inadequadas ao
repositório do projeto, eventualmente levando a defeitos percebidos por usuários. Similarmente, a
imprecisão de ferramentas de merge atuais fazem com que as mesmas relatem conflitos mesmo quando
as contribuições poderiam ser integradas sem problema, e que não relatem conflitos mesmo quando há
problemas que deveriam ser resolvidos antes de finalizar a integração [2].
A proposta de projeto apresentada deve ter como objetivo o projeto, implementação ou
avaliação de ferramentas de apoio ao processo de integração de código, em um contexto de integração
e entrega contínua de software. O foco das ferramenta pode ser em detectar e resolver conflitos (de
merge, build, teste, ou conflitos semânticos em geral) com maior facilidade e precisão [3,4], ou evitar
conflitos durante a execução de tarefas de desenvolvimento [2].
Para realizar esse projeto, durante o curso é esperado que o aluno estude e use conceitos de
integração e entrega contínua, gerência de configuração, sistemas de controle de versão distribuídos
como o git, geração de testes automatizados, e métodos quantitativos e qualitativos para a realização de
estudos empíricos em Engenharia de Software.
Referências Bibliográficas:

1. Adams, B., & McIntosh, S. (2016). Modern Release Engineering in a Nutshell: Why
Researchers Should Care. SANER, IEEE. http://doi.org/10.1109/SANER.2016.108
2. Brun, Y., Holmes, R., Ernst, M. D., & Notkin, D. (2015). Early Detection of Collaboration
Conflicts and Risks. IEEE Transactions on Software Engineering. http://doi.org/10.1109/
TSE.2013.28
3. Thaís Rocha, Paulo Borba, João Santos (2019). Using acceptance tests to predict files
changed by programming tasks. Journal of Systems and Software.
4. Guilherme Cavalcanti, Paulo Borba, and Paola Accioly. Evaluating and improving
semistructured merge. Proc. ACM Program. Lang., 1(OOPSLA):59:1-59:27, 2017.

Você também pode gostar