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.
- 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.
- 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
- 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.
- 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:
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.
- 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