Resumo: | Como a sociedade moderna tem-se tornado cada vez mais dependente de computadores e redes de comunicação, a vulnerabilidade e eventual paralisação destes sistemas poderá afetar significativamente a vida diária das pessoas, tanto do ponto de vista social quanto do ponto de vista econômico. Sendo assim, sistemas computacionais com características de alta confiabilidade são cada vez mais necessários. A implementação de sistemas confiáveis é dispendiosa, pois implica na utilização de técnicas baseadas na exploração de redundância. Tais técnicas usualmente requerem, para cada componente do sistema, a inclusão de várias instâncias do mesmo, com funcionalidades equivalentes, a fim de possibilitar sua recuperação ou substituição em caso de faltas. Para atender a esses critérios de confiabilidade, Padrões de Projeto (Design Patterns) podem ser utilizados no desenho (design) de sistemas de software e hardware. O Padrão de Programação em N Versões é utilizado para tolerar faltas de software e, se implementado em uma arquitetura distribuída, pode também tolerar faltas de hardware. Nesse trabalho é proposta uma estrutura distribuída para a implementação do Padrão de Programação de N Versões que elimina pontos únicos de falha tanto de software como de hardware. Esta estrutura é implementada de forma genérica, com a finalidade de diminuir o esforço requerido para sua utilização com programas de diferentes funcionalidades. ___________________________________________________________________________ ABSTRACT As modern society becomes increasingly dependent on computers and communication networks, the susceptibility to malfunction and eventual failure of these systems may significantly affect people’s daily lives, both socially and economically. Therefore, highly reliable computer systems are becoming ever more necessary. Nevertheless, the implementation of these systems is expensive, as it requires the use of techniques based on the exploitation of redundancy. These techniques often demand the inclusion of several instances of each system component, with the same functionality, so as to enable its recovery or replacement in case of faults. In order to meet reliability criteria design patterns may be utilized in the design of hardware and software systems. The N-Version Programming pattern is used to tolerate software faults and, if implemented in a distributed architecture, may also tolerate hardware faults. This work proposes a distributed structure for the implementation of the N-Version Programming pattern which eliminates single points of failure in both software and hardware. This structure is implemented in a generalized fashion, with the goal of lowering the required effort for its use with programs with different functionalities. |