José Malcher Jr.

Eng. Software – Analista de Sistemas

Engenharia de Software | Qualidade de software | Sua importância e Aplicação


Conceito de qualidade de software

É importante entendermos inicialmente o conceito de qualidade, antes de aplicar a qualquer tipo de produto, principalmente um produto como software (que não é um produto físico e sim um produto lógico). Então, já começamos a identificação do tipo de produto com o qual vamos trabalhar.

“Qualidade é um conceito subjetivo, é o modo de ser, é a propriedade de qualificar os mais diversos serviços, objetos, indivíduos etc. Do latim qualitate.”


“Qualidade é o grau de utilidade esperado ou adquirido de qualquer coisa, verificável através da forma e dos elementos constitutivos do mesmo e pelo resultado do seu uso. A palavra ‘qualidade’ tem um conceito subjetivo que está relacionado com as percepções, necessidades e resultados em cada indivíduo. Diversos fatores, como a cultura, modelos mentais, tipo de produto ou serviço prestado, necessidades e expectativas influenciam diretamente a percepção da qualidade.”


O produto de software

Conforme vimos, a palavra qualidade refere-se a uma característica que um produto deverá ter, e isso não se torna diferente quando vamos atribuí-la ao produto software. Para o produto de software ter essa característica, precisamos estudar os fatores e critérios que nos levarão a garantir a sua qualidade.

Poderemos trazer como reflexão um bom produto de software ser aquele que atende às características necessárias para atingir o padrão de qualidade através dos fatores e critérios que lhe garantem a qualidade. E para que esse produto possa assim ser qualificado podemos destacar a necessidade de garantir a qualidade (do produto, do processo) que irá resultar no produto e no contexto do ambiente em que o produto será executado.

É importante fazer a análise da visão externa que o usuário tem do produto, bem como a visão interna do desenvolvedor. Assim sendo, é necessário que modelos deferenciados possam ser contruídos para relacionar essas visões.

 

Produto de software, fatores e critérios

Produto de software nada mais é do que o software em si já implementado, sobre o qual poderemos fazer avaliação através de características que irão qualificá-lo.

Fatores e critérios são as características que iremos identificar, se o produto de software as possuir. Caso existam, começaremos o processo para qualificar esse produto de acordo com a Norma NBR 9126/ISO 9126.

Essas características denominadas fatores e critérios estão organizadas de forma que para cada fator ser atingido é importante que os critérios tenham sido reconhecidos, bem como suas características.

 


Assim, vamos definir a qualidade de software como a identificação das características que um produto de software poderá ter de acordo com a norma NBR 9126, no âmbito nacional, e o padrão ISO 9126, no âmbito Internacional. Porém, essas características que irão qualificar o produto de software farão parte de fatores os quais terão critérios que qualificaram as características.


 

Fatores, métricas e garantia da qualidade de software

Depois de identificar e reafirmar que a qualidade é uma característica que o software deverá ter, vamos definir fatores e métricas – o que nos dá a garantia da qualidade. Antes de mais nada, vamos descrever esses conceitos?

Fatores:

Quando tratamos de qualidade de software, fatores são efeitos. Um fator de software é uma visão orientada ao usuário da qualidade do produto. Em oposição, já que são efeitos, podemos afirmar que as causas são os critérios (características) orientados ao software para indicaram a qualidade do produto. Então, vamos propor que a medição da qualidade de software será feita validando-se fatores e critérios que vão tender a uma relação de causa e efeito.

Métricas:

As métricas servem para medir ou mensurar. E, no trato de produto de software, vamos usar métricas com base nas normativas para mensurar a qualidade de software. Para mensurar ou medir o fator de qualidade de um produto de software, vamos usar um método de medição segundo o qual cada critério será avaliado conforme peso definido e atribuição de valores mínimos e máximos.

 

A medição dos níveis de maturidade

Outra métrica a ser trabalhada é a medição dos níveis de maturidade. Esse método chamamos de método de verificação, e fazemos uso dos níveis do Modelo de Maturidade (CMM). Assim, medimos o modelo de maturidade de capacidade.

Observe o gráfico, ele representa a visão geral do software segundo o CMM:

 

O gráfico em questão representa o modelo CMMI e os seus níveis de maturidade.

 

Você sabia que o modelo CMMI é uma evolução do CMM? E o que o diferencia é o CMMI estabelecer um modelo único para o processo de melhoria corporativa, integrando diferentes modelos; enquanto o CMM não trata dessa opção de integração, e sim apenas dos níveis de maturidade dos processos.

 

Garantia da qualidade de software

Atividade aplicada durante todo o processo do software; é comum dizer que essa é uma atividade “guarda-chuva”. A garantia da qualidade se dá através de atividades de revisões e testes, e sua validação por meio dos feedbacks. Porém, serão observados “custos” para garantir a qualidade de software. Os custos da qualidade são divididos da seguinte forma:

  • Custos da prevenção;
  • Custos de avaliação;
  • Custos de falhas;
  • Custos internos – antes da entrega;
  • Custos externos – após a entrega;
  • Custo da correção.

Este gráfico é conhecido como Boehm 81.

 

Para garantir a qualidade de software são aplicadas as revisões, e essas são filtros que irão: identificar melhorias para o produto, confirmar as partes que precisam e as que não precisam de melhorias, e identificar produtos de qualidade mais uniforme, previsível e gerenciável (amplificando e/ou removendo defeitos). Observe o gráfico para melhor entender a aplicabilidade desse processo de revisão.

Modelo de amplificação dos defeitos

 


Também teremos as revisões técnicas formais (RTF) para garantir a qualidade de software. Esse processo ocorre através da demonstração do processo passo a passo – walkthroughs, inspeções e revisões aleatórias; round, robin. A garantia formal da qualidade de software irá afirmar que o software poderá ser testado de todas as formas e terá correções, e essas estarão em conformidade com as suas especificações.


Estatística da qualidade

A estatística de qualidade identificará informações sobre defeitos que serão coletadas e categorizadas. Sua análise referente a causas dos defeitos farão uso do Princípio de Pareto para identificar os defeitos e corrigir as suas causas principais. Essa é uma prática adotada para tornar a qualidade mais quantitativa. As mudanças sugeridas serão para melhorar elementos do processo que provocam os erros.

Vamos dizer então que é desenvolvida da seguinte forma:

  • Coletar e categorizar informações sobre os defeitos;
  • Tentar encontrar a causa de cada defeito;
  • Utilizar o Princípio de Pareto (isolar 20 %);
  • Corrigir problemas que tenham causado os defeitos.

 

Vejamos agora os principais defeitos encontrados:

  • Especificações incompletas ou mal formuladas;
  • Distorção na interpretação da comunicação com o cliente;
  • Desvio voluntário das especificações;
  • Violação dos padrões de programação;
  • Erro na apresentação dos dados;
  • Inconsistência na interface de componente;
  • Lógica do projeto inconsistente;
  • Teste incompleto ou errôneo;
  • Documentação imprecisa ou incompleta;
  • Erro na tradução do projeto para a linguagem de programação;
  • Interface entre homem-máquina ambígua ou inconsistente;
  • Miscelânea.

 

Exemplo

Os defeitos foram encontrados nas seguintes causas:

  • Especificação incorreta (IES);
  • Interpretação errônea da comunicação com o usuário (MCC);
  • Desvio intencional das especificações (IDS);
  • Violação dos padrões (VPS);
  • Erro na representação dos dados (EDR).

 

A confiabilidade

A estatística da qualidade de software nos garante a confiabilidade. É importante destacar que o fator confiabilidade é citado por Pressman (2002) como “a probabilidade de operação livre de falhas de um programa de computador num ambiente específico durante determinado tempo especificado”.

Serão considerados a possibilidade de um número mínimo de falhas e que essas ocorrerão durante a execução do software dando garantia de que haverá o estabelecimento de parâmetros de conformidade para o sucesso do processo. Segundo a ISO 9000-3, que em sua abordagem garante a qualidade, a segurança é a característica que irá detectar e avaliar os riscos.

 

A segurança

Vamos entender como será a segurança do software. A segurança será uma atividade de garantia da qualidade de software que irá detectar e avaliar riscos, que podem provocar falhas e atingir o desempenho de todo o sistema. Inclusive, ela concentra-se na identificação e na avaliação de causalidades em potencial que possam exercer impacto negativo sobre o software e provocar falhas no sistema.

 

Vamos dizer que, se o software tiver segurança, a possibilidade de erros, falhas e defeitos está descarta. Para implementação é necessário identificar o quanto antes a presença de riscos – possibilitando criar, implementar e implantar estratégias no projeto de software que irão eliminar ou controlar os possíveis riscos.

 

A aplicação de técnicas para a garantia estatística da qualidade de software

Para a garantia estatística da qualidade de software é permitida a aplicação de técnicas que asseguram resultados confiáveis. Logo, a atividade seria analisar, por meio de técnicas, a gravidade e a probabilidade de ocorrência. Algumas técnicas são aplicáveis tais como a análise da árvore de falhas e a lógica de tempo real. Conforme Pressman:

Árvore de falhas – consiste em construir um modelo gráfico das combinações sequenciais e concorrentes de eventos que podem apresentar um evento ou estado de sistema perigoso. Com a construção de uma árvore de falhas bem desenvolvida, pode-se observar as consequências de uma sequência de falhas inter-relacionadas que ocorram em diferentes componentes do sistema.

Para a garantia estatística da qualidade de software é permitida a aplicação de técnicas. Técnicas estas que vão nos assegurar resultados confiáveis. Logo, a atividade seria analisar, por meio de técnicas, a gravidade e a probabilidade de ocorrência. Algumas técnicas são aplicáveis tais como a análise da árvore de falhas e a lógica de tempo real. Conforme Pressman:

Lógica de tempo real – consiste no desenvolvimento de um modelo de eventos e ações correspondentes estudado por meio do uso de operações lógicas para testar as pressuposições de segurança sobre os componentes do sistema e o tempo de ocorrência.

 

ISO 9000

Estudamos e conhecemos sobre os conceitos da qualidade e os elementos que a garantem a qualidade do software. Conheceremos a norma ISO 9000 para entendermos toda a sua abrangência para a garantia da qualidade. Vamos lá!

A ISO 9000 é uma norma que descreve os elementos de garantia da qualidade em termos genéricos. Essa norma permite que tais elementos possam ser aplicados a qualquer produto ou processo independentemente dos tipos de produtos ou processos ou serviços oferecidos. Adotar a norma ISO é interessante e vantajoso porque ela promove a gestão e a garantia.

A gestão vai promover confiança à própria empresa acerca de seus produtos atenderem à satisfação dos clientes; e a garantia promove confiança aos clientes e usuários de que os produtos possuem qualidade e atenderão às suas necessidades. Logo, empresa e produto passam a ter credibilidade junto ao mercado.

 

Representação da Norma ISSO 9000

ISO 9001: Garantia da qualidade em projetos/desenvolvimento, produção, instalação e assistência técnica.

ISO 9002: Garantia da qualidade em produção e montagem, instalação, prestação de serviço.

ISO 9003: Garantia da qualidade em inspeção e testes finais.

ISO 9004: Gestão da qualidade e elementos do sistema de qualidade – diretrizes.

Em 2000 foi redefinido o perfil da ISO 9000. De acordo, com a ABNT a norma NBR ISO 9000 correspondente é oriunda da NBR ISO 8402 que dá origem a NBR ISO 9000 em 1994 e seus modelos.

Os princípios da NBR ISO 9000:2000 são:

  • Foco no cliente.
  • Liderança.
  • Envolvimento das pessoas.
  • Abordagem de processo.
  • Abordagem sistêmica para a gestão.
  • Melhoria contínua.
  • Abordagem para tomada de decisões.
  • Benefícios mútuos nas relações com fornecedores.

Onde através da norma base 9000 somos definidas que a norma NBR ISO terá sua representação pelos seguintes modelos e a partir daí a adequação para a garantia da qualidade de software: ISO 9004: Sistemas de gestão da qualidade – diretrizes para melhoria de desempenho e ISO 9001: Sistemas de gestão da qualidade – requisitos.

Conforme Pressman (2002), os modelos de garantia da qualidade ISO 9000 tratam uma empresa como uma rede de processos interconectados. Com isso, todos os processos organizacionais devem se referir às áreas identificadas na norma e devem ser documentados e praticados conforme a imagem. Afirma-se que seguindo este esquema técnico representado na imagem a empresa possui um sistema de qualidade e que está em conformidade com a ISO. Este esquema técnico representa a visão de processo, satisfação do cliente e melhoria contínua.

 

 

 

 


Para saber mais sobre qualidade de software, acesse os seguintes materiais:

Afinal, o que é Qualidade?  http://www.compete-es.com.br/mbc/uploads/biblioteca/1164635822.4657A.pdf

Análise de Pareto Passo a Passo; http://www.trf5.jus.br/downloads/Artigo_22_Analise_de_Pareto_Passo_a_Passo.pdf

ABCQ – Associação Brasileira de Controle da Qualidade; http://www.abcq.org.br/

Software Engineering Institute; http://www.sei.cmu.edu/

Método de medição da qualidade de software (item 1.5.1 e elaborar exemplo 1.5.2 – livro engenharia de software – Autor: James Peters). http://www.sei.cmu.edu/


 

REFERENCIA

ASSOCIAÇÃO BRASILEIRA DE CONTROLE DA QUALIDADE. Site oficial. Disponível em: <http://www.abcq.org.br>. Acesso em: 26 mai. 2015.

AZEVEDO, Joel Solon Farias de. Análise de Pareto Passo a Passo. Disponível em: <http://www.trf5.jus.br/downloads/Artigo_22_Analise_de_Pareto_Passo_a_Passo.pdf>. Acesso em: 26 mai. 2015.

KOSCIANSKI, André. Qualidade de software. São Paulo: Novatec, 2007.

PAULA FILHO, Wilson de. Engenharia de Software: Fundamentos, Métodos e Padrões. São Paulo: LTC, 2009.

PFLEEGER, Shari Lawrence. Engenharia de Software. São Paulo: Pearson, 2003.

PRESSMAN, Roger S. Engenharia de Software: uma abordagem profissional. Porto Alegre: Bookman, 2011.

RIBEIRO, Antonio Carlos Evangelista. Afinal, o que é Qualidade? Disponível em: <http://www.compete-es.com.br/mbc/uploads/biblioteca/1164635822.4657A.pdf>. Acesso em: 26 mai. 2015.

SILVA, Mauro César da. CMMI para iniciantes. Disponível em: <http://www.linhadecodigo.com.br/artigo/1401/cmmi-para-iniciantes.aspx#ixzz3aEAVrUPO>. Acesso em: 26 mai. 2015.

SOFTWARE ENGINEERING INSTITUTE. Site oficial. Disponível em: <http://www.sei.cmu.edu>. Acesso em: 26 mai. 2015.

 


Engenharia de Software | Qualidade de software | Sua importância e Aplicação