É comum levantarmos os requisitos de um sistema pensando apenas nos requisitos funcionais que iremos passar para a equipe de desenvolvimento, entretanto essa documentação tem uma visão limitada do escopo do projeto. Um bom conjunto de requisitos deve eliminar os riscos do projeto colocando a disposição todas as perpectivas envolvidas. Nós temos não só funções em um software. Temos performance, escalabilidade, usabilidade e controle de qualidade.

Podemos separar os requistos assim:

Requisitos do negócio

Quais objetivos queremos alcançar com a solução? Essa é a primeira pergunta a ser respondida. A partir do levantamento dos objetivos podemos enumerar uma série de requisitos que são particulares ao projeto. Que tal algo assim:

  • “O sistema precisa implementar um padrão aberto de exportação de dados. Isso irá permitir que nossos parceiros possam interoperar conosco.”

Veja que estamos dizendo aquilo que é importante para o sucesso da aplicação do ponto de vista do negócio.

Requisitos do usuário

Em geral o usuário já vive sem o sistema que nós estamos criando, ele já conhece as tarefas do seu dia-a-dia. É importante que o sistema venha para facilitar o seu trabalho. O usuário pode propor coisas do tipo:

  • “O usuário precisa consultar rapidamente a quantidade de produtos no estoque através de um código.”
  • “O usuário precisa ter uma lista com o histórico de pedidos e a possibilidade de ver os detalhes com um click.”

Observe que o usuário está mais preocupado em “como” o problema dele será resolvido. Digo que grande parte dos rebotes que temos ao entregar um projeto é para cumprir requisitos de usuário mal elaborados.

Requisitos funcionais

É o requisito mais comum, o ideal é que a construção dos requisitos funcionais seja feita a partir dos outros requisitos. Pois, aqui nós já podemos separar em tarefas o que necessita ser feito. Um requisito funcional deve ser repleto de detalhes como parâmetros de entrada e de saída, elementos de interface do usuário, regras de validação e segurança.

Requisitos de qualidade

É o requisito que define os parâmetros de performance, escalabilidade e padrões do sistema. Poderíamos ter requisitos de qualidade assim:

  • “A aplicação precisa suportar 50 usuário concorrentes utilizando o sistema.”
  • “Nenhum comando do usuário deve demorar mais do que 2 segundos.”

Observações importantes

Outro fator importante ao modelarmos um projeto é discutirmos se os requisitos levantados são necessários, não-ambíguio, completo e viável. Essa verificação é fundamental para nos atermos somente aquilo que irá agregar valor ao produto. É importante dizer também que os requisitos não são imutáveis. Eles podem e devem ser revisados à realidade do projeto.

Bibliografia:

Designing and Developing Enterprise Applications Using the Microsoft .NET Framework.