Qualidades dos bons requisitos



Existe muito material que explica as características que um bom requisito deve ter. Vou tentar resumir os principais.

Os requisitos devem ser assertivos. Deve-se separar desejos de necessidades e decidir quais realmente devem ser implementados e colocá-los em forma de requisitos. A característica mais importante de um requisito é ser claro, pois se há ambiguidade a intenção original pode ser distorcida por erros de interpretação. Para ser claro, algumas boas práticas são aplicadas:
- o requisito deve estar escrito em voz ativa, com o sujeito da ação explícito;
- cada requisito deve solicitar apenas uma necessidade (uma ação);
- as condições de aplicabilidade do requisito devem estar definidas, pois as ações dependem de condições;
- deve-se evitar palavras subjetivas (bom, melhor, rápido, preciso), sendo preferível quantificar as necessidades.

Além disso o conjunto de requisitos deve ser completo. Não adianta apenas os requisitos estarem corretos se houver uma falta de requisitos deixando condições de operação não especificadas. Não se deve deixar de escrever requisitos que são considerados óbvios, pois todo o comportamento deve ser especificado para garantir que ele seja implementado e verificado.

Para garantir a completeza, a rastreabilidade é um auxílio importante, e por isso os requisitos devem estar rastreados para os requisitos de nível superior (diagrama em V), que deram origem a eles.

Ao se avaliar a completeza, observando o conjunto de requisitos, é recomendado aproveitar para garantir a consistência entre eles. O software não pode se comportar de maneira contraditória em condições que podem acontecer simultaneamente, por exemplo:

O software deve acionar o alarme se for detectado fumaça.
O software deve desacionar o alarme se o ambiente estiver vazio.

Sobre o que foi dito até agora podemos resumir as duas qualidades mandatórias dos requisitos como serem: corretos e completos. Outras qualidades que o requisito devem ter: ser viável de ser implementado e possível de ser verificado. Na viabilidade de implementação deve-se avaliar os recursos de engenharia, custos, compatibilidade com o computador ou hardware que receberá o software, entre outros listados por Barry Boehm [Guidelines for Verifying and Validating Software Requirements and Design Specifications].

Por último, algumas normas requerem que os requisitos cumpram com um padrão, ou standard de requisitos. Este standard, além de estabelecer regras para garantir todos os aspectos comentados anteriormente, ainda pode definir regras de formato de escrita, atributos obrigatórios (como campo de tipo de requisito, autor, status de validação e outros, especialmente úteis para os requisitos de interface), regras de rastreabilidade, identificação, palavras ambíguas proibidas, etc.

Comentários