1. Skip to Menu
  2. Skip to Content
  3. Skip to Footer

Defesa de Tese de Doutorado da aluna Catarina de Souza Costa

28/06/2017, 14h, Sala de Videoconferência (310), Instituto de Computação

Recommending Developers for Collaborative Merge Sessions

Abstract:
During the software development process, artifacts are constructed and manipulated by multiple developers working in parallel. A common practice to manage parallel development is the use of branches. Eventually, these branches need to be reintegrated through a merge operation. In this process, if conflicts arise, the developers need to communicate to reach consensus about the desired resolution. The developers must ensure that the result complies with the objective of the work, and that there is no high-level conflict (syntactic and semantic), as these conflicts are more difficult to identify automatically. For this reason, inviting the right developers to a collaborative merge session is fundamental. However, this task can be difficult especially when many different developers have made significant changes on each branch over a large number of files. The main goal of this work is to present TIPMerge, an approach conceived to recommend participants for collaborative merge sessions. TIPMerge analyzes the project history and builds a ranked list of developers who are the most appropriate to integrate a pair of branches, considering their changes in the branches, in the previous history, and the dependencies among files across branches. Our results show an average normalized improvement of 15.14% (median 25.01%) for top-1 and 43.45% (median 51.66%) for top-3 of the ranking compared to the majority classes, i.e., developers who performed most merges. Although useful for choosing a specific developer to perform the merge, usually picking the top developers in such ranking is not effective for collaborative merge sessions, as the top developers may have overlapping knowledge due to changes over the same files. In order to support collaborative merge, TIPMerge employs optimization techniques to choose developers with complementary knowledge, aiming at maximizing the joint knowledge coverage. Our results show an average normalized improvement of 47.31% (median 48.48%) for the joint knowledge coverage when using the optimization techniques employed by TIPMerge for assembling teams of three developers for collaborative merge in comparison to choosing the top-3 developers in the ranked list.

Resumo:
Durante o processo de desenvolvimento de software, os artefatos são construídos e manipulados por vários desenvolvedores que trabalham em paralelo. Uma prática comum para gerenciar o desenvolvimento paralelo é o uso de ramos. Em algum momento, esses ramos precisam ser reintegrados através de uma operação de merge. Neste processo, em caso de conflitos, os desenvolvedores precisam se comunicar para chegar a um consenso sobre a resolução desejada. Os desenvolvedores devem garantir que o resultado esteja em conformidade com o objetivo do trabalho e que não haja conflitos de alto nível (sintático e semântico), mais difíceis de serem identificados de forma automática. Por essa razão, convidar os desenvolvedores adequados para uma sessão de merge colaborativo é fundamental. No entanto, esta tarefa pode ser difícil, especialmente quando muitos desenvolvedores diferentes realizaram alterações significativas em cada ramo em um grande número de arquivos. Assim, o objetivo principal deste trabalho é apresentar TIPMerge, uma abordagem concebida para recomendar participantes para sessões de merge colaborativo. TIPMerge analisa o histórico do projeto e cria um ranking de desenvolvedores mais apropriados para integrar dois ramos, considerando as mudanças nos ramos, na história prévia e as dependências entre os arquivos modificados em diferentes ramos. Nossos resultados mostram uma média de melhoria normalizada de 15,14% (mediana 25,01%) para o top-1 e 43,45% (mediana 51,66%) para o top-3 do ranking comparado com as classes majoritárias, i.e., desenvolvedores que mais realizaram merges. Embora seja útil para a escolha de um desenvolvedor para executar o merge, geralmente escolher os primeiros desenvolvedores do ranking não é eficaz para sessões de merge colaborativo, pois os primeiros desenvolvedores podem ter conhecimento sobreposto devido a alterações nos mesmos arquivos. A fim de apoiar o merge colaborativo, TIPMerge utiliza técnicas de otimização para escolher desenvolvedores com conhecimentos complementares, com o objetivo de maximizar a cobertura conjunta do conhecimento. Nossos resultados mostram uma média de melhoria normalizada de 47,31% (mediana 48,48%) para a cobertura de conhecimento conjunto ao utilizar as técnicas de otimização empregadas por TIPMerge para reunir equipes de três desenvolvedores para merge colaborativo em comparação com a escolha dos top-3 desenvolvedores do ranking.

Banca Examinadora:
Prof. Leonardo Gresta Paulino Murta (Presidente), UFF
Prof. Esteban Walter Gonzalez Clua, UFF
Prof. Alexandre Plastino de Carvalho, UFF
Prof.ª Anita Sarma, Oregon State University
Prof. Márcio de Oliveira Barros, UNIRIO
Prof.ª Cláudia Maria Lima Werner, UFRJ

PESQUISA PELO SITE

MENU

Início Instituto Laboratórios Departamento
Pesquisa Pós-Graduação Graduação Fale Conosco

CONTATO

IC-Mapa

Av. Gal. Milton Tavares de Souza, s/nº
São Domingos - Niterói - RJ
CEP: 24210-346

IC-UFF-Telefone-icone Fale Conosco

 Como Chegar

CONECTE-SE

IC-Conecte-se-Facebook IC-Conecte-se-Twitter

LINKS

Faperj Lattes Finep SBC PROGRAD
CAPES CNPQ SIAPENET IDUFF NDC

 

Desenvolvido por pela equipe de Suporte Técnico do Instituto de Computação - suporte.ic.uff.br - Web Designer: Emanuel Machado