O tema do trabalho eh o catalogo de programas de televisao.
A dupla sera formada por mim, e pelo Sergio Lopes.
Logo mais irei postar o que sera implementado, preciso discutir com minha dupla que so chega as 23:45.
Descrição
- Sistema aberto para consulta de programação das redes de televisão que permite aos usuários trocarem comentários e votarem nos seus programas favoritos.
Objetivo geral
- Programação online de TVs
Objetivo específicos
- Cadastro das exibições e programas das emissoras
- Cadastro de usuários (opcional ao visitante)
- Visualização da programação com filtros de emissora, classificação, tipo de programa e melhor avaliado
- Os usuários podem postar comentários e/ou avaliar os programas
- Sistema aberto para consulta de programação das redes de televisão que permite aos usuários trocarem comentários e votarem nos seus programas favoritos.
Objetivo geral
- Programação online de TVs
Objetivo específicos
- Cadastro das exibições e programas das emissoras
- Cadastro de usuários (opcional ao visitante)
- Visualização da programação com filtros de emissora, classificação, tipo de programa e melhor avaliado
- Os usuários podem postar comentários e/ou avaliar os programas
Entrega da primeira versão da implementação.
Versão .war pronta para deploy.
Versão .war pronta para deploy.
Entrega da primeira versão da implementação.
Versão .zip com tudo (fontes etc)
Versão .zip com tudo (fontes etc)
Análise (Nota 9.5)
Documentação simples e clara.
Entidades
- Categoria que aparece no diagrama não aparece no código (ela existe no código mas não é usada).
- Poderiam estar explícitas as relações entre administrador e as outras entidades (por ex: administrador cria/edita/apaga emissora).
Casos de uso
- Cadastro de avaliações, comentários e visitantes não documentado.
- A relação de dependência entre "Envia comentário" e "Efetua cadastro" poderia estar explícita no diagrama.
- A relação de dependência entre "Avalia um programa com nota" e "Efetua cadastro" poderia estar explícita no diagrama.
- "Login do administrador" não aparece no diagrama (seria interessante se os outros casos de uso dependessem desse).
UI (Nota 9.0)
No geral, interface e usabilidade estão boas. As cores foram bem escolhidas e o layout está bem claro.
- Não entendemos a opção "Nada" no menu.
- Não entendemos porque há opção de cadastro de comentários e cadastro de avaliações pelo admin. As opções de editar e remover são válidas (moderação), mas aparentemente não há motivo para haver a adição.
- A classificação de programas apresenta valores como MAIOR_18. Seria mais interessante se elas aparecessem como "Maior de 18" ou algo do gênero.
- Não entendemos a busca. Ela será uma funcionalidade a ser implementada no futuro?
Arquitetura (Nota 10.0)
Uso interessante de recursos da linguagem como reflection e annotations. Algumas implementações usaram um trabalho de design mais refinado, como o uso de lazy lists pelos DAOs e criação de formulários por reflection nas JSPs. Muito interessante também o uso do HSQLDB.
- SQLExceptions não deveriam chegar a camada de controle. O ideal seria encapsulá-las em uma DAOException, por exemplo, para que camadas superiores não tenham conhecimento específico sobre a implementação de camadas inferiores.
Legibilidade (Nota 9.0)
O código está muito claro e bem escrito.
- O código possui partes em português e partes em inglês. Uma padronização é necessária.
- A forma como o projeto foi organizado em pacotes (actions, controllers, dao, db, modelo e view) facilita o entendimento da aplicação.
Corretude (Nota 9.5)
Apenas um teste de funcionalidades falhou.
- Não há mensagem para erro de autenticação, o que causa erros quando o visitante não autenticado tenta outras ações, como avaliar e comentar. Vimos NullPointerExceptions sendo geradas por essas ações nos DAOs.
Funcionalidade (Nota 10.0)
A aplicação possui um conjunto de funcionalidades bem escolhido, que faz com que ela não seja muito complexa nem difícil de entender, mas que devem ser uma base para a aplicação dos próximos conceitos e tecnologias a serem vistos nessa disciplina.
Nota final sugerida (média das notas): 9.5
Documentação simples e clara.
Entidades
- Categoria que aparece no diagrama não aparece no código (ela existe no código mas não é usada).
- Poderiam estar explícitas as relações entre administrador e as outras entidades (por ex: administrador cria/edita/apaga emissora).
Casos de uso
- Cadastro de avaliações, comentários e visitantes não documentado.
- A relação de dependência entre "Envia comentário" e "Efetua cadastro" poderia estar explícita no diagrama.
- A relação de dependência entre "Avalia um programa com nota" e "Efetua cadastro" poderia estar explícita no diagrama.
- "Login do administrador" não aparece no diagrama (seria interessante se os outros casos de uso dependessem desse).
UI (Nota 9.0)
No geral, interface e usabilidade estão boas. As cores foram bem escolhidas e o layout está bem claro.
- Não entendemos a opção "Nada" no menu.
- Não entendemos porque há opção de cadastro de comentários e cadastro de avaliações pelo admin. As opções de editar e remover são válidas (moderação), mas aparentemente não há motivo para haver a adição.
- A classificação de programas apresenta valores como MAIOR_18. Seria mais interessante se elas aparecessem como "Maior de 18" ou algo do gênero.
- Não entendemos a busca. Ela será uma funcionalidade a ser implementada no futuro?
Arquitetura (Nota 10.0)
Uso interessante de recursos da linguagem como reflection e annotations. Algumas implementações usaram um trabalho de design mais refinado, como o uso de lazy lists pelos DAOs e criação de formulários por reflection nas JSPs. Muito interessante também o uso do HSQLDB.
- SQLExceptions não deveriam chegar a camada de controle. O ideal seria encapsulá-las em uma DAOException, por exemplo, para que camadas superiores não tenham conhecimento específico sobre a implementação de camadas inferiores.
Legibilidade (Nota 9.0)
O código está muito claro e bem escrito.
- O código possui partes em português e partes em inglês. Uma padronização é necessária.
- A forma como o projeto foi organizado em pacotes (actions, controllers, dao, db, modelo e view) facilita o entendimento da aplicação.
Corretude (Nota 9.5)
Apenas um teste de funcionalidades falhou.
- Não há mensagem para erro de autenticação, o que causa erros quando o visitante não autenticado tenta outras ações, como avaliar e comentar. Vimos NullPointerExceptions sendo geradas por essas ações nos DAOs.
Funcionalidade (Nota 10.0)
A aplicação possui um conjunto de funcionalidades bem escolhido, que faz com que ela não seja muito complexa nem difícil de entender, mas que devem ser uma base para a aplicação dos próximos conceitos e tecnologias a serem vistos nessa disciplina.
Nota final sugerida (média das notas): 9.5
Olá Maurício,
obrigado pela avaliação. Poderia somente dizer onde que voce viu sqlexceptions chegando na camada de controle? realmente isso nao deveria acontecer e passou despercebido, ja que as daos lancam sempre DAOException.
[]'s
obrigado pela avaliação. Poderia somente dizer onde que voce viu sqlexceptions chegando na camada de controle? realmente isso nao deveria acontecer e passou despercebido, ja que as daos lancam sempre DAOException.
[]'s
Olá Thadeu.
Os DAOs realmente lançam só DAOExceptions. Mas ConnectionFactory.getConnection() lança SQLException. E como os Controllers fazem referência a essa factory, eles acabam lidando com SQLExceptions também. Assim, InteracaoController.comenta(), HomeController.detalhes() e contrutores de ExibicaoController e AvaliacaoController, por exemplo, fazem referência a SQLExceptions, mesmo que só para passá-las pra frente.
[]s
Os DAOs realmente lançam só DAOExceptions. Mas ConnectionFactory.getConnection() lança SQLException. E como os Controllers fazem referência a essa factory, eles acabam lidando com SQLExceptions também. Assim, InteracaoController.comenta(), HomeController.detalhes() e contrutores de ExibicaoController e AvaliacaoController, por exemplo, fazem referência a SQLExceptions, mesmo que só para passá-las pra frente.
[]s
Ola mauricio,
tem razao.. isso foi uma mudanca que fizemos depois. Inicialmente a conexao era buscada dentro do construtor, este que encapsulava uma sqlexception em daoexception.
obrigado pela observacao.
[]'s
tem razao.. isso foi uma mudanca que fizemos depois. Inicialmente a conexao era buscada dentro do construtor, este que encapsulava uma sqlexception em daoexception.
obrigado pela observacao.
[]'s
Em resposta à Thadeu Russo
Re: catalogo de programa de televisao
Ah, vi agora. O arquivo AvaliacaoDao contém um import org.hsqldb.Types. Favor substituir por java.sql.Types.
Em resposta à Victor Williams Stafusa da Silva
Re: catalogo de programa de televisao
por Sérgio Lopes -
Obrigado aos revisores pelas boas dicas e correções!
Entrega da versão com correções faladas e ainda AJAX e JQuery (trabalho 2).
BUG FIXES:
- SQLException vazando
- import errado do HSQLDB
NOVIDADES
- implementação de AJAX na interface do visitante no momento da avaliação dos programas. usamos JSON como formato de comunicação
- uso do JQuery também nas tabelas para um simples efeito zebrado e de highlight de linha de forma portável
NÃO ALTERADOS
- sobre nomes em ingles e portugues: usamos a convenção de nomes em inglês para coisas de infraestrutura ("controller" etc) e nomes em português para o domain model, não vemos problema nisso
- UI: como o professor falou que a 1a versão não precisava ser feature complete, realmente alguns elementos da interface ainda são inúteis, estão lá apenas para embelezar a páginas mas ainda não tem funcionalidades. entendemos que isso era permitido pelo professor.
- Não conseguimos encontrar os problemas de NullPointerException
- Não fizémos ainda nessa fase as sugestões de filtragem ou controle de avaliações por usuário
Entrega da versão com correções faladas e ainda AJAX e JQuery (trabalho 2).
BUG FIXES:
- SQLException vazando
- import errado do HSQLDB
NOVIDADES
- implementação de AJAX na interface do visitante no momento da avaliação dos programas. usamos JSON como formato de comunicação
- uso do JQuery também nas tabelas para um simples efeito zebrado e de highlight de linha de forma portável
NÃO ALTERADOS
- sobre nomes em ingles e portugues: usamos a convenção de nomes em inglês para coisas de infraestrutura ("controller" etc) e nomes em português para o domain model, não vemos problema nisso
- UI: como o professor falou que a 1a versão não precisava ser feature complete, realmente alguns elementos da interface ainda são inúteis, estão lá apenas para embelezar a páginas mas ainda não tem funcionalidades. entendemos que isso era permitido pelo professor.
- Não conseguimos encontrar os problemas de NullPointerException
- Não fizémos ainda nessa fase as sugestões de filtragem ou controle de avaliações por usuário
Segue as atualizacoes finais.
Correcoes feitas:
- Melhoria dos rotulos do uso de enums na pagina inicial
- removida a entidade categoria que nao era usada
Correcoes feitas:
- Melhoria dos rotulos do uso de enums na pagina inicial
- removida a entidade categoria que nao era usada
war novo (favor renomear para CatalogoOnline.war antes de fazer o deploy)
Olá,
Assim como mencionaram os avaliadores, o sistema está ficando muito legal.
Tive o mesmo problema que o Pedro mencionou. Acrescentando o
.replace('\\','.')
resolveu o problema. Seria bom se as próximas versões do sistema incorporasse esta correção.
A interface está muito boa, em termos visuais e em termos de interação. A organização do código e sua legibilidade também. Gostei muito da arquitetura utilizada. Vale a pena o resto da turma analisá-la.
abraço,
Marco