EA878:2008 2S

De DCA-Wiki

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

  • 10/12: notas finais publicadas (relatórios disponíveis na sala 309 - secretaria do DCA)
  • 02/12: médias das atividades publicadas
  • 30/11: observações para a entrevista final
  • 19/11: orientações para relatório e entrevista finais divulgada
  • 29/10: o código do exercício 3 da atividade 8 precisa de uma pequena correção: na função nitems(), substituir o retorno return (rand() % MAXITENS) por return (rand() % MAXITENS + 1)
  • 20/10: ferramenta para medir desempenho do servidor web disponibilizada (veja mais abaixo em Material Didático de Apoio)
  • 15/10: novo webspace para testes disponível (veja mais abaixo em Material Didático de Apoio)
  • 17/09: a partir da próxima aula, 24/09, os alunos serão entrevistados individualmente no horário de aula para demonstrar seus programas e seus cadernos de projeto
  • 03/09: há cadernos de laboratório a espera de seus donos na sala 311 (bloco A)
  • 26/08: horários de monitoria atualizados
  • 16/08: os cadernos entregues com atraso foram avaliados e deixados na secretaria do DCA (sala 309)
  • 01/08: página disponibilizada

Notas

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

EA878 K

MR = Média dos Relatórios

RF = Relatório Final

AP = Apresentação (entrevista e testes)

NF = Nota Final da disciplina

RA	A1	A2	A3	A4	A5	A6	A7	A8	A9	A10	MR	AP	RF	NF	Faltas (horas)
31200	26	100	55	87	0	0	0	0	0	0	27	0	0	16	12
44867	45	100	55	82	70	65	75	30	40	60	62	80	60	65	2
59366	94	86	100	95	90	75	90	64	90	90	87	85	60	81	0
59454	82	100	0	0	0	0	0	0	0	0	18	0	0	11	24
59748	56	80	50	0	0	0	0	0	0	0	19	0	0	11	22
60147	84	95	80	98	100	95	90	85	65	70	86	85	80	85	2
60270	0	92	0	0	0	0	0	0	0	0	9	0	0	6	24
60490	88	100	100	82	85	90	90	71	40	60	81	85	100	85	0
60897	99	100	0	0	0	0	0	0	0	0	20	0	0	12	24
62152	100	100	100	100	95	90	90	90	80	90	94	85	100	93	2
62241	66	93	75	56	25	0	0	0	0	0	32	0	0	19	16
63140	83	98	100	100	90	90	90	87	80	50	87	80	90	86	0
65117	77	94	75	64	0	0	0	0	0	0	31	0	0	19	18


EA878 L

RA	A1	A2	A3	A4	A5	A6	A7	A8	A9	A10	MR	AP	RF	NF	Faltas (horas)
16360	67	46	0	0	0	0	0	0	0	0	11	0	0	7	21
23046	89	100	100	97	85	100	90	75	90	70	90	95	85	90	2
25108	98	95	100	98	55	90	95	80	60	70	84	95	100	89	0
35455	0	91	0	0	0	0	0	0	0	0	9	0	0	5	30
43624	28	78	0	0	0	0	0	0	0	0	11	0	0	6	18
46312	0	0	0	0	0	0	0	0	0	0	0	0	0	0	22
60837	84	91	100	98	75	75	60	65	60	90	80	80	100	84	0
60866	90	96	80	87	70	70	60	70	60	25	71	75	80	73	0
63649	58	89	55	58	0	0	0	0	0	0	26	0	0	16	21
63903	74	91	61	92	0	0	0	0	0	0	32	0	0	19	17

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 (Matheus Fernandes de Oliveira) alocado para tirar dúvidas dos alunos nesta disciplina.
    • Local de atendimento: laboratório LE-27
    • E-mail: matheus.oliveira'em'gmail.com)
    • Horários:
      • quartas-feiras das 12h30 às 16h00: caso seja data de entrega de relatório
      • quartas-feiras das 14h00 às 18h00: caso não seja data de entrega de relatório
    • Obs:
      • dúvidas poderão ser tiradas também por e-mail;
      • outros horários poderão ser agendados por e-mail, dependendo da disponibilidade do monitor.

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.
  • Em cada aula, 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 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 e avaliados 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. Considerando que o exame aborda todo o conteúdo da disciplina e que ele tem um prazo reduzido para ser concluído (100 minutos), é possível perceber que ele não será capaz de alterar significativamente a nota final obtida com as atividades e trabalho final. Portanto, uma só atividade cuja nota tenha sido zerada por falta de ou atraso na entrega, já poderá significar a reprovação do(s) aluno(s) envolvido(s), dependendo das demais notas.
  • 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 da CG/FEEC ou do DCA e solicitar ao funcionário 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 Início Fim Referências
1 06/08 13/08 Roteiro da Atividade 1 (PDF)
2 13/08 20/08 Roteiro da Atividade 2 (PDF)
3 20/08 03/09 Roteiro da Atividade 3 (PDF)
4 03/09 17/09 Roteiro da Atividade 4 (PDF)
5 17/09 01/10 Roteiro da Atividade_5
6 01/10 08/10 Roteiro da Atividade_6
7 08/10 22/10 Roteiro da Atividade 7 (PDF)
8 22/10 05/11 Roteiro da Atividade_8 (PDF)
9 05/11 12/11 Roteiro da Atividade_9
10 12/11 19/11 Roteiro da Atividade_10
11 19/11 03/12 Preparação do relatório e da entrevista 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 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 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: 03/12/2008 (14:00, turma K e 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.
      • 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.
      • 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).
    • (2) documentação em papel (manuscrita ou impressa) registrada no caderno de laboratório.
      • Esta documentação também deverá ser entregue até o dia 03/12/2008 (14:00, turma K, e 16h00, turma L) no laboratório LE-27.
      • Entregas da documentação após o prazo terão uma penalização de menos dois (2) pontos para cada 24 horas de atraso.
      • Não será aceita a documentação em outra forma que não seja no caderno de laboratório.
      • A documentação deverá conter, pelo menos, os seguintes ítens obrigatórios:
        • (A) descrição do sistema (objetivos, especificações, o que foi efetivamente implementado e o que faltou, formas de uso);
        • (B) 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) 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;
        • (D) limitações da implementação feita;
        • (E) possíveis trabalhos futuros de melhoria do sistema;
        • (F) 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-27 ou LE-37 (LCAEE, terceiro andar).
    • Confira a data e horário para sua entrevista na planilha.
  • A entrevista consistirá de demonstração (no computador azaleia ou em algum outro escolhido pelo aluno) 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.
    • Na hora da demonstração será compilado e executado o código-fonte enviado previamente pelo aluno.
      • Em caso de necessidade, poderão ser feitas até 3 pequenas modificações 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

  • Este formulário para alteração de senha será utilizado nos testes do servidor Web. Atenção para os nomes dos campos.
  • Não esquecer de enviar as páginas de erros junto com o arquivo ZIP.

Escala de entrevistas

Turma K

Dia  Hora Aluno
===  ==== =============
 03 14:00 Luis Fernando
 03 14:25 Bruno
 03 14:50 Diego
 03 15:15 Mauro
 03 15:40 Leandro
 03 16:05 Ewerton

Turma L

Dia  Hora Aluno
===  ==== ========
 03 16:30 Alisson
 03 16:55 Rômulo
 03 17:20 Fernando
 03 17:45 Filipe
Ferramentas pessoais