• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 658
  • 348
  • 294
  • 174
  • 92
  • 74
  • 31
  • 26
  • 23
  • 23
  • 17
  • 14
  • 12
  • 11
  • 9
  • Tagged with
  • 1988
  • 549
  • 292
  • 265
  • 235
  • 222
  • 192
  • 190
  • 184
  • 178
  • 174
  • 174
  • 161
  • 140
  • 124
  • 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.
331

Intégration des évènements non périodiques dans les systèmes temps réel : application à la gestion des évènements dans la spécification temps réel pour Java / Non periodic task integration in real-time systemes : application to the real-time specification for Java

Masson, Damien 08 December 2008 (has links)
Les systèmes temps réel sont des systèmes informatiques composés de tâches auxquelles sont associées des contraintes temporelles, appelées échéances. Dans notre étude, nous distinguons deux familles de tâches : les tâches temps réel dur et les tâches temps réel souple. Les premières possèdent une échéance stricte, qu'elles doivent impérativement respecter. Elles sont de nature périodique, ou sporadique, et l'étude analytique de leur comportement fait l’objet d’un état de l’art conséquent. Les secondes sont de nature apériodique. Aucune hypothèse sur leur modèle d’arrivéée ni sur leur nombre n’est possible. Aucune garantie ne saurait être donnée sur leur comportement dès lors que l’on ne peut écarter les situations de surcharge, où la demande de calcul peut dépasser les capacités du système. La problématique devient alors l'étude des solutions d’ordonnancement mixte de tâches périodiques et apériodiques qui minimisent les temps de réponse des tâches apériodiques tout en garantissant les échéances des tâches périodiques. De nombreuses solutions ont été proposées ces vingt dernières années. On distingue les solutions basées sur la réservation de ressources, les serveurs de tâches, des solutions exploitant les instants d'inactivité du système, comme les algorithmes de vol de temps creux. La spécification Java pour le temps réel (RTSJ) voit le jour dans les années 2000. Si cette norme répond à de nombreux problèmes liés à la gestion de la mémoire ou à l'ordonnancement des tâches périodiques, celui de l'ordonnancement mixte de tâches périodiques et apériodiques n'est pas abordé. Nous proposons dans cette thèse d’apporter les modifications nécessaires aux algorithmes principaux d’ordonnancement mixte, le Polling Server (PS), le Deferrable Server (DS) et le Dynamic Approximate Slack Stealer (DASS) en vue de leur implantation avec RTSJ. Ces algorithmes ne peuvent en effet être implantés directement tels qu'ils sont décrits, car ils sont trop liés à l'ordonnanceur du système. Nous proposons des extensions aux APIs RTSJ existantes pour faciliter l’implantation de ces mécanismes modifiés, et nous fournissons les interfaces utiles à l’ajout d'autres solutions algorithmiques. Nous proposons également des modifications sur les APIs existantes de RTSJ afin de répondre aux problèmes d'intégration et d'implantation d’algorithmes d’analyse de faisabilité. Nous proposons enfin un algorithme d’estimation des temps creux, le Minimal Approximate Slack Stealer (MASS), dont l’implantation au niveau utilisateur, permet son intégration dans RTSJ / In computer science, real-time systems are composed of tasks. To each task is associated a timing constraint called a deadline. We distinguish two kinds of tasks : the hard ones and the soft ones. Hard tasks have hard deadlines, which must be respected to ensure the correctness of the system. So hard tasks are in essence periodic, or sporadic. Their behavior has been extensively studied. Soft tasks have soft deadlines that the system has to try to respect. When a task arrival model is unknown, i.e. when task is aperiodic, burst arrivals situation can happens, which makes the tasks timing behavior unpredictable. So aperiodic tasks can only have soft deadlines. The studied problem in this thesis is then the joint scheduling of hard periodic tasks with soft aperiodic events, where the response times of soft tasks have to be as low as possible while the guarantee to meet their deadlines has to be given to hard tasks. A lot of solutions have been proposed these past two decades. We distinguish solutions based on resource reservation, like task servers, and solutions which take benefit from system idle times, like the slack stealer techniques. The first version of the Real-Time Specification for Java (RTSJ) was proposed in early 2000. This specification addresses a lot of problems related to the memory management or the scheduling of periodic tasks. But if it proposes a model to write aperiodic events, advanced mechanisms for the integration of such events to handle the above-mentioned problem are not discussed. We propose modifications to the main advanced mixed scheduling mechanisms like the Polling Server (PS), the Deferrable Server (DS) or the Dynamic Approximate Slack Stealer (DASS) in order to make their implementation possible with the RTSJ. Indeed, these algorithms are deeply connected to the system scheduler, and have to be adapted in order to be implemented in a user-land level.We propose extensions to current RTSJ APIs in order to integrate the modified algorithms and to allow the addition of other algorithms in a unified framework. We also propose some modifications to the RTSJ APIs in order to solve some problems we encountered during the integration of modified algorithms, especially in the field of the feasibility analysis algorithms integration in the specification. Finally, we propose the Minimal Approximate Slack Stealer algorithm (MASS), which is independent of the scheduler implementation and has a lower overhead than DASS
332

Prototypische Entwicklung eines mandantenfähigen dezentralen Austauschsystems für hochsensible Daten

Stockhaus, Christian 01 March 2017 (has links) (PDF)
Diese Arbeit behandelt die Entstehung eines Prototypen für die Übertragung von hochsensiblen Daten zwischen verschieden Firmen. Dabei geht Sie auf alle Schritte bei der Entwicklung ein von der Anforderungsanalyse über die Evaluierung einer passenden Technologie und die eigentliche Implementierung bis hin zum Test und der Administration.
333

Scrambling av databaser : Validering och implementering av scrambling av databas

Öberg, Fredrik January 2019 (has links)
The demands on how personal data is handled have recently become much more strict with new regulations such as GDPR. Which means companies need to review how they save and manage data. Furthermore, there is a whole indust- ry that works with analyzing and anonymizing databases to create testdata for companies to use for tests. How can these companies guarantee that they can hand over their database for this particular purpose. Easit AB wants a system to be built for scrambling databases so that the structure and data in the database are unrecognizable, which can then be submitted to Easit for analysis.With the main objective, using existing functionality in the Easit Test Engine ETE, see if you can scramble customers databases and data to unrecognizable so that the handover of the database can be done without risk. But also to validate the scrambling methods that the solution contains. / Kraven hur personlig data hanteras har på senare tid blivit mycket mer strikta med nya förordningar som GDPR. Vilket betyder att företag måste se över hur dom spara och hanterar data. Vidare så finns det en hel bransch som jobbar med att analysera och anonymisera databaser för att skapa testdata för företag att an- vända för tester. Hur kan dessa företag garantera att de kan lämna över deras da- tabas för just detta. Easit AB vill att ett system ska byggas för att scrambla data- baser så att struktur och data i databasen är oigenkännligt som sedan kan läm- nas över till Easit för analysering. Med Huvudmålet att med hjälp av befintlig funktionalitet i Easit Test Engine ETE kunna scrambla kunders databaser och data till oigenkännlighet så att överlämning av databasen kan ske utan risk för tester. Men även att validera de scramblingmetoder som lösningen innehåller.
334

Proposta de uma linguagem Java para um ambiente paralelo-JAPAR / Design of the Java-like language for a parallel environment-JAPAR

Traina, Antônio Fernando 10 March 2000 (has links)
Com o crescente número de usuários de computadores, novas ferramentas têm sido apresentadas com a finalidade de aumentar a eficiência dos computadores, meio para que seus usuários disponham de recursos automatizados. Mais recentemente, máquinas ligadas em rede de computadores e o fenômeno Internet tornaram necessárias ferramentas específicas para este tipo particular de uso. Entre as principais respostas a essas necessidades surgiu a linguagem Java, que tem ganhado adeptos tanto na comunidade científica como no mercado. Surge daí a necessidade de buscar formas alternativas para o uso de computadores em rede. Entre as soluções propostas encontra-se a de arquiteturas e linguagens paralelas. Estas ferramentas, ainda em fase experimental, apresentam soluções que podem a médio e longo prazo serem viáveis, desde que estudos e pesquisas mostrem sua viabilidade. Neste trabalho investiga-se a aplicação do conceito de paralelismo em linguagens para rede, mais especificamente a linguagem Java. A proposta é estudar as possíveis formas para se explorar o paradigma de linguagens paralelas em ambientes Java. Para isto, apresenta-se uma pesquisa relativa as principais linguagens paralelas disponíveis na literatura, de forma a conhecer as melhores soluções apresentadas por essas linguagens. O trabalho apresenta também um estudo realizado em um conjunto de ferramentas Java disponíveis no mercado. Finalmente, propõe-se um novo ambiente que possa disponibilizar ao usuário os melhores recursos da linguagem Java, explorando as melhores soluções encontradas na literatura. / With the increasing number of computer users, new tools have been presented to improve the computers efficiency and to make automated resources available for those users. Nowadays, the use of computers in a network and the Internet phenomenon requires specific tools. Among them, the Java language appears as an important tool, which has been attracting users in both the scientific and commercial communities. At the same time the computer networks are becoming more popular and some problems have emergent concerned to the networks assessment and connections. It is necessary to look for alternative ways of handling the network computer systems. The parallel architectures and languages appear among the proposed solutions. These tools are still in an experimental phase, studies and researches being necessary additional to confirm their feasibility. In this work we investigate the application of parallelism concepts in languages for networks, and particular we deal with the Java language. The aim is to study the possible approaches for exploring the parallel languages paradigm in Java environments. Research about the main parallel languages available in the literature is presented, in order to check the best solutions proposed by those languages. The work also presents an investigation about the Java tools available in the commercial market. Finally a new environment is proposed that makes some of the best resources of language Java available to the users by exploring the best solutions found in the literature.
335

Contribuindo para a avaliação do teste de programas concorrentes: uma abordagem usando benchmarks / Evaluating the testing of concurrent programs: an approach using benchmarks

Dourado, George Gabriel Mendes 18 November 2015 (has links)
O teste de programas concorrentes é uma atividade que envolve diferentes perspectivas. Uma das mais conhecidas refere-se ao desenvolvimento de novos conhecimentos sobre critérios, modelos e ferramentas de teste que auxiliem o testador nessa atividade. Outra perspectiva, igualmente importante, porém, ainda incipiente, é a avaliação da atividade de teste de programas concorrentes com relação à sua eficiência e eficácia para revelar defeitos de difícil detecção. O projeto TestPar em desenvolvimento no ICMC/USP tem abordado essas duas perspectivas ao longo dos últimos anos, onde novas tecnologias de teste vêm sendo desenvolvidas e avaliadas sistematicamente. Este trabalho inseriu-se no contexto do projeto TestPar e teve por objetivo principal contribuir para melhorar a avaliação da atividade de teste de programas concorrentes, através do desenvolvimento de benchmarks específicos para este contexto. Essa avaliação representa um desafio para a área de teste, sendo essencial a existência de benchmarks simples o bastante para serem validados manualmente, se necessário, e complexos o bastante para exercitar aspectos não triviais de comunicação e sincronização, encontrados de fato nos programas concorrentes. Assim, neste trabalho de mestrado foram desenvolvidos benchmarks livres de defeitos conhecidos e algumas versões de benchmarks com defeitos intencionalmente inseridos, baseados em taxonomias de defeitos. Esses benchmarks seguiram uma série de características bem definidas, contando ainda com uma documentação padronizada e completa. Os benchmarks foram validados através da condução de estudos experimentais, do uso em diferentes projetos de pesquisa e também com a verificação da sua aplicabilidade para fins educacionais. Os resultados obtidos demonstram que os benchmarks atingiram os objetivos para os quais foram propostos, gerando uma demanda controlada e qualificada sobre modelo, critérios e a ferramenta de teste desenvolvidos no projeto TestPar. Os experimentos realizados permitiram destacar pontos positivos e limitações desses artefatos. Outra aplicação dos benchmarks foi como recurso educacional para o ensino em disciplinas como programação concorrente. / The testing of concurrent programs is an activity that involves distinct perspectives. One of the most known refers to the development of new knowledge about criteria, models and testing tools to support this activity. Other perspective, as important as the first one and still incipient, is the evaluation of the testing activity of concurrent programs with respect to its efficiency and effectiveness in revealing errors hard to detect. The TestPar project under development at ICMC/USP has addressed both these two perspectives over the past years, where new testing technologies are being proposed and evaluated systematically. This project belongs to the context of the TestPar project, aiming to improve the evaluation of the testing activity of concurrent programs through the development of benchmarks specific for this context. This evaluation represents a challenge to the testing area, which must consider benchmarks simple enough to be validated manually, if necessary, but also complex enough to exercise not trivial aspects of communication/synchronization, found in programs used indeed. Thus, in this work it were developed bug-free benchmarks and some versions of faulty benchmarks with bugs inserted, based on error taxonomies. These benchmarks followed a series of well-defined features, including also a standardized and complete documentation. Benchmarks were validated by means of diferent scenarios: experimental studies, their use by different on-going research projects and also with the verification of their applicability for educational aims. The results obtained show that our benchmarks have achieved their objectives, generating a controlled and qualified demand on model, criteria and the tool developed under TestPar project. The experiments reveal strengths and limitations of these artifacts. Benchmarks have been also used as educational resources for the teaching of concurrent programs.
336

Um ambiente para programação orientada a objetos distribuídos e paralelos em grades computacionais. / An environment for distributed and parallel object-oriented programming for grid computing.

Bianchini, Calebe de Paula 22 January 2009 (has links)
Grades Computacionais (grid computing) já é uma realidade tanto no meio acadêmico quanto no meio empresarial. Seu uso se tornou popular principalmente devido à divulgação dos trabalhos nesta área e pela propaganda de produtos e softwares que oferecem essa idéia. Apesar disso, ambientes para o desenvolvimento de aplicações orientadas a objetos em Java para uma infra-estrutura de grid ainda é escasso. Algumas iniciativas oferecem bibliotecas para este desenvolvimento. Outras utilizam paradigmas diferentes, como o de passagem de mensagem, para o desenvolvimento de aplicações. Além disso, a própria infra-estrutura de grid, formada por diferentes domínios administrativos com diferentes políticas de segurança e uso, impede que as aplicações sejam executadas nos diversos níveis existentes no grid. Estes níveis, formados por computadores e clusters de computadores com nós de execução, possuem endereçamento privado, impossibilitando que as aplicações alocadas em cada um desses computadores/nós, em diferentes domínios e diferentes endereços, se comuniquem de forma transparente. Visando uma solução para esses problemas, esta tese apresenta um ambiente para programação orientada a objetos distribuídos e paralelos, em Java, denominado J4GE. Nesse ambiente, o modelo orientado a objetos é base para a distribuição das classes, métodos e atributos existente em uma aplicação. Além disso, o ambiente oferece transparência no acesso aos objetos espalhados pelo grid através de um Serviço de Mensagem, independente do nível onde o recurso, computador ou nó, se encontra. Essa transparência permite também que o programador utilize a plataforma Java sem a necessidade de aprender ou conhecer novas bibliotecas ou paradigmas, diminuindo o esforço no desenvolvimento de aplicações para grid. E, juntamente com os recursos da plataforma Java e do ambiente J4GE, é possível criar objetos distribuídos com comportamento paralelo e concorrente, trazendo maior eficiência para a execução da aplicação. / Grid computing is already a reality both in academic and business world. Its use has become popular mainly because of the projects in this area and the advertising of products and software that offer this idea. Nevertheless, environments for development of object-oriented applications in Java for grid infrastructure are still scarce. Some initiatives offer libraries for this development. Others use different paradigms such as the message-passing for development of applications. Moreover, the infrastructure of grid, formed by different administrative domain with different security policies, prevents the execution of applications at various levels in the grid. These levels, formed by computers and clusters of computers with execution nodes, have private addresses, make impossible the transparent communication of the applications allocated in each of these computers at different levels in different domains. Focused on these problems, this thesis presents an environment for distributed and parallel object-oriented programming in Java, called J4GE. In this environment, the object-oriented model is the basis for the distribution of classes, methods and attributes in an existing application. Moreover, the environment offers transparency in objects access around the grid through a Message Service, regardless the level where is the resource, or the computer, or the execution node. This transparency also allows the programmer to use the Java platform without knowing or learning new libraries or paradigms, reducing the effort in developing applications for grid. The resources of the Java platform and the environment J4GE together can create distributed objects with parallel and concurrent behavior, bringing greater efficiency to the application.
337

Geração de propriedades sobre programas Java a partir de objetivos de teste / Generation of Java program properties from test purposes

Hanazumi, Simone 29 October 2015 (has links)
Com a presença cada vez maior de sistemas computacionais e novas tecnologias no cotidiano das pessoas, garantir que eles não falhem e funcionem corretamente tornou-se algo de extrema importância. Além de indicar a qualidade do sistema, assegurar seu bom funcionamento é essencial para se evitar perdas, desde financeiras até de vidas. Uma das técnicas utilizadas para esta finalidade é a chamada verificação formal de programas. A partir da especificação do sistema, descrita numa linguagem formal, são definidas propriedades a serem satisfeitas e que certificariam a qualidade do software. Estas propriedades devem então ser implementadas para uso num verificador, que é a ferramenta responsável por executar a verificação e informar quais propriedades foram satisfeitas e quais não foram; no caso das propriedades terem sido violadas, o verificador deve indicar aos desenvolvedores os possíveis locais com código incorreto no sistema. A desvantagem do uso da verificação formal é, além do seu alto custo, a necessidade de haver pessoas com experiência em métodos formais para definir propriedades a partir da especificação formal do sistema, e convertê-las numa representação que possa ser entendida pelo verificador. Este processo de definição de propriedades é particularmente complexo, demorado e suscetível a erros, por ser feito em sua maior parte de forma manual. Para auxiliar os desenvolvedores na utilização da verificação formal em programas escritos em Java, propomos neste trabalho a geração de representação de propriedades para uso direto num verificador. As propriedades a serem geradas são objetivos de teste derivados da especificação formal do sistema. Estes objetivos de teste descrevem o comportamento esperado do sistema que deve ser observado durante sua execução. Ao estabelecer que o universo de propriedades corresponde ao universo de objetivos de teste do programa, garantimos que as propriedades geradas em nosso trabalho descrevem o comportamento esperado do programa por meio de caminhos de execução que levam a um estado de aceitação da propriedade, ou a um estado de violação. Assim, quando o verificador checa o objetivo de teste, ele consegue dar como resultado o veredicto de sucesso ou falha para a propriedade verificada, além de dados da cobertura dos caminhos de execução do programa que podem ser usados para análise do comportamento do programa que levou ao sucesso ou falha da propriedade verificada. / The task of guaranteeing that computational systems do not fail and work correctly has become extremely important with the growing presence of new technologies in people\'s lives. Therefore, it is essential to ensure that such systems work properly to confirm their high-quality and to avoid financial and even life losses. One of the techniques used to this purpose is called formal verification of programs. From the system specification, which should be described in a formal language, we define properties that must be satisfied during system execution to guarantee the software quality. Then, these properties are checked using a verifier, which is the tool responsible for running the verification and for notifying whether the property was satisfied by the program; if the property was violated, it indicates to software developers the possible location of faults in the system. The disadvantages of using formal verification are the high cost to apply this technique in practice, and the necessity of having people with experience in formal methods to derive the properties from system specification and define them in a formal representation that can be read by a program verifier. This particular task of deriving a property from system specification and defining it to be checked by a verifier is complex, time-consuming and error-prone, since it is usually done by hand. To help software developers in the application of formal verification in Java programs, we propose in this work the generation of properties formal representation for direct use in a verifier. The generated properties are test purposes, which are derived from system formal specification and present the desirable system behavior that must be observed during the system execution. Establishing that the universe of properties correspond to the universe of test purposes of a program, we guarantee that the generated properties describe the expected program behavior through execution traces that lead to either an accept state or a refuse state. Thus, when the verifier checks the test purpose, it can give a success/fail verdict for the property, and provide traces coverage data that can be used to analyze the program behavior that led to that verdict.
338

Implementação de um gerenciador de redes overlay para o GridSim / Implementation of an overlay network manager for GridSim

Sabatine, Ricardo José 11 November 2010 (has links)
Computação em grade tem se estabelecido como um importante paradigma de computação, por permitir lidar com grandes quantidades de cálculos e dados e a colaboração de participantes geograficamente distribuídos. Esses sistemas devem ser organizados de forma completamente distribuídas, com cada participante mantendo informações sobre outros participantes, e as informações necessárias ao funcionamento do sistema circulando pela rede de overlay resultante. Quando novas propostas de algoritmos, protocolos ou infraestruturas para a grade são apresentadas, sua avaliação efetiva implica considerar sua operação com uma grande quantidade de participantes, o que invariavelmente significa que simulações devem ser realizadas. Este trabalho apresenta um sub-sistema de simulação de redes de overlay integrado à plataforma de simulação de computação de grade GridSim, de forma a facilitar o estudo desse tipo de estruturas e o desenvolvimento de novas propostas de protocolos e algoritmos para seu uso em grades de computadores. A metodologia adotada resultou no desenvolvimento de um Java package no GridSim com classes e interfaces que representam os conceitos básicos de redes de overlay e da interface dos clientes com essas redes. A partir dele foi possível desenvolver protocolos para redes estruturadas e não estruturadas no simulador e simulá-los utilizando cenários de grade de dados. Com os resultados obtidos foi possível observar que, os protocolos implementados no simulador estão de acordo com o que é encontrado na literatura. / Grid Computing has been established as an important computing paradigm, since it allows dealing with a large quantity of computations and data and the collaboration of geographically distributed participants. Those systems must be organized in a completely distributed way, with each participant knowing about some other participants, and the needed information to the functioning system circulating through the resulting overlay network. When new algorithm proposals, protocols or infrastructures to the grid are presented, its evaluation implies to consider its operation with a large number of participants, which invariably means that simulations must be done. This work presents a subsystem of overlay network simulation integrated to the GridSim simulation platform, in order to facilitate the study of that type of structures and the development of new protocols and algorithms for use in grid computers. The adopted methodology led up to the development of a Java package with classes and interfaces that represent the basic concepts of overlay networks and of the clients interface with those networks. Using this package, it was possible for develop protocols to structured and non-structured networks in the simulator and simulate them using data grid scenarios. With the obtained results it was possible to observe that the implemented protocols in the simulator agree with what is found in the literature.
339

Ambiente de testes utilizando verificação de componentes java com tratamento de exceções / Test environment using property checking of Java components with exception handling

Xavier, Kleber da Silva 17 April 2008 (has links)
Um sistema de software que apresente problemas em sua execução pode gerar conseqüências desde um simples incômodo ao usuário, até desastres como a perda de uma sonda da NASA em Marte. As atividades de teste visam identificar erros nos sistemas de software, prevenindo estas conseqüências indesejáveis. Porém, os testes podem envolver entre 30% e 40% do esforço de desenvolvimento do sistema, e em sistemas críticos, seu custo pode ser de 3 a 5 vezes maior do que o custo combinado das demais atividades. Para tentar reduzir estes custos podemos automatizar parte das atividades. No presente caso, pretende-se minimizar os casos de teste gerados manualmente, utilizando uma técnica denominada verificação de modelos. Esta técnica consiste em verificar propriedades definidas formalmente através de expressões matemáticas, utilizando uma ferramenta de verificação que simula a execução do código. Além disso, um sistema que utilize um tratamento de condições excepcionais eficiente, tem sua manutenibilidade, robustez e confiabilidade melhoradas. Por isso, definimos propriedades relacionadas ao tratamento de exceções, como ponto de entrada para a verificação de modelos. Apresentamos um ambiente de testes criado para permitir a verificação destas propriedades com o verificador Java PathFinder e a exibição das estatísticas de cobertura de testes de acordo com o critério selecionado. Este ambiente facilita a execução dos testes, pois apresenta uma interface gráfica com o usuário que permite a configuração e execução dos testes sem que seja necessária a escrita de código pelo testador. Apresentamos também o resultado do uso deste ambiente para o teste de vários programas exemplo, utilizando desde código concorrente até diferentes estratégias de tratamento de exceção e discutimos as características, cuidados no uso e limitações das ferramentas utilizadas. / A software system that shows some failure at runtime execution may bring consequences that range from a simple user annoyance to great disasters such as the lost NASA probe on Mars. The test activities aim to find errors in software systems, preventing these undesirable consequences. However, tests may take between 30% and 40% of total development time, and on critical systems, its cost can be from 3 to 5 times greater than the combined cost of the other activities. In an effort to reduce these costs, we may automate some of the activities. In this work we intend to minimize test case manual generation, using a technique called model checking. This technique involves the checking of properties defined through the use of mathematical formulas, using a tool, that simulates code execution. In addition, a system with an efficient exception handling mechanism, has its maintainability, robustness and reliability enhanced. So, in this work we define exception handling related properties, as an input for model checking. We present a test tool created to allow checking of these properties using the Java PathFinder model checker, and to list the test coverage statistics, according to the selected test criteria. This tool makes easy the test execution, since it presents a graphical user interface that allows configuration and running of tests with no need to write any lines of code. We also show the results of running several tests with the GUI, using some programs implemented with concurrent code and several exception handling techniques and discuss the main features, pitfalls and limitations of the underlying tools.
340

Teste e verificação formal do comportamento excepcional de programas Java / Testing and formal verification of the exceptional behavior of Java programs

Martins, Alexandre Locci 09 June 2014 (has links)
Estruturas de tratamento de exceção são extremamente comuns em softwares desenvolvidos em linguagens modernas, como Java, e afetam de forma contundente o comportamento de um software quando exercitadas. Apesar destas duas características, as principais técnicas de verificação, teste de software e verificação formal, e as ferramentas a elas vinculadas, tendem a negligenciar o comportamento excepcional. Alguns dos fatores que levam a esta negligência são a não especificação do comportamento excepcional em termos de projeto e a consequente implementação das estruturas de tratamento com base no julgamento individual de cada programador. Isto resulta na não consideração de partes expressivas do código em termos de verificação e, consequentemente, a possibilidade de não serem detectados erros relativos tanto às próprias estruturas de tratamento quanto às estruturas de código vinculadas a estas. A fim de abordar este problema, propomos uma técnica, baseada em model checking, que automatiza o processo de exercício de caminhos excepcionais. Isto permite que seja observado o comportamento de um software quando da ocorrência de uma exceção. Pretendemos, com esta técnica, dar suporte para que seja aplicado aos caminhos que representam o comportamento excepcional de um software as mesmas técnicas de detecção de erros que são aplicadas aos caminhos que representam o comportamento normal e, com isso, agregar um aumento na qualidade do desenvolvimento de software. / Software developed in modern languages, such as Java, commonly present structures of exception handling. These structures, when exercised, may affect the software behavior. Despite these two characteristics, the main verification techniques, software testing and formal verification and the tools related to them, tend to neglect the exceptional behavior. The nonexistent specification of software exceptional behaviors at the design level, and, the subsequent implementation of exception handling based on the judgment of each programmer, are some factors that lead to this neglect. These factors result in the non-consideration of the expressive parts of the code in verification terms and, consequently, the impossibility of errors detection concerning either the exception treatment structures or the code structures linked to them. Taking this fact into consideration, we propose a technique based on the model checking process, which automates the process of exercising exceptional paths to address this problem. This allows the observation of the software behavior when an exception occurs. With this technique, we intend to support the application of the same error detection techniques for program normal behavior paths to the paths that represent the software exceptional behavior. Therefore, using the proposed technique, we aim to increase the software development quality.

Page generated in 0.0412 seconds