Daniel Batista Fernandes
autor do livro Análise de
Sistemas Orientada ao Sucesso - Editora Ciência Moderna, Rio de Janeiro, 2005
Mas afinal o que são requisitos?
Requisito pode ser descrito como:
- Uma condição ou capacidade necessitada por um
usuário para resolver um problema ou alcançar um objetivo
– Condição necessária para a obtenção de certo
objetivo, ou para o preenchimento de certo fim
- Uma condição ou capacidade que deve ser satisfeita
por um sistema para satisfazer um contrato ou um padrão.
- Tudo o que o sistema deve fazer para implementar uma
necessidade de automação requerida pela solução.
Na prática, requisito é o que o sistema tem ter para
atender plenamente ao propósito para o qual foi criado. Para garantir a
aderência aos requisitos é fundamental que a Metodologia implemente e gerencie
eficazmente o documento: Especificação dos Requisitos de Software, que
tem como objetivos:
- Descrever cuidadosamente, quais os requisitos do
sistema e como o sistema deverá implementar tais requisitos.
- Descrever objetivamente, como essa implementação poderá
ser testada e verificada pelo usuário.
Os requisitos podem ser classificados em:
Requisitos Funcionais – funcionalidade a ser
implementada no software para atender a uma necessidade de automação.
Requisitos Operacionais – Especificação de características
relacionadas com o processamento do software, tais como: volume, freqüência,
disponibilidade, performance, localização física, etc…
Requisitos de Contingência – Tarefas alternativas para
o caso de não funcionamento ou indisponibilidade eventual do software.
Requisitos Técnicos – Premissas e restrições quanto a
arquitetura tecnológica, padrões, comunicação, ferramentas, linguagens, etc…
Exemplo:
Projeto : ABC
Objetivo do Projeto
Público Alvo
Políticas Internas
Premissas Básicas que regem o negócio
Definição do Produto
Condições de operacionalização
Aspectos envolvendo processamento e comunicação com o
Cliente
Fatores que deram origem ao projeto
Limitações ou Restrições Operacionais
Benefícios Esperados pelos Usuários com a implantação
do Sistema
Principais necessidades que deverão ser atendidas pelo
projeto
Alternativas de Solução
Necessidade de Integração com Sistemas Corporativos
Padrões de Qualidade e Performance a serem obtidos
Atribuição de Responsabilidades
Fatores de Risco
Aspectos Contábeis e Financeiros
Aspectos Legais e Jurídicos
Gerenciamento das Informações do Sistema,
Além desses requisitos que definem objetivos e
funcionalidades do sistema, devemos lembrar que qualquer sistema deve estar
aderente às políticas da organização em relação à qualidade e segurança das
informações; deve rodar em um ambiente produtivo em que rodam os outros
sistemas da empresa, portanto deve estar em compatibilidade com todas as
características operacionais desse ambiente sem impactar ou causar distúrbios
nesses processamentos; deve estar em
conformidade com os padrões de mercado em termos de tempo de resposta,
desempenho e performance em máquina, minimizando a utilização dos recursos
computacionais.
A indústria de software vem demonstrando crescente
interesse em engenharia de requisitos, isto é, entender o que se deseja
construir antes de começar a fazê-lo. Estão percebendo que o tempo utilizado no
entendimento do problema é um excelente investimento. Os requisitos de software
são a base a partir da qual a qualidade é medida. Desta forma, a falta de
conformidade aos requisitos significa falta de qualidade. O modelo de avaliação
de maturidade do processo de desenvolvimento CMM (Capability Maturity Model)
considera o gerenciamento de requisitos como sendo uma das primeiras etapas
para alcançar a maturidade organizacional, e para haver o gerenciamento é
preciso que o processo de desenvolvimento de requisitos esteja implantado na
empresa.
Desta forma, para se alcançar a gerência de requisitos
é necessário que os requisitos tenham sido definidos, e é importante que a
empresa também possua seus processos de desenvolvimento de requisitos
definidos.
A cada dia, as empresas tornam-se mais dependentes dos
seus sistemas de informações. Construir esses sistemas, em tempo hábil para
serem úteis aos negócios,
com a qualidade e custos adequados à sua importância
para a organização, é o desafio que todos os desenvolvedores estão enfrentando.
Pressman define qualidade de software como
“conformidade a requisitos funcionais e de desempenho explicitamente
declarados, a padrões de desenvolvimento claramente documentados e a
características implícitas que são esperadas de todo software profissionalmente
desenvolvido”
Requisitos Não-Funcionais
A Norma ISO/IEC 9126 define seis características de
qualidade de software que devem ser avaliados:
-
Funcionalidade (finalidade do produto)
-
Usabilidade (esforço para utilizar, aprender o
produto)
-
Confiabilidade (freqüência de falhas,
recuperabilidade)
-
Eficiência (característica relacionada ao
desempenho)
-
Manutenibilidade (esforço necessário para modificar)
-
Portabilidade (capacidade de transferir o produto
para outros ambientes)
Pressman define Requisitos Não-Funcionais como:
Fatores de qualidade de software que podem ser medidos de forma indireta, ou
como: Características implícitas que
são esperadas de todo software profissionalmente desenvolvido.
-
Reusabilidade ( Capacidade de reutilização de módulos
do sistema em outras aplicações ). Este requisito está relacionado a outros
fatores tais como:
- Modularidade: independência funcional dos componentes
- Generalidade: amplitude do potencial de aplicação
- Encapsulação
- Abstração
o
-
Portabilidade ( Esforço exigido para transferir um
sistema de um ambiente de hardware e/ou software para outro ). Fator diretamente relacionado à
reusabilidade e às linguagens de programação e ferramentas utilizadas.
-
Manutenibilidade ( Esforço exigido para localizar e reparar erros em um
sistema ou para modificá-lo com o propósito de adaptá-lo a um novo ambiente, a
novas funcionalidades ou a outras metas de qualidade ) . Este requisito está
relacionado a outros fatores tais como:
- Boa documentação
- Legibilidade
- Reusabilidade e portabilidade
-
Multimodalidade ( Uso de diferentes mecanismos para
representação ou apresentação da informação e para a interação com o usuário ).
Este requisito está relacionado ao uso de diversos canais de comunicação:
- Visual
- Tátil
- Auditiva
- Motora
-
Eficiência e Desempenho
- Eficiência: quantidade de recursos
de computação e de código exigida para que o programa execute a sua função.
- Desempenho: é medido avaliando-se
a velocidade de processamento, o tempo de resposta, o consumo de recursos, o
throughput e a eficiência
Outros requisitos ou outras definições para o mesmo
tipo de requisito ainda podem ser encontrados em diversas literaturas sobre o
assunto:
-
Usabillidade ( Refere-se ao grau de facilidade oferecido para que um usuário
aprenda a operar, fornecer entradas e interpretar saídas de um componente ou
sistema ). A usabilidade de um sistema é um conceito que se refere à qualidade
da interação de sistemas com os usuários e depende de vários aspectos. Alguns
destes fatores são:
- Facilidade de aprendizado do
sistema: tempo e esforço necessários para que os usuários atinjam um
determinado nível de desempenho;
- Facilidade de uso: avalia o
esforço físico e cognitivo do usuário durante o processo de interação, medindo
a velocidade de uso e o número de erros cometidos durante a execução de uma
determinada tarefa; Pressupõe a
existência de Help, manuais de usuário e boa documentação
- Satisfação do usuário: avalia se o
usuário gosta e sente prazer em trabalhar com este sistema;
- Flexibilidade e Nível de
Parametrização: avalia a possibilidade de o usuário acrescentar e modificar as
funções e o ambiente iniciais do sistema. Assim, este fator mede também a
capacidade do usuário utilizar o sistema de maneira inteligente e criativa,
realizando novas tarefas que não estavam previstas pelos desenvolvedores;
- Produtividade: avalia se o uso do
sistema permite ao usuário ser mais produtivo do que seria se não o utilizasse.
- Consistência de interface
- Cuidado com a navegabilidade
- Tolerância a erros
-
Rastreabilildade ( Capacidade de manutenção de
histórico das ações dos usuários tais como: número de acessos ao sistema e
material consultado ou do comportamento do sistema).
-
Extensibilidade ( Capacidade de ampliar o sistema, pela incorporação
de novas funcionalidades, pelo aumento da capacidade de armazenamento, etc. e a
Medida do esforço necessário para isso ).
-
Escalabilidade ( Capacidade de um componente ou de um
software manter o mesmo desempenho (tempo de resposta) quando há um aumento no
número de usuários e/ou de requisições simultâneas ). Este requisito está relacionado aos fatores:
- Pool de conexões
- Cuidado com operações de I/O
-
Configurabilidade ( Capacidade de organizar e
controlar elementos da configuração do sistema ou Capacidade de gerar
diferentes configurações ou visões do sistema ). Este requisito está
relacionado a outros fatores tais como:
- Habilitação ou omissão de
conteúdos e serviços
- Parametrização
- Personalização e customização do
sistema ou componente de acordo com o
contexto ou com o perfil de usuário.
-
Variabilidade ( Está associada à variação de componentes de uma
arquitetura). Podem haver variações:
- de funcionalidade
- de dados
- de fluxo de controle
- de tecnologia
- de ambiente
- de metas de qualidade
-
Segurança ( Premissas e Restrições para o controle e segurança
do software além da disponibilidade de mecanismos que controlam ou projetam programas
e dados ). Este requisito está relacionado aos fatores como: necessidade de
criptografia, autenticação de usuários, etc…
- Controle de acesso e manipulação
de recursos
- Autenticação
- Autorização/permissão
- Integridade dos dados e
confiabilidade
- Privacidade e confidencialidade
-
Tolerância à Falhas ( Capacidade do sistema de manter o
seu funcionamento normal dada a ocorrência de uma falha de hardware ou software
). Este requisito está relacionado aos
fatores:
- Disponibilidade
- Confiabilidade
- Freqüência e gravidade das falhas
- Acurácia dos resultados
- Capacidade de recuperação
- Redundância
Entre outros como:
-
Interoperabilidade
-
Testabilidade
-
Correção
-
Consistência
-
Compatibilidade
-
Complexidade
-
Internacionalização (Capacidade do sistema de suportar diferentes línguas (Português,
Inglês, Espanhol, etc.) sem a necessidade de recodificação )