Baixe o app para aproveitar ainda mais
Prévia do material em texto
FACULDADE ANHANGUERA TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS SARA GIOVANA MIRANDA Produção Textual Interdisciplinar Individual – PTI Pet Monitor Disciplinas: Introdução Ao Desenvolvimento De Sistemas Web Lógica E Técnicas De Programação Metodologia Científica Processos De Negócio E Software Seminário II Belo Horizonte 02 de Novembro de 2019 SARA GIOVANA MIRANDA Produção Textual Interdisciplinar Individual – PTI Pet Monitor Produção textual Interdisciplinar Individual apresentada ao curdo de Tecnologia em Análise e Desenvolvimento de Sistemas da Faculdade Anhanguera como parte dos requisitos para obtenção do título de Tecnólogo em Análise e Desenvolvimento de Sistemas. Belo Horizonte 02 de Novembro de 2019 SUMÁRIO 1 ALGORITMO 4 2 PROTÓTIPO PÁGINA WEB 6 2.1 CÓDIGO-FONTE HTML 6 2.2 CÓDIGO-FONTE CSS 9 3 REQUISITOS DE NEGÓCIO E REQUISITOS DE SOFTWARE 11 2.1 CICLO DE VIDA 11 2.2 REQUISITO DE SOFTWARE 12 2.3 PROCESSO DE NEGÓCIO 14 REFERÊNCIAS 15 4 1 ALGORITMO class Coordenada { setValor(valor){ let caso = (valor||"").match(/(- ?\d{1,3})° (\d{1,2})\' ?(\d{0,2}\.?\d{0,2})\"/); if(caso === null){ caso = parseFloat(valor); if(!isNaN(caso)){ //let graus = Math.trunc(caso); //let dec = caso - graus; this.val_str = valor; this.val_graus_dec = caso; this.val_rad = this.val_graus_dec / 180 * Math.PI; return; } else throw new Error("Coordenada não se encaixa no padrão"); } let [graus, min, seg] = caso.slice(1).map(v=>parseFloat(v)); if(seg >= 60){ min = min + Math.floor(seg / 60); seg = seg % 60; } if(min >= 60){ graus = graus + Math.floor(min / 60); min = min % 60;} if(graus >= 360) graus = graus%360; this.val_str = valor; this.val_gms = { graus, min, seg }; this.val_graus_dec = graus + ((min + (seg / 60)) / 60); this.val_rad = this.val_graus_dec / 180 * Math.PI; } constructor(valor){ this.setValor(valor); } } class Posicionado { setLat(lat){ this.lat.setValor(lat); } setLon(lon){ this.lon.setValor(lon); } constructor(lat,lon){ this.lat = new Coordenada(lat); this.lon = new Coordenada(lon); } calcula_distancia(outro){ let lat2 = outro.lat.val_rad; //Já em radianos! let lon2 = outro.lon.val_rad; let lat1 = this.lat.val_rad; 5 let lon1 = this.lon.val_rad; //cálculos... let R = 6371e3; // metres let φ1 = lat1;//.toRadians(); let φ2 = lat2;//.toRadians(); let Δφ = (lat2-lat1);//.toRadians(); let Δλ = (lon2-lon1);//.toRadians(); let a = Math.sin(Δφ/2) * Math.sin(Δφ/2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ/2) * Math.sin(Δλ/2); let c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); let d = R * c; return d/1000; } } class Dono extends Posicionado{ constructor(nome, sexo, latitude, longitude){ super(latitude,longitude); this.nome = nome; this.sexo = sexo; } } class Cachorro extends Posicionado{ constructor(nome, sexo, raça, latitude, longitude) { super(latitude,longitude); this.nome = nome; this.sexo = sexo; this.raça = raça; } }; 6 2 PROTÓTIPO PÁGINA WEB Figura 1 – Printscreen do protótipo da Página Web 2.1 CÓDIGO-FONTE HTML <!DOCTYPE html> <html> <head> <title>PET MONITOR</title> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato"> <link rel="stylesheet" href="./css/estilo.css"> <script src="https://code.jquery.com/jquery-3.4.1.js" integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU=" crossorigin="anonymous"> </script> <script type="text/javascript" src="./js/codigo.js"> </script> </head> <body> <main> <div class="header"> <p align ="center"> <img src="pets.png" width="700px"/> </p> </div> <h1 class="app-name">PET MONITOR</h1> <h2 class="headline">Nunca perca seu pet de vista!</h2> <p align="center"> Seus problemas em perder seu pet de vista acabaram! Com o avanço de tecnologias, foi possível desenvolver um dispositivo portátil do tamanho de um pequeno chaveiro , que pode ser colocado junto à 7 coleira do seu pet que emite um sinal com a identificação do dispos itivo, a data/hora e as coordenadas georreferenciadas. Como por exemplo: <i> 562341, 17/07/2019 07:45:3 0, latitude: -23,294716, longitude: - 51,165644</i>. O <b>Pet Monitor</b> tem a duração da bateria de pelo menos 1 ano e os dados serão disponibilizados através de um serviço web, onde você poderá monitorar seu bichinho em tempo real tanto pe lo app quanto pelo portal online. </p> <hr> <div class="concerts"> <h2>Dados</h2> <table id="pets"> <thead> <tr> <th>Nome do pet</th> <th>Raça</th> <th>Sexo</th> <th>Latitude</th> <th>Longitude</th> <th>Distância calculada pelo aplicativo</th> </tr> </thead> <tbody> <tr align="center"> <td>Mel</td> <td>SRD</td> <td>Fêmea</td> <td id="latitude1">-23,294716</td> <td id="longitude1">-51,165644</td> </tr> <tr align="center"> <td>Cake</td> <td>Persa</td> <td>Fêmea</td> <td>-29.294716</td> <td>-39.8999933</td> </tr> <tr align="center"> <td>Elvis</td> <td>Spitz Alemão</td> <td>Macho</td> <td>-43.294716</td> <td>-29.8999933</td> </tr> <tr align="center"> <td>Tchuchuca</td> <td>Pinscher</td> <td>Fêmea</td> <td>-31.294716</td> <td>-10.8999933</td> </tr> 8 <tr align="center"> <td>Jake</td> <td>Agaporni</td> <td>Macho</td> <td>-98.294716</td> <td>-11.8999933</td> </tr> <tr align="center"> <td>Luke</td> <td>Poodle</td> <td>Macho</td> <td>-13.294716</td> <td>-12.8999933</td> </tr> <tr align="center"> <td>Totó</td> <td>SRD</td> <td>Macho</td> <td>-53.294716</td> <td>-14.8999933</td> </tr> <tr align="center"> <td>Ninico</td><td>SRD</td> <td>Macho</td> <td>-27.294716</td> <td>-16.8999933</td> </tr> <tr align="center"> <td>Belinha</td> <td>Pastor Alemão</td> <td>Fêmea</td> <td>-33.294716</td> <td>-18.8999933</td> </tr> <tr align="center"> <td>Órion</td> <td>Angorá</td> <td>Fêmea</td> <td>-53.294716</td> <td>-19.8999933</td> </tr> </tbody> </table> </div> </main> <script> let dono = new Dono("","","-21.5483943", "-68.43278392"); [...document.querySelectorAll("#pets tbody tr")].forEach(linha_pet=>{ let sexta_coluna = linha_pet.querySelector("td:nth-of-type(6)"); if(sexta_coluna== null) linha_pet.appendChild(sexta_coluna = document .createElement("td")); let latitude_cachorro = linha_pet.querySelector("td:nth-of- type(4)").innerText; let longitude_cachorro = linha_pet.querySelector("td:nth-of- type(5)").innerText; 9 let cachorro = new Cachorro("","","",latitude_cachorro, longitude_cac horro); sexta_coluna.innerText = dono.calcula_distancia(cachorro).toFixed(2) + "km"; }); </script> </body> </html> 2.2 CÓDIGO-FONTE CSS body { width: 95%; max-width: 1000px; margin: auto; background: url(O.JPG) center; font-family: 'Lato'; line-height: 1.5; color: rgb(32, 9, 9); } main { background: #ffffffc2; padding: 5px 40px; margin-top: 20px; border-radius: 10px; } .header, .app-name, .headline { margin: 0; text-align: center; } .concerts { margin: 30px 0; text-align: center; width: 100%; } .concerts table { background: #cb3a3ab3; border-radius: 10px; padding: 10px; margin: 0 auto; } /* ESTILO DO SLIDER */ .slider { display: block; height: 293px; width: 600px; margin: auto; margin-top: 20px; position: relative; } .slider li { 10 list-style: none; position: absolute; } .slider img { margin: auto; height: 100%; width: 100%; vertical-align: top; } .slider input { display: none; } .slider label { background-color: #000; bottom: 10px; cursor: pointer; display: block; height: 10px; position: absolute; width: 10px; z-index: 10; } .slider li:nth-child(1) label { left: 10px; } .slider li:nth-child(2) label { left: 40px; } .slider li:nth-child(3) label { left: 70px; } .slider img { opacity: 0; visibility: hidden; } .slider li input:checked ~ img { opacity: 1; visibility: visible; z-index: 10; } 11 3 REQUISITOS DE NEGÓCIO E REQUISITOS DE SOFTWARE Requisitos de negócio são requisitos de alto nível que explicam necessidades do negócio e justificam a execução de um ou mais projetos. (Vasconcelos, 2012) Ou seja, os requisitos de negócio representam os objetivos do próprio negócio. Um processo de software é um conjunto de atividades relacionadas que levam à produção de um produto de software (Sommerville, 2011). Os requisitos de software compreendem as necessidades de um usuário, as exigências do negócio e da empesa que devem ser atendidos pelo software. • Propósito: Este documento especifica os requisitos contemplados pela ferramenta Pet Monitor. • Escopo: O documento descreve os casos de uso de uma ferramenta de monitoramento de animais, que permite que o tutor monitore em tempo real a localização do seu animal de estimação e receba um sinal de alerta caso o animal ultrapasse uma distância considerada segura. • Público-alvo: Pessoas que possuem animais de estimação. o Classe e Característica dos Usuário: A ferramenta Pet Monitor será utilizada por um perfil de usuário, tido como tutor, que terá permissão para inserir sua localização (em coordenadas geográficas) e cruzar dados com a localização do animal emitida via sensor acoplado ao animal (com o auxílio de uma coleira, anilha, entre outros). 2.1 Ciclo de Vida Figura 2 – Ciclo de Vida de um Software Levantamento das necessidades Análise Projeto Desenvolvimento Implementação Manutenção 12 • Levantamento das necessidades: identificar as necessidades de informações da organização como público alvo, animais de estimação entre outros. • Análise: Analisar os dados do levantamento para que seja possível criar um escopo claro e objetivo. • Projeto: Construir as especificações obtidas do escopo. Interface, banco de dados, hardware, rede. • Desenvolvimento Desenvolvimento da ferramenta Pet Monitor utilizando a linguagem de marcação HTML e scripts JS. • Implementação após o sistema ter passado satisfatoriamente por testes, transferir o sistema do ambiente de desenvolvimento para ambiente de produção. • Manutenção Adição de novos recursos em resposta às demandas dos usuários, correção de eventuais bugs. 2.2 Requisito De Software ➢ Requisitos Funcionais: [R1] Identificar os usuários: Os usuários deverão estar “logados” no sistema antes de acessarem os recursos da ferramenta Pet Monitor, de modo que o sistema possa controlar e identificar as permissões dos usuários de acordo com o seu perfil. [R2] O sistema deve permitir que usuários logados sejam capazes de inserir sua localização, atribuindo a conexão com a distância de seu animal em uma determinada data e/ou no exato momento . [R3] O sistema deve permitir que usuários autorizados sejam capazes de editar posteriormente sua localização em caso de erro de digitação. [R4] O sistema deve manter um histórico de configurações anteriores para que o usuário possa acessá-lo e ter acesso às configurações de acordo com o ambiente em que se encontra. [R5] O sistema deve permitir que o usuário adicione, exclua e altere informações sobre seus animais de estimação para que seja de fácil visualização e identificação no caso de se possuir mais de um animal. [R6] O sistema deve permitir uma definição de distância entre animal e tutor considerada segura pelo usuário. [R7] O sistema deve emitir um aviso sonoro caso a distância entre animal e tutor seja superior à metragem de distância pré definida pelo dono. Neste caso, deve-se exibir uma janela pop-up com o aviso por escrito: ATENÇÃO, SEU PET ESTÁ MUITO DISTANTE. APROXIME-SE DELE. 13 [R8] O sistema deve possibilitar que o usuário possa reportar no caso da emissão do alerta da ultrapassagem de distância, se o cão foi encontrado ou não. Neste caso, deve-se exibir uma janela pop-up com a pergunta: O ANIMAL FOI ENCONTRADO? E os seguintes botões: SIM e NÃO. No caso de ser selecionado SIM, registrar as distâncias normalmente. Caso seja selecionado NÃO deve-se mostrar a seguinte mensagem: “Em caso de perda ou roubo, não deixe de fazer o boletim de ocorrência e a queixa, mesmo que não haja certeza sobre a autoria do roubo”. ➢ Requisitos Não-Funcionais Compatibilidade:[R9] A ferramenta deve seguir as recomendações de usabilidade, definidas pelo Grupo de Trabalho IHC que foram postadas no portal do Projeto Tidia-ae na incubadora. Confiabilidade: [R10] O sistema deve informar ao usuário quando ele tentar definir uma distância ligeiramente grande entre tutor e animal. [R11] O sistema deve informar ao usuário que garanta que o software não seja responsabilizado em caso de perda do animal. O sistema precisa oferecer recursos que possibilitem que o usuário encontre seu animal em caso de fuga, furto e/ou roubo, porém tais recursos só estarão disponíveis no momento em que o animal estiver fazendo uso do rastreador. Requisitos de Interface [R12] Interface baseada em linguagem de marcação HTML, gerada a partir de scripts, para utilização da ferramenta em navegadores Web e em dispositivos móveis, nos sistemas Android (4.0 ou superior) e iOS (7.0 ou superior). 14 2.3 Processo de Negócio Identificar a distância entre tutor e animal Distância é maior que a estabelecida como segura? sim não Emitir aviso sonoro/visual para alertar o tutor Armazenar dados de localização O usuário encontrou o animal? mostrar a seguinte mensagem: “Em caso de perda ou roubo, não deixe de fazer o boletim de ocorrência e a queixa, mesmo que não haja certeza sobre a autoria do roubo”. não sim Usuário insere a localização Cliente acessa o site da Pet Monitor Cliente emite pedido de compra Cliente realiza cadastro do tutor e do animal Receber pagamento do cliente Transportar e montar pedido Pedido entregue Instalação do acessório rastreador no animal Cliente acessa Pet Monitor 15 REFERÊNCIAS FAPESP. Especificação de Requisitos de Software. 2006. Disponível em: <http://www.lcad.icmc.usp.br/~jbatista/sce537/mat/projetos/proj1/requisitos.pdf>. Acesso em: 01 nov. 2019. PALMA, Fernando. Modelo de Especificação de Requisitos de Software: template disponível para download. 2012. Disponível em: <https://www.portalgsti.com.br/2012/05/especificacao-de-requisitos-de-software-exemplo- template.html>. Acesso em: 01 nov. 2019. SOMMERVILLE, Ian. Engenharia de Software. 9. ed. São Paulo: Pearson Education do Brasil, 2011 VASCONCELLOS, Paulo. +Requisitos do Negócio. 2012. Disponível em: <http://www.pfvasconcellos.eti.br/blog/2012/10/25/requisitos-do-negocio/>. Acesso em: 01 nov. 2019. VENTURA, Plínio. O que é Regra de Negócio? 2019. Disponível em: <https://www.ateomomento.com.br/o-que-e-regra-de-negocio/>. Acesso em: 01 nov. 2019. VENTURA, Plínio. Requisitos de Software. 2019. Disponível em: <https://www.ateomomento.com.br/requisitos-de-software/>. Acesso em: 01 nov. 2019. 16
Compartilhar