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.