1000 resultados para Linguagem de programação (Computadores) - Semântica
Resumo:
O artigo apresenta uma ferramenta que auxilia na implementação de aplicações que empregam mais de uma linguagem de programação. Tais aplicações são ditas multilinguagens e quando as linguagens que as compõem representam diferentes paradigmas de programação, também são denominadas multiparadigmas. A técnica de programação multilinguagem permite que se utilize a linguagem de programação mais adequada à cada parte da aplicação. Em caso de equipes híbridas de programação podemos aproveitar o conhecimento de cada uma das equipes no uso das linguagens que irão compor a aplicação. A ferramenta descrita no artigo, implementada através de um conjunto de processos Win32, monitora e executa serviços de transferência de dados e controle entre os processos que compõem a aplicação. Através de uma interface gráfica o programador pode operá-la por meio de dois modos: desenvolvimento e execução. Dentre as áreas que poderiam se beneficiar com a a ferramenta, podemos citar a aplicação pedagógica relacionada ao ensino de paradigmas de programação, aplicações já existentes que necessitam estender-se com o emprego de outras linguagens de programação e aplicações cujos problemas envolvidos se constituem em diferentes paradigmas de programação.
Resumo:
Dispositivos adaptativos apresentam a característica de se modificarem dinamicamente em resposta a estímulos de entrada, sem interferência de agentes externos. Eventuais necessidades de modificação de comportamento são automaticamente detectadas por estes dispositivos para, em seguida, reagirem a elas de forma espontânea. Historicamente tais dispositivos emergiram das pesquisas na área de linguagens formais e autômatos. No entanto, o formalismo suscitou aplicações em diversas outras áreas. Programas com código auto-modificável, que perderam terreno em conseqüência do advento da Engenharia de Software nos anos 70, voltaram à vida recentemente em aplicações diversas. Uma das formas de programação de código auto-modificável é a utilização de linguagens de programação especificamente projetadas para isso. Linguagens adaptativas de programação são dispositivos adaptativos que empregam uma linguagem de programação convencional como mecanismo subjacente. Com o correr de sua execução, um programa escrito em uma linguagem adaptativa exibirá um comportamento auto-modificável em decorrência da ativação de suas ações adaptativas. O artigo apresenta aspectos do projeto e implementação de um ambiente para gerenciar a execução de uma linguagem adaptativa. Com o emprego de linguagem adaptiva, um novo estilo de programação é concebido, uma vez que o seu comportamento está diretamente associado ao conjunto de regras que o define, o qual se altera à medida que o código é executado.
Resumo:
O modelo de objetos apresenta-se como um modelo promissor para o desenvolvimento de software tolerante a falhas em virtude de características inerentes ao próprio modelo de objetos, tais como abstração de dados, encapsulamento, herança e reutilização de objetos (componentes). O uso de técnicas orientadas a objetos facilita o controle da complexidade do sistema porque promove uma melhor estruturação de seus componentes e também permite que componentes já validados sejam reutilizados [LIS96]. Técnicas básicas para tolerância a falhas em software baseiam-se na diversidade de projeto e de implementação de componentes considerados críticos. Os componentes diversitários são gerenciados através de alguma técnica que tenha por objetivo assegurar o fornecimento do serviço solicitado, como, por exemplo, a conhecida técnica de blocos de recuperação. Reflexão Computacional é a capacidade que um sistema tem de fazer computações para se auto analisar. Ela é obtida quando o programa pára sua execução por um período de tempo para fazer computações sobre si próprio; analisa seu estado, se o processamento está correto, se pode prosseguir com a execução e atingir o objetivo satisfatoriamente; se não precisa mudar de estratégia ou algoritmo de execução, fazendo, ainda, processamentos necessários para o sucesso da execução. Um sistema de programação distribuída consiste basicamente em vários aplicativos executados em diferentes computadores, os quais realizam troca de mensagens para solucionar um problema comum. A comunicação entre os computadores é realizada através da rede que os interliga. As Redes que controlam sistemas críticos são normalmente de pequena escala pois redes de grandes dimensões podem apresentar atrasos e baixa confiabilidade. Portanto, a abordagem aqui proposta consiste em utilizar, em um ambiente distribuído, uma arquitetura reflexiva aliada a técnicas do domínio da tolerância a falhas para promover a separação entre as atividades de controle, salvamento, recuperação, distribuição e validação de componentes e as funcionalidades executadas pelo próprio componente, a fim de que falhas não venham a prejudicar a disponibilidade, confiabilidade e clareza de determinadas computações. A proposta apóia-se num estudo de caso, implementado na linguagem de programação Java, com seus protocolos de reflexão computacional e de comunicação.
Resumo:
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.
Resumo:
Neste estudo são discutidos alguns aspectos relacionados à escolha da primeira linguagem de programação em currículos de ciência da computação, com interesse especial em Pascal e Java. A primeira linguagem é amplamente adotada para ensinar programação aos novatos, enquanto a segunda está ganhando popularidade como uma linguagem moderna e abrangente, que pode ser usada em muitas disicplinas ao longo de um curso degraduação em computação como ferramenta para ensinar desde recursos básicos de programação até tópicos mais avançados. Embora vários problemas quanto ao ensino de Java, com a primeira linguagem de programação, possam ser apontadas, consideramosque Java é uma boa escolha, visto que (a) oferece apoio a importantes questões conceituais e tecnológicos e, (b) é possível contornar algumas complexidades da linguagem e da plataforma Java para torná-las mais adequadas à alunos iniciantes. Além disso, considerando a grande popularidade de Pascal nos currículos de cursos de computação, uma eventual adoção de Java conduz à outro problema: a falta de professores aptos a lecionar programação orientada a objetos. Sugerimos que este problema de migração de Pascal para Java seja enfrentado através de smplificação do ambiente de desenvolvimento de programas, uso de um pacote com classes que facilitam a entrada e saída, e o desenvolvimento de um catálogo comparativo de programas implementados em ambas as linguagens. Neste estudo também é apresentado o JEduc, um IDE muito simples com o objetivo de dar suporte ao ensino da linguagem de programação orientada a objetos Java aos novatos. Oferece componentes desenvolvidos em Java que integram edição, compilação e execução de programas Java. Além das funcionalidades comuns a um IDE, JEduc foi desenvolvido para gir como uma ferramente pedagógica: simplifica a maioria das mensagens do compilador e erros da JRE, permite a inserção de esqueletos de comandos, e incorpora pacotes especiais para esconder alguns detalhes sintáticos e semânticos indesejáveis.
Resumo:
Este texto apresenta um novo modelo multiparadigma orientado ao desenvolvimento de software distribuído, denominado Holoparadigma. O Holoparadigma possui uma semântica simples e distribuída. Sendo assim, estimula a modelagem subliminar da distribuição e sua exploração automática. A proposta é baseada em estudos relacionados com modelos multiparadigma, arquitetura de software, sistemas blackboard, sistemas distribuídos, mobilidade e grupos. Inicialmente, o texto descreve o modelo. Logo após, é apresentada a Hololinguagem, uma linguagem de programação que implementa os conceitos propostos pelo Holoparadigma. A linguagem integra os paradigmas em lógica, imperativo e orientado a objetos. Além disso, utiliza um modelo de coordenação que suporta invocações implícitas (blackboard) e explícitas (mensagens). A Hololinguagem suporta ainda, concorrência, modularidade, mobilidade e encapsulamento de blackboards em tipos abstratos de dados. Finalmente, o texto descreve a implementação da Holoplataforma, ou seja, uma plataforma de desenvolvimento e execução para a Hololinguagem. A Holoplataforma é composta de três partes: uma ferramenta de conversão de programas da Hololinguagem para Java (ferramenta HoloJava), um ambiente de desenvolvimento integrado (ambiente HoloEnv) e um plataforma de execução distribuída (plataforma DHolo).
Resumo:
Este trabalho descreve uma implementação de um modelo de escalonamento para a linguagem de programação DPC++. Esta linguagem, desenvolvida no Instituto de Informática da UFRGS, possibilita que uma aplicação orientada a objetos seja distribuída entre vários processadores através de objetos distribuídos. Muito mais que uma simples biblioteca de comunicação, o DPC ++ torna a troca de mensagens totalmente transparente aos objetos. A integração do DPC++ com o DECK, também em desenvolvimento, trará grandes inovações ao DPC++, principalmente pelo uso de theads. O escalonador proposto para este modelo utiliza estes recursos para implantar os chamados processos espiões, que monitoram a carga de uma máquina, enviando seus resultados ao escalonador. O escalonador implementado possui, desta forma, dois módulos: objetos espiões implementados como um serviço do DECK e o escalonador propriamente dito, incluído no objeto Diretório, parte integrante do DPC++.
Resumo:
A simulação é uma das ferramentas mais utilizadas para a aplicação da análise sistêmica nos mais diversos estudos. Ao longo do tempo, vários modelos foram desenvolvidos para representar sistemas de recursos hídricos, utilizando a simulação. Dentre esses modelos, está o Propagar MOO, que simula a propagação de vazões em uma bacia hidrográfica, submetida à decisões operacionais de suprimento de demandas e de operação de reservatórios, introduzidas pelo usuário através de rotinas escritas na linguagem de programação Pascal Script. A utilização eficiente dessas rotinas permite ao usuário ampliar a capacidade e flexibilidade do modelo na representação de um sistema hídrico. Com o objetivo de contribuir na ampliação da flexibilidade do modelo Propagar MOO e de sua aplicabilidade à modelagem de sistemas de recursos hídricos em geral, bem como facilitar o estudo da linguagem de programação Pascal Script e motivar os profissionais da área no desenvolvimento de novas rotinas aplicadas ao modelo, foram implementadas, através do presente trabalho, rotinas genéricas contendo estratégias de planejamento do uso da água e de operação de reservatórios, bem como ferramentas para analisar seus resultados. Para ampliar essa contribuição, foi aprimorada a possibilidade de simulação da geração de energia hidrelétrica em pontos de uma rede hidrográfica, com a criação de novas ferramentas para esse fim, na estrutura interna do modelo. Por fim, para que o próprio usuário pudesse construir ferramentas para auxiliar na verificação dos resultados obtidos nas simulações, esse estudo apresenta a implementação de rotinas de uso geral para servir como exemplos de ferramentas de análise de dados.
Resumo:
Este trabalho descreve a aplicação da Programação Genética, uma técnica de Computação Evolucionária, ao problema da Síntese de Fala automática. A Programação Genética utiliza as técnicas da evolução humana para descobrir programas bem adaptados a um problema específico. Estes programas, compostos de instruções, variáveis, constantes e outros elementos que compõe uma linguagem de programação, são evoluídos ao longo de um conjunto de gerações. A Síntese de Fala, consiste na geração automática das formas de ondas sonoras a partir de um texto escrito. Uma das atividades mais importantes, é realizada através da conversão de palavras e letras para os sons da fala elementares (fonemas). Muitos sistemas de síntese são implementados através de regras fixas, escritas por programadores humanos. Um dos mais conhecidos sistemas de síntese é o FESTIVAL, desenvolvido pela Universidade de Edimburgh, usando a linguagem de programação funcional LISP e um número fixo de regras. Neste trabalho, nós exploramos a possibilidade da aplicação do paradigma da Programação Genética, para evoluir automaticamente regras que serão adotadas para implementação do idioma Português na ferramenta FESTIVAL, desenvolvido no projeto SPOLTECH (CNPq – NSF cooperação entre UFRGS e Universidade do Colorado). A modelagem do problema, consiste na definição das regras de pronúncia do Português Brasileiro, que a implementação do sistema FESTIVAL pronuncia erradamente, já que o mesmo foi implementado primariamente para o idioma Inglês. A partir destas regras, o sistema de Programação Genética, desenvolvido neste trabalho, evolui programas que constituem boas soluções para a conversão de letras para fonemas. A descrição dos resultados obtidos, cobre detalhes sobre a evolução das soluções, complexidade e regras implementadas, representadas pelas soluções mais bem adaptadas; mostrando que a Programação Genética, apesar de ser complexa, é bastante promissora.
Resumo:
Baseado na tecnologia de interligação de redes, este trabalho apresenta uma proposta de conexão de dois sistemas com processamento próprio com o intuito de troca de informações, utilizando a pilha de protocolos TCP/IP. Este sistema será empregado em ambientes de controle industrial, permitindo o envio de informações do servidor de dados para o cliente. Os dados são constituídos de leituras feitas em equipamentos de campo, apresentando ao cliente remoto, medições dos mais diversos tipos. Por outro lado, o cliente poderá enviar comandos aos equipamentos de campo visando o telecontrole. Como ponto de partida para a elaboração do trabalho prático, foi utilizado o ambiente de controle do sistema de potência da companhia energética do estado do Rio Grande do Sul (CEEE). Um microcomputador com um browser acessa, através de uma rede local, os equipamentos controlados, que poderão ser qualquer tipo de equipamento de campo empregado em subestações de energia elétrica, como disjuntores, transformadores ou chaves. Para permitir o acesso remoto de tais equipamentos, foi elaborado um servidor de dados constituído de um controlador de rede do tipo Ethernet e um microcontrolador de aplicação específica que se encarrega do processamento da pilha de protocolos. O controlador Ethernet utilizado é um circuito integrado dedicado comercial, que executa o tratamento dos sinais de nível físico e de enlace de dados conforme o padrão IEEE 802.2. O processador TCP/IP, enfoque principal deste trabalho, foi elaborado através da linguagem de programação C, e a seguir traduzido para o Java, que é o ponto de partida para a ferramenta SASHIMI, de geração da descrição em VHDL do microcontrolador de aplicação específica utilizado. O processador TCP/IP encarrega-se da aquisição de dados do equipamento de campo, do processamento da pilha de protocolos TCP/IP, e do gerenciamento do controlador Ethernet. A partir desta descrição VHDL, foi sintetizado o hardware do microcontrolador em um FPGA, que juntamente com o software aplicativo, também fornecido pela ferramenta utilizada, desempenha o papel de processador TCP/IP para o sistema proposto. Neste ambiente, então, o cliente localizado no centro de operação, acessa através de um browser o equipamento de campo, visando obter suas medições, bem como enviar comandos, destacando o aspecto bidirecional para a troca de dados e a facilidade de conexão de dois sistemas heterogêneos. Este sistema pretende apresentar baixo custo de aquisição e de instalação, facilidade de interconexão local ou remota e transparência ao usuário final.
Resumo:
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.
Resumo:
Numerosas pesquisas estão introduzindo o conceito de grupo em padrões abertos para programação distribuída. Nestas, o suporte a grupo de objetos por meio de middlewares, apresentam diferentes abordagens de interligação com a aplicação. Segundo princípios defendidos na tese de Felber, essas abordagens vão ao encontro do objetivo de facilitar o desenvolvimento e proporcionar confiabilidade e desempenho. Neste contexto, localizou-se três enfoques básicos para a interligação com a aplicação, denominados integração, serviço, e interceptação, que utilizam a captura de mensagens para obtenção de informações ou como meio para adicionar novas funcionalidades às aplicações. A utilização dessas informações pode auxiliar no ajuste de parâmetros funcionais de serviços relacionados, na escolha de mecanismos, influindo em aspectos como, desempenho e segurança. Ao longo do estudo dessas abordagens, sentiu-se a necessidade de estudar detalhes e testar aspectos de implementação, suas premissas de uso e as conseqüências advindas da incorporação de seus mecanismos junto à aplicação. Este trabalho visa apresentar uma análise do comportamento das referidas abordagens por meio da implementação de protótipos, possibilitando assim, investigar problemas relacionados ao emprego da técnica e suas conseqüências quando integradas à aplicação. Os objetivos específicos reúnem a busca de informações qualitativas, tais como: modularidade, transparência, facilidade de uso e portabilidade; e informações quantitativas, fundamentalmente traduzidas pelo grau de interferência no desempenho da aplicação. O desenvolvimento dos protótipos teve como início a busca por um ambiente que ofereceria suporte as condições necessárias para a implementação das diferentes abordagens. Percebeu-se que definir os mecanismos diretamente sobre uma linguagem de programação, como C ou C++, não era viável. As versões padrões dessas linguagens não oferecem mecanismos capazes de suportar algumas características de implementação como, por exemplo, a captura de mensagens na abordagem de interceptação. A possibilidade é introduzida apenas por extensões dessas linguagens. Assim, a investigação de um ambiente de implementação voltou-se para mecanismos disponíveis em sistemas operacionais. A opção pela utilização do Linux visou atender alguns requisitos importantes para o desenvolvimento dos protótipos tais como: facilidade de instalação, boa documentação e código aberto. Este último é um ponto essencial, pois a construção de parte dos protótipos explora a programação em nível do sistema operacional. A linguagem de programação C foi escolhida como base para a implementação, já que as diferentes abordagens exploram tanto o nível do kernel como o nível do usuário, e é compatível com o Linux. A etapa de desenvolvimento dos protótipos possibilitou a coleta de informações sobre aspectos qualitativos. As demais informações que fazem parte do perfil levantado por este trabalho sobre as abordagens, foram obtidas através da utilização dos protótipos em experimentos com duas aplicações distribuídas denominadas de “Ping-Pong” e “Escolha de Líderes”, que têm como característica geral à troca de mensagens, utilizando comunicação através de sockets. A realização de medidas em múltiplas execuções, avaliadas após o tratamento estatístico necessário, permitiu definir um perfil das diferentes abordagens.
Resumo:
Este trabalho tem por objetivo apresentar e estudar a aplicação de uma ferramenta chamada PCP – Pseudo-Compilador Portugol, criada para auxiliar estudantes de programação a aprimorar o raciocínio lógico e a criar programas estruturados, sem que precisem se preocupar com comandos e instruções em Inglês ou tenham conhecimento de uma linguagem de programação específica. Por ser uma ferramenta que usa somente palavras do nosso idioma, os alunos podem direcionar todo o seu raciocínio no entendimento e resolução do problema em forma de algoritmo. O estudo experimental realizado neste trabalho pretende analisar e comparar o aprendizado entre grupos de alunos de disciplinas de programação utilizando e não utilizando esta ferramenta. Além de acompanhar o desempenho dos alunos, pretende também coletar informações durante as baterias de testes e obter as opiniões dos mesmos em relação ao PCP, no que se refere às facilidades, dificuldades, pontos positivos e falhas apresentadas. Este estudo é apresentado em duas etapas, com oito baterias de teste em cada uma. Na primeira etapa foram selecionados alunos do Curso de Ciência da Computação da UNIGRAN, em Dourados-MS; na segunda etapa foram selecionados alunos da Escola Anglo Decisivo. Estas duas etapas possibilitam a análise do aprendizado proporcionado pela ferramenta com alunos que já têm alguma noção de programação e com alunos que não tiveram nenhum contato com o desenvolvimento de programas.
Resumo:
Uma etapa fundamental no desenvolvimento de sistemas tolerantes a falhas é a fase de validação, onde é verificado se o sistema está reagindo de maneira correta à ocorrência de falhas. Uma das técnicas usadas para validar experimentalmente um sistema é injeção de falhas. O recente uso de sistemas largamente distribuídos para execução dos mais diversos tipos de aplicações, faz com que novas técnicas para validação de mecanismos de tolerância a falhas sejam desenvolvidas considerando este novo cenário. Injeção de falhas no sistema de comunicação do nodo é uma técnica tradicional para a validação de aplicações distribuídas, para forçar a ativação dos mecanismos de detecção e recuperação de erros relacionados à troca de mensagens. A condução de experimentos com injetores de comunicação tradicionais é feita pelo uso do injetor em uma máquina do sistema distribuído. Se o cenário desejado é de múltiplas falhas, o injetor deve ser instanciado independentemente nas n máquinas que as falhas serão injetadas. O controle de cada injetor é individual, o que dificulta a realização do experimento. Esta dificuldade aumenta significativamente se o cenário for um sistema distribuído de larga escala. Outro problema a considerar é a ausência de ferramentas apropriadas para a emulação de determinados cenários de falhas. Em aplicações distribuídas de larga escala, um tipo comum de falha é o particionamento de rede. Não há ferramentas que permitam diretamente a validação ou a verificação do processo de defeito de aplicações distribuídas quando ocorre um particionamento de rede Este trabalho apresenta o estudo de uma abordagem para injeção de falhas que permita o teste de atributos de dependabilidade de aplicações distribuídas de pequena e larga escala implementadas em Java. A abordagem considera a não obrigatoriedade da alteração do código da aplicação sob teste; a emulação de um cenário de falhas múltiplas que ocorrem em diferentes nodos, permitindo o controle centralizado do experimento; a validação de aplicações que executem em sistemas distribuídos de larga escala e consideram um modelo de falhas realista deste tipo de ambiente, incluindo particionamentos de rede. A viabilidade da abordagem proposta é mostrada através do desenvolvimento do protótipo chamado FIONA (Fault Injector Oriented to Network Applications), o qual atualmente injeta falhas em aplicações desenvolvidas sob o protocolo UDP.
Resumo:
In the two last decades of the past century, following the consolidation of the Internet as the world-wide computer network, applications generating more robust data flows started to appear. The increasing use of videoconferencing stimulated the creation of a new form of point-to-multipoint transmission called IP Multicast. All companies working in the area of software and the hardware development for network videoconferencing have adjusted their products as well as developed new solutionsfor the use of multicast. However the configuration of such different solutions is not easy done, moreover when changes in the operational system are also requirede. Besides, the existing free tools have limited functions, and the current comercial solutions are heavily dependent on specific platforms. Along with the maturity of IP Multicast technology and with its inclusion in all the current operational systems, the object-oriented programming languages had developed classes able to handle multicast traflic. So, with the help of Java APIs for network, data bases and hipertext, it became possible to the develop an Integrated Environment able to handle multicast traffic, which is the major objective of this work. This document describes the implementation of the above mentioned environment, which provides many functions to use and manage multicast traffic, functions which existed only in a limited way and just in few tools, normally the comercial ones. This environment is useful to different kinds of users, so that it can be used by common users, who want to join multimedia Internet sessions, as well as more advenced users such engineers and network administrators who may need to monitor and handle multicast traffic