CI1163-CI163 Design/Projeto de Software
Trabalho II
O trabalho consiste em realizar o projeto e implementação de uma extensão da API do sistema de ensalamento, para exercitar o cenário de aprimoramento de um projeto existente.
Os integrantes do grupo deverão baixar o código da última versão do GitLab do Ensalemento, instalar em sua máquina, e projetar e implementar um conjunto de classes para criação de um Mural de informações (versão digital do “mural do DInf”). As classes e API implementadas deverão ser integradas com as classes já existentes.
1. Especificação do mural
O mural será um agregador de informações/avisos úteis para os usuários do Departamento (alunos, servidores e professores), relativos às turmas (cancelamentos/provas/etc.), salas (troca de sala/sala em laboratório), dias de aula (cancelamentos/mudança de horário), entre outros. O mural deverá conter:
- Informações: mensagem de exibição; responsável pela mensagem (servidor ou professor); sala (não obrigatório); turma (não obrigatório); órgão; data; indicação se o aviso ainda está válido.
- Funcionamento: o mural implementado deverá ser acessado através de API RESTful. O mural deverá ter funcionalidades CRUD: criação, leitura (todas as ocorrências, ou filtrado por cada um dos itens acima separadamente), alteração e exclusão.
- Interface gráfica: não será necessária a implementação de interface gráfica, todos os acessos deverão ser feitos através de chamadas diretas a API implementada.
1.1 Especificação das classes
As novas classes deverão ser definidas em UML, usando um editor (escolha livre). O modelo de classes deverá extender o modelo existente, disponível neste link. O modelo criado deverá ser gravado em formato .PNG.
1.2 Implementação das classes
As classes podem ser geradas usando o gerador de aplicações do Loopback, através do comando lb.
O gerador de aplicações gera as classes e os arquivos JSON com os atributos especificados.
Um dos pontos centrais do trabalho será entender como são criadas as relações entre as classes, pois há diferentes tipos de relações possíveis. A criação de relações é descrita neste link.
2. Instalação da versão atual
Uma parte importante do trabalho é a compreensão do sistema existente e das ferramentas usadas no seu projeto e implementação. O trabalho é uma extensão de um projeto já existente, sendo necessário instalar a versão atual, seguindo os seguintes passos:
2.1 Executando com Docker e Postgres
Esta execução segue os passos de desenvolvimento e disponibilização da versão completa, com banco de dados PostgreSQL.
- Clonar o repositório do GitLab https://gitlab.c3sl.ufpr.br/ensalamento/ensalamento-back . Após a clonagem, o grupo terá acesso ao código já existente. O link para clonagem está disponível no repositório.
- As instruções para instalação estão disponíveis no arquivo README.md do repositório. É necessário instalar o Node.js, npm e a biblioteca do Loopback. Não é necessário (nem recomendado) instalar o IBM API connect.
Resultado da instalação: os passos da instalação irão baixar o código do GitLab e criar 2 containers Docker, 1 para o servidor de aplicação, e 1 para o banco de dados PostgreSQL.
Possível problema: pode acontecer erro de permissão na execução do container, que poderá ser corrigido com o comando: sudo usermod -a -G docker $USER
2.2 Execução sem o Docker e Postgres, com banco local
O projeto pod ser executado sem o Docker e o Postgres instalados. Para isso, serão necessárias algumas modificações no projeto atual, para que use (1) um banco de dados em memória e (2) execução direta com o NPM.
- Clonar o repositório do GitLab https://gitlab.c3sl.ufpr.br/ensalamento/ensalamento-back .
- Instalar Node.js, npm e Loopback
- Instalar dependências, através do comando : npm i
- Modificar os arquivos abaixo:
- ./server/datasources.development.json:
- substituir o conector “postgresql” por “memory”
- Remover o elemento “container” dos arquivos
- ./server/model-config.json
- ./server/datasources.development.json
- ./server/boot/authentication.js
- Comentar a linha server.enableAuth();
- ./server/datasources.development.json:
Esta instalação iniciará a API servidora, sem necessidade de autenticação e de um banco de dados persistente em disco. Os dados ficarão disponíveis na memória, e serão excluídos quando o servidor for parado.
2.3 Execução com o SQLite
O ensalamento pode ser executado com o SQLite, para que os dados fiquem gravados localmente. É uma versão “light-weight” da instalação completa. Para execução o tuturial abaixo deve ser seguido. O script abaixo contém todas as linhas de comando, exceto a criação do banco SQLite e a inclusão dos dados (última tarefa do tutorial)
O banco de dados do ensalamento pode ser acessado executando o comando abaixo. Os comandos possíveis estão no manual do CLI SQLite3
- sqlite3 ensalamento.db
3. Entrega do trabalho
O projeto poderá ser entregue em duas modalidades:
3.1 Disponibilização em repositório aberto: o grupo poderá disponibilizar a implementação em um repositório pessoal (no GitLab ou Github). O grupo deverá enviar um email para marcos.ddf@inf.ufpr.br com o nome dos integrantes e com o link para o repositório.
3.2 Envio por email: o grupo deverá enviar TODO o projeto criado compactado em um arquivo com nome trabalho1163 (.tar.gz ou. zip).
EM AMBOS OS CASOS, o modelo UML criado deverá estar no diretório raiz do projeto. TODO o código deverá ser entregue, isto é, o código existente e as novas implementações, para que possa ser extraído e executado. Trabalhos sem estes 2 elementos (código + modelo UML) não serão considerados. Os trabalhos serão extraídos e testados em Linux Ubuntu 18.x, com Docer 18.09.7.
Grupos: o trabalho poderá ser individual, ou em grupo com no máximo 2 integrantes.
DATA DE ENTREGA : 20.novembro.2019. Cada dia de atraso será descontado 15 pontos da nota.