• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 106
  • 17
  • 3
  • 1
  • 1
  • 1
  • 1
  • 1
  • Tagged with
  • 127
  • 46
  • 34
  • 34
  • 33
  • 33
  • 32
  • 31
  • 31
  • 22
  • 20
  • 18
  • 14
  • 13
  • 11
  • 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.
61

[en] MASSIVELY PARALLEL GENETIC PROGRAMMING ON GPUS / [pt] PROGRAMAÇÃO GENÉTICA MACIÇAMENTE PARALELA EM GPUS

CLEOMAR PEREIRA DA SILVA 25 February 2015 (has links)
[pt] A Programação Genética permite que computadores resolvam problemas automaticamente, sem que eles tenham sido programados para tal. Utilizando a inspiração no princípio da seleção natural de Darwin, uma população de programas, ou indivíduos, é mantida, modificada baseada em variação genética, e avaliada de acordo com uma função de aptidão (fitness). A programação genética tem sido usada com sucesso por uma série de aplicações como projeto automático, reconhecimento de padrões, controle robótico, mineração de dados e análise de imagens. Porém, a avaliação da gigantesca quantidade de indivíduos gerados requer excessiva quantidade de computação, levando a um tempo de execução inviável para problemas grandes. Este trabalho explora o alto poder computacional de unidades de processamento gráfico, ou GPUs, para acelerar a programação genética e permitir a geração automática de programas para grandes problemas. Propomos duas novas metodologias para se explorar a GPU em programação genética: compilação em linguagem intermediária e a criação de indivíduos em código de máquina. Estas metodologias apresentam vantagens em relação às metodologias tradicionais usadas na literatura. A utilização de linguagem intermediária reduz etapas de compilação e trabalha com instruções que estão bem documentadas. A criação de indivíduos em código de máquina não possui nenhuma etapa de compilação, mas requer engenharia reversa das instruções que não estão documentadas neste nível. Nossas metodologias são baseadas em programação genética linear e inspiradas em computação quântica. O uso de computação quântica permite uma convergência rápida, capacidade de busca global e inclusão da história passada dos indivíduos. As metodologias propostas foram comparadas com as metodologias existentes e apresentaram ganhos consideráveis de desempenho. Foi observado um desempenho máximo de até 2,74 trilhões de GPops (operações de programação genética por segundo) para o benchmark Multiplexador de 20 bits e foi possível estender a programação genética para problemas que apresentam bases de dados de até 7 milhões de amostras. / [en] Genetic Programming enables computers to solve problems automatically, without being programmed to it. Using the inspiration in the Darwin s Principle of natural selection, a population of programs or individuals is maintained, modified based on genetic variation, and evaluated according to a fitness function. Genetic programming has been successfully applied to many different applications such as automatic design, pattern recognition, robotic control, data mining and image analysis. However, the evaluation of the huge amount of individuals requires excessive computational demands, leading to extremely long computational times for large size problems. This work exploits the high computational power of graphics processing units, or GPUs, to accelerate genetic programming and to enable the automatic generation of programs for large problems. We propose two new methodologies to exploit the power of the GPU in genetic programming: intermediate language compilation and individuals creation in machine language. These methodologies have advantages over traditional methods used in the literature. The use of an intermediate language reduces the compilation steps, and works with instructions that are well-documented. The individuals creation in machine language has no compilation step, but requires reverse engineering of the instructions that are not documented at this level. Our methodologies are based on linear genetic programming and are inspired by quantum computing. The use of quantum computing allows rapid convergence, global search capability and inclusion of individuals past history. The proposed methodologies were compared against existing methodologies and they showed considerable performance gains. It was observed a maximum performance of 2,74 trillion GPops (genetic programming operations per second) for the 20-bit Multiplexer benchmark, and it was possible to extend genetic programming for problems that have databases with up to 7 million samples.
62

[en] ON THE PRIORITIZATION OF DESIGN-RELEVANT SMELLS / [pt] PRIORIZAÇÃO DE ANOMALIAS DE CÓDIGO RELEVANTES AO PROJETO DOS SISTEMAS DE SOFTWARE

ANDERSON JOSE SILVA DE OLIVEIRA 31 March 2020 (has links)
[pt] Sistemas de software provavelmente enfrentarão os chamados problemas de projeto. Um problema de projeto é o resultado de más decisões que podem afetar alguns atributos de qualidade importantes do sistema de software, como manutenção, desempenho e afins. Dada a típica falta de documentação do projeto, os desenvolvedores precisam confiar em sintomas que aparecem a nível de implementação para identificar e remover problemas de projeto. Um sintoma a nível de implementação geralmente se manifesta como uma anomalia de código, que se trata de uma microestrutura no programa possivelmente indicando a presença de (ou parte de) um problema de projeto. Grandes programas possuem centenas ou milhares de elementos (pacotes, classes, interfaces e afins) nos quais uma proporção significativa é afetada por anomalias. No entanto, muitas dessas anomalias não possuem relação com problemas de projeto, em outras palavras, elas não são anomalias relevantes ao problema de projeto. Desse modo, torna-se difícil e demorado priorizar os elementos anômalos do programa que são suspeitos de terem problema de projeto. Infelizmente, a literatura não fornece aos desenvolvedores heurísticas que auxiliem a priorização destes elementos de projeto suspeitos. Neste contexto, esta dissertação reporta dois estudos que objetivam auxiliar na elaboração de tais heurísticas, visando auxiliar o desenvolvedor nas decisões de priorização. O objetivo destas heurísticas é localizar uma pequena lista de elementos suspeitos de terem anomalias de código relevantes ao problema de projeto. Nosso primeiro estudo consiste em uma análise qualitativa para determinar os critérios utilizados pelos desenvolvedores para a priorização de elementos suspeitos de terem problemas de projeto. Com base nesses critérios, derivamos um conjunto preliminar de heurísticas de priorização. Nosso segundo estudo centrou-se na avaliação destas heurísticas. Como resultado, descobrimos que duas das nove heurísticas alcançaram os melhores resultados de precisão. As melhores heurísticas são baseadas em dois critérios: diversidade de anomalias e granularidade das anomalias. Nossas descobertas sugerem que fomos capazes de obter uma primeira abordagem promissora para apoiar os desenvolvedores na priorização de elementos com anomalias de código relevantes ao projeto de software. / [en] Software systems are likely to face what is called design problems. A design problem is the result of bad decisions that can aect some important quality attributes of the software system such as maintainability, performance and the like. Given the typical lack of design documentation, developers have to rely on implementation-level symptoms to identify and remove design problems. An implementation-level symptom usually manifests as a code smell, a micro-structure in the program possibly indicating the presence of (or part of) a design problem. Large programs have hundreds or thousands of program elements (packages, classes, interfaces, and the like) in which a significant proportion is aected by smells. However, many of these smells may bear no relationship with design problems, i.e. they are not design-relevant smells. Then, it becomes hard and time-consuming to prioritize smelly program elements being suspects of having a design problem. Unfortunately, the literature fails to provide developers with heuristics to support the prioritization of these suspicious program elements. In this context, this dissertation reports two studies aimed at assisting in the elaboration of such prioritization heuristics. The goal of these heuristics is to locate a short (high priority) list of smelly program elements, which are suspects of having design-relevant smells. Our first study consists of a qualitative analysis on recurring criteria used by developers, in practice, to prioritize elements suspicious of having design problems. Based on these criteria, we derived a preliminary suite of prioritization heuristics. Our second study focused on the evaluation of the proposed heuristics. As a result, we found that two out of nine heuristics reached the best results in precision. The best heuristics are based on two criteria: smell diversity and smell granularity. Our findings suggest that we were able to derive a first promising approach to support developers in prioritizing elements with design-relevant smells.
63

[pt] INVESTIGANDO O IMPACTO DA APLICAÇÃO DE PRINCÍPIOS DE PROJETO SOLID NA COMPREENSÃO DE CÓDIGO DE MACHINE LEARNING / [en] INVESTIGATING THE IMPACT OF SOLID DESIGN PRINCIPLES ON MACHINE LEARNING CODE UNDERSTANDING

RAPHAEL OLIVEIRA CABRAL 23 May 2024 (has links)
[pt] A aplicação de princípios de design tem sido reconhecida há muito tempo como benéfica para a compreensão e manutenção em projetos de software tradicionais. Esses benefícios podem ser válidos de forma semelhante para projetos de aprendizado de máquina (ML), que envolvem experimentação iterativa com dados, modelos e algoritmos. No entanto, os componentes de ML são frequentemente desenvolvidos por cientistas de dados com diversas formações educacionais, resultando potencialmente em código que não segue as práticas recomendadas de desenvolvimento de software. Para compreender melhor esse fenômeno, investigamos o impacto dos princípios de design SOLID na compreensão do código de ML. Para tanto, conduzimos um experimento controlado com três trials independentes (replicações exatas), envolvendo no total 100 cientistas de dados. Reestruturamos o código de ML real da indústria que não usava princípios SOLID. Dentro de cada ensaio, um grupo foi apresentado ao código de ML original, enquanto o outro foi apresentado ao código de ML incorporando princípios SOLID. Os participantes de ambos os grupos foram convidados a analisar o código e preencher um questionário que incluía perguntas abertas e fechadas sobre a sua compreensão. Os resultados do estudo fornecem evidências estatisticamente significativas de que a adoção dos princípios de design SOLID pode melhorar a compreensão do código no âmbito dos projetos de ML. Propomos que os princípios de design de engenharia de software devem ser difundidos na comunidade de ciência dedados e considerados para melhorar a capacidade de manutenção do código de ML. / [en] Applying design principles has long been acknowledged as beneficial for understanding and maintainability in traditional software projects. These benefits may similarly hold for machine learning (ML) projects, which involve iterative experimentation with data, models, and algorithms. However, ML components are often developed by data scientists with diverse educational backgrounds, potentially resulting in code that doesn t adhere to software development best practices. In order to better understand this phenomenon, we investigated the impact of the SOLID design principles on ML code understanding. To this end, we conducted a controlled experiment with three independent trials (exact replications), overall involving 100 data scientists. We restructured ML code from a real industrial setting that did not use SOLID principles. Within each trial, one group was presented with the original ML code, while the other one was presented with ML code incorporating SOLID principles. Participants of both groups were asked to analyze the code and fill out a questionnaire that included both open-ended and closed-ended questions on their understanding. The study results provide statistically significant evidence that the adoption of the SOLID design principles can improve code understanding within the realm of ML projects. We put forward that software engineering design principles should be spread within the data science community and considered for enhancing the maintainability of ML code.
64

[en] TO COLLABORATE OR NOT TO COLLABORATE?: IMPROVING THE IDENTIFICATION OF CODE SMELLS / [pt] COLABORAR OU NÃO COLABORAR?: MELHORANDO A IDENTIFICAÇÃO DE ANOMALIAS DE CÓDIGO

ROBERTO FELICIO DE OLIVEIRA 17 January 2018 (has links)
[pt] Anomalias de código são estruturas anômalas de código que podem indicar problemas de manutenção. A identificação de anomalias é necessária para revelar elementos de código mal estruturados, tais como classes e métodos. Porém, a identificação individual de anomalias, realizada por um único desenvolvedor, pode ser ineficaz. Estudos reportam limitações da identificação individual de anomalias. Por exemplo, a identificação de anomalias requer uma compreensão profunda de múltiplos elementos de um programa, e cada elemento é melhor entendido por um desenvolvedor diferente. Logo, um desenvolvedor isolado frequentemente tem dificuldades para encontrar, confirmar e refutar uma suspeita de anomalia. Identificação colaborativa de anomalias, que é realizada em conjunto por dois ou mais colaboradores, tem o potencial para resolver esse problema. Porém, há pouca evidência empírica sobre a eficácia da identificação colaborativa de anomalias. Nesta tese, nós conduzimos estudos empíricos para entender a eficácia da identificação individual e colaborativa de anomalias. Computamos e comparamos a eficácia de colaboradores e desenvolvedores isolados com base no número de anomalias identificadas corretamente. Conduzimos tais estudos em empresas e laboratórios de pesquisa, totalizando 67 desenvolvedores, incluindo desenvolvedores novatos e experientes. Também definimos alguns fatores de influência sobre a eficácia da identificação colaborativa de anomalias, tais como a granularidade da anomalia. Revelamos e caracterizamos algumas atividades colaborativas que melhoram a eficácia dos desenvolvedores na identificação de anomalias. Finalmente, identificamos oportunidades para melhorar certas atividades colaborativas. Nossos resultados sugerem que colaboradores são significativamente mais eficazes que desenvolvedores isolados, tanto desevolvedores novatos quanto experientes. Concluímos que colaborar é vantajoso para melhorar a identificação de uma vasta gama de tipos de anomalia. / [en] Code smells are anomalous code structures which often indicate maintenance problems in software systems. The identification of code smells is required to reveal code elements, such as classes and methods, that are poorly structured. Some examples of code smell types perceived as critical by developers include God Classes and Feature Envy. However, the individual smell identification, which is performed by a single developer, may be ineffective. Several studies have reported limitations of individual smell identification. For instance, the smell identification usually requires an indepth understanding of multiple elements scattered in a program, and each of these elements is better understood by a different developer. As a consequence, a single developer often struggles and to find to confirm or refute a code smell suspect. Collaborative smell identification, which is performed together by two or more collaborators, has the potential to address this problem. However, there is little empirical evidence on the effectiveness of collaborative smell identification. In this thesis, we addressed the aforementioned limitations as follows. First, we conducted empirical studies aimed at understanding the effectiveness of both collaborative and individual smell identification. We computed and compared the effectiveness of collaborators and single developers based on the number of correctly identified code smells. We conducted these studies in both industry’s companies and research laboratories with 67 developers, including novice and professional developers. Second, we defined some influential factors on the effectiveness of collaborative smell identification, such as the smell granularity. Third, we revealed and characterized some collaborative activities which improve the developers effectiveness for identifying code smells. Fourth, we also characterized opportunities for further improving the effectiveness of certain collaborative activities. Our results suggest that collaborators are more effective than single developers in: (i) both professional and academic settings, and (ii) identifying a wide range of code smell types.
65

[pt] REVELANDO AS FACETAS SOCIAIS E TÉCNICAS DA DEGRADAÇÃO DO DESIGN NA REVISÃO DE CÓDIGO MODERNA / [en] UNVEILING SOCIAL AND TECHNICAL FACETS OF DESIGN DEGRADATION IN MODERN CODE REVIEW

ANDERSON GONCALVES UCHOA 08 October 2021 (has links)
[pt] O design de software é uma preocupação fundamental na revisão de código, por meio da qual os desenvolvedores discutem ativamente e melhoram cada mudança de software. No entanto, a revisão de código é uma tarefa colaborativa influenciada por aspectos técnicos e sociais. Consequentemente, esses aspectos podem desempenhar um papel fundamental em como o design de software se degrada. Eles podem contribuir para acelerar ou reverter a degradação do design durante o processo de revisão de cada mudança. No entanto, há pouco entendimento sobre: (i) o impacto da revisão do código e suas práticas na degradação do design ao longo do tempo; e (ii) em que medida os aspectos sociais e técnicos estão relacionados com a redução ou aumento da degradação do design. Abordamos essas limitações motivadas por dois objetivos. Nosso primeiro objetivo é fornecer uma caracterização de como as revisões de código modernas afetam a degradação do design durante a manutenção do software. Consideramos vários aspectos técnicos e sociais para estudar o impacto das revisões de código, utilizando técnicas de aprendizado de máquina. Nosso segundo objetivo é explorar o papel dos aspectos técnicos e sociais em distinguir e predizer mudanças de design (não) impactantes durante as revisões de código. Uma mudança de design é considerada impactante quando varia a densidade e a diversidade dos sintomas de degradação (ou seja, cheiros de código). Esses objetivos foram abordados em dois estudos empíricos. Nosso primeiro estudo relata uma caracterização do impacto das revisões de código na evolução dos sintomas de degradação ao longo de cada revisão de código. Também levamos em consideração quando havia um objetivo explícito ou discussões sobre design de software. Nosso segundo estudo relata uma análise dos aspectos técnicos e sociais que influenciam as mudanças ao longo de todas as revisões em uma única revisão de código. Então, pudemos observar o papel dos aspectos sociais em distinguir e predizer mudanças impactantes no design. Nossos resultados mostram que a maioria das revisões de código tem pouco ou nenhum impacto na degradação, mesmo com discussões explícitas de design. Longas discussões e uma alta taxa de discordância dos revisores aumentam o risco de degradação. Os aspectos sociais e técnicos são capazes de distinguir mudanças de design (não) impactantes. Em resumo, nossos resultados nos forneceram uma melhor compreensão dos aspectos influentes que nos ajudam a derivar diretrizes para mitigar a degradação durante as revisões de código. Nossos resultados também fornecem insights para projetar novas ferramentas de revisão de código, também capazes de alertar os desenvolvedores com antecedência sobre o impacto prejudicial do design ao longo das revisões de código. / [en] Software design is a key concern in code review through which developers actively discuss and improve each software change. Nevertheless, code review is a collaborative task influenced by technical and social aspects. Consequently, these aspects can play a key role in how software design degrades. They can contribute to accelerating or reversing design degradation during the process of each single change s review. However, there is little understanding about: (i) the impact of code review and their practices on design degradation over time; and (ii) to what extent social and technical aspects are related to the reduction or increase of design degradation.We addressed these limitations driven by two goals. Our first goal is to provide a characterization of how modern code reviews impact design degradation during software maintenance. We consider various technical and socials aspects to study the code reviews impact. Our second goal is to explore the role of technical and social aspects in distinguishing and predicting (un)impactful design changes during code reviews, using machine learning techniques. A design change is considered impactful when it varies the density and diversity of degradation symptoms (i.e., code smells). These goals were addressed with two empirical studies. Our first study reports a characterization of the impact of code reviews on the evolution of degradation symptoms along each code review. We also took into consideration when there was an explicit goal or discussions around software design. Our second study reports an analysis of technical and social aspects influencing changes along all the revisions within a single code review. Then, we could observe the role of social aspects in distinguishing and predicting design impactful changes. Our results show that the majority of code reviews have little or no impact on degradation, even with explicit design discussions. Long discussions and a high rate of reviewers disagreement increase the risk of degradation. Both social and technical aspects are able to distinguish design (un)impactful changes. In summary, our results provided us with a better understanding of influential aspects that help us in deriving guidelines to mitigate degradation during code reviews. Our results also provide insights to design a new code review tool salso able to warn developers early about the harmful design impact along code reviews.
66

[en] THE INCEST N LEVITICU S LAWS. ANALYSIS OF THE HOLINESS LAW (LV 18 & LV 20) IN RELATION TO HAMMURABI S CODE (PARAGRAPHS 154-158) AND THE QUESTION OF SILENCE ABOUT INCEST WITH THE DAUGHTER(S) AT OLD TESTAMENT / [pt] O INCESTO NAS LEIS DO LEVÍTICO: ANÁLISE DA LEI DE SANTIDADE (LV 18 & LV 20) À LUZ DO CÓDIGO DE HAMMURABI (PARÁGRAFOS 154-158) E A QUESTÃO DO SILÊNCIO SOBRE O INCESTO COM A(S) FILHA(S) NO ANTIGO TESTAMENTO

RICARDO LENGRUBER LOBOSCO 06 November 2007 (has links)
[pt] As leis existentes em Lv 18 e Lv 20 tratam de relações sexuais consideradas ilícitas, com destaque especial para relações de natureza incestuosa. Tema que está presente, de forma semelhante, nos parágrafos 154 a 158 do Código de Hammurabi. À diferença do segundo, os primeiros textos não proíbem explicitamente a relação incestuosa entre pai e filha(s). A presente Tese propõe analisar cada um dos dois corpora legislativos em seus contextos sócioliterários e compará-los na tentativa de explicar o silêncio existente no Levítico a respeito do incesto. Além disso, a Tese discute o alcance normativo das leis bíblicas à semelhança da discussão teórica existente sobre o tema no que tange ao Direito cuneiforme. / [en] The existing laws in Lv 18 and Lv 20 are about illicit sexual intercourse, with special focus on relationships of incestuous nature. The issue is also present in paragraphs 154 to 158 of the Hammurabi Code. Apart from the second, the first texts do not explicitly forbid incestuous intercourse between father and daughter(s). The present thesis proposes both the analysis of each legislative corpus in their social and literary contexts and their comparison as a way to explain the existing silence on incest in the Leviticus. Besides, this paper discusses the normative reach of biblical laws considering the theoretical discussion about the issue taking the cuneiform Law into consideration.
67

Cláusulas contratuais gerais, cláusulas abusivas e o código civil de 2002

Melo, Diogo Leonardo Machado de 07 December 2006 (has links)
Made available in DSpace on 2016-04-26T20:25:16Z (GMT). No. of bitstreams: 1 Diogo Leonardo Machado de Melo.pdf: 1755006 bytes, checksum: d4aa8cdcec2b6abbfb9e9bdb31dc7992 (MD5) Previous issue date: 2006-12-07 / The present work focuses the study and separate systematization of the general contractual clauses in the field of private law, providing subsidies for a greater understanding and better application of the contracts in which they are included. From the civil-constitutional point of view, and according to the recent theory of contracts, it will search to place the start and the usefulness of the general contractual clauses inside a historical context. Afterwards, the specific characteristics of the general contractual clauses, their differences with similar principles, and the demonstration of its legal nature, which will legitimate the conclusions on the limits and particularities of its control and interpretation, will be presented. Despite there is no specific regulation in our country, the general contractual clauses have been the subject of special laws in several countries. Starting from foreign experiences, ways for controlling the general contractual clauses considered as abusive will be presented, comparing the methods for administrative, judicial and legislative repression existing in our country, especially in the Civil Code. For a better understanding of the phenomenon, its independent and prior existence as regards the adhesion contracts which will be formed, a study on the contractual formation and the process of including the general contractual clauses in individual contracts will be performed, indicating further the mechanisms for protection existing in favor of the adherent in this stage. Finally, after retaking the premises of the study, subsidies for interpretation of the general contractual clauses which, for its general, abstract and rigid character, impose solutions transcending the individual interests of the directly affected parties, and deserving therefore a typical, peculiar interpretation shall be given, data which shall serve as basis for understanding and applying articles 423 and 424 of the Civil Code / O presente trabalho volta-se ao estudo e à sistematização apartada das cláusulas contratuais gerais no âmbito do direito privado, fornecendo subsídios para maior compreensão e melhor aplicação dos contratos por elas contidos. Partindo da premissa civil-constitucional e da recente doutrina dos contratos, buscarse- á contextualizar, historicamente, o surgimento e a utilidade das cláusulas contratuais gerais. Em um segundo momento, serão apresentadas as características específicas das cláusulas contratuais gerais, suas diferenças de institutos afins, bem como a demonstração de sua natureza jurídica, o que legitimará as conclusões sobre os limites e as particularidades do seu controle e de sua interpretação. As cláusulas contratuais gerais não contam com regramento específico em nosso país, mas têm sido objeto de leis especiais em diversos países. Partindo de experiências estrangeiras, serão apresentadas formas de controle das cláusulas contratuais gerais consideradas abusivas, tecendo-se comparação com os métodos de repressões administrativa, judicial e legislativa existentes em nosso país, em especial, no Código Civil. Para melhor compreensão do fenômeno, de sua existência independente e anterior aos contratos de adesão que serão formados, também será feito um estudo sobre a formação dos contratos e do processo de inclusão das cláusulas contratuais gerais em contratos individuais, sem deixar de apontar, ainda, os mecanismos de tutela existentes em favor do aderente nesta fase. Por fim, retomadas as premissas dos estudos, serão dados subsídios para interpretação das cláusulas contratuais gerais que, pelo caráter geral, abstrato e rígido, impõe soluções que ultrapassam os interesses individuais das partes diretamente atingidas, merecendo, portanto, uma interpretação típica, peculiar, dados estes que fornecerão respaldo para compreensão e aplicação dos artigos 423 e 424 do Código Civil
68

[en] IDENTIFYING DESIGN PROBLEMS WITH A VISUALIZATION APPROACH OF SMELL AGGLOMERATIONS / [pt] IDENTIFICANDO PROBLEMAS DE DESIGN ATRAVÉS DE UMA ABORDAGEM DE VISUALIZAÇÃO PARA AGLOMERAÇÕES DE ANOMALIAS DE CÓDIGO

OLOUYEMI ILAHKO ANNE BENEDICTE AGBACHI 21 November 2018 (has links)
[pt] Problemas de design decorrem de violações de princípios de design em um sistema de software. Tais problemas podem prejudicar a manutenção de sistemas e, logo, devem ser identificados e eliminados sempre que possível. Porém, identificar problemas de design não é trivial. Isso pois a documentação de design desses sistemas é em geral obsoleta ou inexistente. Assim, o desenvolvedor de um sistema tende a analisar o código-fonte em busca de problemas de design. Estudos sugerem anomalias de código-fonte como indicadores úteis desses problemas. Porém, outros estudos recentes mostram que uma única anomalia não é indicador suficiente. De fato, em torno de 80 por cento dos problemas de design estão associadas com múltiplas anomalias. Estas inter-relacionam-se na forma de aglomerações de anomalias. Embora as aglomerações de anomalias possam ajudar o desenvolvedor a identificar problemas de design, certas aglomerações contêm muitas anomalias. Isso então dificulta o raciocínio sobre a existência de um problema de design. Além disso, mesmo as propostas mais recentes de abordagens para a visualização de aglomerações de anomalias provêm suporte bastante limitado à identificação de problemas de design. Essa limitação é evidente quando um problema de design afeta múltiplos elementos na implementação de um sistema. Esta dissertação objetiva tratar essa limitação ao propor uma abordagem inovadora para a visualização de aglomerações de anomalias. Tal abordagem baseia-se em evidências coletadas a partir de vários experimentos propostos e conduzidos por nós. Contamos com a participação de desenvolvedores da academia e da indústria em cada experimento. Nossos resultados de estudo sugerem que vários desenvolvedores podem utilizar nossa abordagem de visualização para identificar de forma precisa problemas de design, especialmente aqueles que afetam múltiplos elementos de programa. Nossos resultados também apontam melhorias necessárias à abordagem com base na percepção dos desenvolvedores. / [en] Design problems are characterized by violations of design principles affecting a software system. Because they often hinder the software maintenance, developers should identify and eliminate design problems whenever possible. Nevertheless, identifying design problems is far from trivial. Due to outdated and scarce design documentation, developers not rarely have to analyze the source code for identifying these problems. Past studies suggest that code smells are useful hints of design problems. However, recent studies show that a single code smell might not suffice to reveal a design problem. That is, around 80 percent of design problems are realized by multiple code smells, which interrelate in the so-called smell agglomerations. Thus, developers can explore each smell agglomeration to identify a design problem in the source code. However, certain smell agglomerations are formed by several code smells, which makes it hard reasoning about the existence of a design problem. Visualization approaches have been proposed to represent smell agglomerations and guide developers in identifying design problems. However, those approaches provide a very limited support to the identification of specific design problems, especially the ones affecting multiple design elements. This dissertation aims to address this limitation by proposing a novel approach for the visualization of smell agglomerations. We rely on evidence collected from multiple empirical studies to design our approach. We evaluate our approach with developers from both academy and industry. Our results suggest that various developers could use our visualization approach to accurately identify design problems, in particular those affecting multiple program elements. Our results also point out to different ways for improving our visualization approach based on the developers perceptions.
69

[en] UNDERSTANDING HOW DEVELOPERS IDENTIFY DESIGN PROBLEMS IN PRACTICE / [pt] ENTENDENDO COMO OS DESENVOLVEDORES IDENTIFICAM PROBLEMAS DE PROJETO NA PRÁTICA

LEONARDO DA SILVA SOUSA 14 December 2018 (has links)
[pt] Um problema de projeto é a manifestação de uma ou mais decisões de projeto inadequadas que afetam negativamente requisitos não funcionais. Por exemplo, Fat Interface, um problema que indica quando uma interface expõe serviços não coesos, no qual dificulta a extensibilidade e a manutenibilidade de um sistema de software. Apesar de problemas de projeto serem prejudiciais aos sistemas, identificá-los é uma tarefa difícil, especialmente quando o código-fonte é o único artefato disponível. Embora pesquisadores venham investigando técnicas para ajudar os desenvolvedores a identificar problemas de projeto, há pouco conhecimento sobre o processo de identificar problemas de projeto. Por exemplo, anomalias de códigos, um indicador de problemas de projeto, têm sido usadas para ajudar desenvolvedores a identificar problemas de projeto. No entanto, ainda não sabemos se elas são suficientes para ajudá-los ou não. Em particular, nenhum estudo tentou entender como os desenvolvedores identificam problemas de projeto. Nesse contexto, nós realizamos alguns estudos para entender a identificação de problemas de projeto. Em nossos dois primeiros estudos, nós investigamos o papel que as anomalias de código desempenham durante a identificação de problemas de design. Nossos resultados indicam que as anomalias de código são relevantes para os desenvolvedores na prática, por exemplo, eles são relevantes para indicar elementos a serem refatorados. Apesar da relevância, descobrimos que as anomalias de código não são suficientes para ajudar os desenvolvedores a identificar problemas de projeto. Nesse sentido, conduzimos outro estudo para investigar quais outros indicadores os desenvolvedores usam na prática e como eles são usados. Este estudo resultou em uma teoria sobre como os desenvolvedores identificam problemas de projeto na prática. A teoria revela quais são os indicadores que os desenvolvedores usam, como eles usam esses indicadores e as características de tais indicadores que os desenvolvedores consideram úteis. Os resultados encontrados nos forneceram uma melhor compreensão do processo de identificação de problemas de projeto, abrindo caminho para a elaboração de técnicas mais eficazes em ajudar os desenvolvedores a identificar problemas de projeto. / [en] A design problem is the manifestation of one or more inappropriate design decisions that negatively impact non-functional requirements. For example, the Fat Interface, a problem that indicates when an interface exposes non-cohesive services, hampers the extensibility and maintainability of a software system. Despite its harmfulness, identifying a design problem in a system is difficult, especially when the source code is the only available artifact. Although researchers have been investigating techniques to help developers in identifying design problems, there is little or no knowledge about the process of identifying design problems. For instance, code smells, microstructures that are a surface indication of design problems, have been used in several techniques to support developers during the design problem identification. However, there is no knowledge if code smells suffice to help developers to identify design problems. In particular, no study has tried to understand how developers identify design problems in practice. Thus, in this thesis, we have conducted a series of studies to understand design problem identification. In our two first studies, we investigated the role that code smells play in supporting developers during the design problem identification. Our results indicate that code smells are relevant for developers in practice; for instance, they are relevant to indicate elements that need to be refactored. However, we found that code smells, despite their relevance, do not suffice in helping developers to identify design problems. In this vein, we conducted another study to investigate what indicators developers use in practice, and how they use them. This study resulted in a theory about how developers identify design problems in practice. For instance, the theory reveals the indicators that developers use, how they use these indicators, and the characteristics of such indicators that are perceived as helpful by developers. The results found by our studies provided us with a better understanding of the process of identifying design problems thitherto nonexistent. Moreover, our findings pave the way for the elaboration of more effective techniques to identify design problems in the source code.
70

MicroRNAs e seu papel no desenvolvimento e diferenciação sexual da Tilápia do Nilo (Oreochromis niloticus)

Giusti, Juliana [UNESP] 08 April 2015 (has links) (PDF)
Made available in DSpace on 2016-08-12T18:48:43Z (GMT). No. of bitstreams: 0 Previous issue date: 2015-04-08. Added 1 bitstream(s) on 2016-08-12T18:50:57Z : No. of bitstreams: 1 000865637.pdf: 1293456 bytes, checksum: d01165e048932b40382e97a518db2fc9 (MD5) / Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES) / Fundação de Amparo à Pesquisa do Estado de São Paulo (FAPESP) / A Tilápia do Nilo é uma espécie de grande relevância na aqüicultura mundial. Espécimes do sexo masculino têm maior crescimento quando comparado as fêmeas, uma característica importante em sistemas de produção de peixe. Infelizmente, os mecanismos envolvidos no desenvolvimento que levam à diferenciação sexual em peixes ainda são pouco compreendidos. Vários genes e miRNAs tem sido propostos como influênciadores desses processos, porém seu efetivo papel, permanece desconhecido. Considerando a importância biológica do desenvolvimento embrionário e determinação do sexo, microRNomas de tilápia do Nilo, expressos durante o desenvolvimento e em indivíduos machos e fêmeas adultos, foram analisados. Bibliotecas de pequenos RNAs foram geradas a partir de embriões de 3 e 5 dias pós fertilização (dpf), e cérebro e gônadas de indivíduos adultos de ambos os sexos, e seqüenciados via plataforma Illumina. Foram identificados 194 miRNAs já conhecidos com base em bancos de dados referência de zebrafish, sendo que destes 120 apresentaram expressão diferencial entre macho e fêmea de O. niloticus. Foram identificados ainda 74 novos miRNAs não presentes no banco de dados referência. Vinte e dois miRNAs foram testados por qPCR e cinco tiveram seus genes-alvo candidatos testados pelo ensaio de gene repórter da luciferase. Os resultados de qPCR mostraram que a expressão da família do miR-10 foi alta durante os períodos de 3 e 5dpf. Softwares de predição sugerem que essa família de miRNAs regula a expressão de membros dos genes Hox. Sendo assim, foram testados por qPCR e pelo ensaio do gene réporter da luciferase três genes dessa família: HoxA3a, HoxB3a e HoxD10a. Os resultados mostraram que miR-10b tem como alvos Hoxb3a e HoxD10a. Já na diferenciação do sexo, os resultados de qPCR apontaram uma alta expressão do miR-145-5p durante o desenvolvimento de embriões de fêmea, enquanto seu possível alvo, Sox9a, teve... / The Nile tilapia is a species of great importance in world aquaculture. Male specimens have increased growth compared with females, an important feature in fish production systems. Unfortunately, the mechanisms involved in the development and sexual differentiation in fish are still poorly understood. Several genes and miRNAs have been reported as influencing these processes, but its effective role remains unknown. Given the biological importance of miRNAs to embryonic development and sex determination, microRNomes were analyzed during development and in adult male and female of O. niloticus. Small RNAs libraries were generated from 3 and 5 dpf embryos, and brain and gonads of adult specimens, and sequenced using Illumina platform. Out of 194 miRNAs identified based on zebrafish database, 120 showed differential expression between male and female of O. niloticus. Additionally, 74 new miRNAs not detected in zefrafish database were found. Twenty-two miRNAs were tested by qPCR and five had their target candidate genes tested by luciferase reporter gene assay. The qPCR results showed that miR-10 family expression was high during the periods of 3 and 5dpf. Prediction software suggested that this family of miRNAs regulate the Hox genes family members. Therefore, were tested by qPCR and luciferase gene reporter assay, three Hox genes: Hoxa3a, HoxB3a and HoxD10a. The results showed that miR-10b have Hoxb3a and HoxD10a as target. In sex differentiation, the results of qPCR showed a high expression of miR-145-5p during the development of female embryos, while its possible target, Sox9, decreased. Moreover, the miR-181a expression decreased and his target gene, Cyp191a increased. The luciferase gene reporter assay validated the Cyp19a1 as a direct target of miR-181a, and Sox9 as a target of miR-145-5p. Our data suggest that, as in other vertebrates, Hox genes are extremely important in the development of Nile tilapia and are regulated by miR-10 ...

Page generated in 0.44 seconds