{"id":826,"date":"2019-05-08T13:32:13","date_gmt":"2019-05-08T16:32:13","guid":{"rendered":"http:\/\/web.inf.ufpr.br\/didonet\/?page_id=826"},"modified":"2019-06-05T18:24:13","modified_gmt":"2019-06-05T21:24:13","slug":"trabalho-ci1163-2019-1","status":"publish","type":"page","link":"https:\/\/web.inf.ufpr.br\/didonet\/teaching-disciplinas\/ci163-2019-1\/trabalho-ci1163-2019-1\/","title":{"rendered":"Trabalho CI1163 2019 1"},"content":{"rendered":"\n<p>O trabalho 2 da disciplina consiste em desenvolver um modelo de projeto UML e sua implementa\u00e7\u00e3o usando um framework para gera\u00e7\u00e3o din\u00e2mica de uma API REST. O trabalho est\u00e1 dividido em 3 partes:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1 &#8211; Implementa\u00e7\u00e3o do modelo de projeto UML<\/h4>\n\n\n\n<p>Crie um modelo UML de um servi\u00e7o de streaming de \u00e1udio, usando alguma ferramenta aberta. A escolha da ferramenta dever\u00e1 ser feita pelo aluno. O modelo UML dever\u00e1 seguir a especifica\u00e7\u00e3o abaixo:<\/p>\n\n\n\n<p><strong>1.1)<\/strong> <strong>Usu\u00e1rios: <\/strong>O servi\u00e7o de streaming de \u00e1udio dever\u00e1  armazenar informa\u00e7\u00f5es referentes ao login do usu\u00e1rio, senha, plano  escolhido (premium, normal, free), e armazenar o diret\u00f3rio com as  m\u00fasicas que poder\u00e3o ser tocadas. O diret\u00f3rio dever\u00e1 ser uma adapta\u00e7\u00e3o do padr\u00e3o  Composite, conforme descrito abaixo.<\/p>\n\n\n\n<p><strong>Composite <\/strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Composite_pattern\">https:\/\/en.wikipedia.org\/wiki\/Composite_pattern<\/a><\/p>\n\n\n\n<p><strong>1.2) Diret\u00f3rio de m\u00fasicas: <\/strong>O diret\u00f3rio de m\u00fasicas ter\u00e1 <strong>Playlists<\/strong>, estas com v\u00e1rias m\u00fasicas, sendo que as m\u00fasicas estar conectadas com 1 ou mais \u00e1lbuns.<\/p>\n\n\n\n<p>As PlayLists ter\u00e3o um nome, o estilo principal e um estilo  secund\u00e1rio. Os \u00e1lbuns ter\u00e3o nome, nome da banda e estilo. As m\u00fasicas  ter\u00e3o estilo, nome e dura\u00e7\u00e3o.<\/p>\n\n\n\n<p><strong>1.3) Compartilhamento de listas: <\/strong>as Playlists poder\u00e3o ser compartilhadas entre os usu\u00e1rios, isto \u00e9, se um usu\u00e1rio U1 cria uma Playlist P1, esta lista poder\u00e1 ser compartilhada com usu\u00e1rios U2..UN.<\/p>\n\n\n\n<p>Dever\u00e1 ser entregue o fonte do modelo UML e uma imagem gerada a partir do editor. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><br><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"mce_7\">2 &#8211; Implementa\u00e7\u00e3o do modelo usando o framework Loopback<\/h4>\n\n\n\n<p>Implemente o modelo de dados acima usando o framework Loopback, vers\u00e3o 4.0 (<a href=\"https:\/\/loopback.io\/doc\/\">documenta\u00e7\u00e3o neste link<\/a>). Todos os elementos definidos no modelo UML dever\u00e3o estar presentes nas classes implementadas.<\/p>\n\n\n\n<p>Dever\u00e1 ser usada a interface de comandos (CLI :Command Line Interface) para a cria\u00e7\u00e3o das classes e gera\u00e7\u00e3o de todo o c\u00f3digo CRUD (Create-Read-Update-Delete) da aplica\u00e7\u00e3o.<\/p>\n\n\n\n<p>A aplica\u00e7\u00e3o dever\u00e1 ter um conjunto de controladores, a ser decidido pelo aluno-arquiteto, para se seja poss\u00edvel realizar opera\u00e7\u00f5es CRUD em todos os objetos do modelo criado.<\/p>\n\n\n\n<p>A persist\u00eancia dos dados ser\u00e1 feita usando um arquivo &#8220;db.json&#8221;, e usando o conector &#8220;<code>In-memory db\"<\/code>, dispon\u00edvel nas op\u00e7\u00f5es do framework.<\/p>\n\n\n\n<p><strong>N\u00e3o dever\u00e1<\/strong> ser implementado um fluxo espec\u00edfico da aplica\u00e7\u00e3o al\u00e9m das opera\u00e7\u00f5es CRUD. <strong>N\u00e3o dever\u00e1<\/strong> ser implementada interface gr\u00e1fica espec\u00edfica, apenas o explorador da API gerado pelo framework (scaffold).<br><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"mce_7\">3 &#8211; Documenta\u00e7\u00e3o do projeto<\/h4>\n\n\n\n<p>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.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">ENTREGA<\/h3>\n\n\n\n<p>O projeto criado dever\u00e1 ser compactado em um arquivo com nome <em>trabalho1163<\/em> (<strong>.tar.gz<\/strong> ou<strong>. zip). <\/strong>O modelo UML criado e a documenta\u00e7\u00e3o dever\u00e3o estar no diret\u00f3rio raiz do projeto. Trabalhos sem estes 3 elementos n\u00e3o  ser\u00e3o considerados. Os trabalhos ser\u00e3o extra\u00eddos e testados nos servidores do Departamento de Inform\u00e1tica, com Loopback vers\u00e3o 4.0 e nodejs vers\u00e3o m\u00ednima 8.9.<\/p>\n\n\n\n<p><strong>DATA DE ENTREGA : 07.junho.2018.<\/strong> Cada dia de atraso ser\u00e1 descontado 15 pontos da nota.<br><strong>DATA DE ENTREGA ADIADA: 12 DE JUNHO<\/strong><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>MODO DE ENTREGA : <\/strong>enviar o arquivo trabalho163.zip por email para marcos.ddf _at_ inf.ufpr.br (at\u00e9 as 24h da data final). Os trabalhos poder\u00e1 ser feito em duplas ou individualmente.<br>No corpo do email, colocar o nome e GRR do aluno. No assunto, preencher com \u201cEntrega trabalho 1163\u201d.<\/p>\n\n\n\n<p><br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O trabalho 2 da disciplina consiste em desenvolver um modelo de projeto UML e sua implementa\u00e7\u00e3o usando um framework para gera\u00e7\u00e3o din\u00e2mica de uma API REST. O trabalho est\u00e1 dividido em 3 partes: 1 &#8211; Implementa\u00e7\u00e3o do modelo de projeto UML Crie um modelo UML de um servi\u00e7o de streaming de \u00e1udio, usando alguma ferramenta&hellip;<\/p>\n","protected":false},"author":21,"featured_media":0,"parent":724,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-826","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/826","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/comments?post=826"}],"version-history":[{"count":7,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/826\/revisions"}],"predecessor-version":[{"id":951,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/826\/revisions\/951"}],"up":[{"embeddable":true,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/724"}],"wp:attachment":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/media?parent=826"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}