Article image
Geisson Oliveira
Geisson Oliveira02/02/2024 19:38
Compartilhe

Características e tipos de requisitos de software

  • #Programação para Internet

Uso e definição

Um projeto de desenvolvimento de software consiste em resolver um problema relacionado à regra de negócio de uma empresa e implementar a solução em um sistema digital. Por exemplo, numa livraria poderia ocorrer a situação de o proprietário encomendar um software para gerenciar as vendas de livros. Certamente haverá milhares de linha de código por trás do produto final e com toda certeza o código não será escrito de forma aleatória sem seguir alguma exigência ou condição, e é exatamente ai que somos apresentados aos requisitos de software. 

Basicamente um requisito é uma condição ou exigência imprescindível a que se deve satisfazer para um determinado fim. De forma análoga, um requisito de software é uma exigência imprescindível que deve ser satisfeita para que o software seja aceito e/ou para seu correto funcionamento. 

Os requisitos são elicitadados em conjunto pelo Analista de Requisitos (AR) e o cliente que solicita o produto e por isso o AR deverá compreender de forma detalhada as regras do negócio, as necessidades do cliente e também o ambiente em que o software será utilizado. Tendo isso em mente, podemos inferir que requisitos mal descritos ou mal discutidos geram software de baixa qualidade, provocando atraso na entrega, insatisfação do cliente, falta de funcionalidades críticas e por fim aumento de custos. Nesse contexto de problemas fica evidente a importância que os requisitos tem no processo de desenvolvimento de software de qualidade. Portanto, há algumas características que os requisitos devem atender para minimizar o erro nessa etapa de elicitação, pois quanto mais tarde se encontra um erro de requisito mais caro se torna corrigi-lo devido ao retrabalho.

Características

A seguir exporei algumas das principais características de requisitos e também um exemplo incorreto e um correto da característica.

O requisito deve ser:

  • Completo: O requisito deve descrever completamente a funcionalidade a ser disponibilizada.
  • Incompleto
  • O sistema deve permitir a venda de livros.
  • Completo
  • O sistema deve permitir a venda de qualquer dos livros do acervo da livraria. (impressos e digitais).
  • Correto: O requisito deve descrever corretamente a funcionalidade a ser disponibilizada.
  • Incorreto
  • O sistema deve permitir coletar dados dos livros de forma automática. [Essa não é uma funcionalidade para este tipo de sistema]
  • Correto
  • O sistema deve permitir o cadastro de clientes.
  • Exequível: O requisito deve ser possível de ser implementado. 
  • Inexequível:
  • O sistema deve garantir que o cliente fique satisfeito com a leitura do livro comprado.
  • Exequível
  • O sistema deve enviar um uma mensagem de pós-venda para o e-mail do cliente.
  • Priorizado: O requisito deve ter seu grau de importância. [Essencial, Desejável, Opcional]
  • Não priorizado
  • O sistema deve permitir a venda, a compra e também favoritar o livro. [Este requisito pode ser quebrado em partes para serem priorizadas, por exemplo, a função de favoritar poderia ser um requisito 'opcional'] 
  • Priorizado:
  • O sistema deve permitir a venda de livros. ['Essencial']
  • O sistema deve ter uma lista de clientes que compram com frequência de um ou mais livros por mês. ['desejável']
  • Modificável: O requisito deve poder ser modificado de forma consistente, pois o sistema deve ser flexível a mudança de regras de negócio.
  • Não modificável
  • O sistema deve permitir o cadastro apenas para moradores do estado de Minas Gerais. [Este é um requisito inflexível, pois: 'e se a livraria abrir uma nova loja em outros estados?']
  • Modificável
  • O sistema deve permitir o cadastro de clientes de todos os estados do Brasil.
  • Preciso: O requisito deve ser escrito sem ambiguidades, de modo que seja facilmente interpretado tanto pela equipe técnica quanto pelo cliente.
  • Impreciso
  • O sistema deve ser rápido. [O que é ser rápido?]
  • Preciso
  • A consulta de títulos por categoria deve retornar o resultado em no máximo 4 segundos.
  • Verificável: O requisito deve ser testável, ou seja, deve ser possível verificar se este foi atendido ou não.
  • Não verificável:
  • O sistema deve verificar se o livro foi enviado na rota mais rápida até a casa do cliente. [Como vou testar isso?]
  • Verificável:
  • O sistema deve armazenar o tempo que o livro levou para ser entregue até a casa do cliente.

Conclusão

Nesse artigo foram mostrados apenas algumas das principais características que os requisitos devem possuir para maximizar a assertividade na elicitação e reduzir os erros de projetos. Como já vimos, são erros que custam caro na melhor das hipóteses e podem até por risco a vida de pessoas no caso de erros em um sistema médico de imagem ou um programa de controle de aeronaves. Isso mostra a importância e responsabilidade que se tem ao fazer o levantamento de requisitos para software e também como não se pode negligenciar essa skill na formação de programadores e analistas.

Referências

  1. SOMMERVILLE, Ian. Engenharia de Software. São Paulo: Pearson, 2019
  2. TutorialsPoint https://www.tutorialspoint.com/pg/software_engineering/software_requirements.htm
Compartilhe
Comentários (0)