Documento de Arquitetura - Time5-Desenho/Wikalendario GitHub Wiki
1. Introdução
2. Representação da Arquitetura
3. Metas e Restrições da Arquitetura
4. Visão dos Casos de Uso
5. Visão Lógica
6. Tamanho e Desempenho
7. Qualidade
8. Technical Memo
9. Referências Bibliográficas
1. Introdução
Este documento elucida todas as decisões arquiteturais realizadas no projeto que serão descritas e justificadas de forma que todos os envolvidos do projeto estejam cientes das características e padrões que a arquitetura possuirá. As decisões serão tomadas com base no contexto que o projeto está inserido e instituirão boas práticas aos desenvolvedores.
2. Representação da Arquitetura
O estudo para a escolha de um padrão de projeto ainda não foi concluído.
3. Metas e Restrições da Arquitetura
- O aplicativo será desenvolvido em Java versão do JDK 1.8> e só ficará disponível para acesso ao público que utiliza o sistema operacional Android.
- A versão mínima do Android para a instalação do aplicativo é a 4.4 KitKat.
- O aplicativo deve possuir uma base de dados robusta que suporte um grande volume de dados.
- O aplicativo será hospedado na Google Play.
- O aplicativo deve utilizar os dados disponíveis na plataforma de matrícula da Universidade de Brasília.
- Os dados devem ser atualizados semestralmente.
4. Visão dos Casos de Uso
4.1 Atores
Os atores do sistema são:
- Usuário: O usuário será uma pessoa que está inserida no ambiente acadêmico e esteja interessada em organizar eventos de disciplinas da universidade.
- Administrador: É uma especialização do usuário e é responsável pelo gerenciamento e manutenção do aplicativo.
4.2 Casos de Uso
Os casos de uso estão representados no diagrama.
4.3 Especificação dos casos de uso
- Manter Usuário
Este caso de uso é destinado a todos os atores do sistema possibilitando-o os de cadastrar, editar, listar e excluir o cadastro de um usuário. O usuário só pode realizar essas ações no próprio cadastro e o administrador tem acesso a todos.
- Realizar Login
Este caso de uso é destinado a todos os atores do sistema e consiste em iniciar uma sessão no aplicativo através dos dados do usuário que foram cadastrados previamente.
- Selecionar disciplina
Este caso de uso é destinado a todos os atores do sistema e consiste na seleção de disciplina que o usuário deseja participar para ter acesso ao eventos e ser notificado quanto a eles.
- Manter Evento
Este caso de uso é destinado a todos os atores do sistema possibilitando-o os de criar, editar, listar e excluir o cadastro de um evento.
- Visualizar calendário
Este caso de uso é destinado a todos os atores do sistema e possibilita a visualização de todos os eventos que ocorrerão em todas as disciplinas que o usuário selecionou.
- Manter comentário
Este caso de uso é destinado a todos os atores do sistema possibilitando-o os de criar, editar, listar e excluir comentários. O usuário só pode excluir e editar os próprios comentários e o administrador pode realizar todas as ações em todos os comentários.
- Reportar usuário
Este caso de uso é destinado à denúncias ao comportamento de outros usuários para que seja analisado e avaliado quais ações corretivas devem ser realizadas pelo administrador.
- Manter grupo
Este caso de uso é destinado a todos os atores do sistema possibilitando-o os de criar, editar, listar e excluir grupos em uma disciplina. O usuário só pode realizar essas ações no grupo que está inserido e o administrador em todos os grupos.
- Manter disciplina
Este caso de uso é destinado somente ao administrador possibilitando-o de criar, editar, listar e excluir disciplinas no aplicativo de acordo com eventuais mudanças nos dados.
- Ler disciplina
Este caso de uso é destinado a todos os atores do sistema e consiste na visualização da disciplina.
- Visualizar log de modificações
Este caso de uso é destinado somente ao administrador possibilitando-o de ver um histórico de modificações que foram feitas pelos usuários em um determinado evento.
- Criar disciplina
Este caso de uso é destinado somente ao administrador possibilitando-o de criar uma disciplina para o aplicativo.
- Atualizar disciplina
Este caso de uso é destinado somente ao administrador possibilitando-o de editar uma disciplina para o aplicativo.
- Deletar disciplina
Este caso de uso é destinado somente ao administrador possibilitando-o de deletar uma disciplina para o aplicativo.
5. Visão Lógica
A visão lógica depende do padrão de projeto que será utilizado.
6. Tamanho e Desempenho
O aplicativo deve ser desenvolvido de forma que não demande a memória do aparelho eletrônico demasiadamente e deve suportar um grande volume de acessos simultâneos e dados.
7. Qualidade
A qualidade depende do padrão de projeto que será utilizado.
8. Technical Memo
Questão
Tecnologia utilizada para a implementação da persistência de dados do Wikalendário.
Resumo da Solução
Utilização do ORMLite para diminuir a complexidade da implementação da persistência de dados da aplicação.
Fatores
- Plugin robusto para a criação de tabelas e colunas no banco de dados.
- Plugin robusto para a consulta de dados no banco de dados.
- Plugin robusto para a alteração e exclusão de dados no banco de dados.
Solução
A utilização do ORMLite na aplicação que provê as seguintes funcionalidades:
- Simplifica a configuração das classes com a adição de anotações Java.
- Poderosas classes abstratas de objeto de acesso a banco de dados (DAO).
- QueryBuilder flexível para construir facilmente consultas simples e complexas.
- Suporta MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB e Sqlite e pode ser estendido a bases de dados adicionais com relativa facilidade.
- Suporte provisório para DB2, Oracle, ODBC e Netezza.
- Manipula instruções SQL "compiladas" para tarefas de consulta repetitivas.
- Suporta objetos "estrangeiros" com o campo de classe sendo o objeto, mas um ID armazenado na tabela do banco de dados.
- Suporte básico para transações de banco de dados.
- Auto gera SQL para criar e soltar tabelas de banco de dados.
- Suporte de configuração do Spring para DAOs e configurações de classe.
- Suporte para configuração de tabelas e campos sem anotações.
Motivação
A implementação da persistência de dados na aplicação deve ser simplificada para melhor facilitar o desenvolvimento e portanto o tempo será otimizado. Para isso, é necessário a escolha de um plugin robusto que proporcione a simplificação da implementação e que seja seguro para a aplicação.
Alternativas consideradas
Foram analisados outros plugins semelhantes que são o SugarORM,o GreenDAO, o Active Android e o Realm.
9. Referências Bibliográficas
- LARMAN, Craig. Utilizando UML e padrões: uma introdução à análise e ao projeto orientados a objetos e ao desenvolvimento interativo. 3. ed. Porto Alegre: Bookman, 2007.