Professional Documents
Culture Documents
Silvana M. Melo1
1
morita@icmc.usp.br
Abstract. This article describes the methods and techniques used in the search
for quality of software artifacts during all stages of its development, methods
of verification and validation, verification and other static and dynamic,
emphasizing the process of software inspection.
Resumo. Este artigo descreve os mtodos e tcnicas utilizadas na busca de
qualidade dos artefatos de software, durante todas as fases de seu
desenvolvimento, mtodos de verificao e validao, verificao esttica e
dinmica entre outros, dando nfase ao processo de inspeo de software.
1. Introduo
Dada a popularizao de sistemas de software, e o fato deles se tornarem cada vez
maiores e mais complexos, a garantia de qualidade nesses sistemas um grande desafio.
Uma forma de garantir a qualidade do produto tratar de problemas o mais cedo
possvel, ou seja, assim que eles aparecem e no adiando at o final do desenvolvimento,
pois quanto mais tarde o problema descoberto maior custo de sua correo.
Na tentativa de diminuir o retrabalho e melhorar a qualidade dos produtos, uma
abordagem que tem se mostrado eficiente e de baixo custo para encontrar defeitos,
reduzindo o retrabalho e melhorando a qualidade dos produtos a reviso dos artefatos
produzidos ao longo do processo de desenvolvimento de software. Inspeo de software
um tipo particular de reviso que pode ser aplicado a todos os artefatos de software e
possui um processo de deteco de defeitos rigoroso e bem definido. A figura a seguir
ilustra a possibilidade de realizar inspees nos diferentes artefatos de software
[Kalinowski 2004].
2. Qualidade de software
Qualidade de Software um processo sistemtico que focaliza todas as etapas e artefatos
produzidos com o objetivo de garantir a conformidade de processos e produtos,
prevenindo e eliminando defeitos. Defeitos so encontrados em todas as fases do
desenvolvimento, porm comprovado que a maioria encontra-se nas fases iniciais do
processo de desenvolvimento. Isso gera prejuzos enormes para as empresas
desenvolvedoras de software, pois o preo para corrigir um erro cresce muito com o
passar do tempo. Com isso, fica clara a importncia de um processo de Garantia da
Qualidade que atue em todas as fases do processo de desenvolvimento [Barti 2002].
Para isso, o processo de Garantia da Qualidade utiliza-se de atividades de
verificao, validao com o intuito de encontrar erros em todas as etapas do
desenvolvimento. Essas atividades so muito importantes, pois cuidam de analisar
diversos pontos do processo de desenvolvimento, impedindo que um erro se propague
para as fases posteriores do projeto.
2.1 Verificao e Validao
Tcnicas de verificao e validao so aplicadas aos softwares durante e depois de seu
desenvolvimento para garantir que ele atente sua especificao e fornece as
funcionalidades esperadas pelos clientes.
Essas atividades ocorrem durante todo o ciclo de vida do software comeando
com revises de requisitos e continua ao longo das revises de projeto e das inspees
de cdigo at o teste do produto.
2.1.1 Anlise dinmica
Anlise dinmica de software uma tcnica de verificao e validao muito usada, que
consiste em exercitar o programa usando dados reais processados pelo programa e
verificar se as sadas obtidas esto de acordo com as sadas esperadas.
Uma tcnica esttica muito utilizada so os testes de software que so essenciais
para descoberta de defeitos e garantia de qualidade e confiabilidade que s podem ser
obtidas com a execuo do programa.
3. Revises
Revises fazem parte do conjunto de atividades de garantia de qualidade de software.
Essas atividades constituem um padro sistemtico e planejado de aes que so exigidas
para garantia de qualidade do software e que devem ser aplicadas ao longo de todo
processo de engenharia de software [Pressman 2000].
Nesse contexto a reviso de software um filtro para o processo de engenharia
de software. Pois revises so aplicadas em vrios pontos durante o ciclo de vida do
desenvolvimento de software eliminando defeitos em cada fase antes de passar para a
fase seguinte [Pressman 2000].
As revises podem ser classificadas em:
3.1.1 Walkthrough
Nesta tcnica a reviso feita atravs de uma execuo passo a passo de um
procedimento ou programa (no papel), com o objetivo de encontrar erros. Dura em
mdia uma a duas horas. Envolve equipes pequenas de trs a cinco pessoas, onde feita
uma simulao da execuo por cada revisor, controlada um testador que durante a
reunio disponibiliza um conjunto de casos de teste e monitora os resultados obtidos de
cada revisor.
3.1.2 Peer-Review
uma tcnica formal de inspeo de cdigo realizada em pares de programadores com
mesmo nvel de conhecimento, o objetivo desta tcnica obter pontos de vista diferentes
do desenvolvedor e revisar o material, a fim de encontrar problemas de qualidade, apenas
um programa ou algumas funcionalidades so revisados de cada vez. Os resultados
obtidos vo para um relatrio para a reviso e se forem pertinentes passam para o
relatrio final oficial. O problema desta tcnica so as disputas pessoais. Por esse motivo
deve ser analisado o produto no o desenvolvedor.
3.1.3 Inspeo
A inspeo um processo de reviso formal de software e corresponde a uma das mais
importantes atividades de Garantia de Qualidade de Software, sendo que o principal
objetivo descoberta antecipada de falhas (produo de uma sada incorreta em relao
especificao), de modo que eles no se propaguem para o passo seguinte do processo
de software. Assim, a Engenharia de software tem utilizado a inspeo como um dos
mtodos mais eficientes e efetivos na busca por um produto de melhor qualidade.
[Felizardo 2004].
A inspeo visa encontrar erros lendo, entendendo o que o documento descreve e
checando atravs de um checklist as propriedades de qualidade requeridas, composto
por seis fases, que so: Planejamento, Apresentao, Preparao, Reunio de Inspeo,
Retrabalho e Acompanhamento [Fagan 1986].
No Planejamento os inspetores so selecionados e os materiais a serem revisados so
preparados; na Apresentao, o grupo recebe instrues essenciais sobre o material a ser
inspecionado, especialmente sobre o que deve ser inspecionado; na Preparao,
integrantes do time de inspeo se preparam para desempenhar o papel designado a cada
um; no momento da Reunio de Inspeo os defeitos so encontrados, discutidos e
categorizados; no Retrabalho o autor do documento corrige os defeitos encontrados pelo
time de inspeo e na etapa de Acompanhamento, o time de inspeo responsvel por
assegurar que todos os defeitos encontrados foram corrigidos e nenhum outro tipo de
defeito foi introduzido na fase de Retrabalho. O Acompanhamento tambm pode ser
realizado somente pelo moderador [MacDonald 1995] [Fagan 1986].
A figura a seguir ilustra as etapas e papis envolvidos no processo de inspeo de
software.
3.1.3.1 Etapas
O processo de inspeo realizado por uma equipe composta por desenvolvedores e
tambm por mais participantes, que realizam os seguintes papis [Fagan 1986]:
Defeito de interface: quando um mdulo usa ou faz suposies sobre dados que
no fazem parte de seu escopo.
A PBR define responsabilidades especficas para cada revisor, desse modo cada
indivduo responsvel por criar uma abstrao do produto e ento responder questes
baseadas na anlise da abstrao a partir de uma perspectiva (ponto de vista) diferente. O
indivduo pode revisar o documento de software da perspectiva do desenvolvedor, do
testador e do usurio final. Em cada perspectiva definido um cenrio o e um conjunto
de questes e atividades que dizem ao indivduo o que ele deve fazer e como ele deve ler
o documento, essas questes auxiliam o indivduo a descobrir defeitos. Os cenrios
descrevem as atividades que devem ser executadas pelo indivduo no momento da leitura
a fim de descobrir defeitos em suma um cenrio uma coleo de procedimentos que
permitem operacionalizar estratgias para detectar defeitos. A seguir, apresentam-se os
cenrios e questes, sob as perspectivas de leitura do usurio e do testador [Dria 2009]:
3.2.3.1 Perspectiva do usurio
Espera-se que o revisor execute as seguintes tarefas: defina o conjunto de funes que
um usurio esteja apto a executar; defina um conjunto de entrada necessrio para
executar cada funo e o conjunto de sada gerado pela funo. Isto pode ser visto como
escrever todos os cenrios operacionais ou subconjuntos de cenrios operacionais que o
Voc consegue chegar num estado do sistema que deve ser evitado (por ex., por
razes de segurana)?
A especificao funcional faz sentido de acordo com o que voc conhece sobre
essa aplicao ou sobre o que foi especificado em uma descrio geral?
Voc tem toda informao necessria para identificar o item a ser testado e o
critrio de teste?
Voc pode gerar um bom caso de teste para cada item, baseando-se no critrio?
Voc tem certeza de que os testes gerados fornecero os valores corretos nas
unidades corretas?
Existe outra interpretao dos requisitos de forma que o programador possa estar
se baseando nela?
Existe outro requisito para o qual voc poderia gerar um caso de teste similar,
mas que poderia levar a um resultado contraditrio?
4. Ferramentas de apoio
Em geral revises so trabalhosas, muitas vezes executadas manualmente e por isso
lentas podendo levar a erros. A automatizao de algumas tarefas pode auxiliar os
revisores a compreenderem melhor o processo e diminuir o esforo, alm de diminuir o
custo e aumentar o desempenho desta atividade. Muitos esforos tm sido empregados
no desenvolvimento de ferramentas para apoiar a inspeo de software, existem hoje
ferramentas que apiam a inspeo de cdigo fonte, como tambm ferramentas de
IBIS [Lanubile 2003]. Utiliza a web em conjunto com notificaes por e-mail
para apoiar inspees assncronas com equipes geograficamente distribudas.
IBIS visa explicitamente apoiar a reorganizao do processo de inspeo e
permitir a sua realizao de forma sistematizada. IBIS no limita o tipo de
artefato a ser inspecionado e na deteco de defeitos atualmente permite apenas a
utilizao das tcnicas ad-hoc e de checklists. IBIS no fornece apoio aos pontos
de tomada de deciso do processo de inspeo, sendo as atividades de
planejamento e de continuao do processo tratadas como simples cadastros, sem
apoio para a realizao de suas tarefas. IBIS tem sido utilizada em estudos
experimentais recentes para obter conhecimento na rea de inspees de software
e para avaliar aspectos da reorganizao do processo de inspeo.
5. Concluso
Inspees no requerem necessariamente a execuo do sistema e assim podem ser
usadas antes da implementao estar concluda. Podem ser aplicadas em qualquer
representao (artefato) do sistema. Por detectar defeitos assim que eles aparecem,
quando um erro encontrado, conhecida tambm sua natureza e localizao,
facilitando sua correo. Isso no ocorre com o Teste de Software.
Inspeo e Teste so tcnicas de V&V complementares. Elas devem ser usadas
em conjunto para garantir maior cobertura e confiabilidade.
Inspees podem checar a conformidade com especificao, mas no a
conformidade com os requisitos reais do cliente, ou seja, uma tcnica de verificao e
no de validao por isso no podem ser utilizadas para checar caractersticas no
funcionais como desempenho, usabilidade, estas atividades ficam a cargo dos Testes de
software.
Referncias
FAGAN, M. (1986) "Advances in Software Inspection", IEEE Transactions on Software
Engineering, Vol. SE-12, NO. 7.
MACDONALD, F; MILLER, J; Brooks, A.; Roper, M; Wood, M. (1995) "Automating
the Software Inspection Process", Empirical Foundations of Computer Science
(EfoCS), Departament of Computer Science, University of Stranthclyde.
PRESSMAN, R. S. (2000) Software Engineering A Practitioners Approach. 5th
edition McGraw Hill.
DRIA, E. S. (2001) Replicao de estudos empricos em engenharia de software.
Dissertao (Mestrado em Computao) Instituto de Cincias Matemticas e de
Computao (ICMC) Universidade de So Paulo, So Carlos.
BARTI, A. (2002) Garantia de Qualidade de Software. Edio: 2002, Campus.
LANUBILE, F., MALLARDO, T., CALEFATO, F., (2003). Tool support for
Geographically Dispersed Inspection Teams, Software Process Improvement and
Practice, 2003, 8: 217-231 (DOI: 10.1002/spip.184).
FELIZARDO, K. R. (2004). Apoio computacional para inspeo de software.
INFOCOMP: R evista de Cincia da Computao, v.3, n.2. Lavras, MG.
KALINOWSKI, M., SPNOLA, R.O., TRAVASSOS, G. H., (2004). Infra-Estrutura
Computacional para Apoio ao Processo de Inspeo de Software. No: Simpsio
Brasileiro de Qualidade de Software, Braslia.
SOMMERVILLE, (2007). Engenharia de Software. 8a edio, Addison Wesley.
PORTO, D. P. (2009) CRISTA: um apoio computacional para atividades de inspeo e
compreenso de cdigo. Dissertao (Mestrado em Computao) Universidade
Federal de So Carlos, So Carlos.