EA878:2009 2S

De DCA-Wiki

Revision as of 12:33, 31 August 2012; Marco (Discussão | contribs)
(dif) ← Versão anterior | ver versão actual | Versão posterior → (dif)

Contents

EA878 - Laboratório de Micro e Minicomputadores: Software

  • Prof. Marco A. Amaral Henriques (DCA/FEEC, sala 305)
  • Horário das aulas: 414 415 (turma K) e 416 417 (turma L)
  • Sala: LE-27

Avisos

  • 18/12: notas finais disponibilizadas
  • 13/12: notas atualizadas e alguns resultados finais já definidos
  • 29/11: instruções detalhadas sobre relatório e entrevista finais disponibilizadas
  • 17/11: notas atualizadas
  • 22/10: ATENÇÃO: o dia do funcionário público foi transferido de 28 para 26/10 (segunda) e a Reitoria determinou que as atividades de graduação e de pós-graduação que estavam planejadas para 26/10 sejam realizadas em 28/10 (quarta). Portanto não teremos atividades de EA878 no dia 28/10, estando mantidos todos os demais itens do calendário planejado anteriormente (a data de entrega do relatório da Ativ. 7 continua sendo 04/11).
  • 07/10: notas atualizadas
  • 09/09: notas das atividades 1 e 2 publicadas
  • 25/08: informações sobre auxiliar didático atualizadas
  • 19/08: página disponibilizada

Notas

  • Em caso de erro na transcrição ou qualquer outra dúvida, procure o professor imediatamente.

Legenda:

  • MR = Média dos Relatórios Parciais
  • RF = Relatório Final (parte do Trabalho Final)
  • AP = Apresentação (entrevista e testes) (parte do Trabalho Final)
  • TF = Nota do Trabalho Final
  • MP = Média Parcial (sem Exame)
  • Ex.= Nota do Exame
  • NF = Nota Final da disciplina (com Exame)
* As notas estão disponíveis em arquivo pdf neste link.

Introdução e Objetivos da Disciplina

Esta disciplina será baseada no desenvolvimento de um projeto. A idéia é oferecer ao aluno a oportunidade de desenvolver durante o período letivo um software que tenha uma grande interação com o software de sistema (sistema operacional). Isto será possível graças à substituição de experimentos independentes por sub-projetos inter-dependentes, onde cada sub-projeto agrega os resultados dos sub-projetos anteriores. A disciplina é dividida em atividades que, em seqüência, resultarão no desenvolvimento de um elemento da arquitetura WWW (World-Wide Web): o servidor HTTP (Hyper-Text Transfer Protocol). Este servidor, apesar de simples quando comparado aos servidores HTTP comerciais, será capaz de:

  • interagir com navegadores comerciais,
  • manter um diretório de páginas HTML (Hyper-Text Markup Language),
  • responder às principais requisições HTTP.

As atividades cobrirão principalmente os seguintes temas ministrados na disciplina EA876:

1. compiladores: será construído um parser para análise das mensagens HTTP submetidas ao servidor utilizando as ferramentas lex e yacc; 2. sistemas operacionais: várias chamadas de sistema serão empregadas para:

  • manter um diretório de páginas HTML (sistema de arquivos);
  • criar e controlar processos para atender concorrentemente a requisições HTTP submetida ao servidor (controle de processos);
  • utilizar um pool de buffers na transferência de arquivos para o cliente (gerenciamento de memória).

Adicionalmente, o aluno irá utilizar as chamadas de sistemas para acesso à rede (biblioteca de sockets), adquirindo assim os conceitos básicos de programação distribuída (network programming). O servidor será desenvolvido na linguagem C e será baseado no sistema operacional Unix.

Dinâmica da Disciplina

  • O professor apresentará no início de cada atividade uma explanação sobre a mesma enfocando os principais conceitos necessários ao seu desenvolvimento.
  • O material será disponibilizado exclusivamente na página Web da disciplina.
  • O professor estará a disposição dos alunos durante os horários de aula, bem como fora destes em sua sala (305) de acordo com horário previamente definido e divulgado na página da disciplina.
  • Há um auxiliar didático (doutorando Wellington Roque) alocado para tirar dúvidas dos alunos nesta disciplina.
    • Local de atendimento: laboratório LE-27
    • E-mail: wellington.roque'em'gmail.com
    • Horários:
      • os horários poderão ser agendados por e-mail, dependendo da disponibilidade do monitor;
      • dúvidas poderão ser tiradas também por e-mail;
      • nas datas de entrega de relatórios, o auxiliar didático estará disponível a partir das 12:30 na LE-27 para esclarecer as dúvidas finais dos alunos.

Critérios de Avaliação

  • Os alunos deverão conduzir as atividades individualmente.
  • Cada aluno deverá adquirir um caderno de capa dura (não espiral) com no mínimo 200 folhas para ser utilizado como caderno de laboratório. Neste caderno o aluno registrará o desenvolvimento das atividades propostas como um diário de laboratório.
  • Periodicamente, o professor verificará o caderno de laboratório e o estágio da implementação e atribuirá uma nota ao mesmo. Caso o aluno escolhido esteja ausente e/ou não apresente o registro das atividades por duas aulas consecutivas, a nota atribuída para esta verificação será zero.
  • No final do semestre cada aluno fará uma apresentação completa de seu projeto para o professor, onde o aluno será questionado sobre o conteúdo da disciplina, detalhes da implementação do projeto, bem como demonstrar os programas em funcionamento sob diversas situações.
  • A nota final será composta de:
    • média das notas parciais (caderno de laboratório e implementações) com peso de 60%;
    • nota da apresentação e relatório final do projeto com peso de 40%.
  • Para ser aprovado o aluno precisa obter nota final maior ou igual a 5,0, ter freqüência maior ou igual a 75%.
    • Caso a nota final seja inferior a 5,0, o aluno poderá fazer um exame final prático englobando todo o conteúdo da disciplina. O peso do exame é de 50%.

Observações

  • É incentivada a discussão e a troca de informações entre os alunos, mas registros no caderno de laboratório e/ou programas em duplicata poderão acarretar a anulação da nota da atividade e a reprovação dos alunos envolvidos (recomenda-se que cada aluno proteja sua área de trabalho com o comando "chmod go-rwx ." executado em sua área home, para evitar cópias por parte de "colegas").
  • Os cadernos serão recolhidos para avaliação no início da aula nos dias marcados, sendo considerada entrega atrasada aquela feita após este recolhimento.
  • A cada 24 horas de atraso a partir do horário de início da aula (sem contar sabados, domingos e feriados), será descontado 1 (um) ponto da nota da atividade atrasada (apresentação do caderno no mesmo dia marcado, mas após o recolhimento no início da aula, será considerada como atrasada). A partir do décimo dia útil de atraso a atividade já não terá mais valor para compor a nota final.
  • O exame não substitui atividades não realizadas ou cujas notas foram zero.
  • Se o professor não for localizado para avaliar o registro no caderno de uma atividade em atraso, o aluno deverá entregar seu caderno na secretaria do DCA (sala 309) e solicitar à secretária (Carmen) que registre no mesmo a data e a hora do recebimento (datar e assinar).
  • Listagens de programas e impressão de resultados de saída podem ser recortados e colados no caderno. As demais partes do registro da atividade deverão ser manuscritas.


Material didático de apoio

  • Novo webspace para testes: foi disponibilizado um webspace completo e variado para permitir que os alunos possam testar seus programas com maior rigor e flexibilidade. Os procedimentos para instalar este webspace são:
    • copiar para seu atual webspace o arquivo testes.zip;
    • extrair todo o seu conteúdo na raiz do seu webspace;
    • executar o script 'script.sh' para acertar as permissões de alguns arquivos e diretórios.
    • Seus testes precisam funcionar bem com este webspace, que contém textos, imagens e gráficos.

Programa de atividades

Atenção:

* consulte frequentemente este programa, pois ele está sendo revisado e poderá sofrer mudanças.
Atividade Semanas Início Fim Referências
1 1 19/08 26/08 Roteiro da Atividade 1 (PDF)
2 1 26/08 02/09 Roteiro da Atividade 2 (PDF)
3 2 02/09 16/09 Roteiro da Atividade 3 (PDF)
4 2 16/09 30/09 Roteiro da Atividade 4 (PDF)
5 2 30/09 14/10 Roteiro da Atividade_5
6 1 14/10 21/10 Roteiro da Atividade_6
7 2 21/10 04/11 Roteiro da Atividade 7 (PDF)
8 2 04/11 18/11 Roteiro da Atividade_8 (PDF)
9 1 18/11 25/11 Roteiro da Atividade_9
10 1 25/11 02/12 Roteiro da Atividade_10
11 1 02/12 02/12 Explicação sobre o relatório e entrevista finais
12 1 09/12 09/12 Entrega de relatório e entrevistas finais
13 1 16/12 16/12 Entrevistas finais

Relatório e entrevista finais

Funcionalidades esperadas na versão final do servidor Web

Espera-se que o servidor tenha todos os recursos que foram especificados durante as atividades do semestre. Alguns destes recursos são:

  • obtenção das requisições do navegador (browser) via rede (sockets);
  • passagem direta dos dados do socket para os analisadores léxico e sintático (isto é, sem o uso de arquivos intermediários);
  • análise léxica e sintática das requisições por meio de código gerado pelas ferramentas lex (ou flex) e yacc (ou bison);
  • processamento de pelo menos 5 comandos do protocolo HTTP : GET, HEAD, OPTIONS, POST e TRACE;
  • apresentação para o navegador de páginas com mensagens de erro adequadas para os diversos tipos de erro que podem surgir após o recebimento de uma requisição;
  • confinamento do espaço de atuação do servidor à área definida como webspace;
  • uso eficiente de concorrência para permitir o atendimento de várias requisições simultaneamente: criação, sob demanda, de um número arbitrário de threads para atender várias requisições de uma vez;
  • uso de mecanismos de autenticação (tipo Basic) que exijam um par 'userid:senha' correto do navegador antes de entregar uma página protegida por, pelo menos, um arquivo ".htaccess" ; as senhas dos usuários cadastrados devem estar gravadas dentro de dois ou mais arquivos distintos de senhas colocados fora do webspace e com a forma "usuário_em_texto_aberto:senha_cifrada_por_crypt( )".

Estes recursos estão aqui relacionados apenas como ponto de partida. Há outros, mais detalhados, que foram especificados no decorrer das atividades e outros opcionais que não foram exigidos, mas que o aluno pode inserir no seu servidor como um serviço extra.

  • Funcionalidades extras poderão ser contempladas com pontuações extras que dependerão do nível de complexidade e da qualidade da implementação.

Sobre o relatório final

  • O relatório final consistirá de duas partes:
    • (1) arquivos com código-fonte comentado e dados de teste
      • O código-fonte comentado do servidor, bem como os dados usados para testá-lo (webspace do aluno), deverão ser agrupados em um arquivo ZIP cujo nome deverá ser ea878_xxxxxx.zip, onde xxxxxx deve ser substituído pelo RA do aluno.
      • O arquivo ZIP deverá ser enviado por e-mail para o professor no endereço marco'arroba'fee.unicamp.br com o Subject igual ao nome do arquivo. (ATENÇÃO PARA O ENDEREÇO DE ENVIO!!!)
      • Prazo para envio do arquivo ZIP: data da entrevista definida mais abaixo (até 14:00, turma K e até 16:00, turma L) (inadiável devido à realização das entrevistas). Sem o recebimento dos arquivos, a entrevista não será realizada.
      • O código-fonte deverá estar acompanhado de um arquivo texto descrevendo como o mesmo deve ser compilado e executado. É desejável que este arquivo seja um script que execute a compilação ('compila.sh').
      • Para efeito de comprovação de data e hora do e-mail, será utilizado o carimbo de tempo colocado pelo servidor de e-mail do SIFEEC.
      • O aluno deverá testar a abertura de seu arquivo .zip para ver se o mesmo está íntegro tanto no conteúdo dos arquivos contidos como nas permissões de cada um. Se houver problemas com o utilitário zip na abertura do arquivo (perda das configurações de permissão, por exemplo), pode ser usado o utilitário tar (para agrupar e comprimir tudo em um só arquivo), gerando um arquivo final com nome ea878_xxxxxx.tgz (ex: tar cvzf ea878_xxxxxx.tgz meu_diretório_com_servidor_web).
    • (2) documentação em papel (manuscrita e/ou impressa).
      • Esta documentação deverá ser entregue em papel até o dia 09/12/2008 (14:00, turma K, e 16h00, turma L) no laboratório LE-27, independentemente da data/horário da entrevista.
      • Entregas da documentação após o horário definido terão uma penalização de dois (2) pontos para cada 24 horas de atraso.
      • A documentação deverá conter, pelo menos, os seguintes ítens obrigatórios:
        • (A) (2,0) descrição do sistema (objetivos, especificações, o que foi efetivamente implementado e o que faltou, formas de uso);
        • (B) (3,0) estrutura do sistema (blocos que compõem o sistema e diagrama do fluxo de dados pelos mesmos);
          • o diagrama não precisa ser detalhado a ponto de descrever cada instrução do programa, mas deve ter detalhes suficientes que permitam a visualização dos principais blocos e funções que compõem o servidor e o relacionamento entre eles;
        • (C) (1,5) estrutura do webspace usado para testes, mostrando árvore de diretórios, permissões e conteúdo dos arquivos;
        • (D) (2,0) casos de teste (como o sistema foi testado, casos submetidos para teste e seus resultados); estes testes devem ser completos e mostrar cada funcionalidade do servidor e cada tipo de erro que ele pode tratar, não deixando nenhuma funcionalidade sem ser demonstrada;
        • (E) (0,5) limitações da implementação feita;
        • (F) (0,5) possíveis trabalhos futuros de melhoria do sistema;
        • (G) (0,5) comentários, críticas e sugestões do aluno sobre o sistema desenvolvido e sobre a disciplina de um modo geral.

Sobre a entrevista

  • A entrevista ocorrerá no laboratório LE-37 (LCAEE, terceiro andar).
    • Confira a data e horário para sua entrevista na tabela abaixo.
  • A entrevista consistirá de demonstração (no computador azaleia ou em algum outro escolhido pelo aluno, mas que possa ser acessado via telnet ou ssh a partir do LE-37) do servidor desenvolvido durante o semestre e de questões sobre os detalhes da implementação, em especial sobre aqueles relacionados a sistemas operacionais e construção de parsers/compiladores.
    • O horário deverá ser rigidamente respeitado, sob pena da entrevista não ser realizada.
    • Os horários poderão ser trocados entre alunos, desde que os envolvidos comuniquem ao professor com antecedência.
    • Recomenda-se aos alunos prepararem a demonstração com antecedência, pois não haverá segunda chance em caso de falha do programa ou de falta do aluno. Em particular sugere-se que façam testes de acesso remoto ao computador que será usado como servidor.
    • No início da demonstração será compilado e executado o código-fonte enviado previamente pelo aluno.
      • Em caso de necessidade, poderão ser feitas pequenas modificações (até 3) diretamente no código fonte no momento da demonstração, não sendo permitida a substituição de arquivos inteiros. Entretanto, o aluno deve fazer uso deste recurso somente em casos extremos e de real necessidade, pois o tempo gasto na modificação poderá comprometer a entrevista e sua respectiva nota.

Observações sobre os testes

  • Não esquecer de enviar as páginas html de explicação de erros junto com o arquivo ZIP, já que elas ficam fora do webspace.

Escala de entrevistas

Atenção:

  • A entrevista poderá ser antecipada para o dia 02/12 caso seja solicitado pelo aluno.
  • Os alunos poderão fazer trocas de horários entre si desde que comuniquem o professor com antecedência.
  • Independentemente do dia/horário da entrevista, o relatório final deverá ser entregue no dia 09/12, no início do horário de aula.

Turma K

Dia  Hora Aluno
===  ==== ================
 09 14:00 32704 - Felipe
 09 14:30 43278 - Fábio K.
 09 15:00 72079 - Pedro
 09 15:30 15998 - Fábio M.


Turma L

Dia  Hora Aluno
===  ==== ================
 02 16:00 74776 - Artur

 09 16:00 17211 - Ricardo
 09 16:30 31147 - Anderson
 09 17:00 31200 - André
 09 17:30 35455 - Rafael

 16 16:00 43140 - Eliana
 16 16:30 71217 - Ivo
 16 17:00 72386 - Sócrates
 16 17:30 73407 - Luiz
Ferramentas pessoais