Um requisito é definido como "uma condição ou um recurso com o qual um sistema deve estar em conformidade".
Existem vários tipos de requisitos. Uma maneira de categorizá-los é descrita como o modelo FURPS+ [GRA92], utilizando o acrônimo FURPS para descrever as principais categorias de
requisitos com subcategorias, conforme mostrado a seguir.
O "+" em FURPS+ é para lembrá-lo de incluir requisitos como:
(Consulte também [IEEE Std 610.12.1990].)
Tais categorias e exemplos de requisitos não-funcionais pode ser utilizada como uma lista de verificação, para você se
perguntar se possui requisito em uma categoria particular. Mas como se cria um conjunto completo de
requisitos não-funcionais candidatos? Algumas das outras fontes incluem:
-
Para obter uma descrição de uma abordagem sistemática à captura de requisitos usando FURPS+, consulte o
artigo 'Capturando Requisitos de Arquitetura' do The Rational Edge, de Peter
Eeles (http://www.ibm.com/developerworks/rational/library/4706.html).
Ele fornece um questionário que relaciona um grande número de requisitos não-funcionais, junto com questões para
determinar sua aplicabilidade
-
O Software Engineering Institute também criou um catálogo de 'cenários gerais' - expressões de requisitos de
atributos de qualidade - que podem ser reutilizados em diferentes tipos de sistemas para definir os requisitos de
qualidade. Para obter informações adicionais, consulte http://www.sei.cmu.edu/publications/documents/01.reports/01tr014.html ou Software
Architecture in Practice, 2a Ed., de Len
Bass, Paul Clements e Rick Kazman (Addison-Wesley, 2003).
Os requisitos funcionais especificam ações que um sistema deve ser capaz de executar, sem levar em consideração
as restrições físicas. Eles são melhores descritos em um Modelo
de Caso de Uso e em casos de uso. Os requisitos funcionais especificam, portanto, o
comportamento de entrada e saída de um sistema.
Os requisitos que não são funcionais, como os listados a seguir, às vezes são chamados de requisitos não
funcionais. Vários requisitos não são funcionais e descrevem apenas atributos do sistema ou atributos do ambiente
do sistema. Requisitos não-funcionais são aqueles que tratam de problemas como os descritos abaixo.
Os requisitos funcionais podem incluir:
-
conjuntos de recursos
-
recursos
-
segurança
Os requisitos de utilidade podem incluir subcategorias como:
-
fatores humanos
-
estética
-
consistência na interface com o usuário
-
ajuda on-line e sensível ao contexto
-
assistentes e agentes
-
documentação do usuário
-
materiais de treinamento
Os requisitos de confiabilidade a serem considerados são:
-
freqüência e gravidade de falha
-
possibilidade de recuperação
-
possibilidade de previsão
-
precisão
-
tempo médio entre falhas (MTBF)
Um requisito de desempenho impõe condições aos requisitos funcionais. Por exemplo, para uma determinada ação, ele pode
especificar parâmetros de desempenho para o seguinte:
-
velocidade
-
eficiência
-
disponibilidade
-
precisão
-
produtividade
-
tempo de resposta
-
tempo de recuperação
-
uso de recurso
Os requisitos de suportabilidade podem incluir:
-
possibilidade de teste
-
extensibilidade
-
possibilidade de adaptação
-
possibilidade de manutenção
-
compatibilidade
-
possibilidade de configuração
-
possibilidade de serviço
-
possibilidade de instalação
-
possibilidade de localização (internacionalização)
Um requisito de design, freqüentemente chamado de restrição de design, especifica ou restringe o design de um
sistema.
Um requisito de implementação especifica ou restringe o código ou a construção de um sistema. Como exemplos, podemos
citar:
-
padrões obrigatórios
-
linguagens de implementação
-
políticas para integridade de banco de dados
-
limites de recursos
-
ambientes de operação
Um requisito de interface especifica:
-
um item externo com o qual o sistema deve interagir
-
restrições de formatos, tempos ou outros fatores utilizados por tal interação
Um requisito físico especifica uma característica física que um sistema deve possuir, por exemplo:
-
material
-
forma
-
tamanho
-
peso
Esse tipo de requisito pode ser utilizado para representar requisitos de hardware, como as configurações físicas de
rede obrigatórias.
|