• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 16
  • 6
  • 1
  • Tagged with
  • 23
  • 23
  • 10
  • 10
  • 9
  • 7
  • 6
  • 6
  • 6
  • 5
  • 4
  • 4
  • 4
  • 4
  • 4
  • 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.
11

Estudo em estruturas de máquinas-ferramenta com emprego de modelos reduzidos

Pinto, Benedito Geraldo Miglio 12 1900 (has links)
Submitted by maria angelica Varella (angelica@sibi.ufrj.br) on 2018-01-15T12:26:08Z No. of bitstreams: 1 beneditogeraldomigliopinto.pdf: 2000395 bytes, checksum: 4a503539c49605338e54eaeda3a2c66d (MD5) / Made available in DSpace on 2018-01-15T12:26:09Z (GMT). No. of bitstreams: 1 beneditogeraldomigliopinto.pdf: 2000395 bytes, checksum: 4a503539c49605338e54eaeda3a2c66d (MD5) Previous issue date: 1972-12 / CNPq / Estuda e analisa as características estático-dinâmicas de máquinas-ferramenta. Estuda-se o comportamento de um torno IMOR P-400 através de seu barramento, que é o elemento governante da rigidez total deste tipo de estrutura. A técnica usada é de modelos reduzidos com emprego de material plástico (acrílico). Apresentou-se também um novo desenho para ilustrar o método comparativo de projetos estruturais aplicado geralmente às estruturas complexas, onde um estudo matemático nem sempre apresenta resultados satisfatórios. Algumas modificações na estrutura original são sugeridas, tendo como base a análise dos resultados obtidos. / Study and analyse the static-dynamics characteristics of machines tools. Itis a study of the behaviour of a IMOR P-400 lathe by considering the bed of the machine which is the governing element of the total rigidity of this type of structure. The scale models technique is applied using plastic material (plexiglass). It has been also presented a new design, to ilustrate the comparative method of structurals designs, applied generally to complex structures, where a mathematical study do not give sàisfactories results. Some modifications on the original structure are suggested considering the analysis of the results obtained.
12

Simulação computacional, desenvolvimento de modelos matemáticos, localização e quantificação de falhas via observador de estado em torres de transmissão / Computational simulation, development of mathematical models, location and quantification of faults by state observer in transmission towers

Bertão, Lucas Ferreira [UNESP] 02 February 2017 (has links)
Submitted by Lucas Ferreira Bertão null (lucas92341@aluno.feis.unesp.br) on 2017-04-04T14:30:35Z No. of bitstreams: 1 Dissertação Lucas completa 04-04.pdf: 2922617 bytes, checksum: 7fd640a6e475b0234de8e9e4414b0c04 (MD5) / Approved for entry into archive by Luiz Galeffi (luizgaleffi@gmail.com) on 2017-04-12T16:47:46Z (GMT) No. of bitstreams: 1 bertao_lf_me_ilha.pdf: 2922617 bytes, checksum: 7fd640a6e475b0234de8e9e4414b0c04 (MD5) / Made available in DSpace on 2017-04-12T16:47:46Z (GMT). No. of bitstreams: 1 bertao_lf_me_ilha.pdf: 2922617 bytes, checksum: 7fd640a6e475b0234de8e9e4414b0c04 (MD5) Previous issue date: 2017-02-02 / Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES) / Monitorar a integridade de estruturas, sejam elas, máquinas ou equipamentos mecânicos, consiste em um ramo de estudo que está se firmando. As técnicas que englobam esse monitoramento fazem uso da combinação de sensores e rotinas computacionais para pode extrair os dados necessários da maneira que o operador/analista desejar. Uma das áreas carentes desse tipo de análise/controle é a de distribuição de energia. Todos os anos são noticiados casos envolvendo acidentes envolvendo torres de transmissão que vêm ao chão por, não um, mas vários fatores. Em meio as técnicas de monitoramento, a dos observadores de estado é a que se destaca mais. Contudo, apesar do destaque, a técnica dos observadores de estado possui restrições que motivam novas abordagens. Outro método numérico utilizado amplamente na área de análises em engenharia é o Método dos Elementos Finitos. Este conhecido método, que já possui base mais sólida de desenvolvimento, atualmente faz uso de softwares para a realização dos cálculos de análise estática e/ou dinâmica. O presente trabalho, em conjunto com os observadores de estado e o método dos elementos finitos, mostra uma abordagem, ainda que simples, de uma área pouco explorada com o método – a de detecção e localização de falhas em torres de transmissão via observadores de estados aliado ao método dos elementos finitos. / Monitor the integrity of structures, whether machinery or mechanical equipment consists of a branch of study that is steadying. The techniques include such monitoring makes use of the combination of computational sensors and routines can extract the necessary data in the way that the operator / analyst desired. One of the poorest areas of this type of analysis / control is the power distribution. Every year cases are reported involving accidents involving transmission towers that come to the ground by not one, but several factors. Among the monitoring techniques, the State Observer is the one that stands out more. However, despite the emphasis, the technique of state observers has restrictions that motivate new approaches. Another numerical method widely used in the area of analysis in engineering is the Finite Element Method. This known method, which already has more solid foundation of development, currently makes use of software to perform the calculations. This work, together with the status of observers and the finite element method, shows an approach, although simple, a little explored area to the method - the detection and fault location in transmission towers via state observers combined with the finite element method.
13

Explorando o processo da análise de códigos maliciosos

Oliveira, Silvio Danilo de 08 August 2013 (has links)
Submitted by João Arthur Martins (joao.arthur@ufpe.br) on 2015-03-12T16:55:51Z No. of bitstreams: 2 Dissertaçao Silvio de Oliveira.pdf: 604569 bytes, checksum: 5837923262c0c58827bf0437204a80c7 (MD5) license_rdf: 1232 bytes, checksum: 66e71c371cc565284e70f40736c94386 (MD5) / Approved for entry into archive by Daniella Sodre (daniella.sodre@ufpe.br) on 2015-03-13T13:15:24Z (GMT) No. of bitstreams: 2 Dissertaçao Silvio de Oliveira.pdf: 604569 bytes, checksum: 5837923262c0c58827bf0437204a80c7 (MD5) license_rdf: 1232 bytes, checksum: 66e71c371cc565284e70f40736c94386 (MD5) / Made available in DSpace on 2015-03-13T13:15:24Z (GMT). No. of bitstreams: 2 Dissertaçao Silvio de Oliveira.pdf: 604569 bytes, checksum: 5837923262c0c58827bf0437204a80c7 (MD5) license_rdf: 1232 bytes, checksum: 66e71c371cc565284e70f40736c94386 (MD5) Previous issue date: 2013-08-08 / Programas maliciosos tornaram-se uma crescente ameaça para a sensibilidade e a disponibilidade dos dados em serviços críticos. Com a grande conectividade dos dias atuais, sistemas tornaram-se onipresentes e extremamente integrados e esta integração e onipresença facilita atividades tais como, ciberterrorismo e fraudes financeiras. O surgimento dos malwares não é algo novo, ele data de muitos anos atrás, concomitantemente com o surgimento destes códigos, também surgiram pesquisadores que não eram somente fascinados por algoritmos de computadores, mais também pela natureza matemática e a aproximação biológica encontrada nestes códigos. No começo era relativamente fácil categorizar estes tipos de códigos, mas atualmente existe uma variedade imensa, onde suas características por muitas vezes se sobrepõem, ficando assim, difícil de identificar com exatidão a que categoria o malware pertence. O espectro dos malwares cobre uma ampla variedade de ameaças específicas incluindo vírus, worms, trojan horses e spyware. Para combater estas pragas eletrônicas, precisamos antes de tudo analisar o seu código e seu comportamento, existem duas grandes vertentes no ramo da análise de malwares, a análise de código de estática, ou seja, sem executar o programa, e a análise dinâmica, existindo a necessidade da execução. Para ambos os processos de análises foram criadas inúmeras ferramentas e metodologias no intuito de facilitar suas atividades e fazer com que usuários com certo grau de conhecimento fosse capaz de identificar e classificar um código de natureza maliciosa. Mas como existe sempre dois lados da moeda, os escritores de malwares estão sempre aperfeiçoando suas técnicas para dificultar a exploração de seus códigos, dentre estas técnicas incluímos códigos polimórficos, oligomórficos, metamórficos e vários tipos de ofuscação e empacotamento de código. Neste sentido, esta dissertação visa explorar de maneira clara e objetiva os conceitos inerentes à análise de um código malicioso, mostrando suas técnicas e seus desafios. Também é objeto deste estudo, a criação de uma ferramenta que atuará no estágio inicial de uma análise estática, examinando os arquivos PE doWindows, extraindo informações do seu formato assim como a detecção de técnicas de empacotamento e anti-debugging.
14

Ranking source code static analysis warnings for continuous monitoring of free/libre/open source software repositories / Ranqueamento de avisos de análise estática de código fonte para monitoramento de repositórios de software livre

Athos Coimbra Ribeiro 22 June 2018 (has links)
While there is a wide variety of both open source and proprietary source code static analyzers available in the market, each of them usually performs better in a small set of problems, making it hard to choose one single tool to rely on when examining a program. Combining the analysis of different tools may reduce the number of false negatives, but yields a corresponding increase in the number of false positives (which is already high for many tools). An interesting solution, then, is to filter these results to identify the issues least likely to be false positives. This work presents kiskadee, a system to support the usage of static analysis during software development by providing carefully ranked static analysis reports. First, it runs multiple static analyzers on the source code. Then, using a classification model, the potential bugs detected by the static analyzers are ranked based on their importance, with critical flaws ranked first, and potential false positives ranked last. To train kiskadee\'s classification model, we post-analyze the reports generated by three tools on synthetic test cases provided by the US National Institute of Standards and Technology. To make our technique as general as possible, we limit our data to the reports themselves, excluding other information such as change histories or code metrics. The features extracted from these reports are used to train a set of decision trees using AdaBoost to create a stronger classifier, achieving 0.8 classification accuracy (the combined false positive rate from the used tools was 0.61). Finally, we use this classifier to rank static analyzer alarms based on the probability of a given alarm being an actual bug. Our experimental results show that, on average, when inspecting warnings ranked by kiskadee, one hits 5.2 times less false positives before each bug than when using a randomly sorted warning list. / Embora exista grande variedade de analisadores estáticos de código-fonte disponíveis no mercado, tanto com licenças proprietárias, quanto com licenças livres, cada uma dessas ferramentas mostra melhor desempenho em um pequeno conjunto de problemas distinto, dificultando a escolha de uma única ferramenta de análise estática para analisar um programa. A combinação das análises de diferentes ferramentas pode reduzir o número de falsos negativos, mas gera um aumento no número de falsos positivos (que já é alto para muitas dessas ferramentas). Uma solução interessante é filtrar esses resultados para identificar os problemas com menores probabilidades de serem falsos positivos. Este trabalho apresenta kiskadee, um sistema para promover o uso da análise estática de código fonte durante o ciclo de desenvolvimento de software provendo relatórios de análise estática ranqueados. Primeiramente, kiskadee roda diversos analisadores estáticos no código-fonte. Em seguida, utilizando um modelo de classificação, os potenciais bugs detectados pelos analisadores estáticos são ranqueados conforme sua importância, onde defeitos críticos são colocados no topo de uma lista, e potenciais falsos positivos, ao fim da mesma lista. Para treinar o modelo de classificação do kiskadee, realizamos uma pós-análise nos relatórios gerados por três analisadores estáticos ao analisarem casos de teste sintéticos disponibilizados pelo National Institute of Standards and Technology (NIST) dos Estados Unidos. Para tornar a técnica apresentada o mais genérica possível, limitamos nossos dados às informações contidas nos relatórios de análise estática das três ferramentas, não utilizando outras informações, como históricos de mudança ou métricas extraídas do código-fonte dos programas inspecionados. As características extraídas desses relatórios foram utilizadas para treinar um conjunto de árvores de decisão utilizando o algoritmo AdaBoost para gerar um classificador mais forte, atingindo uma acurácia de classificação de 0,8 (a taxa de falsos positivos das ferramentas utilizadas foi de 0,61, quando combinadas). Finalmente, utilizamos esse classificador para ranquear os alarmes dos analisadores estáticos nos baseando na probabilidade de um dado alarme ser de fato um bug no código-fonte. Resultados experimentais mostram que, em média, quando inspecionando alarmes ranqueados pelo kiskadee, encontram-se 5,2 vezes menos falsos positivos antes de se encontrar cada bug quando a mesma inspeção é realizada para uma lista ordenada de forma aleatória.
15

Previsão do comportamento estático e dinâmico de estruturas de máquinas operatrizes

Serra, José Oscar Barreto 12 1900 (has links)
Submitted by maria angelica Varella (angelica@sibi.ufrj.br) on 2018-01-16T13:44:52Z No. of bitstreams: 1 130679.pdf: 1630390 bytes, checksum: ddb1fd88370339f1df106d5af62641d9 (MD5) / Made available in DSpace on 2018-01-16T13:44:52Z (GMT). No. of bitstreams: 1 130679.pdf: 1630390 bytes, checksum: ddb1fd88370339f1df106d5af62641d9 (MD5) Previous issue date: 1972-12 / É formulado o método das flexibilidades, com uma aplicação imediata à análise estática e dinâmica de estruturas de máquinas operatrizes. É apresentado também um programa para computador, capaz de prever as deformações estáticas, as frequências e os modos naturais da vibração de tais estruturas, a partir de seus desenhos de projeto. / The flexibility method is formulated with an immediato application to the stitic and dynamic analysis of mochine tool structures. There is also presented a computer program for predicting from design drawings the static deformations and the natural froequencias and modes of vibration of such structures.
16

Uma abordagem unificada para especificar e checar restrições em múltiplas linguagens de programação por meio de um analisador estático no contexto de um juiz on-line

Santos, Kleber Tarcísio Oliveira 28 February 2018 (has links)
The teaching and learning process of computer programming is a complex task which requires a lot of practice and creativity. Usually, there are numerous solutions to the same problem. Therefore, the student needs that his solutions are evaluated quickly for a faster and effective learning. To face these challenges, teachers and students can rely on resources from the evolution of Information and Communication Technology. Virtual learning environments and online judge systems are attractive alternatives used in this context. This work presents a unified approach to specify and check source code restrictions supported by a static analyzer. Although current tools are able to indicate if the program produced the expected output from a given input, not all are able to determine if the student used (or not) a given programming language construct, such as creating a function and using it in the program. Among those that are capable, there are problems that were solved in the approach proposed in this work, such as: ease of use, unified approach and degree of flexibility. In addition, this work presents an analysis of the database of The Huxley with the purpose of discovering the main restrictions of source code used by the teachers and attended by the students. This analysis was done based on data obtained from the use of the developed static analyzer and in conjunction with a survey applied to the teachers of introduction to programming with the purpose of knowing the main restrictions that would be used by them if they had a tool to specify and check restrictions. / O processo de ensino e aprendizagem da programação de computadores é uma tarefa complexa que requer bastante prática e criatividade. Geralmente há inúmeras soluções para um mesmo problema. Por isso, o aluno precisa que suas soluções sejam avaliadas rapidamente visando um aprendizado mais ágil e eficaz. Para enfrentar esses desafios, os professores e alunos podem contar com recursos provenientes da evolução da Tecnologia da Informação e Comunicação. Os ambientes de aprendizagem virtual e os sistemas de juiz on-line são alternativas atrativas utilizadas nesse contexto. Este trabalho apresenta uma abordagem unificada de especificação e checagem de restrições de código-fonte apoiada por um analisador estático. Apesar das ferramentas atuais serem capazes de indicar se o programa produziu a saída esperada a partir de uma entrada fornecida, nem todas são capazes de determinar se o aluno utilizou (ou não) determinada construção de linguagem de programação, como por exemplo criar uma função e utilizá-la no programa. Entre as que são capazes, existem problemas que foram sanados na abordagem proposta neste trabalho, como: facilidade de uso, abordagem unificada e grau de flexibilidade. Além disto, este trabalho conta com uma análise da base de dados do The Huxley com o objetivo de descobrir quais são as principais restrições de código-fonte utilizadas pelos professores e atendidas pelos alunos. Esta análise foi feita com os dados obtidos da aplicação do analisador estático de código-fonte desenvolvido e em conjunto com um survey aplicado aos professores de introdução à programação com o propósito de conhecer as principais restrições que seriam utilizadas por eles se possuíssem uma ferramenta de especificação e checagem de restrições. / São Cristóvão, SE
17

Uma abordagem para análise de impacto de mudanças em transformações de modelos.

VIEIRA, Andreza de Sousa. 13 September 2017 (has links)
Submitted by Johnny Rodrigues (johnnyrodrigues@ufcg.edu.br) on 2017-09-13T22:00:52Z No. of bitstreams: 1 Tese Uma abordagem para análise de impacto de mudança ... Andreza de Sousa Vieira.pdf: 1136053 bytes, checksum: bea3c2c4cd1e05c961abf7ec7c127557 (MD5) / Made available in DSpace on 2017-09-13T22:00:53Z (GMT). No. of bitstreams: 1 Tese Uma abordagem para análise de impacto de mudança ... Andreza de Sousa Vieira.pdf: 1136053 bytes, checksum: bea3c2c4cd1e05c961abf7ec7c127557 (MD5) Previous issue date: 2014-12-17 / Capes / MDD (Model-Driven Development) tem como principal objetivo deslocar o foco da implementação do código fonte para o desenvolvimento de modelos dentro do processo de desenvolvimento de software. Elementos que desempenham um papel muito importante dentro de MDD são as transformações de modelos, isto é, regras que descrevem como modelos de Origem devem ser usados para gerar automaticamente um ou mais modelos de destino. Como qualquer projeto de software, os projetos baseados em MDD evoluem ao longo do ciclo de vida, tendo em vista que mudanças em suas transformações são frequentes. Antes de aplicar qualquer mudança em uma transformação é importante analisar como ela pode afetar o projeto como um todo. No entanto, atualmente não há nenhuma técnica para auxiliar os gerentes de projeto ou desenvolvedores nesse sentido. O objetivo deste trabalho é propor uma abordagem para análise do impacto de mudanças em transformações de modelos. Baseada na análise estática,a abordagem proposta visa: (i)identificar o conjunto de elementos impactados por uma mudança na transformação; e (ii) mensurar o impacto da mudança através de um conjunto de métricas. Dentre outros benefícios, a abordagem proposta pode auxiliar: (i) os gerentes de projeto a melhor escalonar e priorizar mudanças, uma vez que eles podem estimar os custos da aplicação de cada uma delas; e (ii) os desenvolvedores a identificar, automaticamente, todos os elementos impactados com uma mudança, assim, economizando esforço e tempo de desenvolvimento. Um estudo de caso foi conduzido para identificar novas métricas e para avaliar a abordagem proposta em relação à análise manual do impacto de mudanças em diversas transformações reais. Com o estudo, foi possível perceber que os resultados obtidos pela abordagem proposta e pela análise manual foram bastante próximos. Porém, considerando o esforço e o tempo de análise, os resultados da abordagem proposta foram melhores. / The main goal of the MDD (Model-Driven Development) approach is to change the focus from source code to models within the software development process. Elements that play important role in MDD are model transformations, i.e. rules that describe how source models should be used to automatically generate one or more target models. As any software project, MDD-based projects evolve along their lifecycle in such way that changes in their transformations are frequent. Before applying any change to a transformation, it is important to analyze how it would impact the whole project. However, there is currently no technique to help project managers or developers in this direction. The objective of this work is to propose an approach to analyze the impact of changes resulting from model transformations. Based on static analysis, the proposed approach aims at: (i)identifying the set of elements impacted with a change applied to a transformation; and (ii)measuring the impact of a change through a set of metrics. Among other benefits ,the proposed approach can help: (i)project managers to better prioritize and schedule changes, since they can estimate the costs to apply each of them; and (ii)developers to automatically identify all elements impacted with a change, thus saving effort and development time. A case study was conducted to identify new metrics and to evaluate the proposed approach regarding to the manual change impact analysis considering real transformations. This study revealed that the results obtained by using the proposed aproach and using the manual analysis were very similar. However, regarding effort and time, we observed that the results obtained from the proposed approach were superior than the manual analysis.
18

Compreensão de mudanças estruturais no código fonte usando análise dinâmica e estática / Understanding structural changes in source code using dynamic and static analysis

Silva, Janio Rosa 17 December 2015 (has links)
A compreensão de sistemas é fundamental para a atividade de manutenção. Durante a manutenção e evolução dos sistemas, mudanças contínuas podem degradar o projeto modular do sistema, aumentando sua complexidade. Consequentemente, as empresas gastam muito tempo e recursos financeiros na compreensão e manutenção dos sistemas. Portanto, entender como o sistema evolui é uma etapa importante para o bom planejamento, desenvolvimento e gerenciamento de mudanças. Os desenvolvedores geralmente precisam entender rapidamente mudanças recentes antes de implementar novas mudanças. Mesmo que já existam abordagens para a compreensão, elas ainda são limitadas para detectar componentes diferentes com tarefas similares, para localizar tarefas no código fonte e para medir o impacto de uma determinada mudança nas funcionalidades do sistema. Neste trabalho, é proposto um mecanismo para localizar impactos causados por uma mudança no projeto e quais mudanças estruturais ocorreram em um sistema de uma versão para outra. Dada uma funcionalidade específica, o objetivo é localizar mudanças estruturais e mudanças de relacionamento entre componentes entre duas versões. Cada mudança estrutural detectada na primeira etapa é checada no código fonte para ambas as versões. Depois, as mudanças são classificadas em cinco padrões: i) movimentação de classe; ii) movimentação de método; iii) adição de método; iv) remoção de método; e v) mudança no modificador de acesso (os três últimos que representam mudanças de interface nas classes). A abordagem proposta é avaliada com três sistemas de código aberto com o objetivo de validar a metodologia: jFreeChart, Tomcat e JHotDraw. Os resultados revelam mudanças estruturais como movimentação de método, movimentação de classe e mudança de relacionamento de pacotes. Além disso, também é feito um levantamento de mudanças estruturais que afetam múltiplas funcionalidades, o que é chamado de avaliação de impacto de mudanças; análises sobre mudanças de relacionamento de pacotes no jFreeChart validado em termos de precisão e recall. Os resultados mostram que movimentações em métodos, em média, aparecem em 28,4% dos casos. Existem classes que afetam muitas funcionalidades, logo o desenvolvedor terá noção de quais funcionalidades serão afetadas com tais mudanças. As mudanças no jFreeChart mostram que a abordagem detecta os padrões de alterações em pacotes a uma precisão de 100% e revocação de 83%. Ao detectar uma mudança considerável na relação de pacotes entre o jFreeChart versões 0.7.0 e 0.9.5, foi constatado que os novos pacotes possuem um menor acoplamento, conforme a métrica efferent coupling, podendo indicar uma melhor modularização. Portanto detectar estas mudanças nos pacotes pode ajudar o desenvolvedor a explicar a coesão, acoplamento e a modularidade do sistema em termo de pacotes. Um dos resultados importantes da abordagem, a avaliação de impacto de mudanças, permite ao desenvolvedor avaliar o passado do sistema, e prever o impacto e abrangência de mudanças futuras em classes e funcionalidades. / Software system comprehension is a key maintenance activity. During the software maintenance and evolution, continuous changes may degrade the modular design overtime, thus, increasing its complexity. Consequently, companies spend a lot of time and resources trying to understand and implement changes on software. Therefore, understanding how system changes evolve is an important step towards future development planing and management. Developers usually need to rapidly understand recent changes before implementing a new feature. Despite of several approaches to improve software comprehension, they are still limited to different components with similar roles, to locate features in the source code and to measure the impact of an specific change in other features. In this work, we present an approach centered on dynamic and static analysis to reduce program comprehension effort. More specifically, we propose a mechanism to locate what structural changes have occurred in a program from one version to another. Given one specific functionality, we locate structural changes and component relationship changes between two versions. Each structural change previously detected in the first step, is then verified by a next step of static analysis to confirm if the method in the trace really exists in only one version or both versions. The candidate changes are classified in five patterns by parsing the source code of both analyzed version: i) Move Class, ii) Move Method, iii) Add Method, iv) Remove Method, and v) Access Modifier Change (where they represent Class Interface Change). We evaluated our approach with three open source-software systems: jFreeChart, Tomcat, and JHotDraw. Our results reveals structural changes such as, move method, move class, and package relationship changes. In this study, we further investigate the impact of structural changes over multiple functionalities. We also evaluated the package relationship change found in jFreeChart using precision and recall. The results show that the pattern Move Method dominates, in average, appearing in 28,4% of the changes. Also, there are changes in classes that affect many funcionalities. Also the results show that in jFreeChart there were changes in packages detected with a precision of 100% and a recall of 83%. After the approach detected many changes between versions 0.7.0 and 0.9.5 of jFreeChart, further analysis showed that the new package structure has less coupling measures, according to the Efferent Coupling metric. That can mean the package structure has a better modular structure. Then detecting those changes in the package structure can be valuable to the developer evaluate the cohesion, coupling and package modular structure. One of the results presented by this approach, the impact analysis, allow the developer, by evaluating the past of the system, foresee the impact and coverage of future changes that will be made in the system. / Dissertação (Mestrado)
19

Static analysis of implicit control flow: resolving Java reflection and Android intents

SILVA FILHO, Paulo de Barros e 04 March 2016 (has links)
Submitted by Fabio Sobreira Campos da Costa (fabio.sobreira@ufpe.br) on 2016-08-08T12:21:17Z No. of bitstreams: 2 license_rdf: 1232 bytes, checksum: 66e71c371cc565284e70f40736c94386 (MD5) 2016-pbsf-msc.pdf: 596422 bytes, checksum: be9375166fe6e850180863e08b7997d8 (MD5) / Made available in DSpace on 2016-08-08T12:21:17Z (GMT). No. of bitstreams: 2 license_rdf: 1232 bytes, checksum: 66e71c371cc565284e70f40736c94386 (MD5) 2016-pbsf-msc.pdf: 596422 bytes, checksum: be9375166fe6e850180863e08b7997d8 (MD5) Previous issue date: 2016-03-04 / FACEPE / Implicit or indirect control flow allows a transfer of control to a procedure without having to call the procedure explicitly in the program. Implicit control flow is a staple design pattern that adds flexibility to system design. However, it is challenging for a static analysis to compute or verify properties about a system that uses implicit control flow. When a static analysis encounters a procedure call, the analysis usually approximates the call’s behavior by a summary, which conservatively generalizes the effects of any target of the call. In previous work, a static analysis that verifies security properties was developed for Android apps, but failed to achieve high precision in the presence of implicit control flow. This work presents static analyses for two types of implicit control flow that frequently appear in Android apps: Java reflection and Android intents. In our analyses, the summary of a method is the method’s signature. Our analyses help to resolve where control flows and what data is passed. This information improves the precision of downstream analyses, which no longer need to make conservative assumptions about implicit control flow, while maintaining the soundness. We have implemented our techniques for Java. We enhanced an existing security analysis with a more precise treatment of reflection and intents. In a case study involving ten real-world Android apps that use both intents and reflection, the precision of the security analysis was increased on average by two orders of magnitude. The precision of two other downstream analyses was also improved. / Fluxo de controle implícito, ou indireto, permite que haja uma transferência de controle para um procedimento sem que esse procedimento seja invocado de forma explícita pelo programa. Fluxo de controle implícito é um padrão de projeto comum e bastante utilizado na prática, que adiciona flexibilidade no design de um sistema. Porém, é um desafio para uma análise estática ter que computar e verificar propriedades sobre um sistema que usa fluxos de controle implícito. Quando uma análise estática encontra uma chamada a uma procedimento, geralmente a análise aproxima o comportamento da chamada de acordo com o sumário do método, generalizando de uma forma conservadora os efeitos da chamada ao procedimento. Em trabalho anterior, uma análise estática de segurança foi desenvolvida para aplicações Android, mas falhou em obter uma alta precisão na presença de fluxos de controle implícito. Este trabalho apresenta uma análise estática para dois tipos de fluxos de controle implícito que aparecem frequentemente em aplicações Android: Java reflection e Android intents. Nas nossas análises, o sumário de um método é a assinatura do método. Nossas análises ajudam a descobrir para onde o controle flui e que dados estão sendo passados. Essa informação melhora a precisão de outras análises estáticas, que não precisam mais tomar medidas conservadoras na presença de fluxo de controle implícito. Nós implementamos a nossa técnica em Java. Nós melhoramos uma análise de segurança existente através de um tratamento mais preciso em casos de reflection e intents. Em um estudo de caso envolvendo dez aplicações Android reais que usam reflection e intents, a precisão da análise de segurança aumentou em duas ordens de magnitude. A precisão de outras duas análises estáticas também foi melhorada.
20

Uma investigação da correspondência entre mutações e avisos relatados por ferramenta de análise estática / Investigating the correspondence between mutations and static warnings reported by static analysis tool

Araújo, Claudio Antônio de 04 December 2015 (has links)
Submitted by Luciana Ferreira (lucgeral@gmail.com) on 2016-04-18T13:33:01Z No. of bitstreams: 2 Dissertação - Cláudio Antônio de Araújo - 2015.pdf: 6483664 bytes, checksum: bf12aa2fbdc30e9456d8036d9cc24fd1 (MD5) license_rdf: 23148 bytes, checksum: 9da0b6dfac957114c6a7714714b86306 (MD5) / Approved for entry into archive by Luciana Ferreira (lucgeral@gmail.com) on 2016-04-18T13:34:40Z (GMT) No. of bitstreams: 2 Dissertação - Cláudio Antônio de Araújo - 2015.pdf: 6483664 bytes, checksum: bf12aa2fbdc30e9456d8036d9cc24fd1 (MD5) license_rdf: 23148 bytes, checksum: 9da0b6dfac957114c6a7714714b86306 (MD5) / Made available in DSpace on 2016-04-18T13:34:40Z (GMT). No. of bitstreams: 2 Dissertação - Cláudio Antônio de Araújo - 2015.pdf: 6483664 bytes, checksum: bf12aa2fbdc30e9456d8036d9cc24fd1 (MD5) license_rdf: 23148 bytes, checksum: 9da0b6dfac957114c6a7714714b86306 (MD5) Previous issue date: 2015-12-04 / Traditionally, mutation testing is used for test set and/or test criteria evaluation once it is considered a good fault model. Since static analyzers, in general, report a substantial number of false positive warnings, Objective: This paper uses mutation testing for evaluating an automated static analyzer. The intention of this study is to define a prioritization approach of static warnings based on their correspondence with mutations. Method: We used mutation operators as a fault model to evaluate the direct correspondence between mutations and static warnings. The main advantage of using mutation operators is that they generate a large number of programs containing faults of different types, which can be used to decide the ones most probable to be detected by static analyzers. Results: The results obtained for a set of open-source programs indicate that: 1) correspondence exists when considering specific mutation operators such that static warnings may be prioritized based on their correspondence level with mutations; 2) correspondence exists when considering specific warning categories such that, assuming we perform static analysis considering these warning categories, mutation operators may be prioritized based on their correspondence level with warnings. Conclusion: It is possible to provide an incremental testing strategy aiming at reducing the cost of both static analysis and mutation testing using the correspondence information. On the other hand, knowing that Mutation Test has a high application cost, we identified mutations of some specific mutation operators, which an automatic static analyzer is not able to detect. Therefore, this information can used to prioritize the order of applying mutation operators incrementally considering, firstly, those with no correspondence with static warnings. / Considerando que: 1) analisadores estáticos automatizados são ferramentas que emitem avisos, sem que seja necessário a execução do produto de software correspondente, alertando sobre a presença de possíveis defeitos no código. Uma das críticas a tais ferramentas é a grande quantidade de avisos falsos positivos emitidos, isto é, avisos relatados que não correspondem a defeitos reais, mas demandam tempo de análise por parte do desenvolvedor; 2) tradicionalmente, o Teste de Mutação tem sido utilizado para avaliar (e melhorar) a qualidade de conjuntos de casos de teste e/ou de critérios de teste, uma vez que é considerado um bom gerador de defeitos de software. Objetivo: O objetivo do presente trabalho é investigar a correspondência entre avisos estáticos e mutações e, com isso, verificar quais avisos estão mais relacionados a esses possíveis defeitos (mutações) e, assim, possivelmente, serem avisos verdadeiros positivos. Método: Os operadores de mutação são utilizados neste trabalho como um modelo de defeitos para avaliar a correspondência entre mutações e avisos estáticos. A principal vantagem da utilização de operadores de mutação é que eles geram um grande número de programas com defeitos de diferentes tipos. Esses tipos de defeitos são usados em estudos experimentais para investigar a capacidade dos analisadores estáticos em detectá-los. Resultados: Os resultados obtidos com estudos experimentais para um conjunto de sistemas de código aberto indicam que existe correspondência quando são considerados alguns operadores de mutação da μJava e alguns tipos de avisos da FindBugs. Conclusão: Os resultados obtidos podem ser utilizados de duas maneiras distintas: Primeiro, é fornecida uma abordagem de análise incremental dos avisos, de acordo com o grau de correspondência com mutações. Segundo, com o objetivo de reduzir o custo do Teste de Mutação é fornecida uma abordagem de priorização incremental para análise dos mutantes dos operadores cujas mutações são menos “percebidas” pela FindBugs.

Page generated in 0.1465 seconds