Summary: | Submitted by Silvana Teresinha Dornelles Studzinski (sstudzinski) on 2016-06-13T17:33:37Z
No. of bitstreams: 1
Daniel Bruno Armino_.pdf: 1677240 bytes, checksum: 278b4e6ed4b8adf54258b557940f77df (MD5) === Made available in DSpace on 2016-06-13T17:33:37Z (GMT). No. of bitstreams: 1
Daniel Bruno Armino_.pdf: 1677240 bytes, checksum: 278b4e6ed4b8adf54258b557940f77df (MD5)
Previous issue date: 2016-03-23 === CAPES - Coordenação de Aperfeiçoamento de Pessoal de Nível Superior === Em desenvolvimento de software colaborativo, desenvolvedores compartilham código fonte e modificam partes deste código em paralelo, visando aumentar a produtividade. Para isso, times de desenvolvimento, tipicamente globalmente distribuídos, fazem uso de sistemas de controle de versão (SCV), os quais são responsáveis por versionar o código fonte e reconciliar as alterações conflitantes realizadas pelos desenvolvedores em paralelo. Em geral, cada desenvolvedor possui uma cópia local dos arquivos do código fonte do repositório, podendo realizar qualquer tipo modificação e tendo que posteriormente integrar a sua versão local do código fonte com as alteradas pelos outros membros do time de desenvolvimento. O problema é que usualmente os sistemas de controle de versão (por exemplo, GIT e SVN) não dão suporte a detecção antecipada dos conflitos, nem auxiliam os desenvolvedores na resolução dos mesmos. Na prática, um conflito trata-se de alterações divergentes realizadas em um mesmo trecho de código em paralelo por diferentes desenvolvedores. Consequentemente, detectar e resolver conflitos passam a ser duas atividades altamente propensa a erros e que exige bastante esforço do desenvolvedor. Para explorar esta problemática, este trabalho propõe o PACCS, uma ferramenta capaz de: (1) detectar proativamente conflitos; (2) analisar a propagação de conflitos; (3) identificar conflitos sintáticos e semânticos; (4) resolver automaticamente conflitos detectados; (5) apoiar os desenvolvedores na resolução colaborativa dos conflitos; e (6) checar as integrações realizadas e submetidas ao repositório de acordo um conjunto de regras. A ferramenta desenvolvida abordará os requisitos citados anteriormente e possui duas partes: o lado cliente (plugin para o eclipse) e o lado server (gerenciador de alterações entre workspaces). Após a construção da ferramenta será efetuado um comparativo entre desenvolvedores que utilizam a ferramenta versus os que não utilizaram, objetivando aferir as vantagens ou desvantagens da ferramenta. Os resultados demonstraram que (1) ao contrário do que a literatura prega, VCS centralizados tendem produzir um código fonte mais próximo do desejado e (2) a abordagem colaborativa pode ser mais eficiente e necessitar de menos esforço na resolução de conflitos. === In collaborative software development, developers share source code and modify parts of code in parallel, to increase productivity. For this, development teams typically distributed globally, make use of version control systems (VCS), which are responsible for versioning the source code and reconcile conflicting changes made by developers in parallel. Generally, each developer has a local copy of the source code files from the repository, and can perform any modification and having to later join their local version of the source code with the changed by the other members of the development team. The problem is that usually the version control systems (eg, GIT and SVN) do not support early detection of conflicts, or assist developers in solving them. In practice, a conflict it is divergent changes made in one piece of code in parallel by different developers. Consequently, detect and resolve conflicts become two highly prone to errors and activities that require a lot of effort from the developer. To explore this issue, this paper proposes the PACCS, a tool capable of: (1) detect proactively conflicts; (2)
to analyze the spread of conflicts; (3) identify syntactic and semantic conflicts; (4) detected automatically resolve conflicts; (5) support developers in collaborative conflict resolution; and (6) check the integrations carried out and submitted to the agreement of a set of rules repository. The developed tool will address the above requirements and has two parts: the client side (plugin for Eclipse) and the server side (change manager between Workspaces). After the construction of the tool will be made a comparison between developers using the tool versus those who did not use, in order to assess the advantages or disadvantages of the tool. The results showed that (1) contrary to the literature preaches, centralized VCS tend to produce a code nearest source of the desired and (2) a collaborative approach can be more efficient and require less effort in resolving conflicts.
|