Um software tem como base: Entrada - Processamento - Saída.
- O que entra como dados, informações, eventos, seja o que for, é um REQUISITO.
- O processamento que será realizado tem regras, fórmulas, normas, critérios, arquivos, tabelas etc., para que seja executado.
- A saída desse processamento também é composta de dados e informações, ou de disparo de eventos, ou outra coisa qualquer.
Olhando
dessa forma podemos observar que existe uma infinidade de objetos que podem ser
candidatos a requisitos de software, e podemos classifica-los em dois grandes
grupos:
Requisitos
Funcionais
São
aqueles que descrevem o comportamento do sistema, suas ações para cada
entrada, ou seja, é aquilo que descreve o que tem de ser feito pelo sistema,
assim como o que deve sair do sistema. (Funcionalidades do Sistema)
Requisitos
Não Funcionais
São
aqueles que expressam como deve ser feito. Em geral se relacionam com padrões
de qualidade como: 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 (frequê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:
o
Modularidade:
independência funcional dos componentes
o
Generalidade:
amplitude do potencial de aplicação
o
Encapsulação
o
Abstraçã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:
o
Boa documentação
o
Legibilidade
o
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:
o
Visual
o
Tátil
o
Auditiva
o
Motora
- Eficiência e Desempenho
o
Eficiência:
quantidade de recursos de computação e de código exigida para que o programa
execute a sua função.
o
Desempenho: é
medido avaliando-se a velocidade de processamento, o tempo de resposta, o
consumo de recursos, o throughput e a eficiência.
- 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:
o
Facilidade de
aprendizado do sistema: tempo e esforço necessários para que os usuários
atinjam um determinado nível de desempenho;
o
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;
o
Satisfação do usuário:
avalia se o usuário gosta e sente prazer em trabalhar com este sistema;
o
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;
o
Produtividade:
avalia se o uso do sistema permite ao usuário ser mais produtivo do que seria
se não o utilizasse;
o
Consistência de
interface;
o
Cuidado com a
navegabilidade;
o
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:
o
Pool de conexões
o
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:
o
Habilitação ou
omissão de conteúdos e serviços
o
Parametrização
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:
o
de funcionalidade
o
de dados
o
de fluxo de
controle
o
de tecnologia
o
de ambiente
o
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.
o
Controle de
acesso e manipulação de recursos.
o
Autenticação.
o
Autorização/permissão.
o
Integridade dos
dados e confiabilidade.
o
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:
o
Disponibilidade
o
Confiabilidade
o
Frequência e
gravidade das falhas
o
Acurácia dos
resultados
o
Capacidade de
recuperação
o
Redundância
- 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.
Todos
os requisitos acima são muito importantes, pois definem se o sistema será
eficiente para a tarefa a que se propõe a fazer. Neles também são apresentados
restrições de uso para os requisitos funcionais. Cabe aos envolvidos o bom
senso para avaliar quando se aplica ou não os requisitos de sistemas.
Grande Abraço,
Gilberto Ribeiro.
Gilberto Ribeiro.
Nenhum comentário :
Postar um comentário