Ao meu orientador Prof Arndt von Staa, pelo apoio, incentivo e profissionalismo presentes durante o desenvolvimento da pesquisa.Ao CNPq e à PUC-Rio, pelos auxílios concedidos, sem os quais este trabalho não poderia ter sido realizado.
Aos professores que participaram da Comissão examinadora.A todos os professores e funcionários do Departamento pelos ensinamentos e pela ajuda.À AevoTech e seus funcionários pelo apoio e por tornar possível a aplicação deste trabalho ao sistema de software do Projeto de um Robô para Monitoramento Ambiental (RoMA).Ao meu grande amigo, Thiago Araújo, por me manter no rumo em momentos de tormenta, incentivar e motivar nos momentos mais difíceis.À minha mãe e minha avó, Alice e Nadir, pelo amor, dedicação e confiança sem os quais não seria possível vencer mais este desafio.Ao meu pai, irmão, irmã e avós, Alexandre, Vinicius, Daniela, Judith e Valdir, por terem acreditado na minha capacidade. Software contracts can be written as assertions that identify failures observed while using the software. Software contracts can be implemented through executable assertions. However, conventional assertions are not directly applicable in distributed systems, as they present difficulties to evaluate temporal expressions, as well as expressions involving properties of different processes.This work proposes a mechanism based on logs with meta-information to evaluate contracts in distributed systems. A grammar to write contracts enable temporal operations, e.g., allows specifying conditions between events at different timestamps, or even guaranteeing a sequence of events over a period of time. The flow of events is evaluated asynchronously in relation to the system execution, by comparison with contracts, previously written according to the grammar, representing the expectations on the behavior of the system.