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();

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.