Skip to content

Instantly share code, notes, and snippets.

@gmdias727
Last active March 1, 2023 00:05
Show Gist options
  • Save gmdias727/b255c07bca7571263c840a84a000d3b9 to your computer and use it in GitHub Desktop.
Save gmdias727/b255c07bca7571263c840a84a000d3b9 to your computer and use it in GitHub Desktop.

Sumário

  1. | Introdução
    • 1.1 | Propósito
    • 1.2 | Escopo de Projeto
    • 1.3 | Visão Geral
  2. | Descrição Geral
    • 2.1 | Funções da Aplicação
  3. | Requisitos Funcionais
  4. | Regras de Negócio
  5. | Assinaturas

1. Introdução

1.1 Propósito

O propósito do Documento de Especificações de Requisitos é detalhar as necessidades do projeto a ser construído, descrevendo suas funcionalidades e e características. O público-alvo deste documento são staff e desenvolvedores voluntários.

1.2 Escopo de Projeto

O escopo deste projeto consiste em ser um sistema de gestão de pessoas voluntárias interno da He4rt. Onde as tecnologias de frontend, backend e banco de dados seráo de total escolha do time responsável pelo projeto. (Leve em consideração quais tecnologias estão em alta demanda no mercado de trabalho e escolha-as, reconheça que atuar neste projeto será positivo para sua carreira e currículo)

1.3 Visão Geral

  • Equipe de no máximo 6 pessoas onde:
    • 2 Voluntários serão desenvolvedores Frontend
    • 2 Voluntários serão desenvolvedores Backend
    • 2 Voluntários de nível pleno serão orientadores do projeto
      • 1 Backend
      • 1 Frontend
  • A gestão do projeto será feita pela staff da He4rt Developers
  • O projeto deverá ser concluído dentro de 3 a 6 meses.

2. Descrição Geral

  • Aplicativo web com foco em gerenciamento de pessoas.

2.1. Funções da Aplicação

  • 2.1.1 Cadastro de Usuário
  • 2.1.2 Login de Usuário
  • 2.1.3 CRUD de Perfil
  • 2.1.4 CRUD de Status

3. Requisitos Funcionais

Requisito 01 | RF001 - Cadastro de Usuário

Cadastro:

Este requisito deve cumprir a funcionalidade que permita o usuário se cadastrar no sistema após preencher um formulário próprio ou se optar por selecionar uma autenticação via Discord.

  1. Cadastro via API do Discord (Opção 1)
  2. Cadastro via Backend próprio (Opção 2)
    • Opção A: Autenticação via JWT
    • Opção B: Autenticação via OAuth
    • Opção C: Dê uma sugestão

Dados do formulário de Cadastro:

  • Nome completo > [String | Obrigatório]
  • Apelido > [String | Opcional]
  • Email [String | Único | Obrigatório]
  • Senha [String/Hash/Password | Obrigatório]

Requisito 02 | RF002 - Login de Usuário

Este requisito deve cumprir a função de login do sistema, permitindo o usuário se autenticar via dados previamente cadastrados ou via Discord mediamente escolha feita pelo usuário

  1. Login via API do Discord (Opção 1)
  2. Login via Backend próprio (Opção 2)

Dados do formulário de Login:

  • Nome de usuário (String | Obrigatório)
  • Senha (String/Hash/Password | Obrigatório)

Requisito 03 | RF003 - CRUD de Perfil

Este requisito deve cumprir a função que permita o usuário pertencente a conta, alterar sua foto de perfil (Caso não seja uma conta linkada por Discord), alterar suas competências técnicas (Linguagens de programação, Frameworks, Padrões de Código, Boas Práticas e etc...), e demais competências pessoais (soft skills no geral)

  1. Foto de perfil
  2. Descrição de perfil de desenvolvedor
  3. Descrição de Competências
  4. Descrição de Competências Técnicas

Requisito 04 | RF004 - CRUD de Status

Este requisito deve possibilitar que o usuário adicione, altere e/ou remova um status do seu

  1. Status: Disponível para atuar em projetos
  2. Status: Indisponível para atuar em projetos

4. Regras de Negócio

Regra de Negócio 01 | RN001 | Comportamento de Cadastro

O usuário deverá ser alertado sobre os campos que { não foram preenchidos, estão pendentes ou não seguem a regra implantada (ex: email único, username em uso, etc...)} com uma mensagem de erro explicando resumidamente o que está faltante para que seja concluído o cadastro com sucesso.

Caso de Sucesso: Deverá ser mostrado ao usuário um modal contendo a mensagem "Cadastro Concluído com Sucesso" e um botão com a mensagem "Ok"


Regra de Negócio 02 | RN002 | Comportamento de Login

O usuário deverá ser alertado por uma mensagem em { pop-up e/ou push notification } caso { a senha não esteja correta e/ou o usuário não esteja correto } No campo de senha deverá conter um botão que permita o usuário ver qual senha foi escrita por ele por motivos de User Experience (UX)

Caso de Sucesso: Ao ser efetuado o login na plataforma o usuário deverá ser redirecionado à página inicial da aplicação que conterá seu perfil.

Regra de Negócio 03 | RN003 | Comportamento de Entrada

O usuário após ser redirecionado à pagina inicial, deverá ser sugerido um caminho para ele seguir dentro da aplicação, para que seja feito as alterações no perfil.

Caso de Sucesso:

5. Assinaturas

Aqui ficara as assinaturas da staff para que validem e aprovem o projeto.

Documento desenvolvido(a) por: GrandeHe4rt

Documento validado(a) por: 'Pride, SamucaDev & MarchedTurtle

Documento Aprovado(a) por:

@lucasvarino
Copy link

Como é um projeto colaborativo com voluntários e não sabemos a senioridade, acho importante que deixem claro algumas coisas

No RF001

permita o usuário se cadastrar no sistema após preencher um formulário próprio ou se optar por selecionar uma autenticação via Discord.

  • Acho importante frisar quais dados serão enviados via formulário próprio.

Login via Backend próprio (Opção 2)

  • Qual será o método utilizado para login? Como serão 4 pessoas desenvolvendo, acho importante que no documento deixe claro qual será o método utilizado (JWT, Sessão, etc)

No RF004

  • Num geral, acho interessante que o tipo dos dados esteja ao lado, por exemplo, nesse requisito, será representado por uma string? por um 0 ou 1? um campo booleano? Isso evita com que os desenvolvedores tenham dúvidas.

Não sei se vocês vão mudar o documento, mas acho interessante que tenha um diagrama de banco de dados ou até mesmo um diagrama de classes bem básico com as entidades para ajudar quem for do backend, e os esboços de tela no figma para quem for do front.
Os esboços podem ser de baixa fidelidade mesmo, algo somente para o desenvolvedor ter uma ideia do posicionamento de cada item na página e quais serão as páginas.

Lembre de inserir os requisitos não funcionais: Responsividade, Intuitividade, Segurança dos dados (isso inclui falar sobre hash de senhas e dados sensíveis), Performance do Site (rankeamento no pagespeed do google e/ou tempo de carregamento das telas)

Nos dados dos requisitos funcionais, lembre de colocar quais dados são obrigatórios e quais dados são opcionais, ajuda tanto para o front-end quanto para o backend.

Tenho o costume também de criar um tópico para regras de negócio, ou seja, falar sobre o fluxo do sistema e o que acontece em cada situação:

  • Ao se cadastrar, o usuário é logado automaticamente?
  • Terá função de esqueceu sua senha? Caso o usuário tenha esquecido por algum motivo
  • Acontece algo se o usuário tentar logar várias vezes com a senha errada? (Timeout ou algo do tipo)
  • Quais dados serão únicos? email?
  • Ao logar, o usuário será redirecionado? Irá receber uma mensagem de sucesso?
  • O projeto terá vários tipos de usuários? (Admin, Usuário padrão, etc)
  • Se sim, terá um painel administrativo para visualização de alguma informação?
  • Se sim, especificar no cadastro e no login

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment