Escolar Documentos
Profissional Documentos
Cultura Documentos
Centro Tecnolgico
0
Departamento de Informtica
1. Descrio do problema
Uma revista de informtica, a EngeSoft, deseja um novo sistema para gerenciar suas
atividades. EngeSoft publicada mensalmente, sendo que uma edio tem diversos
artigos, todos versando sobre um mesmo tema. Por exemplo, a edio deste ms sobre
o tema Qualidade de Software, tendo oito artigos. De uma edio deseja-se saber o
volume, nmero, data prevista de publicao, tema e artigos submetidos.
Autores submetem artigos para uma edio especfica. De um artigo deseja-se saber os
autores e o ttulo. Os autores devem informar, alm de seus nomes, e-mails e as
instituies a que pertencem, com endereo. Para artigos com mais de um autor, deve ser
indicado um autor como contato.
Para avaliar os artigos submetidos publicao, a EngeSoft possui um conjunto de
colaboradores que avaliam artigos (chamados revisores). Dos revisores deseja-se saber o
nome, e-mail, instituio e temas para os quais est habilitado a avaliar artigos.
Essas informaes so usadas para distribuir os artigos para os colaboradores. Cada artigo
obrigatoriamente avaliado por trs revisores, todos habilitados ao tema da edio
correspondente, que atribuem notas de 0 a 10 (com at uma casa decimal) a trs itens:
originalidade, contedo e apresentao. Com base nessas avaliaes que se decide se
um artigo ser publicado ou no. Para simplificar, considere que um revisor obrigado a
avaliar um artigo quando este lhe atribudo (ou seja, no pode haver cancelamento de
atribuio).
Artigos que j foram avaliados pelos seus trs revisores esto prontos para a seleo de
quais artigos sero publicados na edio em questo, caso contrrio encontram-se ainda
em avaliao. Apenas quando todos os artigos submetidos para uma edio tiverem sido
avaliados que a seleo pode ser efetuada. Esta seleo feita pelo editor-chefe da
edio, escolhido previamente no conjunto de colaboradores. Finda a seleo, sabem-se
quais artigos foram selecionados para publicao e quais foram rejeitados.
A diretoria da revista EngeSoft gostaria de um sistema para auxiliar a tarefa do editorchefe de cada edio. O sistema dever, dadas as avaliaes dos artigos, calcular as
mdias das avaliaes e apresentar ao editor-chefe um relatrio dos artigos avaliados, por
ordem de mdia das avaliaes. So pedidos, ainda, alguns relatrios complementares,
descritos nas prximas sees.
O projeto de construo de um sistema para a revista EngeSoft se dar em duas etapas:
na primeira etapa, os dados sero mantidos em planilhas eletrnicas e, quando todos os
dados estiverem prontos, eles sero passados ao programa, que produzir relatrios de
acordo com os dados fornecidos (vide seo 2). Numa segunda etapa, ser construda
uma interface grfica com o usurio para que os dados sejam inseridos diretamente no
novo sistema, promovendo uma maior interatividade com o usurio.
2. Primeira etapa
Para a primeira etapa, dever ser construdo um software sem interatividade, que efetua a
leitura dos arquivos de entrada e produz automaticamente os relatrios de sada. Para
uma transio mais lenta entre o sistema atual (manual) e um sistema completamente
informatizado, foi combinado que os cadastros seriam feitos em planilhas eletrnicas ao
longo do ms e, assim que estivessem completos (todas as informaes da edio), eles
seriam passados ao software para gerao dos relatrios.
Para o processamento destes dados e gerao dos relatrios desejados, um funcionrios
da EngeSoft ir exportar os dados das planilhas para arquivos 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.: 3,9), os dados
sero exportados utilizando ponto-e-vrgula como separador (ex.: 123;456;9,5;7,8;8,0
representando que o revisor 123 avaliou o artigo 456 e atribuiu-lhe as notas 9,5; 7,8; e
8,0).
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 de ler dados neste formato e gerar os relatrios tambm no mesmo
formato.
O restante desta seo especifica em detalhes como o software deve funcionar na
primeira etapa. A especificao encontra-se dividida em quatro partes: leitura dos dados,
processamento, escrita dos relatrios e tratamento de excees.
2.1. Leitura dos dados
So cinco os arquivos de entrada de dados:
Informaes da edio;
Cadastro de temas;
Cadastro de pessoas;
Cadastro de artigos;
Cadastro de revises.
Departamento de Informtica
Possvel inconsistncia
A incluir no resumo
O
nome
do
editor-chefe
em O editor-chefe "<nome do editor-chefe>"
Informaes da edio no existe no no foi encontrado no cadastro.
Cadastro de pessoas como um revisor.
Departamento de Informtica
Possvel inconsistncia
A incluir no resumo
Centro Tecnolgico
Departamento de Informtica
Resumo: relat-resumo.txt;
Relatrio de revises: relat-revisoes.csv;
Relatrio de revisores: relat-revisores.csv.
Centro Tecnolgico
Departamento de Informtica
mensagens devem ser exibidas de alguma forma na interface com o usurio e o programa
deve continuar rodando, permitindo que o usurio modifique os parmetros.
Quaisquer outras situaes de erro possveis 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.
Apesar do uso do pacote default no ser recomendado, para efeito dos exemplos abaixo
vamos supor que a classe do seu programa que possui o mtodo main() chama-se Main
e encontra-se no pacote default. Portanto, para executar seu programa lendo os arquivos
edicao.txt, temas.csv, pessoas.csv, artigos.csv, revisoes.csv como arquivos de entrada, o
comando seria:
java Main -e edicao.txt -t temas.csv -p pessoas.csv -a
artigos.csv -r revisoes.csv
Recuperao de pontos1: alm dos parmetros acima, possvel recuperar pontos
perdidos: basta que seu programa aceite dois parmetros opcionais que estabelecem trs
modos de execuo diferentes. Neste caso, o programa deve poder ser chamado das trs
formas, como a seguir:
a) java Main -e edicao.txt -t temas.csv -p pessoas.csv -a
artigos.csv -r revisoes.csv: 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;
b) java
Main
--read-only
-e
edicao.txt
-t
temas.csv
-p
pessoas.csv -a artigos.csv -r revisoes.csv: quando especificada a
opo --read-only, o programa deve ler os arquivos de entrada, montar as
estruturas de objetos em memria e serializar essas estruturas em um arquivo
chamado engesoft.dat. Os relatrios no devem ser gerados neste caso;
c) java Main --write-only: quando especificada esta opo, o programa deve
carregar os objetos serializados no arquivo engesoft.dat, gerar os relatrios e
escrev-los nos arquivos de sada. Neste caso no h leitura de arquivo CSV.
1
Recupera pontos perdidos, o que significa que a nota do trabalho no poder ultrapassar o valor mximo
de 10 pontos.
2
Para
saber
mais
sobre
Hash
https://pt.wikipedia.org/wiki/MD5#Hashes_MD5
MD5,
visite
sua
pgina
na
Wikipedia:
Departamento de Informtica
Note que as opes de execuo podem ser passadas em qualquer ordem. Portanto, o
comando
java Main --read-only -e edicao.txt -t temas.csv -p
pessoas.csv -a artigos.csv -r revisoes.csv
equivalente a:
java Main -r revisoes.csv -p pessoas.csv -e edicao.txt --readonly -t temas.csv -a artigos.csv
4. Segunda etapa
A segunda etapa consiste na criao de uma interface grfica com o usurio (GUI) que
substitua a execuo do programa conforme vista na seo 3 (chamada via terminal/linha
de comando) por uma forma mais interativa.
Ao ser executado sem parmetros (ex.: java Main) seu programa deve abrir uma janela
que permita ao usurio indicar os arquivos de entrada, executar o programa, ver os
arquivos de sada e qualquer outra interao que seja necessria para executar as
funcionalidades desenvolvidas na primeira etapa.
A segunda etapa do trabalho ser apresentada ao professor por meio de entrevista,
conforme descrito na seo 5.3.
5. Condies de entrega
O trabalho deve ser feito obrigatoriamente em dupla e em duas verses, ambas em Java:
uma sem interatividade (primeira etapa) e outra com interface grfica (segunda etapa). O
primeiro deve ser entregue at o dia 07/12/2014, enquanto o segundo deve ser
apresentado ao professor (por meio de entrevista) at o dia 15/12/2014,
impreterivelmente.
Alunos que no fizerem o trabalho em dupla sofrero penalidade de 2 pontos na nota do
trabalho. No caso de haver um nmero mpar de alunos matriculados, o professor indicar
um aluno que poder, a seu critrio, fazer o trabalho sozinho ou juntar-se a uma dupla
para formar um trio. As duplas para os trabalhos 1 e 2 devem ser as mesmas. No caso de
desistncia de aluno, o aluno que se encontrar sozinho para o trabalho 2 deve informar ao
professor para que a situao possa ser solucionada.
Dado que existem vrias verses dos compiladores Java, fica determinado o uso das
verses instaladas nas mquinas do LCEE como verses de referncia para o trabalho
prtico. Seu trabalho deve compilar e executar corretamente nas mquinas do LCEE. Alm
disso, os arquivos de cdigo-fonte devem estar em arquivos codificados com Unicode
(UTF-8) para evitar erros de compilao.
Centro Tecnolgico
0
Departamento de Informtica
Para
saber
mais
sobre
Hash
https://pt.wikipedia.org/wiki/MD5#Hashes_MD5
3
MD5,
visite
sua
pgina
na
Wikipedia:
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).
Centro Tecnolgico
Departamento de Informtica
wheel
wheel
wheel
wheel
wheel
170B
1.8K
136B
2.0K
204B
May
May
May
May
May
30
30
30
30
30
18:00
17:54
12:30
17:57
17:24
./
../
professor/
test.sh
testes/
$ ./test.sh
Script de teste PAC 2014/2 - Trabalho 1
[I]
[I]
[I]
[I]
[I]
[I]
[I]
[I]
[I]
[I]
[I]
[I]
[I]
[I]
[I]
[I]
[I]
[I]
[I]
$
Testando
Testando
Testando
Testando
Testando
Testando
Testando
Testando
Testando
Testando
Testando
Testando
Testando
Testando
Testando
Testando
Testando
Testando
Testando
professor...
professor: teste 01
professor: teste 01,
professor: teste 01,
professor: teste 01,
professor: teste 02
professor: teste 02,
professor: teste 03
professor: teste 03,
professor: teste 03,
professor: teste 03,
professor: teste 03,
professor: teste 04
professor: teste 04,
professor: teste 05
professor: teste 05,
professor: teste 06
professor: teste 06,
professor: pronto!
tudo OK em relat-resumo.txt
tudo OK em relat-revisoes.csv
tudo OK em relat-revisores.csv
serializao OK!
serializao OK!
tudo OK em relat-resumo.txt
tudo OK em relat-revisoes.csv
tudo OK em relat-revisores.csv
tudo OK em relat-resumo.txt
tudo OK em relat-resumo.txt
tudo OK em relat-resumo.txt
Centro Tecnolgico
Departamento de Informtica
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.
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, encontrarse 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
ant run
ant run-read-only
ant run-write-only
ant clean
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:
Centro Tecnolgico
Departamento de Informtica
</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>
<delete><fileset dir="." includes="*.dat"/></delete>
</target>
</project>
Recuperao de pontos4: 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 (edicao.txt,
temas.csv, pessoas.csv, artigos.csv e revisoes.csv) que atendam aos seguintes critrios:
Os dois conjuntos de arquivos devem ser quase iguais: um deles no deve ter
inconsistncia nenhuma enquanto o outro deve apresentar de 2 a 4 inconsistncias
(a escolha do grupo), de acordo com a tabela da seo 2.2.
Idem seo 3.
Centro Tecnolgico
Departamento de Informtica
Na tabela de horrios que se apresenta, cada dupla deve agendar um horrio, dentre os
horrios disponveis, at a data limite (15/12/2014), 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 Aplicada de Computadores.
Ateno aos seguintes detalhes sobre o agendamento:
Uma vez agendada a reunio, os alunos devem comparecer sala do professor (Ufes, CT7, 1 andar, sala 28) 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.
A entrevista consiste em uma apresentao do trabalho em funcionamento feita pelos
alunos, seguida de uma entrevista feita pelo professor. Na entrevista, 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.
6. Critrios de avaliao
O trabalho ser avaliado em duas etapas, conforme descrito na seo anterior:
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
-1
-2
-3
-10
-5
-8
Departamento de Informtica
Situao
Modificao
-1
-2
-1 por dia
+2
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
escritos ou organizados. Critrios utilizados na avaliao subjetiva incluem (mas no esto
limitados a):
7. Pontos extra5
Para incentivar alunos que desejarem aprender contedos avanados da linguagem Java
por conta prpria, so oferecidos pontos extra para os alunos que demonstrarem na
entrevista final do trabalho que adicionaram uma ou mais das seguintes funcionalidades
ao programa:
Funcionalidade opcional
Pontos extra
At 2 pontos
Apesar dos pontos extras permitirem que a nota do trabalho Java ultrapasse o valor mximo de 10 pontos,
no clculo da mdia parcial do aluno, a nota mxima continua sendo 10, no podendo ser ultrapassada.
Departamento de Informtica
At 2 pontos
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 avaliado o cdigo, que deve ser explicado pelos alunos.
8. 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.