


Este artigo tem por objetivo mostrar as diferenças entre os termos Qualidade, Qualidade de Software e Garantia da Qualidade de Software. Com esse artigo, podemos esclarecer a diferença e até mesmo alguns relacionamentos entre estes três termos.
Segundo a NBR ISO 9000:2005, “qualidade é o grau no qual um conjunto de características inerentes satisfaz aos requisitos”. Ou seja, pode-se afirmar que se algum produto ou serviço atende aos requisitos especificados, este mesmo produto ou serviço possui a qualidade desejada.
A qualidade pode ser medida através do grau de satisfação em que as pessoas avaliam determinado produto ou serviço. No entanto, esse produto ou serviço pode ter qualidade para algumas pessoas e para outras nem tanto, ou seja, a qualidade é algo subjetivo.
Conceituar desta forma então o termo qualidade se torna uma tarefa muito difícil, pois elementos intrínsecos estão enraizados no intelecto de cada ser.
O termo TQM (Total Quality Management), amplamente usado nas organizações, também descreve uma abordagem para a melhoria da qualidade. De acordo com Kan (2002), “O termo tem tomado vários significados, dependendo de quem interpreta e como se aplica.” (KAN, 2002, p. 30). Independente dos seus vários tipos de implementação, os elementos chave do TQM podem ser resumidos conforme Figura 1, abaixo:

Figura 1 – Elementos chave do TQM.
No contexto de sistemas de informação e softwares o conceito da ISO aplica-se na sua totalidade, sendo que os usuários finais sempre terão as expectativas de um alto padrão de qualidade para que suas tarefas sejam sempre executadas da maneira mais adequada possível.
Tian (2005) afirma que as expectativas de qualidade para sistemas de software estão relativamente ligadas em dois aspectos:
Indiretamente, as duas afirmações de Tian (2005) estão com base na ISO 9000:2005 sendo que o sistema deve fazer o que se espera que ele faça, de acordo com seus requisitos levantados e especificados.
Contudo, a qualidade possui alguns princípios básicos, como:
Segundo ainda a NBR ISO 8402, o conceito de qualidade é “A totalidade das características de uma entidade que lhe confere a capacidade de satisfazer às necessidades explícitas e implícitas”. As necessidades explícitas são aquelas expressas na definição formal de requisitos propostos pelo cliente. Esses requisitos definem as condições em que o produto ou serviço devem ser utilizados bem como seus objetivos, funções e o desempenho esperado. Já as necessidades implícitas são aquelas que, embora não expressas pelo cliente nos documentos de requisitos, são necessárias para o usuário. Estão incluídos nessas classes tanto os requisitos que não precisam ser declarados por serem óbvios como aqueles requisitos que não são percebidos como necessários no momento que o produto foi desenvolvido, mas que pela gravidade de suas conseqüências devem ser atendidos.
A qualidade, seja ela usada no contexto de software ou de produtos e serviços, hoje não mais é uma obrigação e um diferencial das empresas. A mesma se tornou um padrão em qualquer ramo de atividade e indústria sendo assim necessária para garantir a satisfação do cliente. Qualidade hoje em dia, não é apenas um diferencial de mercado para as empresas conseguirem vender e lucrar mais, é um pré-requisito que se deve conquistar para conseguir colocar o produto ou serviço no Mercado Global. De acordo com Jack Welch, “A qualidade é a nossa melhor garantia da fidelidade do cliente, a nossa mais forte defesa contra a competição estrangeira e o único caminho para o crescimento e para os lucros.”
Qualidade de Software
Diante dessa complexidade na definição da palavra qualidade, Pressman (2005) sugere que a qualidade de software seja implementada e não somente uma idéia ou desejo que uma organização venha a ter. Para tanto, Pressman (2005) faz as seguintes colocações sobre qualidade de software:
Sendo assim, a busca constante pela qualidade não se faz apenas no começo do projeto ou no seu final realizando testes, mas sim e um processo que visa abranger toda a engenharia de software bem como a colaboração de todos os membros do time do projeto.
Uma possível definição mais abrangente e completa para qualidade de software seria a proposta por Bartié (2002): “Qualidade de software é um processo sistemático que focaliza todas as etapas e artefatos produzidos com o objetivo de garantir a conformidade de processos e produtos, prevenindo e eliminando defeitos”. (BARTIÉ, 2002, p. 16)
Alguns modelos de qualidade de software também são citados por Pressman (2005). Há o que McCall e Cavano (1978) sugerem como métricas para qualidade de software. Conhecido como Fatores da Qualidade, estes fatores avaliam o software em três pontos distintos: Transição do Produto, Revisão do Produto e Operação do Produto. Na Figura 2 são mostrados os Fatores da Qualidade de McCall:

Figura 2 – Os Fatores da Qualidade de McCall.
Assim como o modelo proposto por McCall e Cavano (1978), “a Hewlett-Packard desenvolveu também um modelo que referencia fatores da qualidade de software e que primeiramente publicado por Grady and Caswell (1987), denominado FURPS: Functionality, Usability, Reliability, Performance e Supportability. Estes fatores estabelecem as métricas de qualidade de software para cada fase do processo de engenharia de software”. (PRESSMAN, 2005, p. 539)
Além desses modelos de métricas para qualidade de software, nota-se que a constante busca pela mesma se tornou uma atividade essencial dentro das empresas. Colocando-se todos esses conceitos dentro do contexto apresentado, podemos dizer que “qualidade não é uma fase do ciclo de desenvolvimento de software … é parte de todas as fases”.(BARTIÉ, 2002, p. 16)
Portanto, é necessário um planejamento adequado para que a qualidade de software seja atingida, conforme a definição de qualidade que deverá ser alcançada. Para isso são necessários modelos, padrões, procedimentos e técnicas para atingir essas metas de qualidade propostas. Para tanto, todas as etapas do ciclo de vida de engenharia de software devem ser contempladas com atividades que visam garantir a qualidade tanto do processo quanto do produto.
Software Quality Assurance
Segundo Lewis (2004), uma definição formal de Software Quality Assurance (SQA) é “atividades sistemáticas fornecendo evidências para o uso pretendido para o produto total de software”.(LEWIS, 2004, p. 18)
Sendo assim, podemos ainda definir como Quality Assurance “o conjunto de atividades de apoio para fornecer confiança de que os processos estão estabelecidos e estão continuamente melhorados para produzir produtos que atendam as especificações e que sejam adequados para o uso pretendido”. (LEWIS, 2004, p. 18)
Com isso, o SQA envolve todo o processo de desenvolvimento de software fazendo as devidas monitorações e melhorias de processos pertinentes, fazendo com que os padrões, procedimentos acordados estão sendo seguidos e garantindo que problemas são encontrados e ações corretivas são tomadas. Esse tipo de ação é orientada a prevenção. O IEEE 610.12-1990 cita qualidade de software como “(1) Um padrão planejado e sistemático de todas as ações necessárias para fornecer confiança adequada que um item ou produto está em conformidade com os requisitos técnicos estabelecidos. (2) Um conjunto de atividades projetadas para avaliar o processo pelo qual produtos são desenvolvidos ou manufaturados”.
O SQA é também entendida e formada por um grupo de pessoas relacionadas e empregadas através de todo o ciclo de vida de engenharia de software que positivamente influenciam e quantificam a qualidade do software que está sendo entregue. Como já foi dito, o SQA não é somente uma atividade associada exclusivamente com atividades de desenvolvimento de software, mas sim atividades que se expandem durante todo o ciclo de vida de desenvolvimento de software. Portanto, isso consiste em realizar a qualidade tanto do processo quanto do produto. No processo, podemos quantificar a sua qualidade através de métricas para qualidade de software e no produto com as técnicas de verificação e validação. Essas atividades podem ser, por exemplo, avaliações como as citadas pela ISO 9000, auditorias, inspeções formais, teste de software, revisões. Ainda no processo podemos usar os métodos de garantia da qualidade no formato de auditorias e reportes para a alta gerência, além de avaliações constantes do processo e análise estatística de controle do processo. No produto os métodos de garantia da qualidade são revisões, inspeção formal e teste de software, além de revisão dos resultados do teste de software realizada por experts, auditorias do produto e testes realizados pelo cliente.
No entanto, empresas que não possuem o grupo ou processos de SQA tendem a mostrar os seguintes indicadores de falta de qualidade, conforme Lewis (2004):
Por outro lado, empresas que possuem o grupo ou processo de SQA implementados e a sua aplicação de maneira adequada e correta mostra que:
Lewis (2004) cita as atividades mais comuns do SQA, sendo estas categorizadas como: Teste de Software (Verificação e Validação), Gerenciamento de Configuração de Software e Controle da Qualidade. Na Figura 3, podemos ver a relação entre essas três principais atividades juntamente com Padrões, Procedimentos, Convenções e Especificações:

Para que ainda estes três principais componentes funcionem corretamente, o sucesso do programa de garantida da qualidade de software também depende de uma coerente coleção de padrões, procedimentos, convenções e especificações, conforme Figura 3.
A combinação de todos esses componentes e suas melhores práticas é o que chamamos de Software Quality Assurance, e que por sua vez todo esse trabalho é realizado por pessoas, garantindo então a qualidade de software do produto final entregue ao cliente ou usuário final.
Conforme Figura 3 Componentes do SQA, o foco será exclusivamente o componente Teste de Software.
Para que também toda essa estrutura esta devidamente documentada e aceita por todos os membros do time do projeto, é necessário um planejamento adequado. Esse planejamento é feito no Software Quality Assurance Plan ou Plano de Garantia da Qualidade de software. Segundo Lewis (2004), “O plano de garantia da qualidade de software é um resumo ou esboço das medidas de qualidade para garantir níveis de qualidade dentro do esforço do desenvolvimento de software”.(LEWIS, 2004, p. 22)
O plano é usado como um baseline para comparar os níveis atuais de qualidade durante o desenvolvimento com os níveis planejados de qualidade. “O plano de SQA provê o framework e guias para o desenvolvimento de um código entendível e que seja de fácil manutenção”(LEWIS, 2004, p. 22).
Controle da Qualidade de Software versus Garantia da Qualidade de Software
Um dos grandes erros geralmente cometidos por pessoas e empresas é confundir os conceitos e aplicação dos termos Controle da Qualidade (Quality Control) e Garantia da Qualidade (Quality Assurance). Embora usados de maneira errônea em muitos lugares, ambos os termos têm propósitos totalmente diferentes.
A Tabela 1 – Diferenças entre Garantia da Qualidade e Controle da Qualidade mostra a diferença entre estas duas atividades:
| Quality Assurance | Quality Control |
| 1. Garantia da qualidade garante que o processo é definido e apropriado. | 1. As atividades de controle da qualidade focam na descoberta de defeitos em i específicos. |
| 2. Metodologia e padrões de desenvolvimento são exemplos de garantia da qualidade. | 2. Um exemplo de controle da qualidade poderia ser: “Os requisitos definidos são os requisitos certos?”. |
| 3. Garantia da qualidade é orientada a processo. | 3. Controle da qualidade é orientado a produto. |
| 4. Garantia da qualidade é orientada a prevenção. | 4. Controle da qualidade é orientado a detecção. |
| 5. Foco em monitoração e melhoria de processo. | 5. Inspeções e garantia de que o produto de trabalho atenda aos requisitos especificados. |
| 6. As atividades são focadas no inicio das fases no ciclo de vida de desenvolvimento de software. | 6. As atividades são focadas no final das fases no ciclo de vida de desenvolvimento de software. |
| 7. Garantia da qualidade garante que você está fazendo certo as coisas e da maneira correta. | 7. Controle da qualidade garante que os resultados do seu trabalho são os esperados conforme requisitos. |
Fonte: Quality Assurance is not Quality Control.
Com isso, pode-se afirmar que o teste de software é uma das atividades de controle da qualidade, ou seja, o teste de software é orientado a produto e está dentro do domínio do controle da qualidade.
Qualidade de Software segundo o SWEBOK
O SWEBOK (Software Engineering Body of Knowledge) versão 2004 do IEEE (Institute of Electrical and Electronics Engineers) apresenta em uma das suas KA´s (Knowledge Areas) a KA de Software Quality. Abaixo na Figura 4, pode-se ver a estrutra da KA´s de Software Quality:

Figura 4 – SWEBOK – KA de Software Quality.
O SWEBOK descreve ainda inúmeras maneiras para se atingir a qualidade sendo que esta KA em especifico cobre as técnicas estáticas para detecção de defeitos, não sendo requerido que o software esteja sendo executado, enquanto que as técnicas dinâmicas são cobertas pela KA de Software Testing. Custo da Qualidade de Software
A qualidade não é totalmente algo que podemos obter de forma gratuita. Para tanto, investimentos financeiros, treinamentos, softwares e outras iniciativas precisam ser realizadas em adição para a busca da qualidade de software como um todo.
Segundo Bartié (2002), “Um dos maiores desafios a ser considerados é estabelecer um modelo de custos relacionados a implantação de um processo de garantia da qualidade de software.” (BARTIÉ, 2002, p. 29)
A Figura 5 mostra um modelo de custo de qualidade de software proposto por Bartié (2002):

Figura 5 – Modelo de Custo de Qualidade de Software.
No modelo apresentado, Bartié (2002) propõe a criação de duas categorias separadas para os custos relacionados a conformidade e o custo da não-conformidade:
Com isso, “O modelo apresentado deverá ser associado a todas as atividades de um processo de engenharia de software. Em todos os projetos a serem construídos ou modificados, todas as atividades deveriam ter uma política de alocação de custos semelhante ao modelo apresentado.” (BARTIÉ, 2002, p. 29)
Qualidade de Software segundo a ISO 9126-1
A ISO também apresenta as características da qualidade de software através da norma NBR ISO/IEC 9126-1. A antiga norma brasileira para as características da qualidade de software era a NBR 13.596. No entanto, a mesma se integrou a ISO, formando a NBR ISO/IEC 9126-1. Na Figura 6, são mostradas essas características juntamente com suas subcaracterísticas:

Figura 6 – NBR ISO/IEC 9126-1 – Características da Qualidade de Software.
Além da NBR ISO/IEC 9126-1, existem ainda outras normas da série 9126, as quais são:
A Qualidade segundo o PMBOK do PMI
O PMBOK (Project Management Body Of knowledge) do PMI (Project Management Institute), na sua versão 2004 apresenta o gerenciamento da qualidade do projeto, conforme Figura 7 abaixo:

Figura 7 – Gerenciamento da Qualidade do Projeto segundo o PMBOK do PMI.
De acordo com o PMBOK (2004), “Os processos de gerenciamento da qualidade do projeto incluem todas as atividades da organização executora que determinam as responsabilidades, os objetivos e as políticas de qualidade, de modo que o projeto atenda às necessidades que motivaram sua realização. Eles implementam o sistema de gerenciamento da qualidade através da política, dos procedimentos e dos processos de planejamento da qualidade, garantia da qualidade e controle da qualidade, com atividades de melhoria contínua dos processos conduzidas do início ao fim, conforme adequado”. (PMI, 2004, p.179)
Com isso os três principais processos são:
Como se pode notar é evidente a semelhança entre os conceitos usados no PMBOK e os conceitos da própria ISO. Com isso, é possível ainda relacionar estes três processos do PMBOK com as definições de controle da qualidade e garantia da qualidade de software apresentados anteriormente.
Fonte: Linha de Código