• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 166
  • 6
  • 1
  • 1
  • 1
  • 1
  • 1
  • Tagged with
  • 172
  • 172
  • 172
  • 86
  • 52
  • 42
  • 38
  • 37
  • 33
  • 23
  • 22
  • 20
  • 18
  • 17
  • 16
  • 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.
91

Definição de classes para comunicação Unicast e Multicast

Amaral, Jeferson Botelho do January 2001 (has links)
No projeto de arquiteturas computacionais, a partir da evolução do modelo cliente-servidor, surgiram os sistemas distribuídos com a finalidade de oferecer características tais como: disponibilidade, distribuição, compartilhamento de recursos e tolerância a falhas. Estas características, entretanto, não são obtidas de forma simples. As aplicações distribuídas e as aplicações centralizadas possuem requisitos funcionais distintos; aplicações distribuídas são mais difíceis quanto ao projeto e implementação. A complexidade de implementação é decorrente principalmente da dificuldade de tratamento e de gerência dos mecanismos de comunicação, exigindo equipe de programadores experientes. Assim, tem sido realizada muita pesquisa para obter mecanismos que facilitem a programação de aplicações distribuídas. Observa-se que, em aplicações distribuídas reais, mecanismos de tolerância a falhas constituem-se em uma necessidade. Neste contexto, a comunicação confiável constitui-se em um dos blocos básicos de construção. Paralelamente à evolução tanto dos sistemas distribuídos como da área de tolerância a falhas, foi possível observar também a evolução das linguagens de programação. O sucesso do paradigma de orientação a objetos deve-se, provavelmente, à habilidade em modelar o domínio da aplicação ao invés da arquitetura da máquina em questão (enfoque imperativo) ou mapear conceitos matemáticos (conforme o enfoque funcional). Pesquisadores demonstraram que a orientação a objetos apresenta-se como um modelo atraente ao desenvolvimento de aplicações distribuídas modulares e tolerantes a falhas. Diante do contexto exposto, duas constatações estimularam basicamente a definição desta dissertação: a necessidade latente de mecanismos que facilitem a programação de aplicações distribuídas tolerantes a falhas; e o fato de que a orientação a objetos tem-se mostrado um modelo promissor ao desenvolvimento deste tipo de aplicação. Desta forma, nesta dissertação definem-se classes para a comunicação do tipo unicast e multicast, nas modalidades de envio confiável e não-confiável. Além destes serviços de comunicação básicos, foram desenvolvidas classes que permitem referenciar os participantes da comunicação através de nomes. As classes estão organizadas na forma de um pacote, compondo um framework. Sua implementação foi desenvolvida usando Java. Embora não tivessem sido requisitos básicos, as opções de projeto visaram assegurar resultados aceitáveis de desempenho e possibilidade de reuso das classes. Foram implementados pequenos trechos de código utilizando e testando a funcionalidade de cada uma das classes de comunicação propostas.
92

Implementação de multitarefa sobre arquitetura Java embarcada FemtoJava / Multitask implementation into femtojava embedded architecture

Rosa Junior, Leomar Soares da January 2004 (has links)
Cada vez mais equipamentos eletrônicos digitais têm sido fabricados utilizando um sistema operacional embarcado. Por razões de custo, estes sistemas operacionais são implementados sobre um hardware com os requisitos mínimos para atender as necessidades da aplicação. Este trabalho apresenta um estudo sobre a viabilidade de implementação de suporte a multitarefa sobre a arquitetura FemtoJava, um microcontrolador monotarefa dedicado a sistemas embarcados. Para tanto, o suporte de hardware necessário é adicionado à arquitetura. Também são implementados dois escalonadores de tarefas diretamente em bytecodes Java, visando à otimização de área e o compromisso com desempenho e consumo de energia. Modificações no ambiente de desenvolvimento e uma ferramenta de relocação de endereços são propostas, objetivando a utilização dos escalonadores de tarefas implementados junto ao fluxo de desenvolvimento existente. Por fim, uma análise é realizada sobre o impacto que a capacidade de multitarefa produz no sistema em termos de desempenho, consumo de área e energia. / Most digital electronic equipments are produced using an embedded operating system. Due to economic reasons, these operating systems are implemented on hardware with minimal requirements to support the application needs. This work will present a viability study to implement multitask support on the FemtoJava architecture, a monotask microcontroller dedicated to embedded applications. The support to multitask involves the addition of specific hardware mechanisms to the architecture. Two different scheduling policies are then directly implemented using Java bytecodes, aiming area optimization as well as a good performance/energy-consumption trade-off. Some modifications in the development environment and a code relocation tool were introduced, in order to enable the use of the schedulers in the existing design tool flow. Finally, an analysis is performed to evaluate the impact that the multitask support produces in the system with respect to the final performance, area and energy consumption.
93

Uso da técnica VLIW para aumento de performance e redução do consumo de potência em sistemas embarcados baseados em Java / Using the VLIW technique to increase performance and to reduce power comsumption in embedded systems based on Java

Beck Filho, Antonio Carlos Schneider January 2004 (has links)
A contribuição deste trabalho foi orientada principalmente ao desenvolvimento de alternativas de hardware para a execução nativa de bytecodes Java em sistemas embarcados que naturalmente possuem restrições quanto à potência consumida, ao desempenho e à área ocupada. Primeiramente, o desenvolvimento do Femtojava Low- Power demonstra que a utilização de um pipeline e de um banco de registradores interno em arquiteturas de pilha resultam em uma redução significativa no consumo de potência. Após, a técnica de folding, que basicamente transforma várias operações de pilha em uma operação tipo RISC, é avaliada. A análise de uma segunda solução arquitetural, baseada em VLIW (Very Long Instruction Word), também traz resultados satisfatórios na redução do consumo de potência, sendo que a paralelização do código, feita por um analisador desenvolvido, é facilitada devido à utilização de uma arquitetura de pilha. O desempenho e a potência consumida de todas as arquiteturas propostas neste trabalho foram validadas utilizando-se o simulador CACO-PS, também desenvolvido no contexto desta dissertação. Os estudos de caso adotados para a validação das alternativas arquiteturais compreenderam algoritmos matemáticos, de ordenação, busca e processamento de sinais, bastante utilizados no domínio de sistemas embarcados. Resultados promissores principalmente em termos de energia consumida são alcançados, assim como na disponibilização de diferentes arquiteturas para a execução nativa de Java, principal proposta deste trabalho. / The main contribution of this work was the development of hardware alternatives for native execution of Java bytecodes for embedded systems that have power, performance and area constraints. Firstly, the development of the Femtojava Low- Power shows that the use of a pipeline and an internal register bank in stack architectures brings a significant reduction in the power consumption. After that, the folding technique, that basically changes a set of stack operations into a simple RISC one, is evaluated. Then, the analysis of a second architectural solution, based on VLIW (Very Long Instruction Word), demonstrates also good results concerning power consumption. Moreover, it is shown that the parallelization of the code is facilitated due to the specific stack architecture. The power consumption and performance of all architectures here proposed were evaluated using the CACO-PS simulator, which was also developed in this work. The case studies adopted for the validation of the architectures were mathematic, sort, search and DSP algorithms, widely used in the embedded system domain. Promising results mainly in energy consumption were achieved, as well as the disponibilization of different architectures for native execution of Java, the main objective of this work.
94

Nprof : uma ferramenta para monitoramento de aplicações distribuídas / Nprof : a monitoring tool for distributed applications

Brugnara, Telmo January 2006 (has links)
A crescente complexidade dos programas de computador e o crescimento da carga de trabalho a qual eles são submetidos têm sido tendências recorrentes nos sistemas computacionais, em especial para sistemas distribuídos como aplicações web e sistemas corporativos. O aumento da carga de trabalho gera uma demanda por sistemas que façam melhor uso dos recursos computacionais disponíveis, enquanto a maior complexidade gera uma demanda por sistemas que se preocupem em minimizar o número de erros. Portanto, podem-se identificar dois objetivos a serem perseguidos pelos desenvolvedores de sistemas de software: melhorar o desempenho e aumentar a confiabilidade dos sistemas. A fim de alcançar os objetivos expostos, são desenvolvidos sistemas de monitoramento para automatizar a coleta e análise de dados sobre os sistemas computacionais alvo. O presente trabalho visa contribuir nos seguintes aspectos: na identificação dos dados relevantes para o monitoramento de aplicações distribuídas desenvolvidas para a plataforma Java; e na criação de uma ferramenta de monitoramento de aplicações distribuídas, explorando os novos recursos do JDK 1.5, bem como os recursos já disponíveis em Java, como carga dinâmica de classes e transformação de bytecodes A fim de avaliar a ferramenta proposta foram elaborados três estudos de caso: um utiliza uma aplicação existente sem necessidade de sua adaptação; outro avalia a sobrecarga da ferramenta frente a diferentes parâmetros; e o terceiro avalia o monitoramento de um sistema distribuído. Entende-se que a ferramenta atinge o objetivo de monitoramento de aplicações distribuídas, por meio da incorporação de técnicas e APIs distintas, ao permitir: o monitoramento de uma aplicação distribuída por meio do monitoramento de diversos nodos de tal aplicação concomitantemente; e a visualização das informações coletadas de forma online. Adicionalmente, a coleta simultânea de dados de diferentes nodos de uma aplicação distribuída pode ser útil para a descoberta de relações entre eventos que ocorrem durante a execução de tal aplicação. / The growing complexity of software and the increasing workload to which systems have been submitted are known trends in the computing system field, especially when distributed and web systems are considered. The increasing workload generates demand for systems that can make a better use of computing resources, while the increment of system complexity demands specific actions to prevent design faults. Therefore, software engineers have two main objectives to be concerned with: optimization and dependability. In order to accomplish these objectives, monitoring systems have been proposed to gather data from running systems so that their behavior can be analyzed. The present dissertation intends to contribute in the following domains: identifying relevant metrics for monitoring distributed Java applications; and developing a tool to monitor and profile distributed applications, using the new resources available in JDK 1 .5 as well as some already known techniques like dynamic classloading and bytecode instrumentation. In order to evaluate the proposed tool, three test cases have been developed: one with a well known application running without modification; another for evaluating the tools’ overhead in different scenarios; and a third one to evaluate a distributed application been monitored. We understand that the proposed tool is successful in monitoring distributed applications by the use of distinct APIs and techniques because: Nprof can monitor a distributed application by monitoring different nodes of the application simultaneously; and Nprof allows the online visualization of the collected data. Also, simultaneous collection of data from different nodes of a distributed application can be useful for discovering relations among events that occur during the execution of the application.
95

Javarray : uma arquitetura reconfigurável para o aumento de performance e economia de energia de aplicações embarcadas baseadas em Java / Javarray : a reconfigurable architecture for performance speedup and energy saving of embedded Java applications

Otero, João Cláudio Soares January 2006 (has links)
A popularidade da linguagem Java no mercado de sistemas embarcados está aumentando como uma alternativa à necessidade de compatibilidade de software e ao crescimento da complexidade das aplicações, notadamente em eletrônica de consumo e automação industrial, mercado que também está se expandindo. Apesar de um melhor gerenciamento da complexidade do software permitido pela linguagem Java, as restrições de necessidade de economia de energia, baixo consumo de potência e necessidade de desempenho impostas aos sistemas embarcados, com especial ênfase aos sistemas portáteis, são potencializadas. Entretanto, as características da Java Virtual Machine, baseada em uma máquina de pilha, abrem possibilidades de otimização do processamento de aplicações embarcadas inerentes às máquinas de pilha e ainda não devidamente exploradas pelos processadores Java atuais. Com a aplicação de tradução binária ao código Java e utilização de técnicas de reconfiguração, consegue-se obter aumento de performance com simultânea economia de energia, permitindo-se uma melhor adequação da execução das aplicações Java para o domínio dos sistemas embarcados. Este trabalho apresenta uma unidade reconfigurável de granularidade grossa, o Javarray, a ser acoplada a um processador de execução Java nativa, destinada à execução otimizada dos blocos básicos mais representativos das aplicações embarcadas Java. Dessa forma, conseguimos explorar ILP de uma maneira simples e com a reconfiguração de poucos blocos básicos obtivemos uma redução no número de instruções executadas em até 42%, aumentamos o desempenho das aplicações em até 2,6 vezes e obtivemos economias de energia de até 64%, ao mesmo tempo em que mantivemos compatibilidade de software com as aplicações Java, e em muitos casos obtivemos simultânea redução na potência consumida. Esses dados referem-se a um conjunto de 3 aplicações específicas utilizadas por nosso grupo. A topologia básica do Javarray é desenvolvida a partir da análise de profiles de aplicações embarcadas, a partir da qual algumas variações organizacionais são exploradas. Em especial, desenvolveu-se uma arquitetura seqüencial, que habilita a utilização de técnicas de pipeline no Javarray, permitindo a exploração de paralelismo de mais alto nível. Como produto secundário dos esforços pela busca de economia de energia através do aumento de desempenho – foco deste trabalho – apresenta-se então os primeiros estudos acerca da possibilidade de execução de processamento do tipo stream em um pipeline de instruções reconfiguráveis no Javarray, aumentando dessa forma o IPC e reduzindo o impacto do consumo estático de energia. / Althought with a better management of the softwares’ complexity, allowed by the Java language, the restrictions of energy saving, low power consumption and the need of performance imposed to the embedded systems, with special emphasis to the mobile systems, are potentialized The popularity of the Java language in the embedded systems market is increasing as an alternative to the software compatibility necessity and the applications’ complexity growth, notably at consumption electronic and industrial automation, market which is also expanding. However, the characteristics of Java Virtual Machine, based upon a stack machine, open new possibilities to the optimization of embedded systems processing inherent to the stack machines and not yet properly explored by the actual Java processors. With the exploitation of binary translation to the Java code and the use of reconfiguration techniques, we can improve the performance with simultaneous energy savings, achieving achieving a better fit of Java applications execution to the embedded systems domain. This work presents a coarse grain reconfigurable unit, the Javarray, to be coupled to a native execution Java microcontroller, designed to the optimized execution of the embedded systems applications more representative basic blocks. With this, we can explore ILP in a simple way and reduce the number of the executed instructions up to 42%, improving the performance up to 2.6 times and saving energy up to 64%, at the same time in which allowing for Java compatibility and, in many cases, still having less power consumption. This data refer to a set of 3 specific applications used by our research group. The basic Javarray topology is developed from the analysis of the embedded application profiles, form which some organizational variations are explored. In special, it was designed a sequential architecture, which enables the use of pipeline techniques on the Javarray, allowing for the exploitation of coarser grains parallelism. As a secondary product of the search for the energy savings through the performance speedup – focus of this work – it is presented the first studies about the possibility of stream-based processing execution in a pipeline of reconfigurable instructions on the Javarray, this way increasing the IPC and reducing the static energy consumption impact.
96

JavaRMS : um sistema de gerência de dados para grades baseado num modelo par-a-par / JavaRMS: a grid data management system based on a peer-to-peer model

Gomes, Diego da Silva January 2008 (has links)
A grande demanda por computação de alto desempenho culminou na construção de ambientes de execução de larga escala como as Grades Computacionais. Não diferente de outras plataformas de execução, seus usuários precisam obter os dados de entrada para suas aplicações e muitas vezes precisam armazenar os resultados por elas gerados. Apesar de o termo Grade ter surgido de uma metáfora onde os recursos computacionais estão tão facilmente acessíveis como os da rede elétrica, as ferramentas para gerenciamento de dados e de recursos de armazenamento disponíveis estão muito aquém do necessário para concretizar essa idéia. A imaturidade desses serviços se torna crítica para aplicações científicas que necessitam processar grandes volumes de dados. Nesses casos, utiliza-se apenas os recursos de alto desempenho e assegura-se confiabilidade, disponibilidade e segurança para os dados através de presença humana. Este trabalho apresenta o JavaRMS, um sistema de gerência de dados para Grades. Ao empregar um modelo par-a-par, consegue-se agregar os recursos menos capacitados disponíveis no ambiente de Grade, diminuindo-se assim o custo da solução. O sistema utiliza a técnica de nodos virtuais para lidar com a grande heterogeneidade de recursos, distribuindo os dados de acordo com o espaço de armazenamento fornecido. Empregase fragmentação para viabilizar o uso dos recursos menos capacitados e para melhorar o desempenho das operações que envolvem a transferência de arquivos. Utiliza-se replicação para prover persistência aos dados e para melhorar sua disponibilidade. JavaRMS lida ainda com a dinamicidade e a instabilidade dos recursos através de um modelo de estados, de forma a diminuir o impacto das operações de manutenção. A arquitetura contempla também serviços para gerenciamento de usuários e protege os recursos contra fraudes através de um sistema de cotas. Todas as operações foram projetadas para serem seguras. Por fim, disponibiliza-se toda a infra-estrutura necessária para que serviços de busca e ferramentas de interação com o usuário sejam futuramente fornecidos. Os experimentos realizados com o protótipo do JavaRMS comprovam que usar um modelo par-a-par para organizar os recursos e localizar os dados resulta em boa escalabilidade. Já a técnica de nodos virtuais se mostrou eficiente para distribuir de forma balanceada os dados entre as máquinas, de acordo com a capacidade de armazenamento oferecida. Através de testes com a principal operação que envolve a transferência de arquivos, comprovou-se que o modelo é capaz de melhorar significativamente o desempenho de aplicações que necessitam processar grandes volumes de dados. / Large scale execution environments such as Grids emerged to meet high-performance computing demands. Like in other execution platforms, its users need to get input data to their applications and to store their results. Although the Grid term is a metaphor where computing resources are so easily accessible as those from the eletric grid, its data and resource management tools are not sufficiently mature to make this idea a reality. They usually target high-performance resources, where data reliability, availability and security is assured through human presence. It turns to be critical when scientific applications need to process huge amounts of data. This work presents JavaRMS, a Grid data management system. By using a peer-topeer model, it aggregates low capacity resources to reduce storage costs. Resource heterogeneity is dealt with the virtual node technique, where peers receive data proportionally to their provided storage space. It applies fragmentation to make feasible the usage of low capacity resources and to improve file transfer operations performance. Also, the system achieves data persistence and availability through replication. In order to decrease the impact of maintenance operations, JavaRMS deals with resource dinamicity and instability with a state model. The architecture also contains user management services and protects resources through a quota system. All operations are designed to be secure. Finally, it provides the necessary infrastructure for further deployment of search services and user interactive tools. Experiments with the JavaRMS prototype showed that using a peer-to-peer model for resource organization and data location results in good scalability. Also, the virtual node technique showed to be efficient to provide heterogeneity-aware data distribution. Tests with the main file transfer operation proved the model can significantly improve data-intensive applications performance.
97

MD-JPA : um perfil UML para modelagem do mapeamento objeto-relacional com JPA em uma abordagem dirigida por modelos / MD-JPA:a UML profile for object relational mapping with JPA in a model driven approach

Torres, Alexandre January 2009 (has links)
A abordagem de desenvolvimento dirigido por modelos (DDM) propõe que modelos (e transformações entre modelos) assumam o papel principal no desenvolvimento de sistemas. Entretanto, não há uma notação consensual para modelagem de persistência baseada em arcabouços de mapeamento objeto-relacional: enquanto a UML não possui recursos específicos para a modelagem de persistência, o modelo entidade-relacionamento não expressa os conceitos dinâmicos existentes na UML. Este trabalho propõe o perfil UML MD-JPA (Model Driven JPA) para a modelagem de persistência baseada na já difundida API de persistência Java (JPA), buscando a modelagem dos elementos persistentes e transientes de forma mais coerente e integrada. São especificadas as principais características do perfil MD-JPA, assim como a maneira pela qual modelos que adotam este perfil podem ser transformados em implementação Java, através de transformações de modelos propostas em uma abordagem DDM. Por fim, uma ferramenta de código livre foi desenvolvida para disponibilizar para comunidade os resultados deste trabalho. / The model driven development (MDD) approach proposes that models (and modelto- model transformations) play the main role on system development. However, there is not a consensual notation to model persistence based upon object relational mapping frameworks: while UML lacks specific resources for persistence modeling, the entityrelationship model does not make reference to the dynamic concepts existing in UML. This work proposes MD-JPA, a UML profile for persistence modeling based on the well-known Java Persistence API (JPA), pursuing the modeling of transient and persistent elements in a more coherent and integrated way. This work describes the main characteristics of MD-JPA as well as the way that models that adopt such profile can them be used to generate a Java implementation by the application of the proposed model transformations on a MDD approach. Finally, an open source tool was developed to make the results of this work available to the community.
98

Inference rules for generic code migration of aspect-oriented programs

Rubbo, Fernando Barden January 2009 (has links)
The latest versions of AspectJ { the most popular aspect oriented extension for Java { must cope with complex changes that occurred in the Java type system, specially with the parametric polymorphism which aims to improve the type safety and the readability of the source code. However, for legacy and non-generic constructions to take advantage of this pervasive feature, they must be migrated to explicitly supply actual type parameters in both declarations and instantiations of generic classes. Even though the type systems of Java and AspectJ were designed to support this kind of migration in a gradual way, this process is somewhat complex and error prone. The reason behind this assertion is that actual type parameters must be inferred to remove as much unsafe downcasts as possible without a ecting the original semantics of the program. Therefore, tools are essential to minimize the e ort of a manual application of the refactoring steps and to prevent the introduction of new errors. Since current automated solutions focus only on Java programs, they do not consider the use of aspects to encapsulate crosscutting concerns. Thus, this dissertation proposes a novel collection of inference rules to derive type constraints for the polymorphic version of AspectJ. These rules were used together with an existing generic migration algorithm to enable the conversion of non-generic legacy code to add actual type parameters in both Java and AspectJ languages.
99

Injeção de falhas de comunicação em aplicações multiprotocolo / Communication fault injection in multi-protocol applications

Menegotto, Cristina Ciprandi January 2009 (has links)
Aplicações de rede com altos requisitos de dependabilidade devem ser testadas cuidadosamente em condições de falhas de comunicação para aumentar a confiança no seu comportamento apropriado na ocorrência de falhas. Injeção de falhas de comunicação é a técnica mais adequada para o teste dos mecanismos de tolerância a falhas destas aplicações em presença de falhas de comunicação. Ela é útil tanto para auxiliar na remoção de falhas como na previsão de falhas. Dentre as aplicações de rede, algumas são baseadas em mais de um protocolo, como UDP, TCP e RMI. Elas são denominadas multiprotocolo no contexto desse trabalho, que foca naquelas escritas em Java e baseadas em protocolos que estão acima do nível de rede na arquitetura TCP/IP. Um injetor de falhas de comunicação adequado, que trate todos os protocolos utilizados, é necessário para o seu teste. Caso a emulação de uma falha que afete a troca de mensagens não leve em consideração todos os protocolos simultaneamente utilizados, o comportamento emulado durante um experimento poderá ser diferente daquele observado na ocorrência de uma falha real, de modo que podem ser obtidos resultados inconsistentes sobre o comportamento da aplicação alvo em presença da falha. Muitos injetores de falhas de comunicação encontrados na literatura não são capazes de testar aplicações Java multiprotocolo. Outros possuem potencial para o teste dessas aplicações, mas impõem grandes dificuldades aos engenheiros de testes. Por exemplo, contrariamente ao enfoque deste trabalho, algumas ferramentas são voltadas à injeção de falhas de comunicação para o teste de protocolos de comunicação, e não de aplicações. Tal orientação ao teste de protocolos costuma levar a grandes dificuldades no teste de caixa branca de aplicações. Entre outros exemplos de dificuldades proporcionadas por ferramentas encontradas na literatura estão a incapacidade de testar diretamente aplicações Java e a limitação quanto aos tipos de falhas que permitem emular. A análise de tais ferramentas motiva o desenvolvimento de uma solução voltada especificamente ao teste de aplicações multiprotocolo desenvolvidas em Java. Este trabalho apresenta uma solução para injeção de falhas de comunicação em aplicações Java multiprotocolo. A solução opera no nível da JVM, interceptando mensagens de protocolos, e, em alguns casos, opera também no nível do sistema operacional, usando regras de firewall para emulação de alguns tipos de falhas que não podem ser emulados somente no nível da JVM. A abordagem é útil para testes de caixa branca e preta e possui características importantes como a preservação do código fonte da aplicação alvo. A viabilidade da solução proposta é mostrada por meio do desenvolvimento de Comform, um protótipo para injeção de falhas de comunicação em aplicações Java multiprotocolo que atualmente pode ser aplicado para testar aplicações Java baseadas em qualquer combinação dos protocolos UDP, TCP e RMI (incluindo as baseadas em um único protocolo). / Networked applications with high dependability requirements must be carefully tested under communication faults to enhance confidence in their proper behavior. Communication fault injection is the most suitable technique for testing the fault tolerance mechanisms of these applications under communication faults. The technique is useful both for helping in fault removal and for fault forecasting. Some networked applications are based on more than one protocol, such as UDP, TCP and RMI. They are called multi-protocol in the context of this work, that targets on those written in Java and based on protocols above Internet layer in TCP/IP architecture. A suitable communication fault injector, that properly handles all used protocols, is required for their test. If the emulation of a fault that affects message exchanging does not take into account all simultaneously used protocols, the behavior emulated in an experiment can be different from that observed under real fault occurrence. Therefore, inconsistent results about the target application’s behavior under faults can be obtained from the experiments. Many communication fault injectors found in literature are not capable of testing multi-protocol Java applications. Others can potentially test these applications, but they impose several drawbacks for test engineers. For instance, contrarily to the focus of this work, some tools aim to communication protocol testing and not to application testing. This orientation to protocol testing usually leads to great difficulties in white box testing of applications. Other examples of difficulties related to using tools found in literature include inability to directly test Java applications and limitations in respect to types of emulated faults. The analysis of the fault injectors found in literature motivates the development of a solution specifically aimed at testing multi-protocol applications written in Java. This work presents a solution for communication fault injection in multi-protocol Java applications. The solution works at JVM level, intercepting protocol messages, and, in some cases, it also operates at the operating system level, using firewall rules for the emulation of faults that could not be emulated at JVM level. The approach is useful for both white box and black box testing and has advantages such as preserving the target application’s source code. The viability of the proposed solution is shown by the development of a prototype tool called Comform, that is aimed at multi-protocol Java application testing. Comform can be applied to test Java applications based on any combination of UDP, TCP, and RMI (including those based on a single protocol).
100

Ambiente visual para programação distribuída em java

Malacarne, Juliano January 2001 (has links)
Em vista da maior complexidade da programação paralela e distribuída em relação à programação de ambientes centralizados, novas ferramentas vêm sendo construídas com o objetivo de auxiliar o programador desses ambientes a desempenhar sua tarefa de formas mais eficazes e produtivas. Uma das ferramentas que há algum tempo tem sido usada na programação centralizada e aos poucos está sendo empregada também na programação concorrente é a programação visual. A programação visual se vale da presença de elementos visuais na especificação dos programas como peças chaves do processo de desenvolvimento de software. No caso específico da programação concorrente, a programação visual é especialmente útil pela capacidade que os gráficos têm de representar de forma mais adequada estruturas bidimensionais. Um programa concorrente, por relacionar no espaço diversos elementos com seus próprios fluxos de execução, faz surgir duas dimensões de análise que são mais difíceis de serem observadas através de programas textuais. Atualmente existem ferramentas de programação visual paralela e distribuída, mas a ênfase é dada na programação paralela, sem muita atenção a aplicações de sistemas abertos ou cliente-servidor. Além disso, tais ferramentas sofrem da falta de apoio à engenharia do software. Considerando essas deficiências, este trabalho apresenta uma ferramenta de programação visual para o desenvolvimento de aplicações compostas por objetos distribuídos que ofereça também a possibilidade de aplicar os principais conceitos da engenharia de software, como reutilização e orientação a objeto. Nesta ferramenta, o programador especifica de maneira visual a estrutura do seu programa, insere o código textual para a lógica da aplicação e o ambiente se encarrega do tratamento da distribuição e da comunicação de mais baixo nível. A aplicação é representada como um grafo dirigido, onde os nodos representam os objetos distribuídos e os arcos indicam os relacionamentos existentes entre esses objetos. A especificação dos programas é modular, baseando-se na reunião de componentes reutilizáveis, o que torna o sistema altamente configurável e extensível. Tanto a implementação da ferramenta quanto o código das aplicações geradas usam a linguagem de programação Java. A linguagem de programação visual projetada não especifica detalhes a respeito de como irá funcionar a comunicação e distribuição dos objetos. Portanto, foram implementados componentes para comunicação e outros recursos de programação distribuída, como locks e dados globais para serem usados nas aplicações. Para validar os principais objetivos da ferramenta, foram implementados alguns exemplos de aplicações distribuídas, como um pequeno sistema de bate-papo.

Page generated in 0.1183 seconds