You are on page 1of 15

Universidade Federal do Esprito Santo Programao III

Centro Tecnolgico (INF 09331) 2017/1

Departamento de Informtica Prof. Vtor E. Silva Souza

Especificao do Trabalho Prtico


O trabalho prtico da disciplina consiste em desenvolver o mesmo sistema computacional
para soluo do problema descrito abaixo nas duas linguagens de programao
apresentadas durante o curso: Java e C++.
Novidades em relao a verses anteriores da especificao esto marcadas em amarelo.

1. Descrio do problema
O Programa de Ps-Graduao em Informtica (PPGI) da UFES precisa de um sistema de
facilite o processo de avaliao de docentes credenciados ao programa. 1 Tal clculo feito
manualmente todo ano e a coordenao do programa gostaria de um software que
automatizasse este clculo.
Os docentes so avaliados anualmente pelas publicaes que fizeram nos ltimos anos. O
PPGI possui regras de pontuao baseadas na qualificao dos veculos (conferncias e
peridicos onde os artigos so publicados), que feita de acordo com seus fatores de
impacto. Os veculos so divididos em categorias, chamadas Qualis: A1, A2, B1, B2, B3,
B4, B5 e C (A1 tendo os maiores fatores de impacto e C os menores). O PPGI, ento,
associa determinada pontuao a cada nvel, ex.: publicao B1 ou superior vale 10
pontos; B2 ou B3 vale 5 pontos; B4 ou B5 valem 1 ponto.
Publicaes em peridicos valem mais, portanto o PPGI determina um fator multiplicador
aplicado se a publicao em peridico (ex.: 1,5 indica que valem 50% mais; 2,0 indica
que valem o dobro, etc.). O sistema deve permitir o registro das regras de pontuao do
PPGI, que indicariam ainda a vigncia (datas de incio e fim, pois as regras mudam ao
longo do tempo), quantos anos devem ser considerados ao analisar as publicaes de um
docente (ex.: ltimos 2 anos, ltimos 3 anos) e qual a pontuao mnima que um docente
deve alcanar para se manter credenciado ao programa (ex.: 20 pontos).
Para efetuar o clculo da pontuao de cada docente, preciso saber: (1) quais veculos
existem; (2) qual a pontuao de cada veculo a cada ano; e (3) quais as publicaes de
cada docente. Para a parte (1), o sistema deve registrar a sigla, nome e fator de impacto
(um nmero real) de cada veculo. Para peridicos, registra-se ainda cdigo ISSN. Para a
parte (2), o sistema deve permitir importar arquivos de avaliao referentes a um
determinado ano, indicando qual o Qualis de cada veculo. Para a parte (3), o sistema
deve registrar, para cada publicao, ano, veculo, ttulo, pginas inicial e final e quais
docentes, dentre os cadastrados no sistema, so autores. Para publicaes em peridico,
registra-se tambm nmero e volume. No caso de conferncias, registra-se tambm o
nmero e o local da mesma. O cadastro de docente deve incluir nome, data de
nascimento, data de ingresso no programa e se o docente o coordenador do programa.
De posse de todas as informaes, o sistema ser usado para fins de recredenciamento de
docentes: dado um ano (ex.: 2017), o sistema dever calcular a pontuao de cada
docente, verificando se o valor mnimo para recredenciamento foi atingido, considerando o
sistema de pontuao vigente no dia 01/01 do ano especificado. No entram nesse
clculo, no entanto, o coordenador do programa, membros que entraram a menos de 3

1
Inspirado em: http://www.informatica.ufes.br/pos-graduacao/PPGI/credenciamento-de-docentes
Universidade Federal do Esprito Santo Programao III

Centro Tecnolgico (INF 09331) 2017/1

Departamento de Informtica Prof. Vtor E. Silva Souza

anos e membros que possuem acima de 60 anos de idade (so automaticamente


recredenciados). Outros relatrios trazem dados de publicaes (ano, veculo, Qualis e
docentes) e estatsticas (nmero de artigos publicados por Qualis).

2. Formatos de entrada e sada


Os cadastros dos dados de docentes, veculos, publicaes, etc. so feitos em planilhas
eletrnicas. Para o processamento destes dados e gerao dos relatrios desejados, as
planilhas sero exportadas para um formato de texto simples com valores separados por
vrgulas, conhecido como CSV (Comma Separated Values). No entanto, para evitar conflito
com representao de valores decimais (ex.: 8,9), os dados sero exportados utilizando
ponto-e-vrgula como separadores (ex.: SPE;Software: Practice and Experience;P;1097-
024X;0,652 representando que peridico Software: Practice and Experience tem fator de
impacto 0,652).
Para facilitar a leitura dos relatrios produzidos pelo programa, ser feita a importao dos
dados dos relatrios do formato CSV para planilha eletrnica. Portanto, seu programa
deve ser capaz, alm de ler dados neste formato, tambm gerar os relatrios em CSV.
Esta seo descreve os dados que estaro presentes em cada um dos arquivos de entrada
e os dados que devem estar presentes em cada um dos arquivos de sada (relatrios).
Para saber como estes dados sero formatados, verifique os arquivos de exemplo
disponibilizados juntamente com esta descrio.
muito importante que o programa siga os padres de formatao prescritos, pois do
contrrio pode apresentar erro na leitura ou diferenas nos relatrios durante a correo
automatizada dos trabalhos (vide Seo 4). Note que tanto os arquivos de entrada quanto
os de sada possuem linhas de ttulo que devem ser levadas em considerao (ou seja,
descartadas durante a leitura das planilhas de entrada e inseridas durante a escrita dos
relatrios de sada).

2.1. Entrada de dados


So cinco os arquivos de entrada de dados:
Planilha de docentes;
Planilha de veculos;
Planilha de publicaes;
Planilha de qualificaes;
Planilha de regras de pontuao.

Os nomes dos arquivos so especificados durante a execuo do programa (vide Seo


3). Abaixo encontra-se especificada a ordem que os dados devem aparecer em cada um
destes arquivos:

Planilha de docentes
<cdigo>;<nome>;<data-nascimento>;<data-ingresso>;<coordenador?>
O cdigo numrico (inteiro, 16 dgitos); nome pode ser lido como texto; as datas so
informadas no formato dd/mm/aaaa; e o coordenador indicado com um X na respectiva
coluna.
Universidade Federal do Esprito Santo Programao III

Centro Tecnolgico (INF 09331) 2017/1

Departamento de Informtica Prof. Vtor E. Silva Souza

Planilha de veculos
<sigla>;<nome>;<tipo>;<fator de impacto>;<issn>
Sigla, nome e ISSN podem ser lidos como texto; tipo um caractere, sendo C para
conferncias e P para peridicos; fator de impacto numrico (real).

Planilha de publicaes
<ano>;<sigla veculo>;<ttulo>;<lista de autores>;<nmero>;<volume
peridico>;<local conferncia>;<pgina inicial>;<pgina final>
Ano, nmero, volume e pginas so numricos (inteiros); sigla, ttulo e local podem ser
lidos como texto; a lista de autores uma lista de cdigos de docentes, separados por
vrgula.

Planilha de qualificaes
<ano>;<sigla-veculo>;<Qualis>
O ano numrico (inteiro); a sigla do veculo pode ser lida como texto; o Qualis um dos
valores possvel para qualificao do veculo: A1, A2, B1, B2, B3, B4, B5 ou C.

Planilha de regras de pontuao


<data incio>;<data fim>;<lista de Qualis>;<lista de
pontos>;<multiplicador peridicos>;<quantidade de anos a
considerar>;<pontuao mnima para recredenciamento>
Datas so informadas no formato dd/mm/aaaa; o multiplicador numrico (real);
quantidade de anos e pontuao mnima so numricos (inteiros). As listas de Qualis e de
pontos possuem o mesmo tamanho, a primeira indicando os limites de cada categoria de
pontuao e a segunda os respectivos pontos (nmeros inteiros). Por exemplo,
A1,B2,B4,C;10,5,1,0 indica que de A1 a B1 vale 10 pontos, B2 a B3 vale 5 pontos, B4 a
B5 vale 1 ponto e C vale 0 pontos.

2.2. Processamento
Lidos todos os dados, o programa deve criar objetos em memria representando as
informaes contidas nos arquivos de entrada. Tais objetos devem estar ligados
adequadamente, conforme as associaes entre as classes de objetos, observando os
princpios da orientao a objetos.
Com os dados em memria (representados pelos objetos), o programa deve proceder
para a escrita dos relatrios.

2.3. Escrita dos relatrios


Os relatrios gerados devem ser escritos em arquivos com os seguintes nomes:

Relatrio Nome do Arquivo

Relatrio de recredenciamento 1-recredenciamento.csv

Lista de publicaes 2-publicacoes.csv

Estatsticas de publicaes 3-estatisticas.csv


Universidade Federal do Esprito Santo Programao III

Centro Tecnolgico (INF 09331) 2017/1

Departamento de Informtica Prof. Vtor E. Silva Souza

Abaixo encontra-se especificada a ordem que os dados devem aparecer em cada um


destes arquivos:

Relatrio de recredenciamento
<nome do docente>;<pontuao alcanada>;<recredenciado?>
Este relatrio deve ser ordenado por nome do docente, em ordem crescente. Pontuao e
recredenciamento devem ser calculados segundo a regra vigente no dia 01/01 do ano em
questo. A pontuao deve ser indicada com 1 casa decimal. A ltima coluna indica os
casos de credenciamento automtico ou o credenciamento por pontos, conforme
especificao a seguir:
Coordenador: docente coordenador;
PPJ: docente entrou no programa h menos de 3 anos;
PPS: docente possui mais de 60 anos;
Sim: docente no se enquadra nos casos acima e alcanou a pontuao mnima;
No: docente no se enquadra nos casos acima e no alcanou a pontuao
mnima.

Lista de publicaes
<ano>;<sigla veculo>;<nome veculo>;<Qualis>;<fator de
impacto>;<ttulo da publicao>;<nomes dos docentes>
Este relatrio deve ser ordenado por Qualis, em ordem decrescente (A1 primeiro), seguido
por ano (decrescente) por sigla do veculo (crescente) e, por fim, pelo ttulo da publicao
(crescente). O fator de impacto deve ser formatado com 3 casas decimais e o nome dos
docentes deve estar separado por vrgulas. Note que este relatrio considera todas as
publicaes informadas e no apenas uma quantidade de anos, como no caso do
recredenciamento.

Estatsticas de publicaes
<Qualis>;<nmero de artigos>;<nmero de artigos por docente>
Este relatrio deve ser ordenado por Qualis, em ordem decrescente (A1 primeiro). A
segunda coluna indica o nmero total de artigos publicados em veculos com o respectivo
Qualis (somatrio em que cada artigo soma 1). J a ltima coluna indica o nmero de
artigos por docente em cada Qualis (mesmo somatrio, s que cada artigo soma 1
dividido pelo nmero de docentes autores). A ltima coluna deve ser formatada com 2
casas decimais. Este relatrio tambm considera todas as publicaes.

2.4. Tratamento de excees


Leitura de dados de arquivos, formatao, etc. so fontes comuns de erros e excees.
Alm disso, possvel que os dados das planilhas no estejam consistentes. Seu programa
deve tratar apenas os seguintes tipos de erro:
1. Erros de entrada e sada de dados como, por exemplo, o arquivo especificado no
existir ou o programa no ter permisso para ler ou escrever em um arquivo.
Nestes casos, o programa deve exibir a mensagem Erro de I/O (sem as aspas) e
terminar sem produzir arquivos de sada;
2. Erro de formatao dos dados nos arquivos, ou seja, um valor formatado de forma
incorreta nos arquivos de entrada (ex.: encontrado caractere onde esperava-se um
nmero), causando erros de parsing dos dados. Nestes casos, o programa deve
Universidade Federal do Esprito Santo Programao III

Centro Tecnolgico (INF 09331) 2017/1

Departamento de Informtica Prof. Vtor E. Silva Souza

exibir a mensagem Erro de formatao (sem as aspas) e terminar sem produzir


arquivos de sada;
3. Inconsistncia nos dados, ou seja, no conformidade com a especificao dos
arquivos de entrada da seo 2.1 ou com a descrio do problema na seo 1. Seu
programa deve tratar apenas as inconsistncias elencadas abaixo, exibindo a
mensagem associada e terminar sem produzir arquivos de sada:

Inconsistncia Mensagem
O mesmo cdigo foi usado para dois Cdigo repetido para <objeto>: <cdigo>.
docentes ou veculos diferentes. (Substituir <objeto> por docente ou veculo;
substituir <cdigo> pelo cdigo em questo.
Aplicar este mesmo conceito nas mensagens
abaixo).
Sigla de veculo especificada para uma Sigla de veculo no definida usada na
publicao no foi definida na planilha de publicao <ttulo>: <sigla>.
veculos.
Cdigo de docente especificado para uma Cdigo de docente no definido usado na
publicao no foi definido na planilha de publicao <ttulo>: <sigla>.
docentes.
Tipo de um veculo no nem C nem P. Tipo de veculo desconhecido para veculo
<sigla>: <tipo>.
Sigla de veculo especificada para uma Sigla de veculo no definida usada na
qualificao no foi definida na planilha de qualificao do ano <ano>: <sigla>.
veculos.
Qualis especificado para uma qualificao Qualis desconhecido para qualificao do
de veculo no nenhuma das categorias veculo <sigla> no ano <ano>: <qualis>.
existentes: A1, A2, B1, B2, B3, B4, B5 ou C.
Qualis especificado para uma regra de Qualis desconhecido para regras de <data
pontuao no nenhuma das categorias incio vigncia>: <qualis>
existentes: A1, A2, B1, B2, B3, B4, B5 ou C.

Apesar de terminar sem produzir arquivos de sada, seu programa no deve ser
interrompido abruptamente com uma chamada a System.exit(), mas sim seguir at o
final do mtodo main() e terminar normalmente.
Quaisquer outras situaes de erro devem ser ignoradas. Pode-se assumir que nos testes
feitos durante a avaliao dos trabalhos outros tipos de erros diferentes dos listados acima
nunca acontecero.

3. Execuo
Seu programa deve ser executado especificando os nomes dos arquivos de entrada e o
ano a ser considerado no recredenciamento como opes de linha de comando,
especificadas a seguir:
Universidade Federal do Esprito Santo Programao III

Centro Tecnolgico (INF 09331) 2017/1

Departamento de Informtica Prof. Vtor E. Silva Souza

-d <arquivo>: planilha de docentes;


-v <arquivo>: planilha de veculos;
-p <arquivo>: planilha de publicaes;
-q <arquivo>: planilha de qualificaes;
-r <arquivo>: planilha de regras de pontuao;
-a <ano>: ano de recredenciamento.

Supondo que a classe do seu programa que possui o mtodo main() chama-se Main e
encontra-se no pacote tr abal ho, para executar seu programa lendo os arquivos
docentes.csv, veiculos.csv, publicacoes.csv, qualis.csv e regras.csv como arquivos de
entrada e considere o ano de 2017 para o recredenciamento, o comando seria:
java trabalho.Main -d docentes.csv -v veiculos.csv -p
publicacoes.csv -q qualis.csv -r regras.csv -a 2017
Recuperao de pontos2: alm dos parmetros acima, a verso Java do seu programa
pode, se quiser recuperar pontos perdidos (vide Seo 5), suportar dois parmetros
opcionais que estabelecem trs modos de execuo diferentes. Neste caso, o programa
deve poder ser chamado das trs formas, como a seguir:
java trabalho.Main -d docentes.csv -v veiculos.csv -p
publicacoes.csv -q qualis.csv -r regras.csv -a 2017: quando no
forem especificadas opes de execuo, o programa deve ler os arquivos de
entrada, gerar os relatrios e escrev-los nos arquivos de sada, como descrito
anteriormente;
java trabalho.Main --read-only -d docentes.csv -v
veiculos.csv -p publicacoes.csv -q qualis.csv -r regras.csv
-a 2017: quando especificada a opo --read-only, o programa deve ler os
arquivos de entrada, montar as estruturas de objetos em memria e serializar esta
estrutura em um arquivo chamado recredenciamento.dat. Os relatrios no
devem ser gerados neste caso;
java trabalho.Main --write-only: quando especificada esta opo, o
programa deve carregar os objetos serializados no arquivo
recredenciamento.dat, gerar os relatrios e escrev-los nos arquivos de sada.
Neste caso no h leitura de arquivo CSV.
Importante: as opes de execuo podem ser passadas em qualquer ordem. Portanto,
o comando
java trabalho.Main --read-only -d docentes.csv -v veiculos.csv
-p publicacoes.csv -q qualis.csv -r regras.csv -a 2017

equivalente a:
java trabalho.Main -q qualis.csv -r regras.csv -p
publicacoes.csv --read-only -a 2017 -v veiculos.csv -d
docentes.csv

2
Diferentemente dos pontos extras (vide Seo 6), a recuperao de pontos apenas recupera pontos
perdidos, o que significa que a nota do trabalho no poder ultrapassar o valor mximo de 10 pontos.
Universidade Federal do Esprito Santo Programao III

Centro Tecnolgico (INF 09331) 2017/1

Departamento de Informtica Prof. Vtor E. Silva Souza

Por fim, a verso C++ do programa no deve implementar as opes --read-only e --


write-only, ou seja, a recuperao de pontos no oferecida para o trabalho 2.

4. Condies de entrega
O trabalho deve ser feito obrigatoriamente em dupla3 e em duas verses: uma utilizando a
linguagem Java, outra utilizando a linguagem C++. O primeiro deve ser entregue at o
dia 29/06/2017 e o segundo at o dia 31/07/2017, impreterivelmente. As duplas para
os trabalhos Java e C++ no precisam, necessariamente, ser as mesmas. No entanto,
preciso avisar com antecedncia sobre eventuais trocas.
Dado que existem vrias verses dos compiladores Java e C++, fica determinado o uso
das verses instaladas nas mquinas dos LabGrads (Laboratrios de Graduao do
Departamento de Informtica) como verses de referncia para o trabalho prtico. Seu
trabalho deve compilar e executar corretamente nas mquinas destes laboratrios. Alm
disso, os arquivos de cdigo-fonte devem estar codificados com Unicode (UTF-8) para
evitar erros de compilao.

4.1. Entrega do trabalho


O cdigo-fonte e o arquivo de build (vide seo 4.2) de sua soluo devero ser
compactados e enviados por e-mail (anexo ao e-mail) para o professor
(vitorsouza@inf.ufes.br). Sero aceitos trabalhos entregues at as 23h59 da data limite 4.
O assunto do e-mail dever ser o seguinte:
Prog3 - Trab1 - Nomes dos alunos
substituindo No mes dos al unos pelos nomes dos alunos do grupo, separado por vrgula.
Para a entrega do trabalho de C++, substitua Trab1 por Trab2.
Assim que possvel, o professor responder o e-mail com um hash MD5 5 do arquivo
recebido. Para garantir que o arquivo foi recebido sem ser corrompido, gere o hash MD5
do arquivo que voc enviou6 e compare com o hash recebido na confirmao. Caso voc
no receba o e-mail de confirmao ou caso o valor do hash seja diferente, envie o
trabalho novamente. Se o problema persistir, contate o professor o mais rpido possvel.
Dada a quantidade de trabalhos que devem ser avaliados, a correo dos trabalhos
passar primeiro por um processo de testes automticos e, em seguida, por uma

3
Exceto quando permitido extraordinariamente pelo professor, acordado com antecedncia. Caso contrrio,
o aluno/grupo sofrer uma penalidade de 2 pontos.
4
Alm da entrega do trabalho, ser feita uma entrevista com cada grupo, separadamente. Tais entrevistas
devem acontecer at a data de entrega do trabalho em questo, em horrio de atendimento do professor.
Os alunos podem enviar o trabalho depois da entrevista (at as 23h59 da data limite), porm devem trazer
uma cpia do trabalho para apresentao no momento da entrevista.
5
Para saber mais sobre hash MD5, visite sua pgina na Wikipedia:
https://pt.wikipedia.org/wiki/MD5#Hashes_MD5
6
Para gerar hash MD5 de arquivos no Linux, veja as instrues em
http://roneymedice.com.br/2009/07/30/gerando-hash-md5-dos-arquivos-no-linux/. J na pgina
http://www.mundodoshackers.com.br/como-gerar-e-checar-hashs-md5 voc encontra instrues tambm
para Windows (porm os exemplos mostram gerao de hash para strings, no para arquivos).
Universidade Federal do Esprito Santo Programao III

Centro Tecnolgico (INF 09331) 2017/1

Departamento de Informtica Prof. Vtor E. Silva Souza

avaliao subjetiva (mais detalhes na prxima seo). Para que os testes automticos
funcionem, o arquivo compactado enviado por e-mail deve estar no formato zip com o
nome trabalho.zip e conter o arquivo de build (explicaes a seguir) e o cdigo-fonte.
O arquivo enviado no deve conter nenhuma classe compilada. Os testes automticos
sero executados no diretrio onde encontra-se o arquivo de build. O cdigo-fonte pode
ser organizado da forma que a dupla achar melhor, desde que o arquivo de build esteja
adequado a esta estrutura.

4.2. Preparao e execuo do script de testes


Os trabalhos prticos da disciplina sero avaliados em duas etapas (vide seo 5), sendo a
primeira uma avaliao objetiva, com testes automticos. Foi disponibilizado aos alunos
um script para execuo de alguns testes automticos, sendo possvel, portanto, garantir
que o trabalho passa nesses testes antes de submet-lo ao professor.
O script de teste funciona somente em ambientes Linux/MacOS e foi testado no LabGrad.
Recomenda-se fortemente que os testes finais do seu trabalho sejam feitos no LabGrad,
pois as verses das ferramentas instaladas nas mquinas do laboratrio sero
consideradas como verses de referncia para a correo do trabalho.
Para obter e executar o script, siga os passos abaixo:
1. Na pgina da disciplina, obtenha o arquivo teaching-br-prog3-20171-
script-java.zip;
2. Descompacte o arquivo em alguma pasta do seu sistema;
3. Abra um terminal, acesse esta pasta;
4. Execute o script: ./test.sh e o resultado deve ser parecido com a sada abaixo:

$ ./test.sh
Script de teste Prog3 2017/1 - Trabalho 1

O script reconhece trabalhos se forem colocados em pastas no mesmo diretrio em que se


encontra o script test.sh e se os trabalhos seguirem as instrues contidas a seguir.
Note que h j uma pasta testes, que contm os arquivos de teste executados pelo
script. O script j configurado a no considerar esta pasta como uma pasta de trabalho.
No exemplo abaixo, o comando ls mostra que h um diretrio professor dentro do qual
encontra-se a implementao do trabalho do professor. Em seguida, mostra a execuo
do script de testes sem erro algum:
$ ls -Flpah
drwxr-xr-x@ 6 vitor staff 204B May 29 17:09 ./
drwxr-xr-x@ 14 vitor staff 476B May 29 17:09 ../
drwxr-xr-x@ 5 vitor staff 170B May 29 17:26 professor/
-rwxr-xr-x@ 1 vitor staff 2.0K May 29 17:12 test.sh
drwxr-xr-x@ 6 vitor staff 204B May 29 17:11 testes/

$ ./test.sh
Script de teste Prog3 2017/1 - Trabalho 1
Universidade Federal do Esprito Santo Programao III

Centro Tecnolgico (INF 09331) 2017/1

Departamento de Informtica Prof. Vtor E. Silva Souza

[I] Testando professor...


[I] Testando professor: teste 01
[I] Testando professor: teste 01, tudo OK em 1-
recredenciamento.csv
[I] Testando professor: teste 01, tudo OK em 2-publicacoes.csv
[I] Testando professor: teste 01, tudo OK em 3-estatisticas.csv
[I] Testando professor: teste 02
[I] Testando professor: teste 02, serializao OK!
[I] Testando professor: teste 03
[I] Testando professor: teste 03, serializao OK!
[I] Testando professor: teste 03, tudo OK em 1-
recredenciamento.csv
[I] Testando professor: teste 03, tudo OK em 2-publicacoes.csv
[I] Testando professor: teste 03, tudo OK em 3-estatisticas.csv
[I] Testando professor: pronto!

O script compara cada arquivo de sada gerado pelo trabalho do aluno com o arquivo de
sada gerado pela implementao do professor. No exemplo acima, nenhum erro foi
encontrado e tudo est OK. Quando diferenas so encontradas, as mesmas so
mostradas na tela e implicam perda de pontos na correo automtica. O aluno deve,
portanto, tentar reduzir o nmero de diferenas ao mximo possvel antes de entregar o
trabalho.
Nota: alguns testes podem indicar tudo OK no arquivo output.txt, porm este arquivo no
foi citado na especificao. Na verdade, este um arquivo temporrio criado pelo script
para os casos em que h inconsistncia no trabalho e o programa deve imprimir uma
mensagem na tela. O script direciona as impresses de tela para este arquivo temporrio
e compara com a resposta oficial do professor.
Para testar o seu trabalho, crie uma pasta com um nome qualquer dentro do mesmo
diretrio em que se encontra o script test.sh e copie seu cdigo-fonte para esta pasta.
Alm do cdigo-fonte, crie um arquivo de build do Apache Ant (http://ant.apache.org) que
indique como compilar e executar seu programa.
Os arquivos fonte podem estar organizados da forma que voc achar melhor, desde que o
Ant consiga compil-los, executar as classes geradas e limpar o projeto. Para que isso seja
feito de forma automatizada, o arquivo de build do Ant deve, obrigatoriamente, encontrar-
se na raiz da pasta criada e chamar-se build.xml. Alm disso, ele deve ser feito de
forma a responder aos seguintes comandos:
Comando Resultado esperado
ant compile O cdigo-fonte deve ser compilado, gerando os arquivos
.class para todas as classes do trabalho.
Universidade Federal do Esprito Santo Programao III

Centro Tecnolgico (INF 09331) 2017/1

Departamento de Informtica Prof. Vtor E. Silva Souza

Comando Resultado esperado


ant run O programa deve ser executado especificando as opes -d
docentes.csv -v veiculos.csv -p
publicacoes.csv -q qualis.csv -r regras.csv
-a 2017 como parmetro.
ant run-read-only O programa deve ser executado no modo --read-only
(vide seo 3), especificando alm disso as mesmas opes
do comando ant run acima.
ant run-write-only O programa deve ser executado no modo --write-only
(vide seo 3).
ant clean Todos os arquivos gerados (classes compiladas, relatrios
de sada, arquivo de serializao) e eventuais arquivos de
entrada de dados devem ser excludos, sobrando somente o
contedo original do arquivo compactado (ou seja, o
cdigo-fonte e o arquivo de build).

Caso voc no implemente as opes read-only e write-only, faa com que os respectivos
comandos funcionem da mesma forma que o comando run, ou seja, efetuem a execuo
normal.
Segue abaixo um exemplo de arquivo build.xml que atende s especificaes acima. Em
negrito encontram-se marcados os dados que devem ser adaptados dependendo do
projeto:
src: subpasta onde encontra-se todo o cdigo-fonte;
bin: subpasta onde sero colocadas as classes compiladas;
meupacote.MinhaClassePrincipal: nome da classe principal do programa,
ou seja, aquela que possui o mtodo main().
<project name="TrabalhoProg3_2017_1" default="compile" basedir=".">
<description>Arquivo de build do trabalho de Prog3, 2017/1.</description>

<!-- Propriedades do build. -->


<property name="src" location="src" />
<property name="bin" location="bin" />
<property name="mainClass" value="meupacote.MinhaClassePrincipal" />

<!-- Inicializao. -->


<target name="init" description="Inicializa as estruturas necessrias.">
<tstamp/>
<mkdir dir="${bin}" />
</target>

<!-- Compilao. -->


<target name="compile" depends="init" description="Compila o cdigo-
fonte.">
<javac includeantruntime="false" srcdir="${src}" destdir="${bin}" />
</target>

<!-- Execuo normal. -->


Universidade Federal do Esprito Santo Programao III

Centro Tecnolgico (INF 09331) 2017/1

Departamento de Informtica Prof. Vtor E. Silva Souza

<target name="run" depends="compile" description="Executa o programa


principal, em modo normal.">
<java classname="${mainClass}">
<arg value="-d" />
<arg value="docentes.csv" />
<arg value="-v" />
<arg value="veiculos.csv" />
<arg value="-p" />
<arg value="publicacoes.csv" />
<arg value="-q" />
<arg value="qualis.csv" />
<arg value="-r" />
<arg value="regras.csv" />
<arg value="-a" />
<arg value="2017" />
<classpath>
<pathelement path="${bin}" />
</classpath>
</java>
</target>

<!-- Execuo somente leitura. -->


<target name="run-read-only" depends="compile" description="Executa o
programa principal, em modo somente leitura.">
<java classname="${mainClass}">
<arg value="-d" />
<arg value="docentes.csv" />
<arg value="-v" />
<arg value="veiculos.csv" />
<arg value="-p" />
<arg value="publicacoes.csv" />
<arg value="-q" />
<arg value="qualis.csv" />
<arg value="-r" />
<arg value="regras.csv" />
<arg value="-a" />
<arg value="2017" />
<arg value="--read-only" />
<classpath>
<pathelement path="${bin}" />
</classpath>
</java>
</target>

<!-- Execuo somente escrita. -->


<target name="run-write-only" depends="compile" description="Executa o
programa principal, em modo somente escrita.">
<java classname="${mainClass}">
<arg value="--write-only" />
<classpath>
<pathelement path="${bin}" />
</classpath>
</java>
</target>

<!-- Limpeza. -->


<target name="clean" description="Limpa o projeto, deixando apenas o
cdigo-fonte." >
<delete dir="${bin}"/>
<delete><fileset dir="." includes="*.txt"/></delete>
<delete><fileset dir="." includes="*.csv"/></delete>
Universidade Federal do Esprito Santo Programao III

Centro Tecnolgico (INF 09331) 2017/1

Departamento de Informtica Prof. Vtor E. Silva Souza

<delete><fileset dir="." includes="*.dat"/></delete>


</target>
</project>

Recuperao de pontos7: ser dado 1 ponto extra ao grupo que preparar e enviar ao
professor, at o prazo do trabalho 1, dois conjuntos de arquivos de entrada (docentes.csv,
veiculos.csv, publicacoes.csv, qualis.csv e regras.csv) que atendam aos seguintes critrios:
No conter trechos iguais a outros arquivos de teste disponveis no site (ou seja,
no copiar);
Conter o cadastro de pelo menos 5 docentes, 20 veculos, 30 publicaes
espalhadas pelos anos 2013 a 2016 (ao menos 10 delas devem ter mais de um
autor), qualificao dos veculos em 3 anos diferentes e 2 regras de pontuao:
uma para 2017 e outra para 2018;
Assim como o cdigo-fonte do trabalho, os arquivos devem estar em formato
Unicode (UTF-8);
Os dois conjuntos de arquivos devem ser quase iguais: um deles no deve ter
inconsistncia nenhuma enquanto o outro deve apresentar 1 inconsistncia de
dados (a escolha do grupo), como descrito na seo 0.
Os arquivos de teste enviados podero, a critrio do professor, ser disponibilizados aos
demais alunos como parte do script de testes. Atualizaes do script sero divulgadas em
sala de aula.

4.3. Apresentao do trabalho em entrevista


Os trabalhos devem ser tambm apresentados ao professor por meio de entrevista. Para
tal, os alunos devem acessar o sistema de marcao de horrios YouCanBook.Me (YCBM)
no seguinte endereo:
https://vitorsouza.youcanbook.me

Na tabela de horrios que se apresenta, cada dupla deve agendar um horrio, dentre os
horrios disponveis, at as respectivas datas limite, com durao de 30 minutos e
fornecendo os dados solicitados pelo formulrio (nome e e-mail). Para o propsito da
reunio, selecionar a opo Aluno(a) de Programao 3.
Ateno aos seguintes detalhes sobre o agendamento:
O sistema s permite agendamentos com antecedncia mnima de 8 horas (e
mxima de 2 semanas);
O sistema bloqueia automaticamente horrios j reservados ou em que o professor
tenha outros compromissos;
de responsabilidade do aluno achar um horrio disponvel. Planeje-se com
antecedncia para evitar problemas de ltima hora (ex.: falta de horrios
adequados).

7
Idem seo 3.
Universidade Federal do Esprito Santo Programao III

Centro Tecnolgico (INF 09331) 2017/1

Departamento de Informtica Prof. Vtor E. Silva Souza

Uma vez agendada a reunio, os alunos devem comparecer sala do professor (UFES,
CT-7, trreo, sala 17) para a entrevista pontualmente no dia e hora marcados. A
apresentao do trabalho pode ser feita em computador porttil trazido pelos alunos ou
no computador do professor. Em qualquer caso, os alunos devem tambm trazer o
cdigo-fonte do trabalho em disco removvel (pen-drive) para o professor (ou t-lo
enviado por e-mail anteriormente).
A entrevista consiste em uma apresentao do cdigo do trabalho feita pelos alunos.
Durante esta apresentao, os alunos sero questionados individualmente sobre
detalhes do trabalho e sero avaliados com relao s respostas fornecidas. Os critrios
de avaliao so descritos na seo a seguir.

5. Critrios de avaliao
Os trabalhos sero avaliados em duas etapas:
Avaliao objetiva (com testes automticos), valendo 10 pontos;
Avaliao subjetiva (entrevistas), valendo 10 pontos.
A nota final do trabalho a mdia aritmtica simples entre as notas acima. Para a
avaliao objetiva, todo trabalho possui inicialmente nota 10 e sofre modificaes nas
situaes descritas na tabela abaixo:

Situao Modificao
No foi feito em dupla (exceto casos previamente autorizados) -2
No observou as regras para envio do trabalho. -1
No compilou nos testes automticos, mas foi possvel compilar
-3
manualmente (ex.: arquivos no codificados em UTF-8).
No compilou nem manualmente. -10
No gerou sadas nos testes automticos. -5
No gerou sadas nem manualmente. -8
Pequenas diferenas das sadas em relao ao teste automtico (ex.:
-1
formatao, arredondamentos, etc.).
Grandes diferenas das sadas em relao ao teste automtico (ex.:
-2
valores sensivelmente diferentes).
Entrega fora do prazo. -1 por dia
Opes --read-only e --write-only funcionaram no teste
+2
automtico.

Para avaliao subjetiva, novamente os trabalhos comeam com nota 10 e perdem pontos
(que variam de acordo com a avaliao feita pelo professor) caso no estejam bem
Universidade Federal do Esprito Santo Programao III

Centro Tecnolgico (INF 09331) 2017/1

Departamento de Informtica Prof. Vtor E. Silva Souza

escritos ou organizados. Critrios utilizados na avaliao subjetiva incluem (mas no esto


limitados a):
Uso dos princpios bsicos da orientao a objetos, como encapsulamento,
abstrao e modularizao;
Legibilidade (nomes de variveis bem escolhidos, cdigo bem formatado, uso de
comentrios quando necessrio, etc.);
Consistncia (utilizao de um mesmo padro de cdigo, sugere-se a conveno de
cdigo do Java: http://www.oracle.com/technetwork/java/codeconv-138413.html);
Eficincia (sem exageros, tentar evitar grandes desperdcios de recursos);
Uso eficaz da API Java (leitura com Scanner, API de colees, etc.) e das
funcionalidades das novas verses da plataforma (ex.: tipos genricos, lao for-
each, try com recursos fechveis, etc.);
Se o aluno sabe responder questes formuladas pelo professor durante a entrevista
sobre o cdigo-fonte escrito pela dupla.

6. Pontos extra8
Para incentivar alunos que desejarem aprender contedos avanados da linguagem Java
por conta prpria, 9 so oferecidos pontos extra para os alunos que demonstrarem na
entrevista do trabalho 2 que adicionaram uma ou mais das seguintes funcionalidades ao
programa do trabalho 1:

Funcionalidade opcional Pontos extra


Implementao de uma interface grfica (janelas) que permita indicar
onde encontram-se os arquivos de entrada e onde salvar os arquivos At 3 pontos
de sada e gerar os relatrios a partir de um clique.
Implementao de uma interface Web que permita fazer o upload dos
arquivos de entrada, gere os relatrios e os disponibilize para At 3 pontos
download. Nota: Applets no sero consideradas interfaces Web.
Substituir a serializao descrita na seo 3 por armazenamento em
banco de dados relacional. Podem ser utilizadas solues de At 3 pontos
mapeamento objeto/relacional, se desejado.
Gerar (como parte dos relatrios produzidos) um arquivo em formato
BibTeX contendo referncias bibliogrficas de todas as publicaes
para serem usadas em um documento LaTeX e trazer um documento At 2 pontos
LaTeX que, combinado com o BibTeX gerado, produza a lista de
publicaes em formato PDF.

8
Ao contrrio da recuperao de nota, os pontos extras permitem que a nota do trabalho Java ultrapasse o
valor mximo de 10 pontos. No entanto, no clculo da mdia parcial do aluno, a nota mxima continua
sendo 10, no podendo ser ultrapassada.
9
Os alunos devem buscar recursos prprios para aprender tais tecnologias, visto que no h tempo hbil
durante o semestre para aulas destes assuntos. O professor, no entanto, possui alguns materiais que pode
indicar para os alunos interessados.
Universidade Federal do Esprito Santo Programao III

Centro Tecnolgico (INF 09331) 2017/1

Departamento de Informtica Prof. Vtor E. Silva Souza

A coluna Pontos extra indica o mximo de pontos extra que podem ser obtidos pela
implementao da funcionalidade extra correspondente. A pontuao exata ser
estabelecida pelo professor aps avaliada a qualidade do cdigo, que deve ser explicado
pelos alunos, e do resultado (ex.: quo bem feita a interface grfica/web?).
Note que o trabalho Java para correo automtica deve ser enviado no prazo do trabalho
1. Posteriormente ele pode ser utilizado como base para criao do programa com
interface grfica/Web ou banco de dados para obteno dos pontos extra, porm ao
envi-lo para a correo no prazo inicial ele deve responder aos scripts dos testes
automticos, do contrrio sofrer as penalidades descritas na especificao da correo
objetiva.
Esta opo no oferecida para os trabalhos C++.

7. Observaes finais
Caso haja algum erro neste documento, sero publicadas novas verses e divulgadas
erratas em sala de aula. responsabilidade do aluno manter-se informado, frequentando
as aulas ou acompanhando as novidades na pgina da disciplina na Internet.

You might also like