Buscar

Qualidade Software

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 120 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 120 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 120 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

QUALIDADE DE 
SOFTWARE
Aline Zanin
Qualidade de software
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
  Conceituar qualidade de software.
  Identificar os benefícios da qualidade de software.
  Aplicar os conceitos de qualidade.
Introdução
Ao adquirir um produto ou serviço, o cliente deseja que esse produto 
seja entregue em pleno funcionamento, de acordo com aquilo que foi 
solicitado e livre de falhas. No contexto de software, essa realidade é 
exatamente a mesma: quando o cliente solicita um software, cria-se uma 
expectativa e, por isso, faz-se necessário garantir que o software atenda 
a ela. O produto deve ser entregue em funcionamento e deve atender 
aos requisitos solicitados pelo cliente.
O responsável pela garantia dessa entrega eficaz é o setor de qua-
lidade de software. A qualidade de software atua em dois segmentos 
distintos: qualidade de produto e qualidade de processo. Neste capítulo, 
você vai estudar os conceitos fundamentais desses dois segmentos, bem 
como conhecer os benefícios da qualidade de software e como aplicá-la 
nos projetos de desenvolvimento de sistemas.
Conceitos 
A palavra qualidade parece ter um signifi cado bastante óbvio, contudo, trata-
-se de um elemento complexo e de difícil mensuração, dado que a qualidade 
é relativa e pode assumir diversos valores, de acordo com a pessoa que a 
observa. Nesse sentido, a qualidade do software pode ser medida de acordo 
com o quanto ele está em conformidade com o que o cliente solicitou. Ou seja, 
mensura-se se o software está em conformidade com os requisitos funcionais 
e não funcionais especifi cados explicitamente pelo cliente, conforme leciona 
Basu (2015).
Façamos uma analogia: suponha que você tenha preferência por chocolate do tipo 
meio amargo, e seu irmão tenha preferência por chocolate ao leite; ao chegar em 
casa, se seu pai trouxer um chocolate ao leite, muito provavelmente seu irmão dirá 
que esse chocolate é de alta qualidade, enquanto você dirá que o chocolate não tem 
qualidade, porque não atende ao seu gosto, à sua expectativa.
Embora a qualidade do software seja uma prática recente, que ganhou evi-
dência com o advento da tecnologia, a qualidade, no geral, é uma preocupação 
bem antiga. Existem registros de que há mais de quatro mil anos os egípcios 
estabeleceram um padrão de medida para realizar seus trabalhos de forma 
apurada, chamado de cúbito, que equivalia ao tamanho do braço do faraó 
reinante, conforme Koscianski e Soares (2007). 
Entretanto, mesmo a qualidade sendo um conceito tão antigo, os projetos 
de software contam com vários desafios para entregar o software em perfeito 
funcionamento, devido a uma série de fatores — em especial, a complexi-
dade. Isso porque construir um sistema envolve diversas habilidades, como 
comunicação e interpretação, para conseguir entender o que o cliente deseja, 
além de habilidades específicas para as etapas de programação, análise da 
qualidade, entre outras, que são de grande complexidade.
Dada a multidisciplinariedade envolvida no processo de desenvolvimento 
de software e a complexidade de todo o processo, o segmento de qualidade se 
divide em duas áreas relacionadas, porém distintas: qualidade de processos 
e qualidade de produtos. A área de qualidade de processos trata da organi-
zação sistemática dos processos da empresa, visando ao melhor andamento 
dos projetos de desenvolvimento de sistemas, otimizando o tempo, tornando 
os processos repetitivos e evitando problemas em situações críticas para os 
projetos, por exemplo: estimativa, custo, entrada e saída de recursos humanos.
Ao buscar garantir a qualidade de um software, estamos diante do desafio 
de estabelecer uma cultura de não tolerância a erros, por meio de processos 
que objetivem inibir ou impedir falhas, segundo Bartié (2002). É a área de 
qualidade de processos que se responsabiliza pela definição da metodologia ou 
Qualidade de software2
do ciclo de vida de software que a equipe utilizará, podendo optar, por exemplo, 
por trabalhar com métodos ágeis ou métodos tradicionais. Independentemente 
da metodologia escolhida, o importante é que um processo seja seguido, para 
que a equipe tenha um padrão para se basear. Isso melhora a comunicação e 
influencia na qualidade dos produtos desenvolvidos pela equipe. 
A área de qualidade de produtos tem por objetivo garantir a qualidade do 
produto tecnológico gerado durante o ciclo de desenvolvimento. Para esse fim, 
são realizadas atividades com o objetivo de estressar as funcionalidades do 
sistema, identificando o comportamento dele nesse contexto. Essas atividades 
são chamadas de testes de software. Essa área possui algumas divisões, sendo 
a mais importante a subdivisão entre testes que fazem uso do código-fonte do 
programa, chamados de caixa branca, e testes que não fazem uso do código-
-fonte do programa, chamados de caixa preta. Além disso, os testes podem 
ser feitos de forma manual ou automatizada e fazendo uso das mais diversas 
técnicas, conforme Bartié (2002). 
A eficiência de um processo de testes é afetada diretamente por alguns 
fatores, que devem ser considerados para evitar problemas nas organizações, 
aponta Bartié (2002): falta de planejamento das atividades de testes, ausência 
de testes que validem funcionalidades antigas e ausência de processos de 
automação de testes.
Uma terminologia bastante importante e comum na área de testes de quali-
dade de software é o conceito de bug, que abrange erros, defeitos e falhas. Por 
curiosidade, o termo bug corresponde à palavra inseto em inglês e começou a ser 
utilizado justamente quando um inseto causou uma falha em um equipamento. 
É importante entender que os termos erro, defeito e falha se referem a coisas 
distintas. Defeito é um comportamento inesperado de um produto. O defeito está 
em uma parte do produto e, em geral, refere-se a uma funcionalidade que está 
implementado no código de maneira incorreta. Erro é aquilo que foi cometido 
pelo programador e que gerou um código defeituoso, enquanto a falha se dá 
quando o programa defeituoso é executado e interfere no funcionamento do 
sistema para o usuário final. Falhas também podem ocorrer por fatores externos 
ao programa, como corrupção de bases de dados ou invasões de memória por 
outros programas, conforme Koscianski e Soares (2007).
Considere, por exemplo, o código a seguir, conforme Koscianski e Soares 
(2007):
a = input (); 
c = b/a;
d = a ? b/a : 0;
3Qualidade de software
A linha de código que calcula o valor para a variável c pode apresentar 
um problema, dado que não é feita uma verificação para validar se o valor 
de a é 0. Dessa forma, pode acontecer um erro ao tentar realizar uma divisão 
por zero. O comportamento anormal do programa, que provavelmente gera 
um bug ou uma interrupção da execução, é provocado pela divisão b/a. Em 
um primeiro momento, podemos dizer que essa linha de código é defeituosa.
Existe, entretanto, outra hipótese: o defeito pode estar na rotina input (). 
Imagine que a especificação dessa rotina estabeleça que ela não deve jamais 
retornar um valor nulo. Nesse caso, o erro foi cometido pelo programador 
responsável por essa rotina. Essa segunda hipótese é bastante razoável, pois, 
para a maioria dos programas, não é recomendado preceder cada operação 
de divisão com um teste if. Nesse caso, um erro cometido pelo programador 
na rotina input fez com que o programa apresentasse um defeito ao executar 
a divisão de a por b.
Benefícios
Inúmeros são os benefícios que as empresas podem ter ao demandar uma 
atenção especial para a área de qualidade de software. Os benefícios vão muito 
além de valores fi nanceiros, podendo estar relacionados inclusive com evitar 
transtornos legais ou preservar vidas.
Empresas que desenvolvem sistemas de semáforos têm uma responsabilidade muito 
grande, uma vez que um erro de programação pode causar um grande acidente de 
trânsito ou, na melhor das hipóteses, um transtorno no trânsito.É por isso que o controle de qualidade é totalmente importante e benéfico 
nos dias atuais. A qualidade de software possui diversos benefícios que ajudam 
os usuários a não sofrerem com falhas de software e as empresas a oferecerem 
produtos melhores, impedindo até mesmo grandes catástrofes. Vamos verificar 
alguns dos benefícios da qualidade de software, com base em Basu (2015):
Qualidade de software4
1. Economiza dinheiro — quanto dinheiro um projeto de software 
defeituoso lhe custa? Custa usuários e clientes. E é bem sabido que, 
quanto mais tempo leva para um bug ser detectado em seu software, 
mais difícil e caro é consertá-lo. Ao empregar testes de controle de 
qualidade durante o processo de desenvolvimento do software, você 
economizará tempo e dinheiro após a implantação.
2. Impede emergências corporativas catastróficas — com o software 
corporativo, as apostas são ainda maiores. Bugs no software corporativo 
podem levar a blecautes do sistema, falta de dados e falhas de comu-
nicação. Se você estiver empregando software em toda a empresa ou 
lidando com informações confidenciais, é melhor ter certeza de que o 
software funcionará exatamente como ele precisa funcionar. Não há 
margem para erro.
3. Inspira a confiança do cliente — ao tornar o teste de software de 
controle de qualidade uma prioridade clara para o desenvolvimento de 
software, você está enviando uma mensagem para seus clientes de que 
deseja que o software deles seja o mais bem-sucedido possível. Isso 
é extremamente importante quando você busca oferecer qualidade e 
criar relacionamentos de longo prazo.
4. Mantém o nível de experiência do usuário elevado — está se tornando 
cada vez mais claro hoje em dia que a experiência do usuário pode que-
brar ou impulsionar um negócio. Se o software estiver com problemas 
ou estiver lento, isso impedirá a experiência do usuário com o produto. 
Má experiência do usuário resulta em insatisfação e frustração. A boa 
experiência do usuário, que você obtém quando testa meticulosamente 
um produto de software, resulta em um usuário satisfeito — que tem 
muito mais probabilidade de recomendar o produto e sua empresa a 
outras pessoas.
5. Traz mais lucro — se você está criando um software para comercializar 
ou vender, investir em qualidade de software significa que você pode 
vender seu produto a uma taxa maior. Não há nada pior do que um 
usuário irritado que pagou por um produto que não funciona.
6. Aumenta a satisfação do cliente — relacionado ao ponto anterior, esse 
benefício está focado na reputação que a satisfação do cliente traz à sua 
empresa, não apenas no lucro. Ao oferecer um software de qualidade, 
que funciona quando e como você quer que ele funcione, você estará 
aumentando sua reputação, produzindo clientes satisfeitos. Não sobre-
carregue a paciência dos seus clientes com um software defeituoso, 
5Qualidade de software
que você precisa consertar constantemente. Dê-lhes qualidade desde 
o início, e eles lhe recompensarão com lealdade.
7. Promove organização, produtividade e eficiência — o que você menos 
deseja é o caos de um software defeituoso, uma comunicação frenética 
e correções apressadas. Ser organizado com o teste de controle de qua-
lidade, desde o início de sua estratégia de desenvolvimento, permitirá 
que você trabalhe em paz e seja mais produtivo com seu tempo. Ao 
utilizar metodologias ágeis, nas quais os desenvolvedores de software 
criam e entregam pequenos trechos de um produto em uma linha do 
tempo clara, você pode começar a testar o software à medida que ele 
é criado, em vez de sempre esperar até o final. 
Existe uma regra que vigora desde os princípios do teste de software, 
chamada regra 10 de Myers. Essa regra estipula que o custo de encontrar um 
defeito no sistema aumenta 10 vezes a cada etapa do processo em que esse 
erro avançar, conforme aponta Myers (1979). Essa regra é mais aplicada para 
o contexto de projetos com ciclo de vida em cascata, em que as etapas são 
executadas sequencialmente, dado que, em equipes ágeis, não existe essa 
divisão exata de etapas. A Figura 1 ilustra essa regra.
Figura 1. Regra 10 de Myers.
Fonte: MPT… (2010, p. 8).
12.000
10.000
8.000
6.000
4.000
2.000
0
De
se
nh
o
Es
pe
cifi
ca
çã
o
Co
ns
tru
çã
o
Te
ste
Pro
du
çã
o
Fases do processo de desenvolvimento
Cu
st
o 
em
 U
S$
Qualidade de software6
Aplicando a qualidade de software
Conforme vimos anteriormente, a área de qualidade de software pode ser 
dividida em qualidade de produtos e qualidade de processos e é uma im-
portante área no desenvolvimento de sistemas. Para a garantia da qualidade 
de processos, as empresas podem buscar certifi cações. Essas certifi cações 
fazem com a empresa seja, de certa forma, obrigada a seguir um processo 
que implemente a qualidade de processos de forma prática. As principais 
certifi cações são CMMI e MPS.BR.
O CMMI, sigla para Capability Maturity Model Integration, é um mo-
delo de maturidade utilizado para medir a maturidade dos processos de uma 
empresa. Ele serve também como um guia para a melhoria dos processos das 
organizações. Esse modelo classifica as empresas em cinco níveis, conforme 
Koscianski e Soares (2007), sendo eles:
 Inicial: processos caóticos; em geral, não existe um ambiente propício
para o desenvolvimento de software.
 Gerenciado: nesse nível, já é perceptível uma melhoria em relação ao
nível 1. Aqui já existem requisitos gerenciados e processos planejados,
medidos e controlados.
 Definido: nesse nível, a maturidade da empresa já está em um nível
considerável. Aqui os processos são caracterizados e entendidos.
 Gerenciado quantitativamente: nesse nível, os processos são controlados
usando métodos estatísticos e outras técnicas quantitativas.
 Otimizado: nesse nível, os processos são continuamente melhorados
com base em análises feitas pela equipe.
O MPS.BR — sigla para Melhoria do Processo de Software Brasileiro 
— também é um modelo de maturidade, similar ao CMMI e com o mesmo 
objetivo. O MPS.BR foi proposto no Brasil e é utilizado por empresas 
brasi-leiras. Esse modelo considera sete níveis, sendo eles:
 A: processo em otimização.
 B: processo gerenciado quantitativamente.
 C: processo definido.
 D: processo largamente definido.
 E: processo parcialmente definido.
 F: processo gerenciado.
7Qualidade de software
  G: processo parcialmente gerenciado.
Já para a qualidade de produto, diversas são as técnicas que podem ser 
empregadas. A área de testes de software é bastante abrangente e completa, 
sendo sempre recomendado que o trabalho de testes seja feito em conjunto 
com o desenvolvedor e durante o desenvolvimento do sistema, isto é, sem 
esperar que o sistema seja concluído para, então, testar. Vamos falar aqui de 
alguns tipos de testes e como aplicá-los, com base em Graham et al. (2008).
Teste unitário — é um tipo de teste realizado diretamente no código fonte 
do programa em teste. Nesse tipo de teste, são criadas funcionalidades de testes 
que validam o comportamento dos métodos ou funções implementadas pelo 
programador. No teste unitário, são identificados os primeiros erros e, quando 
obtido sucesso nos testes (ou seja, quando não forem localizadas falhas), as 
funcionalidades principais do programa devem estar funcionando. Um exemplo 
de técnica para teste unitário é o TDD — test driven development —, que tem 
por objetivo o desenvolvedor criar primeiro o código de teste, para depois criar 
a funcionalidade e, então, executar o teste que valida essa funcionalidade.
Teste funcional — é um tipo de teste realizado após o desenvolvimento do 
sistema ou de um módulo do sistema. O teste funcional pode ser automatizado 
ou manual. No caso de teste automatizado, são utilizados scripts de teste, que 
simulam o comportamento de um usuário no sistema, por exemplo, clicando em 
botões e inserindo valores em campos, e verificam a resposta do sistema para 
esses comportamentos. Para testes automatizados, esses scripts são executados 
automaticamente,e os defeitos localizados são sinalizados também de forma 
automática. No caso de testes manuais, os scripts são substituídos por casos 
de teste. Caso de teste é um documento em que é descrita a ação do usuário 
e a resposta esperada do sistema para ela. Nesse caso, a execução do caso de 
teste é feita manualmente, e o registro dos defeitos também.
Teste de aceitação — esse teste é realizado junto com o cliente e visa a 
verificar se o sistema que foi ou está sendo construído é realmente o que foi 
solicitado. 
Teste exploratório — esse tipo de teste é muito comum, mais rápido 
de ser realizado e se torna uma alternativa para projetos com cronograma 
apertado. Nesse tipo de teste, o testador usa a sua experiência para navegar no 
sistema visando a localizar erros. A principal vantagem desse tipo de testes é 
localizar defeitos que não seriam localizados nos demais testes; por exemplo, 
casos em que o usuário tem um comportamento incomum, como clicar duas 
vezes em um botão de salvar. Para organizar esses testes e garantir que as 
funcionalidades principais sejam testadas, é comum criar um checklist, que 
Qualidade de software8
nada mais é do que uma lista que registra os principais pontos que devem ser 
testados nas telas do sistema.
BARTIE, A. Garantia da qualidade de software. Rio de Janeiro: Elsevier, 2002. 
BASU, A. Software quality assurance, testing and metrics. India: PHI Learning, 2015.
GRAHAM, D. et al. Foundations of software testing: ISTQB certification. United Kingdom: 
Cengage Learning EMEA, 2008.
KOSCIANSKI, A.; SOARES, M. Qualidade de software: aprenda as metodologias e técnicas 
mais modernas para o desenvolvimento de software. 2. ed. São Paulo: Novatec, 2007.
MPT – Melhoria de processo de teste brasileiro. 2010. Disponível em: <http://www.
mpt.org.br/wp-content/uploads/2010/12/MPT_BR_Nivel_1_v_2.2.pdf>. Acesso em: 
23 jan. 2019.
MYERS, G. J. Art of software testing. New York: John Wiley & Sons, 1979.
Leitura recomendada
LEWIS, W. E. Software testing and continuous quality improvement. Boca Raton: CRC 
Press, 2016.
9Qualidade de software
QUALIDADE DE 
SOFTWARE
Aline Zanin 
Garantias da qualidade 
de software
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
  Definir as garantias da qualidade de software.
  Analisar as garantias da qualidade de software.
  Aplicar os métodos das garantias de software.
Introdução
A garantia da qualidade de software, do inglês quality assurance, pode ser 
definida como as atividades que dão suporte aos processos continua-
mente estabelecidos, visando a fornecer confiabilidade a esses processos. 
Para esse fim, os processos estão em contínua revisão, melhoria e adap-
tação, para produzir produtos que atendam aos requisitos estipulados 
pelo cliente e que sejam adequados para o uso pretendido.
A garantia de qualidade de software está associada com todas as 
atividades que formam o ciclo de desenvolvimento de um software, 
desde o primeiro contato com o cliente até a programação do software 
em si. Dessa forma, a área de garantia da qualidade se preocupa com a 
verificação e a validação do software, a verificação quanto aos processos 
e às definições (garantia da qualidade de processos) e a validação quanto 
ao produto (garantia da qualidade de produto). Para esse fim, diversas são 
as técnicas, os modelos e as atividades empregadas, conforme Campos 
([2019]). 
Neste capítulo, você vai estudar o conceito de garantia da qualidade e 
vai analisar algumas das técnicas que podem ser utilizadas para a garantia 
da qualidade. Por fim, algumas dessas técnicas serão demonstradas por 
meio de exemplos de aplicação.
Garantias da qualidade de software
A garantia da qualidade de software, ou os modelos de garantia da qualidade de 
software, como o próprio nome diz, tem como objetivo garantir que o software 
seja entregue ao cliente fi nal com qualidade e que o processo de verifi cação 
dessa qualidade seja conduzido de forma organizada.
Para que esse processo de garantia de qualidade de software tenha êxito 
em seu objetivo e possa ser executado pela equipe sem causar um consumo 
excessivo de tempo ou uma desmotivação do time, é necessário que esteja 
completamente integrado ao processo de desenvolvimento de software. Um 
bom processo de garantia de qualidade pode ser visto como uma relação de 
um para um com cada fase do processo de desenvolvimento de software; ou 
seja, realiza-se uma etapa de garantia da qualidade de software para cada etapa 
de desenvolvimento. Todo esse processo deve ser feito visando e reforçando 
a colaboração entre as áreas e a ciência por parte dos profissionais de um 
objetivo comum no time, segundo Bartié (2002).
Garantia de qualidade e controle de qualidade são áreas diferentes da engenharia de 
software. A área de controle de qualidade age diretamente sobre o produto e realiza 
a execução dos processos, enquanto a área de garantia da qualidade estrutura tanto 
o controle de processos quanto o controle de produtos e garante que estes estejam 
sendo executados.
Diversos são os modelos que podem ser utilizados para a garantia da 
qualidade. Esses processos incluem garantia da qualidade de processos e 
garantia da qualidade de produtos, verificação e validação. Um dos processos 
é o modelo de qualidade de software em U, que será descrito a seguir.
Modelo de qualidade de software em U
As fases do modelo de qualidade de software podem ser organizadas em um 
formato de U, sendo, nesse caso, o modelo de qualidade de software chamado 
de modelo U. Nesse modelo, as fases são executadas sequencialmente. O 
objetivo é garantir que durante o ciclo de desenvolvimento de software sejam 
Garantias da qualidade de software2
produzidos efetivamente todos os produtos previstos na metodologia empregada 
e que o software entregue esteja de acordo com o requisito esperado.
Esse modelo considera dois tipos de testes de software: testes de verificação 
e testes de validação. Os testes de verificação validam o processo de engenha-
ria de software, e os testes de validação garantem a qualidade do produto de 
software. Analisando a Figura 1, podemos verificar a divisão das etapas do 
modelo U conforme esses dois tipos de testes. As etapas que compreendem 
o modelo U são as seguintes:
Testes de verificação:
  Verificação do modelo de negócios — aqui, os testes verificam se 
foram levantadas informações suficientes sobre o modelo de negócios 
do cliente e como essas informações foram levantadas.
  Verificação da especificação de requisitos — aqui, os testes verificam 
se a partir do modelo de negócio do cliente foram definidos requisitos 
compatíveis, que vão agregar valor ao cliente por meio do produto de 
software.
  Verificação da análise e da modelagem — nessa etapa é verificado se 
a modelagem do sistema atende ao especificado nos requisitos e como 
essa modelagem é feita.
  Verificação da implementação — aqui se inicia a etapa de implemen-
tação; é verificada a estrutura para realização da implementação do 
sistema e o processo que será seguido para a implementação.
Testes de validação:
  Validação da unidade especificada ou modificada — nessa etapa é 
validada uma pequena unidade ou um componente de software que foi 
desenvolvido ou modificado.
  Validação da integração da unidade especificada ou modificada 
— nessa etapa é validada a integração dessa pequena unidade, ou 
componente de software, que foi desenvolvida ou modificada com o 
restante do sistema ou com sistemas externos, conforme a necessidade.
  Validação do sistema especificado ou modificado — aqui é realizada 
a validação do sistema como um todo, de suas funcionalidades imple-
mentadas e seus requisitos.
  Validação da disponibilização da solução — nessa etapa, o software 
já foi entregue ao cliente por meio de sua implementação; aqui é acom-
panhado se a implementação foi feita de forma correta e se o software 
3Garantias da qualidade de software
apresenta no cliente o mesmocomportamento que apresentou no am-
biente de testes.
Figura 1. Modelo de processo de qualidade de software em U.
Fonte: Adaptada de Bartie (2002).
5
Implementação
Verificação
da 
implementação
3
Análise e
modelagem
Verificação,
análise e
modelagem
5
Unidade
especificada ou
modificada
Validação
da
unidade
6
Integração
especificada
ou modificada
Validação
da
integração
7
Sistema
especificado ou
modificado
Validação
da
integração
8
Disponibilização
da
solução
Validação
do
aceite
1
Modelo
de
negócios
Verificação
de
negócios
2
Especificação
de
requisitos
Verificação
de
requisitos
TESTE DE VERIFICAÇÃO TESTES DE VALIDAÇÃO
Clientes
patrocinadores
usuários
Testes de verificação
O processo de desenvolvimento de software considera duas etapas principais, 
sendo elas: planejamento, em que são coletadas as informações e é planejada a 
arquitetura do software, e desenvolvimento, em que o sistema é de fato desen-
volvido. Os testes de verifi cação são realizados na etapa de planejamento e têm 
como objetivo avaliar se a documentação e o processo utilizado nessa etapa 
estão sendo feitos de forma correta. Nesse momento, não existem componentes 
tecnológicos, mas, sim, documentos que especifi cam o comportamento do 
software a ser construído. 
Os testes de verificação são aplicados de acordo com o estágio de desen-
volvimento. São realizados testes:
  na etapa de levantamento das necessidades do cliente e das caracterís-
ticas específicas para o software;
Garantias da qualidade de software4
  na etapa de identificação de requisitos funcionais e não funcionais do 
software;
  na etapa de definição do modelo de arquitetura e da solução tecnológica;
  na etapa de construção do software.
Testes de validação
Os testes de validação são um processo formal de avaliação de software e 
podem ser aplicados em componentes isolados, em módulos ou em funciona-
lidades já implementadas no sistema, ou mesmo no sistema como um todo. O 
objetivo desses testes é avaliar a conformidade do software com os requisitos 
especifi cados nas etapas iniciais do projeto. A principal característica desses 
testes é a necessidade de o software já estar em execução para ser testado 
devidamente. Diversas são as categorias de testes que podem ser aplicados 
durante o processo de desenvolvimento de software, sendo que as atividades de 
planejamento, modelagem, execução e conferência dos testes deverão ocorrer 
em paralelo às atividades de construção do software.
As validações serão aplicadas respeitando-se os estágios de desenvolvi-
mento. São realizados:
  testes em componentes executáveis;
  testes de interface entre componentes;
  testes em sistemas ou módulos completos;
  aceite de um sistema ou módulo pelo cliente.
Testes de verificação e testes de validação fazem parte do modelo U de 
qualidade, sendo que cada um desses tipos de teste compreende diversas 
atividades que precisam ser executadas, visando a garantir a qualidade do 
software. Na próxima seção, vamos analisar algumas das técnicas de garantia 
de qualidade de software, tanto de verificação quanto de validação.
Análise das garantias de qualidade de software
O processo de garantia da qualidade considera um olhar detalhado para a qua-
lidade tanto do processo quanto do produto. No processo, podemos quantifi car 
a sua qualidade por meio de métricas e, nos produtos, por meio de técnicas de 
verifi cação e validação. Todo esse processo de garantia da qualidade pode ser 
5Garantias da qualidade de software
avaliado, por exemplo, pela normativa ISO 9000, por auditorias, por inspeções 
formais ou por testes de software, conforme Campos ([2019]).
A área de garantia da qualidade tem alguns papéis fundamentais, conforme 
aponta Bastos et al. (2007):
  ajuda a estabelecer processos;
  determina programas de medida para avaliar processos;
  identifica fraquezas de medida para avaliar processos;
  é uma responsabilidade de gerenciamento;
  está relacionada com todos os produtos que serão gerados por um 
processo;
  avalia se o controle de qualidade está funcionando.
Conforme citado, uma das principais formas de garantia da qualidade é 
por meio de auditorias. Vamos analisar algumas das principais auditorias que 
podem ser feitas em processos de desenvolvimento de software, considerando 
os cenários em que cada uma pode ser aplicada.
A normativa ISO 9000 é utilizada para a garantia da qualidade de processos 
nos mais diversos aspectos. Empresas de todos os segmentos utilizam a ISO 
9000, inclusive como estratégia de marketing para seus produtos. Essa norma 
teve origem na norma britânica BS 570, publicada em 1979 pelo SBI (British 
Standards Institute), baseada em padrões militares. Em 1987, a norma foi 
revisada, mudando seu foco de exclusivamente empresas de manufatura para 
outras empresas prestadoras de serviços. No ano seguinte, o documento foi 
aceito pela ISO como padrão mundial.
A ISO 9000 é um conjunto de normas genéricas que serve a qualquer 
organização, de qualquer ramo de atividade, que queira realizar o controle 
de qualidade de seus produtos e serviços. Essa norma é mais conhecida pela 
sua versão 9001. A ISO 9001 descreve exigências para o sistema de gerência 
de qualidade da empresa. A qualidade de produtos e serviços não é estabele-
cida pela norma, mas, sim, pela própria empresa e pelas exigências de seus 
clientes. A norma ISO 9001 define processos que descrevem como a empresa 
deve realizar determinadas atividades (ASSOCIAÇÃO BRASILEIRA DE 
NORMAS TÉCNICAS, 2015). Os documentos que definem os processos são 
chamados pela ISO 9000 de procedimentos.
Garantias da qualidade de software6
Uma empresa que tem ISO 9001 para os seus processos terá, por exemplo, um pro-
cedimento que define como a telefonista deve atender ao telefone, isto é, qual frase 
deve ser dita ao receber uma ligação.
Já o CMM e o CMMI são dois dos principais modelos para melhoria de 
processos especificamente para software, criados pelo Software Engineering 
Institute — SEI. CMM é o acrônimo de capability maturity model ou modelo 
de capacidade de maturidade. Por esse modelo ser focado especificamente em 
software, ele não avalia outras áreas da empresa, como recursos humanos ou 
setor financeiro, conforme lecionam Koscianski e Soares (2007).
O CMM busca que as empresas conheçam e melhorem os seus processos 
de desenvolvimento de software com a implementação de práticas bem de-
finidas. Ele define uma escala para a maturidade da empresa, que se divide 
em cinco passos. Cada nível do CMM define áreas-chave que identificam um 
conjunto de objetivos que a empresa precisa cumprir para atingir esse nível 
de maturidade. Os níveis são:
1. Inicial.
2. Gerenciado.
3. Definido.
4. Gerenciado quantitativamente.
5. Otimizado.
No nível 1, nenhum processo está definido, e, no nível 5, todos os processos 
estão definidos, são seguidos e estão apenas sendo otimizados constantemente, 
conforme lecionam Koscianski e Soares (2007).
Com a evolução do CMM, foram criados modelo semelhantes para diversas 
áreas das empresas, por exemplo: P-CMM para gestão de recursos humanos, 
SA-CMM para aquisição de software, SE-CMM para engenharia de sistemas. 
Para integrar todos esses modelos, surgiu o CMMI, ou capability maturity 
model integration. O CMMI mantém os mesmos cinco níveis do CMMI, 
contudo, amplia as áreas de foco de cada nível, exceto o nível 1, que não tem 
objetivos específicos, por ser a ausência de processos. As áreas definidas para 
cada nível do CMMI são mostradas nos Quadro 1.
7Garantias da qualidade de software
 Fonte: Adaptado de Koscianski e Soares (2007). 
Nível de maturidade 2 — gerenciado
  Gerência de requisitos
  Planejamento do projeto
  Gerência e controle do projeto
  Gerência e acordos com fornecedores
  Medição e análise
  Garantia da qualidade do processo e do produto
  Gerencia de configuração
Nível de maturidade 3 — definido
  Desenvolvimento de requisitos
  Solução técnica
  Integração do produto Verificação
  Validação
  Foco no processo organizacional
  Treinamento organizacional
  Gerência de projeto integrada
  Gerência de risco
  Análise de decisão e resolução
  Desempenho no processo organizacional
  Definição do processo organizacional
Nível de maturidade 4 — gerenciado quantitativamente
  Desempenho do processo organizacional
  Gerência quantitativa do projeto
Nível de maturidade 5 — otimizado
  Inovação e implementação na organização
  Análise e resolução de causas
 Quadro 1. Níveis de maturidade e processos do modelo MPS.BR 
Garantias da qualidade de software8
Por sua vez, o modelo MPS.BR, um acrônimo de “melhoria de processo de 
software brasileiro”, teve seu desenvolvimento iniciado no ano de 2003 pelas 
instituições SOFTEX, Riosoft, COPPE/UFRG, CESAR, CenPRA e CELE-
PAR. Esse modelo tem foco em empresas de micro, pequeno e médio porte e 
objetiva ser um modelo de qualidade com um custo inferior ao modelo CMMI. 
Esse modelo foi criado para adequar os processos de engenharia de software 
para a realidade brasileira, baseando-se nas abordagens internacionais para 
avaliação e melhoria de processos de software, conforme abordam Koscianski 
e Soares (2007). As bases do modelo MPS.BR são as normas ISO/IEC 12207, 
ISO/IEC 15504 e o CMMI. Esse modelo se divide em três componentes, sendo 
eles: modelo de referência (MR-MPS), método de avaliação (MA-MPS) e 
modelo de negócios (MN-MPS). Ele classifica as empresas de acordo com sete 
níveis de maturidade e, assim como o CMMI, também estabelece objetivos 
para cada nível. Os níveis estipulados para o MPS.BR são os seguintes:
a) Em otimização.
b) Gerenciado quantitativamente.
c) Definido.
d) Largamente definido.
e) Parcialmente definido.
f) Gerenciado.
g) Parcialmente gerenciado.
Nesse modelo, o nível A é o nível mais avançado, que considera os processos 
sendo executados e apenas em etapa de inovação e otimização, e o nível G 
é o início da organização dos processos da empresa, conforme Koscianski e 
Soares (2007). O Quadro 2 demonstra os níveis de maturidade e os processos 
gerenciados por cada nível do modelo MPS.BR.
9Garantias da qualidade de software
 Fonte: Adaptado de Koscianski e Soares (2007). 
A
  Inovação e implantação na organização
  Análise de causas e resolução
B
  Desempenho do processo organizacional
  Gerência quantitativa do projeto
C
  Análise de decisão e resolução
  Gerência de riscos
D
  Desenvolvimento de requisitos
  Solução técnica
  Integração de produto
  Instalação de produto
  Liberação de produto
  Verificação
  Validação
E
  Treinamento
  Avaliação e melhoria do processo organizacional
  Definição do processo organizacional
  Adaptação do processo para gerência do projeto
F
  Medição
  Gerência de configuração
  Aquisição
  Garantia da qualidade
G
  Gerência de requisitos
  Gerência de projetos
 Quadro 2. Níveis de maturidade e processos do modelo MPS.BR 
Outra técnica de garantia de qualidade de software que tem sua utilização 
recomendada é a organização dos processos de testes de software. Os testes são 
Garantias da qualidade de software10
uma medida de controle de qualidade, e a organização e o acompanhamento 
do processo de testes são garantia da qualidade do software. O principal 
documento que norteia a organização do processo de testes e é utilizado para 
monitorar se os testes estão sendo realizados de acordo com o planejado é 
um documento chamado de plano de testes. De acordo com a International 
Software Testing Qualifications Board (ISTQB), em seu glossário de termos, 
o plano de testes é a “documentação descrevendo os objetivos do teste a serem 
alcançados, os meios para realizá-lo, e o cronograma para atingi-lo, organizados 
para coordenar as atividades de teste” (ISTQB, 2018, p. 22).
O plano de teste não é um documento estático; ele pode ser modificado 
durante todo o ciclo de vida do produto, caso novas necessidades sejam identi-
ficadas. O feedback de cada atividade do ciclo de vida pode ser utilizado como 
parâmetro para incluir ou remover itens do plano de testes. O planejamento 
dos testes de um projeto pode ser feito em um plano de teste principal e em 
planos de teste separados para cada nível de teste.
Por exemplo, cria-se um plano de testes para os testes de sistema, que serão feitos 
logo após a conclusão do desenvolvimento da primeira funcionalidade, e outro plano 
de testes para o teste de aceitação, que será feito juntamente com o cliente ou repre-
sentante dele, conforme exemplifica o ISTQB (2018).
O plano de testes é personalizável conforme as necessidades de cada em-
presa, mas, em geral, conforme aponta o ISTQB (2018), ele deve:
  determinar o escopo, os objetivos e os riscos do teste; 
  definir a abordagem geral do teste;
  integrar e coordenar as atividades de teste nas atividades do ciclo de 
vida do software;
  tomar decisões sobre o que testar, as pessoas e outros recursos necessá-
rios para realizar as várias atividades de teste e como essas atividades 
serão realizadas;
  programar as atividades de análise, projeto, implementação, execução e 
avaliação de testes, em datas específicas (p. ex., desenvolvimento sequen-
cial) ou no contexto de cada iteração (p. ex., desenvolvimento iterativo);
11Garantias da qualidade de software
  selecionar as métricas para monitoramento e controle de testes;
  orçar as atividades de teste;
  determinar o nível de detalhes e a estrutura da documentação de teste 
(p. ex., fornecendo modelos ou exemplos de documentos). 
O conteúdo dos planos de teste varia e pode se estender além dos tópicos 
identificados acima. Uma amostragem de planos de teste pode ser encontrada 
nos documentos do padrão ISO (ISO/IEC/IEEE 29119-3).
Métodos de garantia de qualidade de software
Diversas são as estratégias que podem ser utilizadas para a garantia da qua-
lidade de software; algumas foram descritas na seção anterior. Nesta seção, 
essas estratégias são apresentadas com uma abordagem mais aplicada. Como 
se preparar para uma auditoria? Como estruturar um plano de testes?
Auditoria ISO
A auditoria é o momento de verifi car se os processos que foram defi nidos 
para a empresa estão sendo cumpridos. É por meio da auditoria que as em-
presas recebem o almejado selo ISO 9001, e é também por meio dela que, 
periodicamente, as empresas renovam esse selo. Contudo, para obter êxito nas 
auditorias, é necessário saber como elas funcionam e executar alguns passos 
importantes, os quais serão descritos a seguir, com base em Oliveira (2018).
O primeiro passo para se preparar para uma auditoria ISO é estudar as 
normas, os padrões definidos pela sua empresa. Toda a empresa que almeja 
uma certificação ISO obrigatoriamente tem seus procedimentos definidos pelo 
SGQ — Sistema Gerenciador de Qualidade. O profissional que vai acompanhar 
a auditoria precisa conhecer esses processos.
Além do responsável pela qualidade da empresa, os demais colaboradores 
precisam também estar preparados para a auditoria. Dessa forma, é necessário 
preparar a equipe, apresentar a todos os procedimentos, uma vez que o auditor 
poderá conversar com qualquer pessoa para confirmar se os processos são 
executados conforme o determinado.
Além disso, a organização é fundamental para o processo de auditoria. O 
responsável pela qualidade da empresa, que acompanha a auditoria, precisa 
saber onde estão arquivados todos os documentos que são utilizados diaria-
mente e que constam nos procedimentos. É importante que todas as evidências 
Garantias da qualidade de software12
de que os processos definidos são cumpridos sejam apresentadas de forma 
organizada para o auditor.
Para garantir que nenhuma surpresa acontecerá quando a auditoria oficial 
com a certificadora da ISO acontecer, é aconselhável a realização de uma 
auditoria interna. Na auditoria interna, será possível para a empresa identifi-
car pontos fracos que podem ser melhorados para a auditoria externa. Além 
disso, a auditoria internaaumenta a confiança da equipe, o que faz com que, 
na auditoria externa, a equipe esteja tranquila e não cause transtornos apenas 
por nervosismo.
Segundo Oliveira (2018), uma auditoria ISO é constituída basicamente por:
  Reunião de abertura — em que o responsável pela qualidade da empresa 
e o auditor se reúnem pela primeira vez e é definido o cronograma da 
auditoria.
  Auditoria dos processos — nessa etapa, é feita a análise dos procedi-
mentos, dos documentos que comprovam a sua execução e, quando 
necessário, ocorre uma conversa com os profissionais da empresa, para 
garantir que o processo está sendo executado corretamente. 
  Reunião de conclusão — é o momento em que o auditor analisa a 
auditoria junto com todos os gestores da empresa envolvida e faz re-
comendações com base no resultado da auditoria.
Preparando seu plano de testes
Agora, vamos analisar cada parte do plano de testes e discutir como preencher 
esse plano e como identifi car as informações que devem constar em cada parte.
  Determinar o escopo, os objetivos e os riscos do teste: o escopo e os 
objetivos do teste dizem respeito a quais funcionalidades do sistema 
serão testadas. Os riscos dizem respeito a situações que podem impedir 
a realização dos testes. Por exemplo: para testar o sistema de uma ope-
radora telefônica, podem ser necessários dados de números de telefones 
válidos para entrada de dados no sistema; entretanto, a operadora pode 
atrasar a disponibilidade desses dados, e o teste pode atrasar; ou então 
a equipe pode ter um limite mínimo de colaboradores, e alguém pode 
pedir demissão durante o projeto, e, por isso, as demandas da equipe 
acabam atrasando.
  Definir a abordagem geral do teste: quais tipos e níveis de testes serão 
empregados no projeto? Os testes serão manuais ou automatizados? 
13Garantias da qualidade de software
Essas perguntas precisam ser definidas no plano de testes; é necessário 
especificar se a equipe vai realizar teste unitário, teste funcional, teste 
de performance, teste de segurança, entre outros. Essas definições são 
de extrema importância para a organização do ambiente de desenvol-
vimento e do cronograma.
  Integrar e coordenar as atividades de teste nas atividades do ciclo de 
vida do software: em que momento do ciclo de desenvolvimento os 
testes serão iniciados? Será possível iniciar a análise de testes junto 
com a análise do sistema? 
  Tomar decisões sobre o que testar, as pessoas e outros recursos neces-
sários para realizar as várias atividades de teste e como essas atividades 
serão realizadas: de acordo com o escopo que foi definido para o pro-
jeto, toda a funcionalidade será testada ou apenas a parte fundamental 
dela? O projeto dispõe de recursos humanos e financeiros para testar 
a funcionalidade por completo?
  Programar as atividades de análise, projeto, implementação, execução 
e avaliação de testes, em datas específicas (p. ex., em desenvolvimento 
sequencial) ou no contexto de cada iteração (p. ex., no desenvolvimento 
iterativo): nessa etapa, define-se como o projeto de testes será estrutu-
rado, em que momento será feita a análise de testes e de quanto tempo 
se dispõe para isso? Em que momento será feita a implementação dos 
testes e quanto tempo se dispõe para isso?
  Selecionar as métricas para monitoramento e controle de testes: qual é 
o parâmetro para que um projeto de testes seja considerado concluído 
com êxito? 
  Orçar as atividades de teste: qual será o custo do projeto para cumprir 
com o cronograma estabelecido e atingir todo o escopo de testes?
  Determinar o nível de detalhes e a estrutura da documentação de teste 
(p. ex., fornecendo modelos ou exemplos de documentos): serão criados 
casos de testes? As falhas serão reportadas em alguma ferramenta?
Cada uma dessas etapas é fundamental para o projeto e pode ser adaptada, 
dependendo das necessidades da equipe. Em síntese, um plano de testes 
precisa conter, obrigatoriamente, o escopo do projeto, os tipos de testes que 
serão executados, o cronograma, o orçamento disponível, as ferramentas que 
serão utilizadas e a definição dos documentos entregáveis que serão gerados 
ao final do projeto.
Garantias da qualidade de software14
ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS (ABNT). NBR ISO 9001: sistemas de 
gestão da qualidade: requisitos. Rio de Janeiro, 2015. 
BARTIE, A. Garantia da qualidade de software. Rio de Janeiro: Elsevier, 2002. 
BASTOS, A. et al. Base de conhecimento em testes de software. 2. ed. São Paulo: Martins 
Fontes, 2007. 
CAMPOS, F. M. Qualidade, qualidade de software e garantia da qualidade de software são 
mesma coisa? [2019]. Disponível em: <http://www.linhadecodigo.com.br/artigo/1712/
qualidade-qualidade-de-software-e-garantia-da-qualidade-de-software-sao-as-mes-
mas-coisas.aspx#ixzz5bar4W0yD>. Acesso em: 23 jan. 2019. 
INTERNATIONAL SOFTWARE TESTING QUALIFICATIONS BOARD (ISTQB). Glossário de 
termos de teste: CTFL foundation level: versão 3.2br. 2018. Disponível em: <https://www.
bstqb.org.br/uploads/glossario/glossario_ctfl_3.2br.pdf>. Acesso em: 23 jan. 2019.
KOSCIANSKI, A.; SOARES, M. S. Qualidade de software: aprenda as metodologias e técnicas 
mais modernas para desenvolvimento de software. 2. ed. São Paulo: Novatec, 2007.
OLIVEIRA, G. Como se preparar para uma auditoria ISO e o que esperar dela. 2018. Dispo-
nível em: <https://blog.softexpert.com/como-se-preparar-para-uma-auditoria-iso/>. 
Acesso em: 23 jan. 2019.
Leitura recomendada
INTERNATIONAL SOFTWARE TESTING QUALIFICATIONS BOARD (ISTQB). Certified tester: 
CTFL foundation level syllabus: 3.2. 2018. Disponível em: <https://www.bstqb.org.br/
uploads/syllabus/syllabus_ctfl_2018br.pdf>. Acesso em: 23 jan. 2019.
15Garantias da qualidade de software
Conteúdo:
QUALIDADE DE 
SOFTWARE
Paulo Antonio Pasqual Júnior
Revisão das técnicas 
formais e de software
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
  Classificar as técnicas formais.
  Analisar as técnicas formais e de software.
  Ordenar as principais técnicas formais e de software.
Introdução
Entregar para o cliente um produto de qualidade é fundamental para 
qualquer desenvolvedor ou empresa de desenvolvimento de software. 
Existem muitas formas de buscar a qualidade durante todas as fases da 
produção de um software.
Encontrar erros precocemente é fundamental para que, no fim, o 
produto possa ser entregue ao cliente com o mínimo de falhas possíveis, 
além, é claro, de minimizar os custos de correção de defeitos. As técnicas 
de revisão formal (RTF) consistem em metodologias que reservam certo 
formalismo e que, por seu rigor, ajudam na detecção de erros que possam 
se transformar em defeitos.
Neste capítulo, você vai classificar, analisar e ordenar as principais 
técnicas formais. 
Por que a revisão é importante?
As técnicas formais são recursos de revisão de software que utilizam uma 
série de metodologias de verifi cação, geralmente baseadas em regras rígidas. 
Esses métodos contribuem signifi cativamente para a identifi cação de possíveis 
falhas de sistemas. 
À primeira vista, a revisão técnica formal (RTF) pode parecer uma parte 
da fase de testes, uma vez que, por meio dela, são encontradas as falhas no 
software. Contudo, a revisão técnica vem muito antes da fase de testes. Ela 
pode ser realizada para cada artefato do software construído. Se a RTF fosse 
realizada durante a fase de testes do software, significaria que o produto já 
estaria pronto, e, nesse caso, todas as falhas de cada artefato já teriam se 
transformado em defeitos. Imagine fazer a RTF de um sistema extremamente 
complexo apenas no final do processo de desenvolvimento?
Apesar de ser uma forma importante de manter a qualidade de um produto 
de software, esses métodos não são muito utilizados, na prática, para qualquer 
software, pois são processos lentos, caros e que demandam muita energia 
para sua execução.
Sommerville (2007) explica que, apesar de essas técnicasserem extrema-
mente onerosas e se tornarem infinitamente mais complexas à medida que 
o tamanho e a complexidade do software aumentam, elas são fundamentais 
para sistemas críticos. 
Um sistema crítico é aquele que não pode apresentar falhas, pois falhas em 
certos sistemas podem acarretar danos graves e até a perda de vidas, conforme 
Sommerville (2007). Imagine, por exemplo, um software que controla trens 
em uma ferrovia. Esse software não pode falhar ao verificar se outro trem 
está vindo. Assim, o autor aponta que a confiança é um atributo fundamental 
desse tipo de sistema. 
O autor define esses sistemas críticos em três categorias:
  Sistema crítico de segurança, que se refere aos sistemas que podem 
resultar em perda de vidas humanas ou dano ambiental.
  Sistema crítico de missão, que se refere a sistemas que podem levar à 
falha em relação a metas, como o sistema de navegação de aeronaves.
  Sistema crítico de negócios, que se refere a sistemas que, ao falharem, 
podem acarretar em perdas financeiras e fracasso em negócios. 
Sommerville (2007) exemplifica esse tipo de situação com um acidente 
envolvendo um avião em processo de pouso. Na ocasião, o sistema de freio 
não foi ativado no momento necessário, porque o software entendeu que o 
avião ainda não havia pousado. Isso acarretou na colisão do avião com um 
prédio e em dezenas de mortos e feridos. De acordo com o autor, uma inves-
tigação apontou que o software se comportou exatamente como ele havia sido 
programado para fazer, ou seja, o emprego dos testes não foi suficiente para 
identificar e corrigir o erro do sistema.
Outro exemplo de software de risco seria um sistema que controlasse todos 
os carros no trânsito. Nós já sabemos que, muito em breve, os carros poderão 
Revisão das técnicas formais e de software2
andar sozinhos nas ruas, desviar de outros, traçar percursos, reconhecer a 
sinalização e evitar muitos acidentes. Também sabemos que esses sistemas 
já existem, mas ainda precisam evoluir para que esse sonho se materialize. 
Agora, a pergunta é: esse tipo de sistema está totalmente livre de falhas? É 
óbvio que a probabilidade de um sistema falhar e causar uma colisão é muito 
menor do que a probabilidade de um motorista se atrapalhar e colidir o carro 
com outro. Para um sistema como esse ser eficaz, ele necessitará de muita 
qualidade, e o emprego de técnicas formais será fundamental para a redução 
das possibilidades de erros. 
Existem métodos formais para praticamente todas as fases do software, 
desde o início do processo de concepção. As técnicas formais de revisão são 
recursos que podem ser aplicados aos softwares após certa fase do desenvol-
vimento, uma vez que se busca encontrar possíveis erros no desenvolvimento 
do software.
O processo de revisão de um software pode ser feito de muitas maneiras. 
Imagine que dois amigos iniciaram um software para ajudar no controle do 
estoque do negócio e desenvolveram um sistema sem nenhum tipo de norma. 
Ao final, o sistema faz basicamente o que eles precisavam, mas é provável que 
a quantidade de erros seja enorme. Para ajudar em um processo de revisão, 
eles podem fazer testes junto com clientes, ou pedir a ajuda para outros colegas 
programadores tentarem encontrar erros. Esse processo seria, então, uma 
abordagem informal. Fazer a revisão de maneira informal é bastante simples 
e não exige métodos rígidos para a verificação de possíveis erros.
Ao contrário desse exemplo, os métodos de revisão formal exigem conhe-
cimento e rigidez durante o processo de revisão. Existe uma série de formas de 
realizar a RTF; dentre as mais comuns, podemos citar: walkthrough, peer review 
e inspeção. Na próxima seção deste capítulo, detalharemos cada uma delas. 
Análise das técnicas formais
Qualquer tipo de revisão, seja ela formal ou não, é fundamental para o reco-
nhecimento de falhas que podem se tornar defeitos após a entrega do produto. 
Descobrir erros precocemente assegura que o sistema possa ser corrigido o 
mais rápido possível, garantindo um baixo custo, tanto fi nanceiro quanto 
temporal, para a correção do produto. Pressman e Maxin (2016) ressaltam 
que a não descoberta e correção no início do processo acarreta em levar 
esses erros para outras etapas, e isso, geralmente, amplia a falha, o que vai 
tornando o problema cada vez mais difícil de encontrar e mais complexo para 
3Revisão das técnicas formais e de software
solucionar. O autor ressalta que a empresa precisa investir tempo e dinheiro; 
caso não invista, terá de fazer um investimento muito maior para a correção 
de problemas muito mais graves após a entrega do produto. 
Uma grande questão no âmbito da revisão do produto de software é o 
tempo. De acordo com Pressman e Maxin (2016), muitas empresas consideram 
não ter o tempo necessário para a realização de um processo minucioso de 
revisão, o que acarreta na entrega de um software com muitos erros. Essa 
postura faz com que o custo em tempo para manutenção e correção de erros 
seja muito maior do que se fosse utilizada uma metodologia de revisão do 
software durante o processo de desenvolvimento do produto. 
Sommerville (2007) explica que não encontrar um erro a tempo acarreta 
em um efeito cascata, que levará à ampliação do erro, transformando-o, mais 
tarde, em um defeito. Ou seja, a correção de falhas em cada artefato de software 
revisado garante que esses erros não sejam maximizados e transformados em 
defeitos, que demandariam muito mais energia para a correção. 
Apesar de haver uma relutância na aplicação de métodos de revisão formal 
para encontrar e minimizar erros, a Figura 1 mostra que, no final do processo, 
o custo de tempo em projetos que não possuíam processos de revisão é muito 
maior do que naqueles que aplicaram a RTF. Isso significa que, à primeira 
vista, pode parecer que aplicar uma revisão seja algo banal e um desperdício 
de tempo e, consequentemente, de dinheiro, mas, no médio prazo, esse custo 
é totalmente maximizado, se comparado a projetos que não aplicaram RTF.
Figura 1. Custo de tempo relacionado à aplicação ou não da revisão técnica formal.
Fonte: Pressman e Maxin (2016 , 437).
Esforço
Tempo
Sem a realização
de inspeções
Com a realização
de inspeções
Entrega
TesteCódigoProjeto
Requisitos
Planejamento
Revisão das técnicas formais e de software4
Na seção anterior, exemplificamos o teste informal de software ao apre-
sentar uma situação hipotética em que dois amigos tentam encontrar erros no 
sistema sem nenhum tipo de norma ou regra. Uma abordagem formal significa 
que é necessário o uso de formalidade para encontrar o erro. Essas metodo-
logias pressupõem, portanto, um certo rigor, que não está presente em uma 
revisão não formal. A seguir, apresentamos algumas possibilidades de RTF.
Walkthrough
Walkthrough é uma técnica bastante comum de revisão, em que é executado 
passo a passo um procedimento ou programa com vistas a encontrar erros. 
Nesse processo, um testador disponibilizará um conjunto de casos, e os in-
tegrantes da equipe de revisão buscarão simular a execução de um artefato. 
O tempo de duração desse procedimento é de aproximadamente duas horas, 
envolvendo equipes pequenas, normalmente de três a cinco pessoas. 
Peer review
Peer review ou revisão em pares consiste em um método de revisão em que 
dois programadores são responsáveis por revisar o código um do outro, de 
forma que essa revisão possa apontar inconsistências. Esse método é bastante 
utilizado e relativamente fácil de ser aplicado. As regras desse método de 
revisão podem ser estipuladas pela própria equipe de revisão, ou pela dupla 
responsável pela revisão do artefato. 
De maneira geral, um dos integrantes da dupla é responsável por programar, 
enquanto o outro fica responsável pela revisão. A cada ciclo, previamente 
definido, invertem-se os papéis, para que ambos possam tanto programar 
como revisar o código do colega. É importante ressaltar que o formalismo da 
revisão se caracteriza pelas normas que serão previamentedefinidas dentro 
do processo de revisão. Ou seja, uma revisão em pares, se for realizada sem 
nenhum tipo de formalismo, pode não caracterizar uma RTF. 
Inspeção
A inspeção é um tipo de RTF que envolve a revisão em equipe de um determi-
nado artefato. Geralmente, uma inspeção se baseia na distribuição do artefato 
analisado ou de parte dele para equipes distintas, seguida de reuniões de 
revisão em que são mencionados os erros encontrados para o autor do artefato. 
5Revisão das técnicas formais e de software
Nessa situação, o autor geralmente fi ca responsável pela correção dos erros 
encontrados. Em detalhes, a inspeção pode apresentar as seguintes etapas: 
1. Planejamento.
2. Apresentação.
3. Preparação.
4. Reunião de revisão.
5. Retrabalho.
6. Análise final do moderador.
Pressman e Maxin (2016) ressaltam que o momento da reunião de revisão 
precisa ser muito bem planejado e que é importante deixar claro que a revisão 
é do artefato, e não do programador. Algumas situações durante o processo 
de revisão podem afetar os egos dos participantes; por esse motivo, é sempre 
importante deixar esse processo o mais neutro possível, para que não haja 
problemas futuros na equipe. 
Esse tipo de revisão pode ser aplicado a todos os artefatos do software, 
desde a fase de requisitos. A Figura 2 detalha esse processo de inspeção. 
Figura 2. Inspeções de software.
Fonte: Adaptada de Ackerman, Buchwald, Lewski (1989).
Requisitos Projeto dealto-nível
Projeto
detalhado Código
Execução
dos testes
= Inspeção
Plano de
testes
Caso de
testes
Como podemos perceber, o processo de inspeção pode ser realizado após 
cada fase do processo de desenvolvimento de software, inclusive após a de-
finição do modelo de requisitos. É importante ressaltar que, quanto antes um 
erro for encontrado e corrigido, menor será o custo para o reparo. 
Após ser aplicado qualquer um dos processos de revisão, a equipe poderá 
levantar dados que poderão ser úteis para dar indicativos sobre a qualidade dos 
artefatos e, inclusive, para supor a situação de outros artefatos não analisados, 
baseando-se no que foi descoberto acerca dos artefatos analisados. A exemplo 
Revisão das técnicas formais e de software6
disso, temos o cálculo da densidade de erros. A seguir, detalhamos essa forma 
de complementar a RTF. 
Encontrando a densidade de erros
Independentemente da metodologia de revisão, encontrar a densidade de 
erros de um projeto pode ser importante. Existe uma série de métricas que, 
segundo Pressman e Maxin (2016), podem ser usadas para nos dar indicativos 
importantes acerca do software que está em processo de revisão. O Quadro 
1 especifi ca essas métricas. 
 Fonte: Adaptado de Pressman e Maxin (2016). 
Métrica Definição
Esforço de preparação, E
p
Esforço (em pessoas/hora) exigido 
para revisar um artefato antes 
da reunião de revisão.
Esforço de avaliação, E
a
Esforço (em pessoas/hora) que é 
despendido durante a revisão em si.
Esforço de reformulação, E
r
Esforço (em pessoas/hora) 
dedicado à correção dos erros 
revelados durante a revisão.
Tamanho do artefato 
de software, TAS
Uma medida do tamanho do artefato de 
software que foi revisto (por exemplo, o 
número de modelos UML — do inglês 
unified modeling language, ou linguagem 
de modelagem unificada —, o número 
de páginas de documento, ou, então, 
o número de linhas de código).
Erros secundários 
encontrados, Err
sec
O número de erros encontrados que 
podem ser classificados como secundários 
(exigindo menos para serem corrigidos 
do que algum esforço pré-especificado).
Erros graves 
encontrados, Err
graves
O número de erros encontrados que 
podem ser classificados como graves 
(exigindo mais para serem corrigidos do 
que algum esforço pré-especificado).
 Quadro 1. Métricas de revisão 
7Revisão das técnicas formais e de software
Estimar a densidade de erros em um projeto é importante para que se possa 
ter uma ideia de quantos erros serão encontrados em outros artefatos de um 
projeto, ou mesmo para poder estimar, de forma induzida, a possibilidade de 
erros que poderão ser encontrados em um novo projeto. A densidade de erros 
é calculada da seguinte forma: 
Densidade de Erros = Err
tot
 / TAS
Onde: Err
tot
 = Err
sec
 + Err
graves
Suponha o seguinte caso: um modelo de requisitos contém 14 erros secundários e 
dois erros graves distribuídos em 20 diagramas UML e 35 páginas. Qual é a densidade 
de erros por diagrama UML e por página?
Nesse caso, temos: 
Err
tot 
= 14 + 2 = 16
Densidade de erros por diagrama UML = 16/20 = 0,8
Densidade de erros por página = 16/35 = 0,46
Quando utilizar as revisões técnicas formais?
Podemos dizer que, no âmbito das técnicas formais de revisão, algumas apre-
sentam mais formalidade do que outras. Se fossemos estipular uma ordem 
para os métodos de revisão apresentados na seção anterior, podemos defi nir a 
peer review como a menos formal, seguida da revisão walkthrough; por fi m, 
a técnica de inspeção seria o mais formal dos métodos. 
Podemos traduzir a formalidade como o rigor que esses métodos trazem. 
Para entender melhor, pense que um método de revisão em pares pode ser feito 
de maneira aleatória, sem nenhum tipo de regra. Um colega revisa o código de 
outro e aponta deliberadamente os erros dos sistemas. Esse tipo de processo 
é um processo de revisão, mas não formal. Se o mesmo colega executar um 
processo de revisão sistematicamente definido e com procedimentos especí-
ficos, seguindo uma metodologia rígida, podemos dizer que ele aplicou uma 
revisão com certa formalidade. 
Revisão das técnicas formais e de software8
As técnicas de revisão formal são fundamentais para diminuir a possibili-
dade de defeitos no software. Como já mencionado, em especial em software 
críticos, elas são fundamentais para evitar falhas que venham a causar sérios 
danos às pessoas ou à sociedade. 
Escolher a melhor técnica de revisão dependerá dos recursos disponíveis e 
da natureza do software que está sendo desenvolvido. Um software de gestão 
empresarial certamente não demandará as mesmas necessidades de revisão se 
comparado à um software de gerenciamento de linhas ferroviárias. 
A escolha do método normalmente está relacionada ao tempo e ao orça-
mento disponível para a execução. O método de peer review pode ser executado 
rapidamente por uma dupla de programadores, sem que seja necessário deman-
dar tanto tempo, se comparado a um método de inspeção. Contudo, é sabido 
que a inspeção, por ser um método mais rígido, apresenta melhores chances 
de identificar uma quantidade superior de erros do que os outros métodos. 
O método de revisão walkthrough também exige menos tempo e possui 
menos formalidade do que as inspeções. O que determinará o melhor método 
para revisão será, certamente, a disponibilidade temporal e financeira da equipe 
para buscar uma maior qualidade, do ponto de vista do desenvolvimento do 
software. 
Revisão por amostragem
Conforme detalhamos anteriormente, o tempo e o custo são fatores críticos no 
decorrer do projeto e do desenvolvimento de um software. Muitas vezes, não 
é possível realizar a RTF para todos os artefatos do software. O problema é 
que, no caso dos softwares críticos, a revisão é imprescindível e não pode ser 
simplesmente descartada por falta de tempo ou recursos fi nanceiros. 
Nesse sentido, temos uma alternativa que pode ser benéfica em um con-
texto em que o software precisa de revisão, mas a equipe de desenvolvimento 
não possui o tempo e os recursos necessários. Essa alternativa consiste em 
estimar por amostragem a quantidade de erros em uma parte de um artefato. 
Essa estimativa pode servir como elemento para a indução dos erros no arte-
fato completo; ou, ainda, uma amostra de vários artefatos poderia indicar a 
quantidade de erros em todo o projeto. 
Basicamente, a indução é uma metodologia de pesquisa em que se ana-
lisa uma amostra significativa, encontra-se um padrão e aplica-se uma 
generalização. 
9Revisão das técnicas formais e de softwarePara você entender melhor a revisão por amostragem, pense em casos em que é 
utilizado o princípio da indução para se chegar a um possível resultado. Na nossa vida, 
podemos ver exemplos de amostragem em várias situações. Um exemplo é a maneira 
como são feitas as pesquisas eleitorais. Em linhas gerais, um número relativamente 
significativo de pessoas é entrevistado — são, geralmente, pessoas de várias regiões 
que dizem em quem elas pretendem votar. Após a tabulação desses resultados, é 
feita uma estimativa de quem poderia ganhar as eleições. Esse raciocínio se baseia 
no princípio da indução: se a maioria das pessoas vai votar em um candidato X, é 
possível que todas as outras também votem, o que caracteriza um raciocínio indutivo. 
O grande problema da indução é que ela pode revelar uma realidade distinta 
do real, se a amostra não for significativa. Ou seja, quanto maior for a amostra, 
melhores são as chances de a indução estar correta. 
Vamos considerar o seguinte exemplo: uma equipe de desenvolvimento pre-
cisa revisar um artefato em um tempo ligeiramente curto e terá a possibilidade 
de revisar no máximo ¼ (25%) do artefato. Para ganhar tempo, a equipe optou 
por revisar apenas 20%, encontrando 15 erros secundários e 2 erros graves. 
Qual é a probabilidade de erros que poderão ser encontrados no artefato todo? 
A revisão por amostragem é uma possibilidade, mas ela nos dá um indicativo da 
quantidade total de erros de um artefato ou projeto de software. É importante sempre 
considerar que a indução pode não ser real, principalmente se a amostra não for 
significativa. 
Considerando-se que 20% representa 1/5 do artefato, temos: 15 × 5 + 2 × 5 
= 85. Dessa forma, podemos estimar que o artefato todo terá aproximadamente 
85 erros. É importante ressaltar que a análise por amostragem nos dá indícios 
da quantidade de erros, mas não garante uma informação totalmente confiável. 
Para se ter um resultado muito confiável, é necessário que a amostra seja 
bastante significativa. Aplicar revisões por amostragem é uma possibilidade 
Revisão das técnicas formais e de software10
em um cenário em que não se possuem todos os recursos necessários para 
a revisão completa e que envolve um software que não pode simplesmente 
não ser revisado. 
A revisão por amostragem se encaixa nos métodos de RTF mencionados 
anteriormente. A questão, nesse caso, é que apenas uma parte do software ou 
do artefato é revisada, com as mesmas técnicas e rigidez dos métodos de RTF. 
ACKERMAN, A., BUCHWALD, L., LEWSKI, F. Software inspections: an effective verification 
process. IEEE Software, v. 6, n. 3, p. 31–37, jun. 1989.
PRESSMAN, R. S.; MAXIN, B. R. Engenharia de software: uma abordagem profissional. 8. 
ed. Porto Alegre: AMGH, 2016. 
SOMMERVILLE, I. Engenharia de software. 8. ed. São Paulo: Addison Wesley, 2007.
Leitura recomendada
REZENDE, D. A. Engenharia de software e sistemas de informação. Rio de Janeiro: Bras-
port, 2005. 
11Revisão das técnicas formais e de software
QUALIDADE 
DE SOFTWARE
Priscila Gonçalves 
Abordagens formais e 
garantia estatística de 
qualidade de software
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
  Conceituar as abordagens formais e a garantia estatística de qualidade 
de software.
  Classificar as abordagens formais e as garantias estatísticas de quali-
dade de software.
  Demonstrar as principais abordagens formais e garantias estatísticas 
de qualidade de software.
Introdução
A garantia da qualidade de software envolve uma série de atividades 
predefinidas que atribuem confiança ao produto, garantindo que as 
exigências sejam atendidas e que o software esteja em conformidade 
com as normas especificadas. Para tanto, deve-se criar um processo de 
software que seja adaptável e no qual as mudanças sejam realizadas 
visando à melhoria dos elementos do processo que introduzem os pro-
blemas. Tais problemas devem ser identificados previamente, por meio 
de métricas; é a partir delas que será possível aplicar a garantia estatística 
da qualidade de software.
Neste capítulo, você vai estudar o conceito de abordagens formais 
e garantia estatística de qualidade de software, verificando como se dá 
a classificação dessas abordagens e quais são os principais métodos 
empregados nesse âmbito.
Conceitos essenciais
A palavra qualidade possui diferentes signifi cados para diversas áreas. Segundo 
a norma NBR ISO 9000:2005, “[...] qualidade é o grau no qual um conjunto de 
características inerentes satisfaz aos requisitos” (ASSOCIAÇÃO BRASILEIRA 
DE NORMAS TÉCNICAS, 2005, p. 8). Dessa forma, pode-se dizer que se 
algum produto atende às especifi cações que constam nos requisitos, ele possui 
a qualidade desejada. Essa qualidade pode ser medida a partir da satisfação 
do cliente; porém, para algumas pessoas, o produto pode estar em um nível 
satisfatório, enquanto, para outras, esse produto pode ser insatisfatório. Essa 
subjetividade torna a avaliação de qualidade uma difícil tarefa.
O termo qualidade em relação ao software geralmente é mal interpretado, 
pois está ligado ao termo excelência, que não o objetivo primário dos enge-
nheiros de software. O que geralmente ocorre em empresas de software é 
fazer com que o software funcione conforme o esperado, ou seja, sem bugs.
É sabido que todo profissional de software deve primar pela alta quali-
dade, e que esta deve ser pensada desde o princípio pelos desenvolvedores 
de software. Para que fosse possível projetar softwares que tivessem uma 
garantia de qualidade, surgiu a necessidade de concentrar esforços em métodos 
de SQA (do inglês software quality assurance, ou garantia da qualidade de 
software). Nesses métodos, membros do grupo de SQA devem verificar se a 
entrega dos desenvolvedores está correta, para que o trabalho seja executado 
corretamente. Essa garantia se aplica a todo o processo de software, verificando 
se foram elaborados padrões nos quais o software deve ser desenvolvido e 
se os procedimentos de monitoramento foram estabelecidos, garantindo a 
qualidade do produto entregue.
A garantia da qualidade de software envolve vários aspectos, dentre eles:
  adoção de normas e padrões internacionais (ISO e IEEE);
  revisões técnicas e testes de software para encontrar erros;
  análise e coleta dos erros;
  auditorias, para assegurar que as diretrizes estão sendo seguidas;
  utilização de gerenciamento de mudanças;
  educação continuada de seus engenheiros de software;
  gerência dos fornecedores; e
  adoção de políticas de segurança e gestão de riscos.
Abordagens formais e garantia estatística de qualidade de software2
Nas últimas três décadas, percebeu-se que era necessária uma abordagem 
mais formal, utilizando provas matemáticas para demonstrar a adequação do 
programa às suas especificações, conforme Pressman e Maxim (2016).
O princípio de Pareto, segundo seu criador, Joseph Moses Juran, afirma que, para uma 
determinada quantidade de eventos, aproximadamente 80% dos problemas decorrem 
de apenas 20% das causas. Acesse o link abaixo e saiba mais.
https://goo.gl/5VyRZn
Abordagens formais e garantias estatísticas
A garantia estatística da qualidade de software aborda uma tendência que 
cresce na indústria de software, que busca que a análise de qualidade seja 
mais quantitativa em relação à frequência em que os erros ocorrem e às in-
consistências nos softwares que são verifi cadas por certo período de tempo. 
As etapas apresentadas abaixo fazem parte da garantia estatística de qualidade 
de software:
  coletar e classificar informações sobre erros e defeitos de software;
  realizar tentativas de associar cada erro e defeito à causa subjacente;
  utilizar o princípio de Pareto;
  no momento em que as causas forem identificadas, dá-se andamento à 
correção dos problemas que provocaram os erros ou defeitos.
Diante dessa informação, pode-se criar um processo de software que seja 
adaptável e no qual as mudanças sejam realizadas visandoà melhoria dos 
elementos do processo que introduzem os problemas. Antes que o produto de 
software seja desenvolvido, medições devem ser realizadas durante a análise 
de requisitos, determinando qual o tempo máximo que o software poderá 
demorar a dar retorno sobre uma ação executada.
A utilização de métricas se refere à influência de fatores subjetivos, utiliza-
dos para julgar a qualidade de um produto e que servem para detectar áreas do 
3Abordagens formais e garantia estatística de qualidade de software
software que necessitam de um olhar mais atento. Pressman e Maxim (2016) 
descreveram algumas metas que devem ser seguidas para atingir a quali-
dade. Essas metas, mostradas no Quadro 1, focam a correção, a completude 
e a consistência dos requisitos, dos indicadores da qualidade do projeto, do 
código-fonte e da eficiência do controle de qualidade.
Meta Atributo Métricas
Qualidade dos 
requisitos
Ambiguidade Nú mero de modificadores ambí guos 
Completude Nú mero de TBA, TBD
Compreensibilidade Nú mero de seç õ es/subseç õ es
Volatilidade Nú mero de mudanç as por requisito
Tempo (por atividade) quando 
é solicitada a mudanç a
Rastreabilidade Nú mero de requisitos nã o 
rastreá veis ao projeto/có digo
Clareza do modelo Nú mero de modelos UML 
Número de pá ginas 
descritivas por modelo
Qualidade 
do projeto
Integridade da 
arquitetura
Existê ncia do modelo de arquitetura
Completude dos 
componentes
Nú mero de componentes mapeados 
no modelo de arquitetura
Complexidade do projeto procedural
Complexidade 
da interface
Nú mero mé dio de cliques para chegar 
a uma funç ã o ou conteú do tí pico
Adequaç ã o do layout
Padrõ es Nú mero de padrõ es usados
 Quadro 1. Metas, atributos e métricas para qualidade de software 
(Continua)
Abordagens formais e garantia estatística de qualidade de software4
Segundo Koscianski e Soares (2007), as métricas devem:
  ter significância, isto é, os resultados obtidos devem agregar informação 
útil à avaliação de qualidade;
  ter custo e complexidade de aplicação compatíveis com a avaliação 
que deverá ser realizada;
  ser repetíveis, pois se uma medição é realizada várias vezes e nenhuma 
condição for alterada, os resultados devem ser sempre os mesmos 
(caso não possam ser repetíveis, um tratamento estatístico poderá ser 
utilizado);
  ser reproduzíveis, pois isso significa que os resultados de uma medição 
devem ser os mesmos para diferentes avaliadores;
 Fonte: Adaptado de Pressman e Maxim (2016). 
Meta Atributo Métricas
Qualidade 
do có digo
Complexidade Complexidade ciclomá tica
Facilidade de 
manutenção
Fatores de projeto
Compreensibilidade Porcentagem de comentá rios internos
Convenç õ es de atribuiç ã o de variá veis
Reutilizaç ã o Porcentagem de componentes 
reutilizados
Documentaç ã o Índice de legibilidade
Eficiê ncia do 
controle de 
qualidade
Alocaç ã o de 
recursos
Porcentagem de horas de 
pessoal por atividade
Taxa de 
completude
Tempo de conclusã o real versus previsto
Eficá cia da revisã o Métricas de revisão
Eficá cia dos testes Nú mero de erros encontrados 
e gravidade 
Esforç o exigido para corrigir um erro
Origem do erro 
 Quadro 1. Metas, atributos e métricas para qualidade de software 
(Continuação)
5Abordagens formais e garantia estatística de qualidade de software
  ser objetivas, pois a opinião de pessoas envolvidas deve ser limitada 
ou ainda evitada em sua totalidade;
  ser imparciais, principalmente com relação à maneira como as avaliações 
são realizadas (uma escolha criteriosa de parâmetros do ambiente de 
execução pode levar a resultados diferentes, favorecendo ou não um 
dado produto);
  prover evidência para sua validação, uma vez que o resultado de uma 
avaliação é uma curva de tendência.
Também há critérios mais quantitativos utilizados para as métricas, que 
são sugeridos por Weyuker (1988) e citadas por Koscianski e Soares (2007) 
em seu livro Qualidade de software:
  Significância de permutação: uma entidade de um programa A consiste 
em um rearranjo de outra entidade B, então m (A) # m (B), e esse 
resultado depende do “rearranjo” que tenha sido feito.
  Significância de implementação: duas entidades diferentes, A e B, 
produzem a mesma saída para a mesma entrada, cujo critério deveria 
ser válido para métricas que analisassem a estrutura, e não o funcio-
namento do software.
  Monotonicidade: dadas duas entidades de programa diferentes, A e B, 
m (A) ≤ m (A+B) e m (B) ≤ m (A+B).
  Complexidade de interação: dadas duas entidades A e B, m (A) + m (B) 
≤ m (A##B), cujos símbolos ## significam concatenação.
Dentre as métricas que devem ser realizadas, a métrica de funcionalidade 
pode ser concebida no início do desenvolvimento do software, quando esti-
ver na fase de arquitetura do projeto de software, o que ocorre, na maioria 
das vezes, em forma de revisões. Ainda sobre a métrica de funcionalidade, 
pode-se programá-la junto à fase de revisão de coleta de dados, na qual é 
projetada a lógica do sistema. Na funcionalidade, existe a subcaracterística 
de interoperabilidade; esta é avaliada de forma estática, em que é verificado 
se a arquitetura de software projetada contemplará a implementação das 
funcionalidades necessárias.
Contemplando o tópico métricas, falaremos sobre a acurácia, que pode ser 
obtida por meio de contagens realizadas com testes do software, cujos resulta-
dos dependem do funcionamento de componentes internos e de interações com 
o ambiente. A métrica de manutenibilidade pode ser realizada para prever o 
esforço para realizar modificações no software ou para criar uma base de dados 
Abordagens formais e garantia estatística de qualidade de software6
que contenha o histórico para que se possa acompanhar o desenvolvimento. 
A manutenção do software pode ser classificada em quatro tipos:
  Corretiva: modificações são realizadas com a finalidade de corrigir 
defeitos ou não conformidades.
  Adaptativa: utilizada para responder a modificações de requisitos, 
quando as partes de um produto de software já foram projetadas e 
implementadas.
  Incremental: são acrescidas às especificações as funções que não foram 
previstas.
  Preventiva: o software é alterado de maneira que ajude na realização 
de outros três tipos de manutenções.
As medidas de tamanho também podem contribuir como indicadores para 
diversas características de um software — por exemplo, o tempo tomado por 
desenvolvedores para escrever softwares grandes, levando em consideração 
um maior custo para sua produção e uma maior complexidade de escrita.
Dentre as métricas abordadas, temos também a métrica de complexidade 
estrutural, a qual faz a avaliação da construção interna do programa, como 
número de componentes, quantidade e relação entre eles. Não menos impor-
tantes, também existem as métricas de complexidade ciclomática, a métrica 
de Halstead, e as métricas baseadas em fluxo de dados, acoplamento e 
coesão, UML e orientação a objetos.
A usabilidade é medida por fatores não quantificáveis, como itens de 
interface. Já a confiabilidade é medida pela probabilidade de ocorrência de 
falhas, ou seja, a contagem de defeitos, também muito difícil de quantificar 
com precisão, assim como ocorre na usabilidade.
As métricas de disponibilidade estão relacionadas à fração de tempo 
durante a qual um software pode ser utilizado; geralmente são medidas do 
tempo médio entre falhas e o tempo médio para falhar. Para o cálculo da 
disponibilidade de um sistema, utilizamos a seguinte fórmula: divisão do 
tempo médio de falhas pelo tempo médio entre falhas, multiplicados por 
100; o resultado será o percentual de disponibilidade de software. Exemplo:
1 falha de 7 horas por dia
(7/24) *100 = 29,16%
Falhas de 1h a cada 7h
(1/7) *100 = 14,28%
7Abordagens formais e garantia estatística de qualidade de software
Pode-se citar a classificação de falhas, o que ajuda a equipe de desenvol-
vedores a tratar os defeitos da melhor maneira possível. Essas falhas podem 
ser classificadas

Continue navegando