• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 2
  • Tagged with
  • 2
  • 2
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • About
  • The Global ETD Search service is a free service for researchers to find electronic theses and dissertations. This service is provided by the Networked Digital Library of Theses and Dissertations.
    Our metadata is collected from universities around the world. If you manage a university/consortium/country archive and want to be added, details can be found on the NDLTD website.
1

Using information flow to estimate interference between same-method contributions

BARROS FILHO, Roberto Souto Maior de 31 March 2017 (has links)
Submitted by Pedro Barros (pedro.silvabarros@ufpe.br) on 2018-06-25T19:24:26Z No. of bitstreams: 2 license_rdf: 811 bytes, checksum: e39d27027a6cc9cb039ad269a5db8e34 (MD5) DISSERTAÇÃO Roberto Souto Maior de Barros Filho.pdf: 2025451 bytes, checksum: c2b9e33188a5a0b43ea456fefd1fcbc6 (MD5) / Made available in DSpace on 2018-06-25T19:24:26Z (GMT). No. of bitstreams: 2 license_rdf: 811 bytes, checksum: e39d27027a6cc9cb039ad269a5db8e34 (MD5) DISSERTAÇÃO Roberto Souto Maior de Barros Filho.pdf: 2025451 bytes, checksum: c2b9e33188a5a0b43ea456fefd1fcbc6 (MD5) Previous issue date: 2017-03-31 / CNPQ / In a collaborative software development environment, developers often implement their contributions (or tasks) independently using local versions of the files of a system. However, contributions from different developers need to be integrated (merged) to a central version of the system, which may lead to different types of conflicts such as syntactic, static semantic or even dynamic semantic conflicts. The first two types are more easily identifiable as they lead to syntactically incorrect programs and to programs with compilations problems, respectively. On the other hand, dynamic semantic conflicts, which may be caused by subtle dependencies between contributions, may not be noticed during the integration process. This type of conflict alters the expected behaviour of a system, leading to bugs. Thus, failing to detect dynamic semantic conflicts may affect a system’s quality. Hence, this work’s main goal is to understand if Information Flow Control (IFC), a security technique used for discovering leaks in software, could be used to indicate the presence of dynamic semantic conflicts between developers contributions in merge scenarios. However, as defining if a dynamic semantic conflict exists involves understanding the expected behaviour of a system, and as such behavioural specifications are often hard to capture, formalize and reason about, we instead try to detect a code level adaptation of the notion of interference from Goguen and Meseguer. Actually, we limit our scope to interference caused by developers contributions on the same method. More specifically, we want to answer if the existence of information flow between developers same-method contributions of a merge scenario can be used to estimate the existence of interference. Therefore, we conduct an evaluation to understand if information flow may be used to estimate interference. In particular, we use Java Object-sensitive ANAlysis (JOANA) to do the IFC for Java programs. JOANA does the IFC of Java programs by using a System Dependence Graph (SDG), a directed graph representing the information flow through a program. As JOANA accepts different options of SDG, we first establish which of these SDG options (instance based without exceptions) is the most appropriate to our context. Additionally, we bring evidence that information flow between developers same-method contributions occurred for around 64% of the scenarios we evaluated. Finally, we conducted a manual analysis, on 35 scenarios with information flow between developers same-method contributions, to understand the limitations of using information flow to estimate interference between same-method contributions. From the 35 analysed scenarios, for only 15 we considered that an interference in fact existed. We found three different major reasons for detecting information flow and no interference: cases related to the nature of changes, to excessive annotation from our strategy and to the conservativeness of the flows identified by JOANA. We conclude that information flow may be used to estimate interference, but, ideally, the number of false positives should be reduced. In particular, we envisage room for solving around three quarters of the obtained false positives. / Em um ambiente de desenvolvimento colaborativo, desenvolvedores frequentemente implementam suas contribuições independentemente usando versões locais dos arquivos de um sistema. No entanto, contribuições de diferentes desenvolvedores precisam ser integradas a uma versão central do sistema, o que pode levar a diferentes tipos de conflitos de integração como conflitos sintáticos, de semântica estática ou até de semântica dinâmica. Os dois primeiros tipos são mais fáceis de identificar dado que levam a programas sintaticamente incorretos e a erros de compilação, respectivamente. Por outro lado, conflitos de semântica dinâmica, que são em geral causados por dependências sutis entre as contribuições, podem passar despercebidos durante o processo de integração. Esse tipo de conflito altera o comportamento esperado de um sistema, o que leva a bugs. Portanto, falhar em detectar estes conflitos pode afetar negativamente a qualidade de um sistema. Tendo isso em mente, o principal objetivo deste trabalho é entender se Information Flow Control (IFC), uma técnica de segurança utilizada para descobrir vazamentos de segurança em software, pode ser utilizado para indicar a presença de conflitos de semântica dinâmica entre contribuições de cenários de integração. Porém, a definição da existência de um conflito de semântica dinâmica envolve o entendimento do comportamento esperado de um sistema. Como especificações desse tipo de comportamento são geralmente difíceis de capturar, formalizar e entender, nós na realidade utilizamos uma adaptação a nível de código da noção de interferência de Goguen e Meseguer. Na verdade, nós limitamos o nosso escopo a interferência causada por contribuições de desenvolvedores nos mesmos métodos. Especificamente, nós desejamos responder se a existência de fluxo de informação entre duas contribuições no mesmo método pode ser utilizada para estimar a existência de interferência. Portanto, nós realizamos uma avaliação com o intuito de entender se fluxo de informação pode ser usado para estimar interferência. Em particular, nós utilizamos o Java Object-sensitive ANAlysis (JOANA) para fazer o IFC de programas Java. O JOANA faz IFC desses programas usando uma estrutura chamada System Dependence Graph (SDG), um grafo direcionado representando o fluxo de informação em um programa. Como o JOANA aceita diferentes opções de SDG, primeiro nós estabelecemos qual destas é a mais apropriada para o nosso contexto. Adicionalmente, trazemos evidência que fluxo de informação entre contribuições de desenvolvedores no mesmo método aconteceram para cerca de 64% dos cenários que avaliamos. Finalmente, realizamos uma análise manual, em 35 cenários de integração com fluxo de informação entre contribuições no mesmo método, para entender as limitações de utilizar fluxo de informação para estimar interferência entre contribuições. Dos 35 cenários analisados, para apenas 15 consideramos que interferência existia de fato. Nós achamos três razões principais para fluxo de informação ser detectado e não existir interferência: casos relacionados a natureza das mudanças, a limitações da nossa estratégia de anotação e a natureza conservadora dos fluxos identificados pelo JOANA. Nós concluímos que fluxo de informação pode ser utilizado para estimar interferência, mas, idealmente, o número de falsos positivos precisa ser reduzido. Em particular, nós enxergamos espaço para reduzir até três quartos dos falsos positivos.
2

Comparing integration effort and correctness of different merge approaches in version control systems

CAVALCANTI, Guilherme José Carvalho 29 February 2016 (has links)
Submitted by Irene Nascimento (irene.kessia@ufpe.br) on 2016-09-27T18:16:18Z No. of bitstreams: 2 license_rdf: 1232 bytes, checksum: 66e71c371cc565284e70f40736c94386 (MD5) dissertação_gjcc.pdf: 1929523 bytes, checksum: 59a910a15e3537942754d106de378d19 (MD5) / Made available in DSpace on 2016-09-27T18:16:18Z (GMT). No. of bitstreams: 2 license_rdf: 1232 bytes, checksum: 66e71c371cc565284e70f40736c94386 (MD5) dissertação_gjcc.pdf: 1929523 bytes, checksum: 59a910a15e3537942754d106de378d19 (MD5) Previous issue date: 16-02-29 / FACEPE / During the integration of code contributions resulting from development tasks, one likely has to deal with conflicting changes and dedicate substantial effort to resolve conflicts. While unstructured merge tools try to automatically resolve part of the conflicts via textual similarity, semistructured tools try to go further by exploiting the syntactic structure of part of the artefacts involved. To understand the impact of the unstructured and semistructured merge approaches on integration effort (Productivity) and correctness of the merging process (Quality), we conduct two empirical studies. In the first one, aiming at increasing the existing body of evidence and assessing results for systems developed under an alternative version control paradigm, we replicate an experiment to compare the unstructured and semistructured approaches with respect to the number of conflicts reported by both merge approaches. We used both semistructured and unstructured merge in a sample 2.5 times bigger than the original study regarding the number of projects and 18 times bigger regarding the number of performed merges, and we compared the occurrence of conflicts. Similar to the original study, we observed that semistructured merge reduces the number of conflicts in 55% of the performed merges of the new sample. Besides that, the observed average conflict reduction of 62% in these merges is far superior than what has been observed before. We also bring new evidence that the use of semistructured merge can reduce the occurrence of conflicting merges by half. In order to verify the frequency of false positives and false negatives arising from the use of these merge approaches, we move forward and we conduct a second empirical study. We compare the unstructured and semistructured merge approaches by reproducing more than 30,000 merges from 50 projects, and collecting evidence about reported conflicts that do not represent interferences between development tasks (false positives), and interferences not reported as conflicts (false negatives). In particular, our assumption is that false positives amount to unnecessary integration effort because developers have to resolve conflicts that actually do not represent interferences. Besides that, false negatives amount to build issues or bugs, negatively impacting software quality and correctness of the merging process. By analyzing such critical factors we hope to guide developers on deciding which approach should be used in practice. Finally, our results show that semistructured merge eliminates a significant part of the false positives reported by unstructured merge, but brings false positives of its own. The overall number of false positives is reduced with semistructured merge, and we argue that the conflicts associated to its false positives are easier to resolve when comparing to the false positives reported by unstructured merge. We also observe that more interferences were missed by unstructured merge and reported by semistructured merge, but we argue that the semistructured merge ones are harder to detect and resolve than the other way around. Finally, our study suggests how a semistructured merge tool could be improved to eliminate the extra false positives and negatives it has in relation to unstructured merge. / Durante a integração de contribuições de código resultantes das tarefas de desenvolvimento, frequentemente desenvolvedores têm que lidar com alterações conflitantes e dedicar considerável esforço para resolver conflitos. Enquanto as ferramentas de integração não-estruturadas tentam resolver automaticamente parte dos conflitos através de similaridade textual, ferramentas semiestruturadas tentam ir mais longe, explorando a estrutura sintática de parte dos artefatos envolvidos. Para entender o impacto das abordagens de integração não-estruturada e semiestruturada sobre esforço de integração (Produtividade) e corretude do processo de integração (Qualidade), nós realizamos dois estudos empíricos. No primeiro, com o objetivo de aumentar o atual corpo de evidência e avaliar resultados para sistemas desenvolvidos usando um paradigma de controle de versão alternativo, nós replicamos um experimento para comparar a abordagem não-estruturada e semiestruturada de acordo com o número de conflitos reportados por ambas as abordagens. Nós usamos tanto a integração semiestruturada quanto a não-estruturada em uma amostra 2,5 vezes maior do que a do estudo original em relação ao número de projetos e 18 vezes maior em relação ao número de integrações realizadas, e comparamos a ocorrência de conflitos. Semelhante ao estudo original, observamos que a integração semiestruturada reduz o número de conflitos em 55% das integrações da nova amostra. Além disso, a redução de conflitos média observada de 62% nestas integrações é muito superior à observada anteriormente. Nós também trazemos nova evidência de que o uso da abordagem semiestruturada pode reduzir a ocorrência de integrações com conflitos pela metade. Com o intuito de verificar a frequência de falsos positivos e falsos negativos originados do uso dessas abordagens, nós seguimos adiante e conduzimos um segundo estudo empírico. Nós comparamos as abordagens reproduzindo mais de 30.000 integrações de 50 projetos, coletando evidência sobre os conflitos reportados que não representam interferências entre as tarefas de desenvolvimento (falsos positivos), e interferências não reportadas como conflitos (falsos negativos). Em particular, a nossa suposição é de que falsos positivos denotam esforço desnecessário de integração porque os desenvolvedores têm que resolver conflitos que, na realidade, não representam interferências. Além disso, falsos negativos denotam problemas de build ou bugs, impactando negativamente a qualidade do software e corretude do processo de integração. Ao analisar esses fatores críticos, esperamos orientar os desenvolvedores em decidir qual abordagem deve ser usada na prática. Finalmente, nossos resultados mostram que a abordagem semiestruturada elimina uma parte significativa dos falsos positivos reportados pela abordagem não-estruturada, mas traz falsos positivos próprios. O número global de falsos positivos é reduzido com a integração semiestruturada, e nós argumentamos que os conflitos associados aos seus falsos positivos são mais fáceis de resolver quando comparados aos falsos positivos reportados pela abordagem não-estruturada. Observamos, também, que mais interferências deixaram de ser detectadas pela abordagem não-estruturada, mas foram detectadas pela semiestruturada. No entanto, nós acreditamos que as interferências não detectadas pela abordagem semiestruturada são mais difíceis de detectar e resolver. Por fim, nosso estudo sugere como uma ferramenta de integração semiestruturada poderia ser melhorada para eliminar os falsos positivos e falsos negativos adicionados que possui em relação à não-estruturada.

Page generated in 0.0788 seconds