O trabalho 2 da disciplina consiste em desenvolver um modelo de projeto UML e sua implementação usando um framework para geração dinâmica de uma API REST. O trabalho está dividido em 3 partes:
1 – Implementação do modelo de projeto UML
Crie um modelo UML de um serviço de streaming de áudio, usando alguma ferramenta aberta. A escolha da ferramenta deverá ser feita pelo aluno. O modelo UML deverá seguir a especificação abaixo:
1.1) Usuários: O serviço de streaming de áudio deverá armazenar informações referentes ao login do usuário, senha, plano escolhido (premium, normal, free), e armazenar o diretório com as músicas que poderão ser tocadas. O diretório deverá ser uma adaptação do padrão Composite, conforme descrito abaixo.
Composite https://en.wikipedia.org/wiki/Composite_pattern
1.2) Diretório de músicas: O diretório de músicas terá Playlists, estas com várias músicas, sendo que as músicas estar conectadas com 1 ou mais álbuns.
As PlayLists terão um nome, o estilo principal e um estilo secundário. Os álbuns terão nome, nome da banda e estilo. As músicas terão estilo, nome e duração.
1.3) Compartilhamento de listas: as Playlists poderão ser compartilhadas entre os usuários, isto é, se um usuário U1 cria uma Playlist P1, esta lista poderá ser compartilhada com usuários U2..UN.
Deverá ser entregue o fonte do modelo UML e uma imagem gerada a partir do editor.
2 – Implementação do modelo usando o framework Loopback
Implemente o modelo de dados acima usando o framework Loopback, versão 4.0 (documentação neste link). Todos os elementos definidos no modelo UML deverão estar presentes nas classes implementadas.
Deverá ser usada a interface de comandos (CLI :Command Line Interface) para a criação das classes e geração de todo o código CRUD (Create-Read-Update-Delete) da aplicação.
A aplicação deverá ter um conjunto de controladores, a ser decidido pelo aluno-arquiteto, para se seja possível realizar operações CRUD em todos os objetos do modelo criado.
A persistência dos dados será feita usando um arquivo “db.json”, e usando o conector “In-memory db"
, disponível nas opções do framework.
Não deverá ser implementado um fluxo específico da aplicação além das operações CRUD. Não deverá ser implementada interface gráfica específica, apenas o explorador da API gerado pelo framework (scaffold).
3 – Documentação do projeto
Crie um documento explicando a estrutura geral do projeto, a estrutura geral das classes do modelo UML, e os desafios encontrados para realizar o mapeamento do modelo UML com a API do Loopback.
ENTREGA
O projeto criado deverá ser compactado em um arquivo com nome trabalho1163 (.tar.gz ou. zip). O modelo UML criado e a documentação deverão estar no diretório raiz do projeto. Trabalhos sem estes 3 elementos não serão considerados. Os trabalhos serão extraídos e testados nos servidores do Departamento de Informática, com Loopback versão 4.0 e nodejs versão mínima 8.9.
DATA DE ENTREGA : 07.junho.2018. Cada dia de atraso será descontado 15 pontos da nota.
DATA DE ENTREGA ADIADA: 12 DE JUNHO
MODO DE ENTREGA : enviar o arquivo trabalho163.zip por email para marcos.ddf _at_ inf.ufpr.br (até as 24h da data final). Os trabalhos poderá ser feito em duplas ou individualmente.
No corpo do email, colocar o nome e GRR do aluno. No assunto, preencher com “Entrega trabalho 1163”.