Skip to content

Histórico de versões

Data Versão Descrição Autor
30/01/2022 0.1 Criação do documento de arquitetura Guilherme
31/01/2022 0.2 Adição do tópico de referências Guilherme
01/02/2022 0.3 Listagem das restrições da arquitetura Arthur
01/02/2022 0.4 Definição do Escopo do Projeto Guilherme
01/02/2022 0.5 Definição de Metas da Arquitetura Thiago O. e Pedro
07/02/2022 0.6 Adição do tópico de visão geral do projeto João Paulo
15/02/2022 0.7 Adição dos tópicos faltantes: Visão de casos de uso, Visão Lógica, Tamanho e Desempenho. Tópicos 3 e 4 alimentados com novas informações. Pequenos erros corrigidos. João Paulo
02/03/2022 0.8 Adição do diagrama de pacotes Guilherme Barbosa e Gabriel Mariano
03/03/2022 0.9 Adição do diagrama de casos de uso Guilherme Santos
05/03/2022 0.9.1 Revisão geral dos documentos do projeto Adne Moretti e Matheus Pimentel Leal
26/03/2022 0.9.2 Atualização do escopo e pequenas correções Gabriel Moretti e Matheus Pimentel Leal
19/04/2022 0.9.3 Adição dos tópicos 2.1, 4.1 e correções Letícia Aires
22/04/2022 0.9.8 Adição do tópico 5.1, descrição das tecnologias, refatoração de diagramas e tabelas de funcionalidades Matheus Pimentel Leal
23/04/2022 1.0 Adição do tópico 6 e revisão geral do documento Matheus Pimentel Leal

1. Introdução

1.1 Objetivo

O objetivo deste documento é oferecer, de modo claro e geral, a visão arquitetural do projeto INDICAA, trazendo consigo as características necessárias para os controles de suas atividades arquiteturais, moldando, assim, todo procedimento para o desenvolvimento do sistema. Esse documento também se dispõe a elucidar quais foram as motivações que levaram a equipe a tomar decisões a respeito dessa arquitetura.

1.2 Escopo

No contexto da pandemia, a gestão de espaços se tornou fundamental para o bom funcionamento da UnB. Nesse contexto, a equipe de coordenação voltou seus esforços para realizar uma boa divisão das disciplinas e atividades no geral de acordo com o espaço existente. Para tal, a visualização da divisão dos espaços de acordo com os períodos do dia é essencial para uma melhor tomada de decisões pelos gestores, o que impactará diretamente a execução das atividades acadêmicas da universidade.

Nesse contexto, o objetivo do projeto é proporcionar uma melhor organização das informações disponibilizadas pelo nosso site acadêmico. Sendo assim, os coordenadores terão a possibilidade de visualizar a quantidade de disciplinas por curso, a quantidade de vagas ofertadas, a quantidade de alunos matriculados e a quantidade de salas disponíveis. Por meio dessas funcionalidades, a análise, o compartilhamento e o monitoramento de informações será mais simples, ajudando tanto a parte de gerenciamento e controle da disponibilização de disciplinas por parte dos coordenadores como a própria matrícula em disciplina por parte dos discentes.

1.3 Definições, acrônimos e abreviações

Sigla Significado
UnB Universidade de Brasília
FGA Faculdade do Gama
MDS Métodos de Desenvolvimento de Software
SIGAA Sistema Integrado de Gestão das Atividades Acadêmicas
FU Funcionalidade de Usuário
BI Business Intelligence
SQL Standard Query Language
ORM Object–relational mapping
REST Representational State Transfer

1.4 Visão Geral

Este documento está dividido em 6 grandes tópicos com subdivisões e tem como objetivo final detalhar as características arquiteturais do projeto, bem como seus requisitos e motivações. Os tópicos e a seção de referências podem ser encontrados a seguir:

Tópico Descrição
1 Introdução Fornece ao leitor uma visão geral do conteúdo abordado no documento
2 Representação Arquitetural Detalha a arquitetura utilizada no projeto e como ela está organizada
3 Metas e Restrições da Arquitetura Descreve os objetivos do projeto, bem como suas restrições, do ponto de vista arquitetural
4 Visão dos casos de uso Descreve as partes significativas do ponto de vista da arquitetura do modelo de casos de uso
5 Visão Lógica Descreve as partes significativas do ponto de vista da arquitetura do modelo de design
6 Desempenho e Qualidade Descreve as características de desempenho do Software, bem como as restrições estabelecidas e possíveis falhas
7 Referências Fornece ao leitor uma visão geral das referência utilizadas durante a criação deste documento

2. Representação da Arquitetura

O INDICAA se baseia em realizar o scraping de dados do site acadêmica SIGAA, mais especificamente a seção de matérias ofertadas. O usuário acessa o aplicação Metabase por meio do naveagdor e assim, é possibilitada a visualização dos mesmos dados disponibilizados no sigaa, porém, de maneira mais visual e atrativa. Ele também pode realizar a criação de dashboards interativos por meio da interface do Metabase, gerar perguntas que retornam respostas com base nos dados obtidos por meio do scraping do SIGAA, realizar buscas diretamente no banco de dados por meio da linguagem SQL e criar coleções (que podem conter dashboards, perguntas e buscas SQL ao banco de dados).

2.1 Tecnologias

No que tange às linguagens e ferramentas utilizadas para desenvolvimento do software, tem-se:



O WebDriver manipula um navegador nativamente, como um usuário faria, seja localmente ou em uma máquina remota usando o servidor Selenium, marca um salto em termos de automação do navegador.

Django REST Framework ou DRF é uma biblioteca que permite a construção de APIs REST utilizando a estrutura do Django. Lançado em Fevereiro de 2011, o DRF, por funcionar sob a estrutura do Django, permite a construção de APIs em qualquer plataforma, seja Windows, macOS ou Linux.

O Figma é um editor gráfico de vetor e prototipagem de projetos de design baseado principalmente no navegador web, com ferramentas offline adicionais para aplicações desktop para GNU/Linux, macOS e Windows

Docker é um conjunto de produtos de plataforma como serviço que usam virtualização de nível de sistema operacional para entregar software em pacotes chamados contêineres. Os contêineres são isolados uns dos outros e agrupam seus próprios softwares, bibliotecas e arquivos de configuração.

Canva é uma plataforma de design gráfico que permite aos usuários criar gráficos de mídia social, apresentações, infográficos, pôsteres e outros conteúdos visuais. Está disponível online e em dispositivos móveis e integra milhões de imagens, fontes, modelos e ilustrações.

O Metabase é uma solução open-source de business intelligence que permite que usuários possam construir, explorar, analisar e compartilhar gráficos e dashboards de forma simples.

Heroku é uma plataforma de nuvem como serviço que suporta várias linguagens de programação.

PostgreSQL é um sistema gerenciador de banco de dados objeto relacional, desenvolvido como projeto de código aberto.

Python é uma linguagem de programação de alto nível, interpretada de script, imperativa, orientada a objetos, funcional, de tipagem dinâmica e forte.

Discord é um aplicativo de voz sobre IP proprietário e gratuito, projetado inicialmente para comunidades de jogos.

3 Metas e Restrições da Arquitetura

3.1 Metas

Este projeto tem como meta fazer um painel com o intuito de mostrar os respectivos indicadores da lista de oferta do SIGAA listados a seguir:

  • Quantidade de disciplinas ofertadas por curso
  • Quantidade de vagas ofertadas por curso
  • Quantidade de alunos matriculados por curso
  • Quantidade de salas disponíveis por curso

Para cumprir tais metas, será necessária a utilização de um Web scraper com o intuito de retirar as informações de ofertas de metérias do SIGAA, salvá-las em um banco de dados e utilizar ferramentas de BI para a visualização dos indicadores.

3.2 Restrições

  • Possuir conexão com a internet
  • Dependência da plataforma SIGAA
  • Eventual demora no tempo de resposta para atualização das informações no SIGAA

4. Visão de casos de uso

4.1 Diagrama de casos de uso

Diagrama de casos de uso

4.2 Descrição dos casos de uso

FU01 - Pesquisar

Descrição Esta funcionalidade permite ao usuário a pesquisa a partir de um texto fornecido, no Metabase
Atores Usuário
Pré-condições O campo de pesquisa deve ter sido prenchido pelo usuário
Pós-condições Os resultados correspondentes serão disponibilizados na tela ao usuário
Fluxo principal 1. O usuário abre a aplicação
2. O usuário clica no campo de pesquisa
3. O usuário preenche o campo de pesquisa
4. A pesquisa é realizada e o usuário tem acesso aos resultados
Fluxo Alternativo FA01 - Barra de pesquisa selecionada mas não preenchida
Caso o usuário selecione a barra de pesquisa mas não a preencha, sugestões com base nos dados recentemente vistos aparecerão.
Fluxo de exceção FE01 - Conexão
Se houver algum problema de conexão, a operação pode não ser concluída com sucesso

FU02 - Visualizar coleções e bancos de dados

Descrição Esta funcionalidade permite ao usuário a visualização dos dados inseridos em coleções ou a visualização dos dados dos bancos de dados conectados, no Metabase
Atores Usuário
Pré-condições O usuário deve ter ido até a seção Our analytics e selecionado um item da coleção, ou até o botão Browse data na barra superior e selecionado um banco de dados
Pós-condições O usuário deve ter conseguido visualizar os dados de um item da coleção ou os dados inseridos no banco de dados
Fluxo principal 1. O usuário vai até a seção Our analytics
2. O usuário clica em Browse all items
3. O usuário visualiza uma lista com os itens disponíveis
4. O usuário seleciona um item da lista
5. A janela de visualização de dados aparece, e o usuário tem acesso aos dados
Fluxo secundário 1. O usuário vai até a seção Browse data
2. O usuário clica em um banco de dados cadastrado
3. O usuário visualiza uma lista com as tabelas disponíveis
4. O usuário seleciona um tabela da lista
5. A janela de visualização de dados aparece, e o usuário tem acesso aos dados
Fluxo de exceção FE01 - Conexão
Se houver algum problema de conexão, a operação pode não ser concluída com sucesso

FU03 - Criar coleções e itens

Descrição Esta funcionalidade permite ao usuário a criação de coleções e itens no Metabase
Atores Usuário
Pré-condições O usuário deve ter realizado a pesquisa
Pós-condições O usuário deve ter conseguido filtrar sua pesquisa tanto por modalidade quanto por disponibilidade
Fluxo principal 1. O usuário realiza uma pesquisa[FU01]
2. O usuário visualiza as opçoes de filtragem á esquerda da pagina
Fluxo de exceção FE01 - Conexão
Se houver algum problema de conexão, a operação pode não ser concluída com sucesso

FU04 - Arquivar Coleções e itens

Descrição Esta funcionalidade permite ao usuário arquivar coleções e itens no Metabase
Atores Usuário
Pré-condições O usuário deverá ter criado ao menos um item ou coleção
Pós-condições A coleção ou item deve ter sido arquivada
Fluxo principal 1. O usuário vai até a seção Our analytics
2. O usuário seleciona um item ou coleção clicando nos '...' na extrema direita do item
3. O usuário clica em Archive.
5. A coleção ou item é arquivado
Fluxo de exceção FE01 - Conexão
Se houver algum problema de conexão, a operação pode não ser concluída com sucesso

FU05 - Filtrar pesquisa

Descrição Esta funcionalidade permite ao usuário filtrar uma pesquisa com base nos parâmetros passados
Atores Usuário
Pré-condições O usuário deverá ter pesquisado algo [FU01]
Pós-condições Serão apresentadas informações com base no filtro selecionado
Fluxo principal 1. O usuário preenche e faz uma pesquisa [FU01]
2. São apresentados os resultados da pesquisa
3. O usuário seleciona um dos seguintes filtos: All results, Dashboards, Raw tables e Questions.
4. As informações filtradas aparecem na tela
Fluxo de exceção FE01 - Conexão
Se houver algum problema de conexão, a operação pode não ser concluída com sucesso

FU06 - Detalhar dados

Descrição Esta funcionalidade permite ao usuário ver mais detalhadamente os dados dispostos (seja por meio de gráficos ou números)
Atores Usuário
Pré-condições O usuário deverá estar visualizando algo [FU02]
Pós-condições Serão apresentadas informações mais detalhadas relativas ao dado selecionado
Fluxo principal 1. O usuário está visualizando uma coleção [FU02]
2. O usuário clica no título de um card de dados
3. Os dados detalhados são mostrados ao usuário
Fluxo secundário 1. O usuário está visualizando os dados de um banco de dados[FU02]
2. O usuário clica no id de um dado registrado no banco de dados
3. Os dados detalhados são mostrados ao usuário
Fluxo de exceção FE01 - Conexão
Se houver algum problema de conexão, a operação pode não ser concluída com sucesso

FU07 - Deletar coleções e itens

Descrição Esta funcionalidade permite ao usuário deletar coleções ou itens arquivados
Atores Usuário
Pré-condições O usuário deverá ter arquivado coleções ou itens [FU04]
Pós-condições A coleção ou item selecionado, será deletado
Fluxo principal 1. O usuário deve estar visualizando dados[FU02]
2. O usuário clica em view archive na parte inferior da visualização de dados
3. O usuário está visualizando coleções e itens arquivados anteriormente [FU04]
4. O usuário descansa o cursor sobre o ícone do item que deseja deletar e o seleciona
5. O usuário seleciona a opção Delete na parte inferior da visualização
6. A coleção ou dado selecionado, é deletado
Fluxo de exceção FE01 - Conexão
Se houver algum problema de conexão, a operação pode não ser concluída com sucesso

5. Visão Lógica

5.1 Visão Geral

Representação arquitetural do projeto INDICAA

As ações do usuário em ambiente desktop, serão interpretadas pelo Metabase como eventos, onde cada evento está associado com um Handler que irá disparar uma ação. Algumas destas ações poderão ser tratadas no lado do cliente (client side), tais como ações de interatividade que não precisam de comunicação externa.

Já em outras ações, será necessária a consulta à um banco de dados no lado do servidor (server side). Assim, sendo necessário o envio de uma solicitação (request) ao servidor, utilizando o protocolo de requisições HTTP e tendo em vista as regras de interface REST

Assim que o servidor recebe a solicitação do cliente, será necessária a interpretação da requisição com base na url e no método HTTP utilizado. Essa computação é realizada no módulo url dispatcher, onde o mapeamento para 'ponto final' da aplicação é realizado, e o módulo que possui as informações solicitadas é disponibilizado.

Quando a aplicação Django REST está integrada com o Django, duas etapas são definidas. Primeiramente o Django verifica se a url requisitada faz parte da API que o Django REST fornece, se esta fizer parte, o Django passa o controle para o Django REST finalizar o processamento e o mapeamento da requisição.

Uma vez que a url já foi mapeada para o módulo que possui as informações requisitadas. Este, geralmente uma classe dos models.py, será responsável por utilizar o ORM para mapear um modelo da aplicação com um modelo do banco de dados. Após o devido mapeamento, o banco de dados irá retornar um conjunto de informações que serão tratadas pelo Django REST.

Já com os dados em mãos Django REST, poderá serializar as informações no formato padrão da API, geralmente no formato JSON. Esta serialização é responsável por definir uma interface que vários sistemas poderão consumir.

Uma vez que os dados já foram serializados, o Django REST passa o controle para o Django. Que será responsável por retornar uma respost para o lado do cliente.

Por fim, a resposta é obtida pelo Metabase, e agora com os dados requisitados em mãos, ele será responsável por fornecer esses dados o usuário da aplicação. O Metabase fica responsável pela disponibilização dos dados contidos no banco de dados, e o usuário pode realizar as ações definidas pelas funcionalidades do usuário (FUs).

6. Visão de implementação

6.1 Dicionário de dados

Entidade: Unidade

Atributo Propriedades do atributo Tipo de dado Tamanho Descrição Exemplo
nome Chave primária
Obrigatório
varchar 255 Nome do departamento "Faculdade do Gama"

Entidade: Materia

Atributo Propriedades do atributo Tipo de dado Tamanho Descrição Exemplo
codigoMateria Chave primária
Obrigatório
varchar 7 Codigo da Matéria "FGA0003"
cargaHoraria Obrigatório varchar 3 Carga Horária da Matéria "60h"
nome Obrigatório varchar 255 Nome da Matéria "COMPILADORES 1"

Entidade: Turma

Atributo Propriedades do atributo Tipo de dado Tamanho Descrição Exemplo
docente Chave primária
Obrigatório
varchar 50 Nome completo do docente "FABIO MACEDO MENDES"
codigoTurma Chave primária
Obrigatório
varchar 2 Código da Turma "01" ou "A"
horario Obrigatório varchar 20 Horário da Turma seguindo o padrão do SIGAA "5M1234 5T23"
vagasOfertadas Obrigatório int --------- Quantidade de vagas ofertadas 40
vagasOcupadas Obrigatório int --------- Quantidade de vagas ocupadas 0
local Obrigatório varchar 40 Local da aula da Turma "remoto" ou "I10"
ano Obrigatório int --------- Ano do Período 2021
semestre Obrigatório int --------- Semestre do Período 2

6.2 Diagrama de Pacotes

Diagrama de pacotes

7 Referências

MATHEUS, Davi; et al. Documento de Arquitetura - Cheery Up. Disponível em: https://fga-eps-mds.github.io/2020.2-CheeryUP/#/./wiki/Documents/Documento_de_Arquitetura?id=documento-de-arquitetura. Acesso em: 30 jan 2022.

CARVALHO, Durval; et al. Documento de Arquitetura - Acácia. Disponível em: https://fga-eps-mds.github.io/2019.2-Acacia/#/architecture_document?id=documento-de-arquitetura. Acesso em: 30 jan 2022.

EDUARDO, Victor; et al. Documento de Arquitetura - AlligaBot. Disponível em: https://fga-eps-mds.github.io/2021.1-AlligaBot/2021/08/03/documento-de-arquitetura/. Acesso em: 07/02/2022.

Back to top