Pular para o conteúdo principal
Version: Next

Documento de Requisitos

DataVersãoDescrição
28/08/20230.1Criação do documento, Técnicas de elicitação adicionadas
29/08/20230.2Adição dos requisitos gerais, do fórum e do post
29/08/20230.3Adição dos requisitos do feed, gameficação e perfil
29/08/20230.4Adição dos requisitos do evento e regras de negócios
01/09/20230.5Adição dos requisitos não funcionais
18/09/20231.0Agrupamento dos requisitos CRUD e Postagem
16/11/20232.0Alteração nos requisitos de comentários

1. Introdução

A etapa de levantamento de requisitos é uma das principais partes de um projeto de desenvolvimento de software. Nessa etapa, buscamos entender as necessidaddes dos clientes e com isso extraímos as funcionalidades que o sistema deve ter, as restrições de negócio, aspectos qualitativos do sistema, e assim por diante. Neste documento, iniciaremos a fase de elicitação, modelagem e criação do backlog do produto.

2. Elicitação

Elicitar é obter informações sobre algo. No contexto de desenvolvimento de software, é importante entender as necessidades do cliente para criar um sistema que atenda às suas expectativas. Para isso, é preciso identificar fontes de informação, coletar fatos e se comunicar com o cliente.

As tecninas de elicitação usadas pela equipe foram brainstorming e questionário.

2.1. Brainstorming

O brainstorming é uma técnica de elicitação de ideias que visa gerar um grande número de ideias de forma rápida e espontânea. É uma técnica eficaz para obter ideias criativas e inovadoras. O tema do brainstorming foi o de visão geral das funcionalidades do sistema.

A reunião foi realizada com dois clientes, ambos alunos do ensino médio, e com a equipe de desenvolvimento. Utilizamos o miro como plataforma para facilitar na criação das ideias.

Caso não seja possível visualizar o quadro acima, acesse-o aqui.

2.2. Questionário

O questionário é uma técnica de elicitação de requisitos que consiste em um conjunto de perguntas direcionadas aos stakeholders. É uma técnica eficaz para coletar informações de um grande número de pessoas de forma rápida e eficiente. Utilizamos essa técnica como uma forma de validar a ideia, após termos realizado o brainstorming.

Utilizamos a ferramenta de formulários do Google (Google Forms), para facilitar o processo de criação de perguntas, compartilhamento e análise de respostas. (Questionário)

Ao final, obtivemos cerca de 30 respostas, devido o curto tempo de divulgação. Das perguntas e dados obtidos, destacamos o seguinte:

  • 100% das pessoas afirmaram possuir alguma dificuldade no processo de aprendizado de algum conhecimento;
  • 69% das pessoas costumam tirar suas dúvidas de forma regular durante o aprendizado;
  • 50% das pessoas não possuem nenhum tipo de suporte (cursinho, plataforma de estudos, grupo de estudos, etc);
  • 100% das pesssoas realizam pesquisas na internet para obter respostas para suas dúvidas;
  • 30% das pessoas possuem acesso a uma plataforma de estudos fornecida pela sua instituição de ensino;
    • 100% dessas pessoas não costuma utilizar a ferramenta de tira-dúvidas de modo frequente;
  • 97% das pessoas acreditam que o MindHub é uma opção viável e proveitosa.

3. Requisitos

Foram identificados requisitos funcionais, requisitos não funcionais e regras de negócios através das técninas de elicitação mencionadas acima. Estas informções estão listadas abaixo.

3.1. Requisitos Funcionais

Os requisitos foram organizados por meio de épicos, que são funcionalidades gerais e abarcam outros requisitos menores. Dessa forma, os requisitos foram organizados por sessões.

Uma Postagem engloba Fórum, Tópico e Evento.

3.1.1. GeraL

  • RF001 - O sistema deve permitir o cadastro de usuários. (Essencial)
  • RF002 - O sistema deve permitir o login de usuários. (Essencial)
  • RF003 - O sistema deve coletar as principais áreas de especialidade do usuário. (Essencial)
  • RF004 - O sistema deve permitir que o usuário avalie comentários primários. (Essencial)
  • RF005 - O sistema deve permitir que o usuário se autentique usando a biometria. (Desejável)
  • RF006 - O sistema deve permitir que o usuários mantenham um comentário em uma postagem. (Essencial)
    • RF006.1 - O sistema deve permitir que usuários mantenham comentários em relação a outro comentário. (Esssencial)
  • RF007 - O sistema deve permitir que usuários avaliem uma postagem. (Essencial)
  • RF008 - O sistema deve permitir que usários compartilhem postagens. (Desejável)
  • RF009 - O sistema deve notificar o usuário a respeito de últimas atividades em suas postagens/comentário. (Desejável)

3.1.2. Fórum

  • RF010 - O sistema deve permitir que o usuário mantenha um fórum. (Essencial)
  • RF011 - O sistema deve permitir que usuários vizualizem um fórum criado. (Essencial)
  • RF012 - O sistema deve permitir que o usuário proprietário do fórum marque-o como resolvido.
    • RF012.1 - O sistema deve permitir que o usuário proprietário escolha a melhor resposta. (Essencial)
    • RF012.2 - O sistema deve permitir que o usuário proprietário responda seu fórum, caso encontre a resposta por outros meios. (Desejável)
  • RF013 - O sistema deve ordenar as respostas de um fórum pela soma de seus votos. (Essencial)
  • RF014 - O sistema deve permitir que usários compartilhem fóruns. (Desejável)

3.1.3. Tópico

  • RF015 - O sistema deve permitir que o usuário mantenha um tópico sobre determinado assunto. (Essencial)
  • RF016 - O sistema deve permitir que usuários visualizem um tópico. (Essencial)

3.1.4. Evento

  • RF017 - O sistema deve permitir que o usário mantenha um evento. (Essencial)
  • RF018 - O sistema deve permitir que o usuário visualize um evento. (Essencial)

3.1.5. Feed

  • RF019 - O sistema deve possuir um feed onde exibirá os conteúdos.
    • RF019.1 - O sistema deve exibir uma lista de postagens baseadas na(s) especialidade(s) do usuário. (Essencial)
    • RF019.2 - O sistema deve exibir uma lista de fóruns baseados na(s) especialidade(s) do usuário. (Essencial)
  • RF020 - O sistema deve permitir que o usuário filtre conteúdos por categoria e ou título. (Desejável)

3.1.6. Perfil

  • RF021 - O sistema deve exibir as informações do usuário. (Essencial)
  • RF022 - O sistema deve exibir as últimas atividades do usário. (Desejável)
  • RF023 - O sistema deve permitir que o usuário altere sua informações. (Essencial)
  • RF024 - O sistema deve permitir que o usuário remova sua conta. (Essencial)

3.1.7. Gameficação

  • RF025 - O sistema deve conter uma estratégia de gameficação. (Essencial)
  • RF026 - O sistema deve exibir um ranking de usuários. (Essencial)

3.2. Requisitos Não Funcionais

Os requisitos não funcionais foram agrupados por atributos de qualidade.

3.2.1. Disponibilidade

  • RNF001 - O sistema deve estar disponível no mínimo 95%, em 24 horas por dia, exceto em situações de manutenção do servidor e/ou na plataforma de hospedagem. (Essencial)

3.2.2. Instalabilidade

  • RNF002 - O sistema deve ser compatível com 100% dos dispositivos a partir do Android 7.0 (Nougat). (Essencial)
  • RNF003 - O servidor do sistema deve ser instalado em um abiente virtualizado. (Essencial)

3.2.3. Integridade

  • RNF004 - O banco de dados do sistema deve manter 100% da integridade dos dados entre alterções nos modelos de dados. (Essencial)

3.2.4. Robustez

  • RNF005 - Se o sistema falhar antes do usuário publicar uma pergunta ou material, ele deverá salvar as informações em um rascunho. (Desejável)

3.2.5. Segurança

  • RNF006 - O sistema deve gerar, usando o algoritmo bcrypt, e armazenar somente o hash da senha do usuário no banco de dados. (Essencial)

3.2.6. Usabilidade

  • RNF007 - Um usuário treinado deve ser capaz de criar um fórum em uma média de 3 minutos e no máximo 5 minutos, 90% do tempo. (Desejável)
  • RNF008 - Um novo usário deve ser capaz de deslogar do sistema, em uma média de 1 minuto no máximo 2 minutos, em 95% das vezes. (Desejável)
  • RNF009 - Para cada ação de criação, edição ou remoção que o usuário fizer, o sistema sempre deve fornecer algum feedback sobre essa ação. (Desejável)

3.3. Regras de negócio

As seguintes regras de negócio definem a lógica dos requisitos do sistema, especificados acima.

  • RN001 - As informações de um usuário devem ser conhecidas pelo sistema, sendo elas - nome completo, e-mail, áreas de especialidade, meio de contato principal.
  • RN002 - As áreas de especialidade são definidas por - matemática, português, história, geografia, inglês, espanhol, geometria, química, física, biologia, filosofia, sociologia, outros idiomas, educação física, artes, computação, redação e literatura.
  • RN003 - Na criação de um fórum, tópico e evento, o usuário deve informar - título, descrição, área do conhecimento.
  • RN004 - Na avaliação de um fórum,tópico ou comentário primário, o usuário poderá escolher entre dar um Downvote ou Upvote.
  • RN005 - O sistema sempre deve exibir a resposta que resolveu o fórum no topo.
  • RN006 - A política de exibição dos conteúdos no feed será baseado primeiramente pelas áreas de especialidade do usuário seguido da quantidade de votos de um conteúdo.
  • RN007 - A quantidade de votos de um conteúdo será dado pela soma dos Downvotes e Upvotes.
  • RN008 - A lógica de gameficação será feita por meio de um sistema de XP (pontos de experiência) e conquistas.
    • RN008.1 - Por cada resposta feita em um fórum, o usuário ganhará 5 de XP.
    • RN008.2 - Por cada Upvote o usuário proprietário da resposta ganhará 1 de XP.
    • RN008.3 - Por cada Downvote o usuário proprietário da resposta perderá 1 de XP.
    • RN008.4 - Um usuário não poderá ter XP negativo.
  • RN009 - O cadastro da biometria do usuário só poderá ser feito após ele logar no sistema pela primeira vez.

4. Protótipo de alta fidelidade

O protótipo acima foi construído para exemplificar e validar os requisitos elicitados. Caso não seja possível visualizar o protótipo acima, acesse-o aqui.

5. Validação com usuário

Para realizar a valição da nossa aplicação com pontenciais usuários realizamos uma entrista com algumas atividades para o entrevistado realizar no nosso aplicativo. Fizemos uma entrevista estruturada. As perguntas feitas estão listadas abaixo, bem como as respostas obtidas.

Antes das perguntas, fornecemos ao usuário a aplicação, e em seguida demos uma série de atividades para que fizessem dentro do aplicativo. O objetivo seria o de realmente validar e verificar a eficiência do sistema em solucionar as necessidades do usuário; além de identificar possíveis dificuldades que teriam ao usar o sistema, bem como obter a opinião deles sobre o sistema.

5.1 Atividades

As atividades foram as seguintes:

  1. Criar conta;
  2. Criar uma pergunta com foto;
  3. Sair do perfil e logar com outro usuário;
  4. Responder uma pergunta que já foi feita;
  5. Logar com a conta original e avaliar a resposta e setar como melhor resposta;
  6. Avaliar o material mais recente;
  7. Criar um evento;
  8. Editar uma pergunta feita;
  9. Remover um evento;
  10. Acessar tela de ranking;
  11. Acessar o perfil do usuário que está em primeiro lugar do ranking;
  12. Alterar suas áreas do conhecimento.

5.2 Entrevista

As perguntas, bem como as repostas da entrevista realizada foram as seguintes:

  • Você avalia que o aplicativo e suas funcionalidades atendem suas necessidades?

    • R: O aplicativo atende minhas necessidades de forma satisfatória, pois as perguntas são respondidas de forma clara e objetiva, sanando minhas dúvidas.
  • Todas as funcionalidades estão dentro do que foi previamente estabelecido?

    • R: Todas as funcionalidades estão de acordo com o que foi planejado, sem nenhuma alteração significativa.
  • Você teve alguma dificuldade / conflito com alguma funcionalidade? Se sim, qual(quais)?

    • R: A funcionalidade de encontrar materiais foi a única que apresentou alguma dificuldade, pois o ícone não é intuitivo. Já a funcionalidade de postagens no perfil é intuitiva e fácil de usar.
  • Algo que deixou a navegação confusa?

    • R: A funcionalidade de avaliação é a única que deixou a navegação confusa, pois o uso dos símbolos ˄ e ˅ não é intuitivo. A opção de like ou dislike seria mais intuitiva e fácil de usar.
  • Você acha que está faltando alguma informação ou funcionalidade? Se sim, qual seria?

    • R: Não há nenhuma informação ou funcionalidade que eu ache que esteja faltando.
  • A interface é fácil de utilizar?

    • R: A interface é fácil de utilizar, com ícones intuitivos e um fluxo de navegação claro e organizado.
  • O que você gostou no sistema?

    • R: Gostei do sistema, principalmente da facilidade de uso e do conteúdo relevante.
  • Existe algo que você mudaria?

    • R: Não mudaria nada, pois o sistema está bem desenvolvido e atende às minhas necessidades.
  • Como você descreveria esse produto para outra pessoa?

    • R: Um aplicativo que permite aos usuários compartilhar suas dúvidas e conhecimentos com outras pessoas.

5.3 Mudanças

Quanto à mudanças apontadas pelo usuário e que fizemos posteriormente a essa validação foi alterar os ícones que ele julgou não serem intuitivos.