Baixe o app para aproveitar ainda mais
Prévia do material em texto
Instituto de Ciências Exatas e Tecnologia Ciência da Computação – 7º Semestre Sistema Mercado Inteligente - Módulo Mobile Requisitos Funcionais e não Funcionais Versão 0.7 DIOGO ALEXANDRO SILVA OLIVEIRA - R.A: T2826E-4 LUCAS OLIVEIRA DOS SANTOS - R.A: N18904-5 MATHEUS ILRAM PRADO DE LIMA - R.A: N183CA-0 1 Histórico da Revisão Data Versão Descrição Autor 12/03/2020 0.1 Criação inicial do documento, descrição de requisitos funcionais e não funcionais Lucas Oliveira 15/03/2020 0.2 Detalhamento dos requisitos, adicionado Finalidade, Escopo e [CASE01] Lucas Oliveira 16/03/2020 0.3 Adicionado casos de uso Lucas Oliveira 16/03/2020 0.4 Adicionado introdução, descrição geral, visão geral, tecnologías usadas e referências. Revisão de finalidade, escopo, requisito funcional: cadastro de conta e formatação de texto. Lucas Oliveira, Matheus Lima 28/03/2020 0.5 Adicionado diagrama de casos de uso de [CASE01], [CASE02], [CASE03]. Lucas Oliveira 29/03/2020 0.6 Adicionado [CASE05], [CASE06] e diagrama de caso de uso de [CASE05] e [CASE06] Lucas Oliveira 31/03/2020 0.7 Adicionado regra de negócio e vantagens à introdução Lucas Oliveira, Diogo Alexandro 2 Índice 1. Introdução 5 1.1. Finalidade 5 1.2. Escopo 5 1.3. Visão Geral 6 2. Descrição Geral 6 3. Requisitos não funcionais 6 3.1. [ReqNF01] Dispositivo portátil 6 3.2. [ReqNF02] Banco de dados 7 3.3. [ReqNF03] Sistema de localização 7 4. Requisitos funcionais 7 4.1. [ReqF01] Cadastrar conta cliente 7 4.2. [ReqF02] Login com conta cliente 7 4.3. [ReqF03] Consultar produto 8 4.4. [ReqF04] Gerar rota até um produto 8 4.5. [ReqF05] Gerar carrinho de compras 8 4.6. [ReqF06] Contatar SAC 8 5. Casos de uso 8 5.1. Cadastro de conta cliente 8 5.1.1 Diagrama do caso de uso [CASE01] 10 5.2. Fazer login com conta cliente 10 5.2.1. Diagrama do caso de uso [CASE02] 11 5.3. Consultar produto 11 5.3.1. Diagrama do caso de uso [CASE03] 12 3 5.4. Adicionar produtos ao carrinho 12 5.4.1. Diagrama do caso de uso [CASE04] 13 5.5. Geração de rota até um produto 14 5.5.1. Diagrama do caso de uso [CASE05] 15 5.6. Contatar SAC 15 5.6.1. Diagrama do caso de uso [CASE06] 16 6. Tecnologias usadas 16 6.1. Android Studio 17 6.2. Kotlin 17 6.3. Unity 18 6.4. Linguagem C# 18 6.5. Firebase 18 6.6. Android Jetpack 18 6.7. Android Room 19 7. Referências 19 4 1. Introdução O propósito deste documento é informar aos participantes do projeto sobre seu desenvolvimento geral, suas funções, benefícios além de possíveis restrições e limitações, tudo de forma detalhada e o mais clara possível para um entendimento geral. O documento possui os requisitos funcionais e não funcionais especificados de acordo com o planejamento desenvolvido pelos participantes do projeto. A regra de negócio do projeto é que o cliente tenha a experiência de compra em um supermercado facilitada, através do uso das funcionalidades do aplicativo como consulta de produtos disponíveis e geração de rota até um produto desejado. O projeto traz vantagens como: experiência de compra rápida e eficiente, facilidade de navegação do espaço físico e maior quantidade de informação sobre os produtos desejados. 1.1. Finalidade O projeto consiste da criação de um aplicativo para celulares Android que visa trazer serviços e ferramentas digitais para auxiliar o usuário. 1.2. Escopo O projeto foi dividido em múltiplas ilhas com finalidades e escopos diferentes, cada uma responsável por um setor, sendo estes: Backend, Web, Mobile, Holograma e Mapeamento. Este documento refere a ilha de desenvolvimento mobile, o qual o objetivo é desenvolver um aplicativo de celular cujo desempenha tarefas que ajudem o usuário a: localizar produtos, navegar o supermercado, ajustar seu carrinho de compras e conferir produtos e promoções realizadas pelo supermercado. 5 1.3. Visão Geral Além desta seção introdutória, as seções seguintes estão organizadas como descrito abaixo. ● Seção 2 - Descrição geral: apresenta uma descrição geral do projeto, caracterizando qual é o seu escopo e descrevendo seus usuários. ● Seção 3 - Requisitos não funcionais: cita e descreve brevemente os requisitos não funcionais do projeto. ● Seção 4 - Requisitos funcionais: cita e descreve brevemente os requisitos funcionais do projeto. ● Seção 5 - Casos de uso: descreve o funcionamento de certas interações de atores com o projeto ● Seção 6 - Tecnologías usadas: cita e descreve as tecnologias usadas para o desenvolvimento do projeto. 2. Descrição Geral O objetivo do aplicativo mobile é facilitar a experiência de compra dos usuários utilizando ferramentas de localização e listagem. Ele visa principalmente atingir usuários que têm dificuldade de navegar em supermercados, ou que desejam ir direto ao produto desejado sem ter que procurá-los diretamente. 3. Requisitos não funcionais 3.1. [ReqNF01] Dispositivo portátil O aplicativo necessita de um dispositivo móvel com um sistema android versão 7 ou superior. 6 3.2. [ReqNF02] Banco de dados O aplicativo necessita de acesso à um banco de dados PostgreSQL com informações sobre os produtos disponíveis e clientes cadastrados. 3.3. [ReqNF03] Sistema de localização O aplicativo necessita de acesso à um sistema de localização em interiores baseado em redes wireless com pontos de acessos para traçar rotas. 4. Requisitos funcionais 4.1. [ReqF01] Cadastrar conta cliente O aplicativo deve permitir que o usuário se cadastre como cliente. ● A tela de cadastro de conta consiste de campos de texto obrigatórios e opcionais e um botão “Finalizar cadastro”. ○ Campos obrigatórios: ■ E-mail. ■ Senha. ■ Nome. ○ Campos opcionais: ■ Endereço. ■ CEP. 4.2. [ReqF02] Login com conta cliente O aplicativo deve permitir que o usuário faça login com sua conta. ● A tela de login consiste de campos de identificação, um botão “Fazer login” e um botão “Criar conta”. 7 4.3. [ReqF03] Consultar produto O aplicativo deve permitir que o usuário consulte informações sobre um ou mais produtos. 4.4. [ReqF04] Gerar rota até um produto O aplicativo deve gerar uma rota do presente local do usuário até um produto especificado caso esta seja solicitada pelo usuário. 4.5. [ReqF05] Gerar carrinho de compras O aplicativo deve permitir que o usuário adicione produtos consultados a um carrinho. 4.6. [ReqF06] Contatar SAC O aplicativo deve permitir que o usuário consiga entrar em contato com o SAC. 5. Casos de uso 5.1. Cadastro de conta cliente [CASE01] Cadastro de conta cliente Referência [ReqF01] Cadastrar cliente Sumário O usuário faz o cadastro de uma conta cliente. Pré-condições O dispositivo usado deve ter conexão com a internet. Atores Cliente, Backend Descrição 1. O Cliente pressiona o botão “criar nova conta”. 8 2. O aplicativo exibe uma tela que contém um formulário com campos para os dados necessários para o cadastro e um botão para “criar sua conta”. 3. O Cliente pressiona o botão “criar sua conta”. 4. O aplicativo envia os dados preenchidos ao Servidor para validação. 5. O aplicativo recebe um retorno do Servidor confirmando o cadastro. 6. O aplicativo retorna à tela inicial. Alternativas 1. No passo 3, caso haja algum campo obrigatório vazio ou com dados inválidos, o aplicativo exibe um aviso na tela informando o campo a ser preenchido corretamente e o formato de dados válido para o campo. 2. No passo 5, caso o Servidor retorne um erro com o processo de validação o aplicativo exibe um aviso na tela informando o motivo.E.g: “E-mail já cadastrado”. Exceção O cadastro da conta cliente não pode ser concluído caso o Cliente deixe de preencher um campo obrigatório, caso dados inválidos tenham sido preenchidos ou caso existam dados salvos anteriormente no servidor que sejam idênticos aos dados preenchidos. 9 5.1.1 Diagrama do caso de uso [CASE01] 5.2. Fazer login com conta cliente [CASE02] Fazer login com conta cliente Referência [ReqF01] Cadastrar conta cliente, [ReqF02] Login com conta cliente Sumário O cliente faz o login no aplicativo com sua conta cliente Pré-condições O dispositivo usado deve ter conexão com a internet, [CASE01] Cadastro de conta cliente. Atores Cliente, Backend Descrição 1. O Cliente pressiona o botão “Fazer login”. 2. O aplicativo exibe uma tela com campos de identificação necessários para efetuar o login. 3. O cliente preenche os campos com os dados de identificação. 4. O Cliente pressiona o botão “Login”. 10 5. Os dados preenchidos são enviados para o Backend para validação. 6. O Backend retorna a confirmação da validação. 7. O aplicativo retorna à tela inicial. Alternativas 1. No passo 6 caso, o Backend retorne um erro de validação, o processo retorna ao passo 2, porém exibindo também um aviso mencionando que o login não foi efetuado. Exceção Não é efetuado o login caso os campos de identificação estejam vazios ou os dados de identificação estejam incorretos. 5.2.1. Diagrama do caso de uso [CASE02] 5.3. Consultar produto [CASE03] Consultar produto Referência [ReqF03] Consultar produto Sumário O cliente pesquisa produtos disponíveis. Pré-condições O dispositivo usado deve ter conexão com a internet. 11 Atores Cliente, Backend Descrição 1. O Cliente preenche o campo de pesquisa com o nome ou parte do nome do produto desejado. 2. O Cliente pressiona o botão “Pesquisar”. 3. O dados usados para pesquisa são enviados ao backend. 4. O backend retorna informações sobre os produtos relacionados à pesquisa. 5. O aplicativo exibe uma tela com o resultado da pesquisa. Alternativas - Exceção A pesquisa não deve ser efetuada caso o cliente não preenche o campo de pesquisa. 5.3.1. Diagrama do caso de uso [CASE03] 5.4. Adicionar produtos ao carrinho [CASE04] Adicionar produtos ao carrinho Referência [ReqF03] Consultar produto, [ReqF05] Gerar carrinho de compras Sumário O cliente adiciona produtos consultados à um carrinho de compras 12 digital. Pré-condições O dispositivo usado deve ter conexão com a internet, [CASE03] Consultar produto. Atores Cliente Descrição 1. O Cliente determina a quantidade de produto a ser adicionado. 2. O cliente pressiona o botão “Adicionar ao carrinho”. 3. O aplicativo adiciona o produto na lista do carrinho. Alternativas - Exceção O produto não é adicionado ao carrinho caso a quantidade determinada seja menor ou igual a 0. 5.4.1. Diagrama do caso de uso [CASE04] 13 5.5. Geração de rota até um produto [CASE05] Geração de rota até um produto Referência [ReqF03] Consultar produto, [ReqF05] Gerar rota até um produto Sumário O cliente determina um produto, uma rota partindo da posição atual do cliente indo até o produto determinado é gerada e exibida no aplicativo. Pré-condições O dispositivo usado deve ter conexão com a internet, [CASE03] Consultar produto. Atores Cliente, Backend Descrição 1. O cliente pressiona o botão “rota” 2. O aplicativo envia dados sobre o local para o backend. 3. Após serem processados o backend retorna informações de rota. 4. O aplicativo exibe a rota em um tela no aplicativo. Alternativas - Exceção A rota não é gerada caso ocorra um erro com o processamento de dados de rota. 14 5.5.1. Diagrama do caso de uso [CASE05] 5.6. Contatar SAC [CASE06] Contatar SAC Referência [ReqF01] Cadastrar conta cliente,[ReqF02] Fazer login com conta cliente, [ReqF06] Contatar SAC Sumário O cliente cadastrado e logado em sua conta entra em contato com o SAC do mercado. Pré-condições O dispositivo usado deve ter conexão com a internet, [CASE01] Cadastro de conta cliente, [CASE02] Fazer login com conta cliente. 15 Atores Cliente, Backend, Funcionário Descrição 1. O cliente pressiona o botão “Contatar SAC”. 2. O aplicativo exibe uma tela que contém um formulário com os campos necessários para enviar uma mensagem ao SAC. 3. O cliente pressiona o botão “Enviar mensagem”. 4. A mensagem é enviada ao Backend que envia a mensagem ao SAC. 5. O aplicativo exibe uma tela que contém um sistema de chat com a mensagem enviada pelo cliente. Alternativas - Exceção A mensagem não é enviada caso campos obrigatórios estejam vazios. 5.6.1. Diagrama do caso de uso [CASE06] 6. Tecnologias usadas No desenvolvimento do projeto foram utilizadas as tecnologias descritas abaixo, escolhidas durante o planejamento, para realizar funções específicas. 16 6.1. Android Studio Android Studio é uma ferramenta de desenvolvimento mobile, desenvolvida pela Google utilizando como base o IntelliJ IDEA da JetBrains. É uma IDE de código aberto que trabalha especificamente para o desenvolvimento na plataforma Android, possuindo diversas utilidades que ajudam bastante na simplificação e agilização do desenvolvimento do código, dentre eles: ● Suporte para compilações baseadas em Gradle; ● Refatoração de código específica para Android; ● Editor de layout que permite que usuários arrastem componentes de interface de usuário, com opção de pré-visualizar layouts em várias configurações de tela; ● Integração com GitHub. Levando em consideração essas utilidades, Android Studio foi considerada a melhor ferramenta para o desenvolvimento respectivo do projeto. 6.2. Kotlin Kotlin é uma linguagem de programação multiplataforma de propósito geral que trabalha utilizando a JVM, assim como Java. Ela foi escolhida para se trabalhar no projeto por possuir uma versatilidade maior que a linguagem Java, que seria a outra opção para se utilizar no desenvolvimento. Ela é uma linguagem muito mais eficiente e com código mais simples, graças aos seus lambdas e co-rotinas, além de ser null-safe, o que ajuda bastante no apuramento de bugs e erros. Além disso ela possui uma integração bem robusta com Java, permitindo que você utilize de basicamente quase todas as funções e bibliotecas que são utilizáveis em Java. 17 6.3. Unity Unity é uma game engine, ou seja, é uma IDE projetada com foco em desenvolvimento de jogos. Embora sua principal funcionalidade seja desenvolvimento de jogos, diversas outras funcionalidades foram adicionadas à Unity ao longo dos anos, tornando possível o desenvolvimento de vários tipos diferentes de softwares. Unity possui suporte para diversas plataformas, como Linux, Windows e principalmente Android, facilitando o processo de integração com das funcionalidades AR com a parte mobile do projeto. 6.4. Linguagem C# C# é uma linguagem de programação multi-paradigma de propósito geral. Projetada para ser simples, moderna e para ser usada no desenvolvimento de componentes de software adequados para ambientes distribuídos. C# é também a linguagem principal da Unity, a game engine que está sendo usada para desenvolvimento do módulo de geração de rotas usando Realidade Aumentada. 6.5. Firebase Firebase é um conjunto de serviços prestados a área mobile e web, no caso deste projeto sua utilização principal é o Firebase Auth, que é o serviço de autenticação de login utilizado pelo usuário. 6.6. Android Jetpack Android Jetpack é um conjunto de componentes, ferramentas e orientações que ajudam no desenvolvimento de aplicações android. É basicamente um conjuntoessencial de bibliotecas para desenvolvimento android de maneira geral, e nosso projeto não é exceção; 18 6.7. Android Room Room é uma biblioteca de persistência que fornece uma interação com banco de dados SQLite, é uma ferramenta que serve como uma camada de interação com o banco de dados. 7. Referências GOOGLE LLC. Android Jetpack | Android Developers. Disponível em: https://developer.android.com/jetpack. Acesso em: 16 mar. 2020. GOOGLE LLC. Room Persistence Library | Android Developers. Disponível em: https://developer.android.com/topic/libraries/architecture/room. Acesso em: 16 mar. 2020. UNITY TECHNOLOGIES. Unity - Manual: Unity User Manual (2019.3). Disponível em: https://docs.unity3d.com/2019.3/Documentation/Manual/index.html. Acesso em: 16 mar. 2020. GOOGLE LLC. Firebase - Disponível em: https://firebase.google.com/. Acesso em: 16 mar. 2020. GOOGLE LLC. Meet Android Studio | Android Developers. Disponível em: https://developer.android.com/studio/intro. Acesso em: 16 mar. 2020. HELLER, Martin. What is Kotlin? The Java alternative explained. [S. l.], 27 out. 2017. Disponível em: https://www.infoworld.com/article/3224868/what-is-kotlin-the-java-alternative-explained. html. Acesso em: 16 mar. 2020 JET BRAINS. Reference - Kotlin Programming Language. Disponível em: https://kotlinlang.org/docs/reference/. Acesso em: 16 mar. 2020. MICROSOFT CORPORATION. C# docs - get started, tutorials, reference. | Microsoft Docs. Disponível em: https://docs.microsoft.com/en-us/dotnet/csharp/. Acesso em 16 mar. 2020 19 https://developer.android.com/jetpack https://developer.android.com/topic/libraries/architecture/room https://docs.unity3d.com/2019.3/Documentation/Manual/index.html https://firebase.google.com/ https://developer.android.com/studio/intro https://www.infoworld.com/article/3224868/what-is-kotlin-the-java-alternative-explained.html https://www.infoworld.com/article/3224868/what-is-kotlin-the-java-alternative-explained.html https://kotlinlang.org/docs/reference/ https://docs.microsoft.com/en-us/dotnet/csharp/
Compartilhar