Compartilhamento de Fotos

Compartilhamento de Fotos

por Gustavo Ansaldi Oliva -
Número de respostas: 13
Compartilhamento de Fotos

Integrantes
- Gustavo Ansaldi Oliva
- Straus Michalsky Martins

Descrição
Através de uma interface WEB, o sistema permitirá que os usuários cadastrados criem álbuns de foto e os compartilhem segundo níveis de privacidade (políticas de visibilidade). Ademais, usuários não cadastrados (visitantes) poderão visualizar quaisquer álbuns que tenham sido marcados com a política de visibilidade "pública".

Objetivo Geral
- Permitir que os usuários possam armazenar, compartilhar e buscar fotos de forma fácil e intuitiva.

Objetivos Especifico
- Realizar o upload de fotos
- Realizar tagging das fotos
- Possibilitar marcação das pessoas nas fotos
- Incluir comentários em fotos
- Realizar busca de fotos
- Manter álbuns de fotos
- Atribuir políticas de visibilidade para os álbuns
- Manter cadastro de usuários
- Fazer o relacionamento entre usuários através de grupos de classificação
- Possibilitar a exploração de álbuns públicos para visitantes
Em resposta à Gustavo Ansaldi Oliva

Re: Compartilhamento de Fotos

por Gustavo Ansaldi Oliva -
Segue anexo modelo de análise do projeto, contento diagrama de casos de uso (com descrição breve de cada UC) e um diagrama de classes (modelo de domínio).
Em resposta à Gustavo Ansaldi Oliva

Re: Compartilhamento de Fotos

por Gustavo Ansaldi Oliva -
Segue primeira versão da implementação do trabalho

Gustavo Ansaldi Oliva
Straus M. Martins
Em resposta à Gustavo Ansaldi Oliva

Re: Compartilhamento de Fotos

por Diogo Vernier dos Santos -
Olá,

Favor enviar os fontes também...
Em resposta à Diogo Vernier dos Santos

Re: Compartilhamento de Fotos

por Gustavo Ansaldi Oliva -
Ola,

Os fontes estão incluídos no .WAR (que pode ser aberto pelo 7ZIP ou qualquer outro compressor/descompressor de arquivos .ZIP).

O caminho para os fontes e as classes é: PictWare.war\WEB-INF\classes\[pacotes]

Qualquer problema eu posso postar os sources em um arquivo separado.

Abraços
Em resposta à Gustavo Ansaldi Oliva

Re: Compartilhamento de Fotos

por Gustavo Ansaldi Oliva -
Ola,

Segue um script sql para criação das tabelas do banco (gerei pelo próprio Database Explorer do Eclipse Ganymede). Não cheguei a testar em um BD mySQL. Alternativamente, você pode instalar a versão gratuita do DB2 disponibilizada em http://www-01.ibm.com/software/data/db2/express/
É possível também configurar o Tomcat (versão 6) para acessar remotamente o BD instalado na minha máquina (DB2). Caso opte por este acesso remoto, me avise e eu crio um usuário pra vc.

Abraços,
Em resposta à Gustavo Ansaldi Oliva

Re: Compartilhamento de Fotos

por Straus Martins -
Olá pessoal so gostaria de esclarecer quais funcinalidades ainda não estão prontas.

Funcionalidades não desenvolvidas:
- Detalhes Foto (tag, local)
- Grupo Acesso
- "Abandonar" Pictware (cancelar a assinatura)
- Busca

Ainda em desenvolvimento/teste:
- Tratamento sessão (login/logout)
- Mensagens erro ao usuário

Tirando esses pontos acredito que o resto esteja ok. Já estamos desenvolvendo estas funcionalidades e fazendo mais testes para podermos entregar na proxima versão do sistema, junto com as alterações que serão apontadas por vcs.

Qualquer duvida só perguntar =)
abraços

Em resposta à Straus Martins

Avaliação do Grupo 2

por Cláudia Abrão -

Segue em anexo a avaliação do sistema, segundo os critérios sugeridos pelo professor.

Cláudia e Rosi.

Em resposta à Cláudia Abrão

Re: Avaliação do Grupo 2

por Diogo Vernier dos Santos -
Olá Pessoal,

Segue a nossa avaliação:

Análise: 10,0
- O sistema implementa as funcionalidades propostas nos diagramas de caso de uso e segue a estrutura do diagrama de classes UML.

Interface com usuário: 10,0
- Interface com o usuário bem elaborada.

Arquitetura: 10,0
- Possui uma boa arquitetura em camadas, implementa padrões de projeto como FrontController, DAOFactory, etc.

Legibilidade: 10,0
- Código bem legível.

Corretude: 8,5
- O Sistema ignora exceções em algumas camadas, devolvendo null ou imprimindo o stacktrace. Sugiro a criação de exceções wrapper do tipo RuntimeException e logar a ocorrência da exceção.
- Apesar da implementação utilizando diretórios JNDI ser interessante, o código de para abrir a conexão (openConnection) se repete nas classes de implementação dos DAO's. Acho interessante a criação de uma superclasse de base para os DAO's incorporando código repetido.

Funcionalidade: 10,0
- Fácil de usar.

Nota Final: 9,75

Abraço,

Diogo
Em resposta à Diogo Vernier dos Santos

Re: Avaliação do Grupo 2

por Gustavo Ansaldi Oliva -

- Argumentando sobre o review da Cláudia Abrão:


Uma dúvida surgiu após analizarmos a estrutura de pacotes: Por que separar em pacotes diferentes as classes referentes ao DAO e ao JDBC se estas são responsáveis pela comunicação com o banco de dados? Poderia facilitar o entendimento, se as duas estivessem no mesmo pacote. Ficou um pouco estranho ter uma classe por pacote.


As interfaces DAO estão em pacotes diferentes das classes que as implementam por dois motivos:

  • Conceitualmente, faz sentido que as interfaces DAO fiquem na camada de negócio, já que podemos encarar estas como abstrações de Repositórios. O paradigma de design conhecido por Domain-Driven-Design (http://domaindrivendesign.org/), criado por Eric Evans, também compartilha desta mesma idéia.

  • Evitar dependência cíclica entre pacotes. Caso as interfaces DAO estivessem na mesma camada das classes que as implementam, existiria uma dependência cíclica entre a camada de business e a camada de infraestrutura. Dependências cíclicas diminuem consideravelmente o grau de reuso de componentes e tornam o sistema mais complicado de ser testado.


Na estrutura definida pelo grupo, não fica claro onde está a classe de acesso ao banco de dados. Pesquisando nas classes, percebemos que a conexão com o banco é aberta em várias classes. Isso deixa o código confuso, uma sugestão seria criar uma única classe para acessar o banco de dados e as demais classes apenas extenderiam essa classe.


As classes de acesso ao banco de dados estão na camada de infraestrutura. Quanto ao código duplicado você tem toda razão (corrigimos isto).


Talvez por falta de tempo, ficou faltando a explicação da estrutura do código. Acreditamos que um documento com esta explicação facilitaria a compreensão do sistema.


Boa sugestão Cláudia. Em breve, disponibilizaremos um README com instruções para instalação da aplicação e um breve documento de arquitetura.


- Argumentando sobre o review do Diogo Vernier:


O Sistema ignora exceções em algumas camadas, devolvendo null ou imprimindo o stacktrace. Sugiro a criação de exceções wrapper do tipo RuntimeException e logar a ocorrência da exceção.


Você tem toda razão Diogo. Contudo, por se tratar de um protótipo, preferimos nos concentrarmos em outros pontos e não implementamos um mecanismo de tratamento de exceções e nem logging. Nesta versão corrigida, implementamos um log simples. Provavelmente implementaremos tratamento de exceções e validações de campo quando utilizarmos Struts.


Apesar da implementação utilizando diretórios JNDI ser interessante, o código de para abrir a conexão (openConnection) se repete nas classes de implementação dos DAO's. Acho interessante a criação de uma superclasse de base para os DAO's incorporando código repetido.


Este foi o mesmo ponto apontado pela Cláudia. Corrigimos isto.


********************************************************************************


Segue anexo a nova versão



Em resposta à Gustavo Ansaldi Oliva

Re: Avaliação do Grupo 2

por Gustavo Ansaldi Oliva -
Notei agora que houve um pequeno erro quando fiz merge do meu código com o da minha dupla (um jsp). Isto ocasionou um bug no sistema (cadastro de usuário). Estou assim repostando o código com a correção efetuada.

Obrigado
Em resposta à Gustavo Ansaldi Oliva

Re: Avaliação do Grupo 2

por Marco Aurélio Gerosa -

Muito saudável a discussão entre os autores e revisores. As revisões foram muito boas, não vi nada a acrescentar. O sistema está bem implementado. Só achei um pouco confuso (demora um tempo para entender) a distrubuição de pacotes. Talvez há um excesso de generalização.