sexta-feira, 10 de maio de 2013

Requisitos - III


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.

Nenhum comentário :

Postar um comentário