Requisitos

Os requisitos definem o que um produto deve fazer — uma expectativa documentada do resultado da implementação de um projeto. Este documento captura as expectativas do cliente, bem como as do desenvolvedor, em relação ao programa, suas funções e o projeto como um todo. Os requisitos abrangem características, custo, cronograma e riscos. Assim, os requisitos representam uma declaração daquilo que se precisa desenvolver, ou uma descrição quantitativa precisa daquilo que se espera obter como resultado da implementação do projeto. A má definição dos requisitos é a principal causa de problemas durante a execução do projeto.

Os requisitos especificam o que deve ser feito, com que qualidade e sob quais restrições. Se os requisitos estiverem errados, o projeto e o produto serão falhos. Requisitos, restrições e premissas dividem o problema em partes. Isso determina o sucesso geral do projeto.

Tipos de requisitos:

  • Requisitos funcionais definem o que um determinado elemento do sistema deve fazer.
  • Requisitos de desempenho definem os parâmetros quantitativos das funções correspondentes desempenhadas pelo sistema.
  • Requisitos de restrição surgem de limitações do modo de operação, condições ambientais, considerações de segurança ou conformidade regulatória.
  • Requisitos de verificação fornecem confiança de que o sistema possui as características especificadas em seu ambiente operacional real.
  • Requisitos de interface definem as funções, características, tolerâncias e restrições de todas as interfaces.
  • Requisitos operacionais especificam a prontidão operacional do sistema, com foco no desempenho do sistema, além de definir como o sistema interage com os usuários.

Na literatura em língua inglesa, o acrônimo SMART é usado para memorizar as características de bons requisitos.

  • Específico (Specific) — os requisitos devem abordar apenas uma característica do projeto ou uma característica do sistema. Devem ser formulados em termos do que deve ser feito e com que qualidade, mas nunca em termos de uma possível solução — como fazê-lo.
  • Mensurável (Measurable) — um parâmetro mensurável é expresso de forma objetiva e quantitativa.
  • Alcançável (Achievable) — um requisito deve ser tecnicamente alcançável a um custo razoável.
  • Relevante (Relevant) — um requisito deve corresponder ao nível escolhido do sistema.
  • Rastreável (Traceable) — requisitos de nível inferior devem derivar explicitamente e/ou ser sustentados por requisitos de nível superior. Requisitos sem requisitos "pai" são considerados "órfãos" e devem ser avaliados quanto à necessidade de sua implementação.

Necessidade. Se houver dúvida sobre se um requisito é necessário, basta perguntar: "Que dano será causado ao sistema se esse requisito não for incluído na lista?" Se não houver resposta, o requisito provavelmente é desnecessário.

Verificabilidade. Assim que um requisito é formulado, é necessário determinar como ele pode ser verificado. Para isso, deve-se selecionar um critério de conformidade apropriado.

Exequibilidade. Para ser alcançável, um requisito deve ser tecnicamente viável dentro do cronograma e orçamento estabelecidos, sujeito a restrições adicionais. Se houver incerteza sobre a viabilidade técnica de um requisito, um estudo apropriado ou uma investigação mais profunda deve ser realizada. Se a incerteza persistir mesmo após isso, um objetivo deve ser formulado em vez de um requisito. É evidente que, mesmo que um requisito seja tecnicamente viável, ele pode ser inalcançável devido a custo, cronograma ou outras restrições, como peso. Não faz sentido formular um requisito para algo impossível de realizar; é preciso ser pragmático.

Clareza. Cada requisito deve expressar uma única ideia e ser conciso e simples. É importante que o requisito seja claro e inequívoco. Bons requisitos frequentemente não precisam de nada além de frases simples.

Um requisito deve ser declarado de forma positiva e nunca deve começar com uma negação. Deve ser gramaticalmente correto, livre de erros de digitação e omissões. Uma terminologia consistente deve ser usada em todos os níveis do sistema.