1s2013
RA Nome Fase 1 Fase 2 Fase 3 Fase 4 Fase 5 Nota
15585 Bruno Marques Ruiz 0,0 0 0 0 0 0,0
73805 Victor de Oliveira Carmona 8,6 10 10 10 10 9,7
73969 Davi Albernaz Lameiro da Costa 8,6 10 10 10 10 9,7
80664 André de Vasconcellos 9,5 9,5 10 10 8 9,4
81398 Fernando Shikanai Massunari 8,0 9,5 10 10 10 9,5
82107 Marcelo D. R. Cecchino Zabani 8,0 9,5 10 10 10 9,5
83499 Felipe Augusto Rosa 9,5 9,5 10 10 8 9,4
83597 Guilherme Monteiro da Silva Lanna 9,5 9,5 10 10 8 9,4
83632 Henrique de Souza Oliveira 8,0 9,5 10 10 10 9,5
91187 Fernando Lucchesi Bastos Jurema 10,0 9 8 0 10 7,4
93092 Thiago Cabral Valverde 10,0 10 10 10 10 10,0
95041 Raphael De Bianchi Carvalho 10,0 9 8 0 10 7,4
95696 Erick Luis Moraes de Sousa 10,0 9 8 0 10 7,4
105441 Miguel Faggioni Fernandes 10,0 9 8 0 10 7,4
970812 Henri Rodrigues Zurmely 0,0 0 0 0 0 0,0

Fase1
RA Nome Comentários Nota
015585 Bruno não entregou
073805 Victor Não apresentaram história ilustrativa. Acréscimo de mensagens de log no arquivo SynchPrimitive original para permitir o acompanhamento da execução. Análise dos 2 bugs. Bug 1: modificaram o flag do nó filho para PERSISTENT. Bug2: Implementação da correção com nó ready. Makefile. Entrega com atraso. 8,6
073969 Davi 8,6
080664 André Slides com ilustração da aplicação e visão geral sobre a complexidade da tarefa. História ilustrativa: marido apressado. Separação do código em vários arquivos, incluindo os papéis da aplicação. Comunicação entre os processos é feita via socket. Código adicional no qual sleeps contornam o bug. Não apresentaram documentação nem instruções para rodar o programa. 9,5
083499 Felipe 9,5
083597 Guilherme 9,5
081398 Fernando S. Não apresentaram história ilustrativa. Separação do código em vários arquivos. Código com várias threads e mensagens de log para evidenciar o problema. Não apresentaram documentação nem instruções para rodar o programa. 8
082107 Marcelo 8
083632 Henrique 8
091187 Fernando L. História ilustrativa: Aboborela. Separação do código em vários arquivos, incluindo os papéis da aplicação. Análise dos dois bugs. Código para eliminar nós filhos do nó root da barreira. Makefile. Arquivo texto com documentação da fase e como rodar o programa. 10
095041 Raphael 10
095696 Erick 10
105441 Miguel 10
093092 Thiago Scritps para criação dos arquivos de configuração e para facilitar a inicialização e finalização dos servidores do Zookeeper. Separação do código em vários arquivos. Mensagens de erro para exceções que eram tratadas silenciosamente. Análise dos 2 bugs. Bug 1: construtor de barreiras recebe parâmetro name adicional e retirou flag SEQUENTIAL. Bug2: código multithread para ilustrar o bug; analogia descrita separadamente. 10
970812 Henri desistiu

Fase2
RA Nome Comentários Nota
015585 Bruno não entregou
073805 Victor Makefile. Nome do nó: hostname. Implementação com ready node, que é removido ao final. Todos os nós verificam se o diretório está vazio, o que implica em mais processamento do que o algoritmo sugerido na página do ZooKeeper. Barreira simples é implementada a partir da barreira dupla. Aplicação: prova. 10
073969 Davi 10
080664 André Arquivo README.txt com instruções para rodar o programa e descrição sucinta dos arquivos. Nome do nó: hostname+ID. Implementação sujeita a bugs: (i) getChildren não garante uma lista ordenada e vários processos podem pensar que são o primeiro; (ii) ready node pode atrapalhar a contagem dos nós restantes na barreira e o protocolo de espera. Aplicação: marido apressado. 9,5
083499 Felipe 9,5
083597 Guilherme 9,5
081398 Fernando S. Readme com descrição da abordagem e documentação de problemas encontrados. Nós recebem nomes com sufixo sequencial. Implementação diferenciada, com alteração de um flag no nó raiz. Processos passam por duas verificações na entrada: número de nós e flag. Espera ocupada é introduzida para evitar problemas de concorrência. Melhor uso do flag não poderia eliminar esta necessidade? Barreira simples é implementada a partir da barreira dupla. Aplicação: pagamento na república. 9,5
082107 Marcelo 9,5
083632 Henrique 9,5
091187 Fernando L. Documentação em arquivo separado. Nome do nó: c+ número sequencial fornecido pela aplicação. Parte da lógica da implementação da barreira ficou do lado da aplicação. Espera ocupada para término dos processos Child e Partner. Aplicações: excursão de ônibus escolar e reunião. 9
095041 Raphael 9
095696 Erick 9
105441 Miguel 9
093092 Thiago Documentação no arquivo README.md. Nós recebem nomes baseados em UUIDs. Implementações seguem fielmente os algoritmos propostos na página do ZooKeeper, adicionando a possibilidade de timeout. Código apresentado adiantou vários aspectos solicitados para a fase 3. Aplicação utilizada: jogo da vida. 10
970812 Henri desistiu.

Fase3
RA Nome Comentários Nota
015585 Bruno não entregou
073805 Victor Pequena alteração na função leave(): se o nó ready foi apagado, um processo pode sair da barreira mesmo que existam outros nós no diretório (serão nós da passada seguinte). Aplicação: prova com classificação. 10
073969 Davi 10
080664 André Arquivo README.txt com instruções para rodar o programa e descrição sucinta dos arquivos. Barreira reutilizável: processo aguarda remoção do ready node da rodada anterior para poder entrar. Nós recebem nomes com sufixo sequencial em diretório separado. Implementação sujeita a bugs: getChildren não garante uma lista ordenada e vários processos podem pensar que são o primeiro. Erros corrigidos no código da versão 4, apresentado em 5 de junho. 10
083499 Felipe 10
083597 Guilherme 10
081398 Fernando S. Readme com descrição da abordagem e documentação de problemas encontrados. Nó raiz com flag 0/1 para permitir barreiras reutilizáveis. O que acontece se um nó consegue terminar a função leave() e executa enter() antes de um nó que estava saindo verificar que o diretório estava vazio? Problema corrigido na versão entregue em 20 de junho, via abordagem não bloqueante. 10
082107 Marcelo 10
083632 Henrique 10
091187 Fernando L. Alteração da implementação das barreiras simples para torná-las reutilizáveis, funcionalidade obtida via espera ocupada. Não foi feita a alteração das barreiras duplas. Nova versão entregue em 16 de junho: (i) biblioteca devidamente implementada, (ii) algoritmo com nó ready semelhante ao da página do ZooKeeper, mas mais ineficiente em termos de número de processos acordados, (iii) identificador do nó pode não ser único. Código não garantia barreiras reutilizáveis. Na apresentação de 26 de junho, o grupo sugeriu verbalmente como solucionar este problema e implementou na fase 5. 8
095041 Raphael 8
095696 Erick 8
105441 Miguel 8
093092 Thiago Código da fase anterior já removia nó ready e aplicação já fazia uso de barreiras reutilizáveis. Bug quando um processo sai da barreira, entra novamente e atrapalha a saída de outros processos. Problema corrigido no código da fase 4 (entregue em 5 de junho). 10
970812 Henri desistiu.

Fase4
RA Nome Comentários Nota
015585 Bruno não entregou
073805 Victor Abordagem utiliza ready nodes com prefixos específicos e garante barreiras restritas. 10
073969 Davi 10
080664 André Algoritmo para barreira restrita utiliza dois subdiretórios: processes e queue. Algoritmo eficiente para apagar os nós. 10
083499 Felipe 10
083597 Guilherme 10
081398 Fernando S. Implementação de barreiras restritas via abordagem não bloqueante. 10
082107 Marcelo 10
083632 Henrique 10
091187 Fernando L. Algoritmo entregue não garante barreiras restritas. :-( 0
095041 Raphael 0
095696 Erick 0
105441 Miguel 0
093092 Thiago Algoritmo para garantir barreiras reutilizáveis e restritas. Documentou limitações da abordagem proposta: (i) overflow e (ii) processos são acordados desnecessariamente em alguns casos. 10
970812 Henri desistiu.

Fase5
RA Nome Comentários Nota
015585 Bruno não entregou 0
073805 Victor Funcionalides entregues com a fase 4. Documentação em inglês descrevendo a interface da biblioteca e limitações da abordagem. 10
073969 Davi 10
080664 André Funcionalides entregues com a fase 4. Sem teste adicional para barreiras aninhadas. 8
083499 Felipe 8
083597 Guilherme 8
081398 Fernando S. Barreiras restrititas, reutilizáveis e aninhadas foram testadas utilizando-se uma aplicação tipo campeonato. Experimento escalável e elegante. Chamadas a wait com temporizador poderiam ser substituídas por correta manipulação de flags entre os blocos synchronized () ? 10
082107 Marcelo 10
083632 Henrique 10
091187 Fernando L. Correção do problema dos identificadores. Aplicação com vários papéis para teste das barreiras múltiplas e das barreiras aninhadas. 10
095041 Raphael 10
095696 Erick 10
105441 Miguel 10
093092 Thiago Funcionalides entregues com a fase 4. Testes unitários. 10
970812 Henri desistiu. 0