sexta-feira, 28 de outubro de 2011

Normas da ISO que referenciam a qualidade de software

ISO/IEC 9126

Modelo de Qualidade de Software

A qualidade de um sistema de software pode ser entendida de diversas formas e utilizando diferentes abordagens.

A norma ISO/IEC 9126, ou conjunto de normas que tratam deste assunto no âmbito da ISO, estabelece um modelo de qualidade com os seguintes componentes:
     - processo de desenvolvimento, cuja qualidade afeta a qualidade do produto de software gerado e é influenciado pela natureza do produto desenvolvido;
     - produto, compreendendo os atributos de qualidade do produto (sistema) de software. Estes atributos de qualidade podem ser divididos entre atributos internos e externos. Estes se diferenciam pela forma como são aferidos (interna ou externamente ao produto de software) e em conjunto compõem a qualidade do produto de software em si;
     - qualidade em uso, que consiste na aferição da qualidade do software em cada contexto específico de usuário. Esta é, também, a qualidade percebida pelo usuário.

Funcionalidade

A capacidade de um software prover funcionalidades que satisfaçam o usuário em suas necessidades declaradas e implícitas, dentro de um determinado contexto de uso.

Suas sub-características são:
     - adequação, que mede o quanto o conjunto de funcionalidades é adequado às necessidades do usuário;
     - acurácia (ou precisão), que representa a capacidade do software de fornecer resultados precisos ou com a precisão dentro do que foi acordado/solicitado;
     - interoperabilidade, que trata da maneira como o software interage com outro(s) sistema(s) especificado(s);
     - segurança, que mede a capacidade do sistema de proteger as informações do usuário e fornecê-las apenas (e sempre) às pessoas autorizadas.

Confiabilidade

O produto se mantém no nível de desempenho nas condições estabelecidas.

Suas sub-características são:
     - maturidade, entendida como sendo a capacidade do software em evitar falhas decorrentes de defeitos no software;
     - tolerância a falhas, representando a capacidade do software em manter o funcionamento adequado mesmo quando ocorrem defeitos nele ou nas suas interfaces externas;
     - recuperabilidade, que foca na capacidade de um software se recuperar após uma falha, restabelecendo seus níveis de desempenho e recuperando os seus dados.

Usabilidade

A capacidade do produto de software ser compreendido, ter seu funcionamento aprendido, ser operado e ser atraente ao usuário.

Note que este conceito é bastante abrangente e se aplica mesmo a programas que não possuem uma interface para o usuário final. Por exemplo, um programa batch executado por uma ferramenta de programação de processos também pode ser avaliado quanto a sua usabilidade, no que diz respeito a ser facilmente compreendido, aprendido, etc. Além disto, a operação de um sistema é uma interface Humano-Computador sujeita às avaliações de usabilidade.

Suas sub-características são:
     - inteligibilidade, que representa a facilidade com que o usuário pode compreender as suas funcionalidades e avaliar se o mesmo pode ser usado para satisfazer as suas necessidades específicas;
     - apreensibilidade, que identifica a facilidade de aprendizado do sistema para os seus potenciais usuários;
     - operacionalidade, que é como o produto facilita a sua operação por parte do usuário, incluindo a maneira como ele tolera erros de operação;
     - atratividade, que envolve características que possam atrair um potencial usuário para o sistema, o que pode incluir desde a adequação das informações prestadas para o usuário até os requintes visuais utilizados na sua interface gráfica.

Eficiência

O tempo de execução e os recursos envolvidos devem ser compatíveis com o nível de desempenho do software.

Suas sub-características são:
     - comportamento em relação ao tempo, que avalia se os tempos de resposta (ou de processamento) estão dentro das especificações;
     - utilização de recursos, que mede tanto os recursos consumidos quanto a capacidade do sistema em utilizar os recursos disponíveis.

Manutenibilidade

A capacidade (ou facilidade) do produto de software ser modificado, incluindo tanto as melhorias ou as extensões de funcionalidade quanto as correções de defeitos.

Suas sub-características são:
     - analisabilidade, que identifica a facilidade em se diagnosticar eventuais problemas e identificar as causas das deficiências ou das falhas;
     - modificabilidade, que caracteriza a facilidade com que o comportamento do software pode ser modificado;
     - estabilidade, que avalia a capacidade do software de evitar efeitos colaterais decorrentes de modificações introduzidas;
     - testabilidade, que representa a capacidade de se testar o sistema modificado, tanto nas novas funcionalidades quanto nas funcionalidades não afetadas diretamente pela modificação. 

ISO/IEC 15504

A ISO/IEC 15504 define um modelo de referência de processo que identifica e descreve um conjunto de processos considerados universais e fundamentais para a boa prática da engenharia de software, e define 6 níveis de capacidade, sequenciais e cumulativos, que podem ser utilizados como uma métrica para avaliar como uma organização está realizando um determinado processo e também podem ser utilizados como um guia para a melhoria.

A ISO/IEC 15504 define também um guia para a orientação da melhoria de processo, tendo como referência um modelo de processo e como uma das etapas a realização de uma avaliação de processo. Este guia sugere 8 etapas sequenciais, que inicia com a identificação de estímulos para a melhoria e o exame das necessidades da organização.

Documentação

Objetivo: desenvolver e manter documentos que registrem informações produzidas por um outro processo ou atividade.

Envolve a produção, o controle, a manutenção, a revisão, a aprovação e a publicação de documentos e o seu acesso. 

Gestão de configuração

Objetivo: estabelecer e manter a integridade de todos os produtos de trabalho de algum processo ou do projeto.

Envolve a definição de uma estratégia de gestão de configuração, a identificação de itens de configuração, o controle de acesso e de mudanças de itens, o registro da situação de todos os itens e o seu armazenamento e manuseio de forma controlada. 

Garantia de qualidade

Objetivo: assegurar que os produtos de trabalho e as atividades de um processo ou projeto estejam de acordo com os requisitos especificados e satisfaçam aos planos e às regras estabelecidas.

Devem ser estabelecidos os procedimentos para o tratamento de desvios a não-conformidades com relação a regras, procedimentos e padrões.

Deve ser coordenada com os processos de verificação, validação, revisão conjunta, auditoria e resolução de problemas.

As pessoas responsáveis pela garantia da qualidade devem ter autonomia organizacional e autoridade para realizarem as suas tarefas sem interferências dos responsáveis pelo desenvolvimento do software. 

Verificação

Objetivo: confirmar que cada produto de trabalho ou serviço resultado de um processo reflita corretamente as especificações de entrada do processo.

Envolve a definição de uma estratégia de verificação, de critérios de verificação para todos os produtos de trabalho e para as atividades de verificação.

Deve assegurar que os defeitos encontrados sejam removidos dos produtos de trabalho e que os resultados sejam disponibilizados para os clientes.

Normalmente envolve a realização de testes e está relacionado aos processos ENG.1.6 e ENG.1.7.

Pode também fazer uso de técnicas como peer, reviews, provas formais e análise de rastreabilidade. 

Validação

Objetivo: confirmar que estão satisfeitos os requisitos para o uso pretendido de cada produto de trabalho ou serviço resultado de um processo.

Envolve a definição de uma estratégia de validação, de critérios de validação para todos os produtos de trabalho e para as atividades de validação.

Deve assegurar que os problemas encontrados sejam resolvidos, que os resultados sejam disponibilizados para os clientes e para outras organizações internas e que os produtos sejam adequados para o uso pretendido.

Normalmente está relacionado ao processo de teste de integração e teste de software ENG.1.7. 

Revisão Conjunta

Objetivo: permitir ao cliente a visibilidade do andamento do desenvolvimento quando comparado ao especificado no contrato.

As revisões formais dever tratar, ao longo de todo o ciclo de vida de desenvolvimento, tanto dos aspectos técnicos quanto dos administrativos.

Envolve revisões periódicas em datas pré-estabelecidas da situação de produtos e atividades por todas as partes interessadas, da solução de todas as pendências, todos os problemas e todos os desvios encontrados. 

Auditoria

Objetivo: determinar, de forma independente, a conformidade de produtos identificados e atividades com planos, requisitos e com o contrato.

Deve ser definida a estratégia de programação da auditoria, especificando quais itens serão auditados contra quais regras.

A auditoria deve ser conduzida por pessoal independente àquele que executa o desenvolvimento e os problemas encontrados deverão ser comunicados aos responsáveis para a devida ação corretiva. 

Resolução de Problemas

Objetivo: assegurar que todos os problemas encontrados sejam analisados, resolvidos (ação corretiva) e que tendências sejam observadas visando o planejamento e a execução de ações preventivas.

0 comentários:

Postar um comentário