Você está na página 1de 11

Aplicao da Verificao e Validao no Processo de Desenvolvimento de Software

Marciel Reinert1,

A preocupao da engenharia de software construir o software certo da primeira vez. O custo de retrabalho e com testes de software so muito onerosos para as empresas de desenvolvimento. Cada vez mais os clientes desejam software de qualidade, que atendam as suas necessidades e com custos reduzidos. Diante disso preciso garantir que as etapas de desenvolvimento do software tenham certeza do que deve ser desenvolvido. A forma de garantir o desenvolvimento correto aplicar as tcnicas e mtodos de verificao e validao nas etapas do processo de desenvolvimento. Incluir verificao e validao em cada etapa ir garantir que a prximo etapa seja efetua com mais confiana. Se no existe verificao e validao a cada etapa o software poder ser desenvolvido sem atender as especificaes e a necessidade do cliente. Para desenvolver um software com qualidade preciso garantir qualidade em todos as etapas do desenvolvimento. Apenas testes de software no garantem a qualidade necessria. Porm implantar as atividades de verificao e validao no processo de desenvolvimento no so fceis. Por isso a alta diretoria da empresa precisa apoiar a implantao destas atividades. Palavras-chave: verificao e validao, V&V, verificao, validao, testes

1 INTRODUO O objetivo de toda engenharia construir certo da primeira vez. Pois, principalmente na engenharia de software, a tarefa de testar um software rdua e onerosa para a empresa. Mesmo a empresa investindo um tempo significativo em testes ser difcil admitir que o software produzido isento de erros. O teste possui objetivo de apontar erros no software e no em atestar que o mesmo no possui erros. A partir da complexidade cada vez maior em produzir softwares, veremos como aplicar a verificao e validao no processo de desenvolvimento de software. As atividades de verificao e validao servem para assegurar que o software desenvolvido funcione como foi especificado e que atenda a necessidade dos envolvidos. O processo de verificao e validao constitudo de revises inicialmente dos requisitos, passando para as revises da anlise e projeto, posteriormente as inspees de cdigos gerados e finalmente os testes. Tarefa importante no processo de desenvolvimento do software determinar quais mtodos e tcnicas de verificao e validao sero usados ao longo do seu desenvolvimento e quais ferramentas daro apoio ao gerenciamento e a realizao das atividades. A aplicao destas ajudar a garantir o desenvolvimento de um software com mais qualidade.

Sociedade Educacional de Santa Catarina SOCIESC. E-mail: marcielreinert@hotmail.com.

2 VERIFICAO E VALIDAO No primeiro momento em que falamos de verificao e validao vrias pessoas consideram que os dois termos so a mesma coisa. Verificao e validao no so a mesma coisa, embora sejam facilmente confundidos. (SOMMERVILLE, 2003). Cada atividade possui um foco diferente no processo de desenvolvimento de software. Estas atividades tambm so conhecimentos no mercado pelas denominaes V&V ou Ver&Val. As tcnicas de verificao e validao so fundamentais para identificar se um software possui defeitos e est de acordo com o especificado. (KOSCIANSKI e SOARES, 2006). Verificao e validao (V & V) o nome dados aos processos de verificao e anlise que asseguram que o software cumpra com suas especificaes e atenda s necessidades dos clientes que est pagando por ele. (SOMMERVILLE, 2003). A verificao e validao consiste em verificar e existncia de defeitos no software. No possui o objetivo de atestar que o software produzido no possui defeitos. um processo que deve englobar todo o ciclo de vida do desenvolvimento do software. Deve assegurar que o sistema ser ou no utilizvel em situao operacional. Devem existir atividades de verificao e validao em cada fase do desenvolvimento do software. A partir da definio das verificaes e validaes a serem realizadas em cada fase do desenvolvimento o processo de desenvolvimento ter maior qualidade. Pois a V & V ir garantir que a prximo fase ser iniciada com mais garantia de sucesso e que as coisas estas corretas e coerentes conforme a especificao e a necessidade do cliente. A diferena entre verificao e validao claramente identificada atravs das seguintes questes: Verificao: estamos construindo certo o produto? Validao: estamos construindo o produto certo? 2.1 Verificao A verificao o processo de determinar se a sada de uma fase est de acordo com os requisitos especificados na fase anterior. Verificar no demonstrar que a sada de uma fase do desenvolvimento correta, mas averiguar se o software est de acordo com as especificaes preestabelecidas. (KOSCIANSKI e SOARES, 2006). A verificao a atividade que consiste em verificar se o software que est sendo construdo est de acordo com a especificao feita. Possui foco em confrontar a especificao feita para desenvolver com o software que de fato est sendo desenvolvido, a fim de garantir que o mesmo est sendo construdo conforme foi especificado. A verificao deve responder a seguinte pergunta: Estamos construindo o software corretamente?. Ou seja, construindo o software como ele foi especificado? Se o software no est sendo construdo como foi especificado, o mesmo possura defeitos. No deve-se esquecer de checar se o software atende aos requisitos funcionais e no funcionais que foram especificados. 2.2 Validao A validao um processo mais genrico, onde suas atividades consistem em analisar se o software que est sendo construdo atende as necessidade dos usurios e clientes.

necessrio assegurar que o software atenda s expectativas do cliente, e isso vai alm de checar a conformidade do sistema com as especificaes, a fim de mostrar que o software faz o que o cliente espera que faa, exatamente como foi especificado. (SOMMERVILLE, 2003). Neste caso o software deve possuir as funcionalidades esperadas pelos usurios e clientes, caso contrrio o projeto poder estar fardado ao fracasso, pois mesmo que atenda todas as especificaes, ele pode no atender as necessidades dos usurios, no fazer o que o cliente espera. A validao deve responder a seguinte pergunta: Estamos construindo o software certo?. Ou seja, isso realmente que o software deve fazer para atender as necessidades do cliente? isso que o cliente espera receber? Com certeza no tarefa fcil garantir isso, pois a fase primordial para que isso possa ser verificado ter a certeza que a especificao dos requisitos esto corretos e completos. 2.3 Tcnicas e Mtodos de Verificao e Validao A verificao e validao possui como objetivo principal criar uma relao de confiana que o software desenvolvimento est sendo construdo corretamente e ir atender o propsito fim que se destina. Dentro do processo de V & V existem duas tcnicas que podem ser utilizadas: Inspees de software; Testes de software. A primeira tcnica consiste em verificao esttica, pois no exige a execuo do programa. J a tcnica de testes consiste na verificao dinmica, onde requer a execuo do programa para que possa ser realizada. Dessa forma a inspeo pode ser aplicada em todas as etapas do desenvolvimento, podendo inclusive utilizar de ferramentas para realizar anlises automatizadas. Enquanto os testes apenas podero sero realizados a partir do momento que existe alguma aplicao que possa ser executada, seja um prottipo ou o programa. As inspees esto sendo utilizadas amplamente na melhoria da qualidade do software, porm os testes so ainda a tcnica mais utilizada no processo de verificao e validao. Na figura 1 apresentada uma representao das etapas onde cada tcnica pode ser aplicada.

Figura 1- Verificao e validao esttica e dinmica. Fonte : Sommerville, 2003

Inspees de software A inspeo de software realiza a anlise esttica atravs das representaes do sistema para descobrir defeitos, analisando os documentos de levantamento, especificaes, diagramas, requisitos, dados de testes e outros documentos utilizados no desenvolvimento do software. Pode inclusive realizar o exame do cdigo fonte do sistema sem a sua execuo, a fim de verificar as funes, objetivos a variveis declaradas, parmetros utilizados. Na inspeo muitos defeitos podem ser encontrados em uma nica inspeo. No teste um defeito encontrado pode esconder outros defeitos devido a execuo do software tomar caminhos diferentes dependendo do resultado retornado. A inspeo verifica a conformidade com a especificao, porm no garante o atendimento real da necessidade do usurio, isso quem ir garantir validao. A inspeo tambm no pode verificar requisitos no funcionais do software, estes apenas podem ser verificados atravs de testes. A inspeo de um fonte por exemplo ir detectar defeitos, no ir fazer a correo do mesmo. A inspeo de um cdigo fonte pode evitar muitos problemas posteriores, como por exemplo a inicializao de uma varivel, a correta declarao de uma varivel, alm de garantir a coerncia e padronizao de documentos e fontes da empresa. A grande maioria dos defeitos de um software podem ser encontrados atravs da inspeo, seja ela informal, ou formal. A inspeo formal ir encontrar ainda mais defeitos que a inspeo informal. Cada vez mais fica claro o entendimento de que um projeto de software para ser bem sucedido necessita de uma especificao com alta qualidade. E neste ponto a verificao e validao primordial para garantir essa qualidade necessria. No desenvolvimento de software a tarefa mais difcil a especificao do software. Se ela estiver incorreta, por mais que os prazos e custos no foram ultrapassados, o projeto de software ter fracasso. Fornecer durante todo o ciclo de desenvolvimento do software documentos completos e consistentes aumentam as chances de um produto final de alta qualidade. A inspeo do projeto deve ocorrer antes que o mesmo seja iniciado, evitando dessa forma custo adicional com retrabalho em implementao. Porm para a realizao da atividade de inspeo tambm necessrio pessoas capacitadas para realizar tais tarefas. Uma reviso feita por uma pessoa qualificada o melhor modo de garantir esta qualidade. (INTHURN, 2001). Durante o processo de inspeo em documentos de especificao geralmente comum encontrar alguns tipos de defeitos como: Informao ausente: Falta ou informao incompleta sobre alguma funcionalidade ou caracterstica necessria; Informao ambgua: Utilizao de mltiplos termos ou significados para tratar a mesma coisa, gerando vrias interpretaes sobre o assunto; Informao irrelevante: Informaes desnecessrias ou sem utilizao;] Informao inconsistente: Especificaes que causam conflitos entre si; Informao diversa: Outros erros como incluso de informaes em lugares incorretos da especificao; A inspeo, tambm conhecida como reviso por muitos, embora existam na literatura diferenas entre elas, trataremos as duas como tendo o mesmo objetivo, pois o foco no definir uma ou outra neste momento. O que importa que uma atividade realizada por uma pessoa ou

por uma equipe a fim de revisar um ou vrios artefatos, cdigos, diagramas e outros documentos com o objetivo de encontrar defeitos nas especificaes. Inspeo individual Ocorre quando a inspeo feita por uma pessoa, de preferncia uma pessoa diferente daquela de desenvolveu o artefato algo da inspeo. A questo de ser uma pessoa diferente que a mesma possui maior facilidade de identificar defeitos. recomendado as empresas construrem padres a serem seguidos pelas equipes, e logo que os colaboradores sejam treinados a usar os padres criados. Isso facilita a comunicao entre colaboradores e a prprio padronizao alvo da inspeo. Fazendo com que a partir de um padro adotado as pessoas construam os artefatos de acordo com o padro especificado. Inspeo em equipe Quando a inspeo formado por um grupo de pessoas. Neste grupo de pessoas deve existir um coordenador. Este ser responsvel por comandas e organizar as aes do grupo. Recomendase que seja uma pessoa experiente em desenvolvimento de software e que possua caractersticas de liderana. A equipe deve ser pequena, em torno de quatro membros. Uma equipe muito grande pode gerar improdutividade na atividade de inspeo. As inspees tambm devem ter perodos de tempo determinado, recomendando-se o tempo mximo de duas horas. Os colaboradores construtores dos artefatos em inspeo devem estar presentes para responder a dvidas e dar esclarecimentos. Os mesmos no faro papel de inspeo. importante destacar que a inspeo no deve julgar ao avaliar o desempenho dos colaboradores que elaboraram os artefatos e nem para encontrar culpados. A atividade deve se concentrada em identificar defeitos nos artefatos em avaliao. Testes de software O teste de software realiza a anlise do comportamento do software em execuo. O software colocado em execuo e atravs da entrada de dados observado o seu comportamento a fim de verificar se o mesmo cumpri com o comportamento esperado. Para que a verificao e validao posa ser realizada preciso se utilizar de testes. Um teste pode revelar a presena de defeitos/erros/falhas, mas no a ausncia destes. No meio da engenharia de software reconhecido que um testes bem sucedido aquele que descobre um ou mais defeitos. Os testes so testes dinmicos, pois so efetuados com o software em execuo. Os testes devem ser usados em conjunto com a verificao esttica para garantir a cobertura todas das atividades de verificao e validao. A execuo de apenas uma delas no d as garantias necessrias ao software produzido. Os testes devem ser executados vrias vezes e com entradas diferentes na tentativa de cobrir todos os caminhos possveis percorrido pelo software. Os testes podem ser divididos em vrios tipos, onde cada tipo possui um objetivo principal a ser contemplado. Os testes so a principal tcnica de verificao e validao do software. Mas isso no descarta a utilizao da inspeo. Os testes tambm podem ser classificados como testes de validao e defeitos. O primeiro foca em validar o processo, informao gerada pelo software

a fim de verificar se o mesmo atinge seu objetivo. O teste de feitos busca encontrar defeitos na execuo do software. Os testes podem ser executados na fase de desenvolvimento e aps o termino da mesma. Testes de defeito Os testes de defeitos so aqueles que encontrar inconsistncias entre o programa e a especificao. As inconsistncias so geralmente defeitos do programa, gerados por erros de desenvolvimento. Os testes destinados a encontrar defeitos so testes destinados gerar situaes diferentes daquelas da situao real ao qual o software ser utilizado. Testes caixa branca Os testes caixa branca, tambm conhecidos pela expresso white box, so os testes de unidade do cdigo fonte. Estes testes executam uma pequena parte do cdigo fonte, a fim de verificar se a parte testado funciona como deveria. Estes testes so escritos pela programao, devendo sem mantidos e atualizados sempre que necessrios por eles. So testes escritos na forma de cdigo fonte para testar o prprio cdigo do software produzido. Os testes caixa branca devem isolar parte do fonte a fim de garantir que outros trechos do fonte ou outras classes causem influncia sobre o teste realizado. Testes caixa preta Os testes caixa preta tambm so conhecidos como testes funcionais. So assim definidos pela caracterstica de analisar o comportamento das entradas e sadas aplicadas na utilizao do programa, se preocupando apenas com a funcionalidade e no como a implementao do software ocorreu. Os defeitos so identificados nos testes funcionais quando realizada uma entrada no programa esperando um determinado comportamento ou sada prevista, porm no resulta no comportamento ou sada esperada. A preocupao em realizar testes funcionais est em especificar testes que possam abranger o maior nmero de possibilidades possveis que resultem em defeitos. Testes de estrutura Tambm conhecido como caixa branca ou caixa de vidro. So testes realizados em pequenas rotinas ou sub-rotinas a partir do conhecimento do cdigo fonte do software. A partir do conhecimento deste pode-se identificar quais testes devem ser executados para exercitar o software, fazendo com que todas as variveis e caminhos do software sejam percorridas pelo menos uma vez. A partir da estruturao da implementao o engenheiro de testes ir derivar os cenrios e casos de testes a serem efetuados. Isso oferece maior visibilidade por onde o software est sendo percorrido. Porm necessrio conhecimento tcnico para a realizao da atividade de derivao dos testes.

Testes de unidade Quando o software no desenvolvido dentro dos princpios da orientao a objetos, o teste de unidade concentra-se em verificar a menor unidade de um projeto de software. So exemplos de verificao de testes de unidade: Interface com o mdulo; Estrutura de dados local; Condies limites; Caminhos bsicos; Tratamento de erros. Testes de integrao Possui o objetivo de verificar se todas as partes executadas em conjunto produzem o resultado esperado. Pois individualmente podem funcionar corretamente, mas quando colocadas para trabalharem juntas problemas podem ocorrer pela falta de integrao entre elas. Testes de validao O teste de validao ocorre aps o trmino do teste de integrao. O teste de validao pode ser efetuado de vrias formas. Porm o que define se o teste de validao foi bem sucedido ou no se o software funciona da maneira esperada pelo cliente ou usurios. Se o software no funcionar como foi especificado e esperado que funcionasse, ento o teste de validao foi mal sucedido. O teste de validao se utiliza de outros tipos de testes, como o teste funcional para verificar o comportamento esperado do software. Testes de recuperao O software deve tolerar defeitos, porm no deve inviabilizar a sua utilizao. Quando um defeitos ocorrer o mesmo dever ser corrigido para que no volte a ocorrer. Os testes de recuperao so projetados para ocasionar falhas no sistema a fim de verificar o seu comportamento e sua capacidade de recuperao. Dependendo da utilizao do software ou funcionalidade desenhada, o mesmo poder se recuperar automaticamente ou dever haver interveno do usurio para que o mesmo retorno a situao operacional novamente. Testes de segurana O teste de segurana possui o objetivo de garantir que acessos indevidos no sejam permitidos. Tem objetivo tambm de verificar a existncia de vulnerabilidade no sistema e que a forma como foi projetado garanta a segurana necessria das informaes. Tambm deve garantir que o sistema se comporte adequadamente diante de situaes que possam comprometer a segurana do sistema, como por exemplo no caso de falhas no intencionais e intencionais. Para implementar um alto nvel de segurana com investimentos extraordinrios deve-se fazer o questionamento se o investimento vale o valor da informao armazenada.

Testes de estresse O teste de estresse realizado para identificar mal funcionamento do mesmo diante de cargas no usuais de utilizao. gerado um comportamento anormal no sistema com grande volume de registros, processamentos, usurios simultneos realizando operaes concorrentes. O teste deve ser projetado para avaliar o comportamento que se deseja avaliar. E o resultado analisado a fim de verificar como o sistema se comportou. O teste gera resultados sobre a perda de desempenho, falhas de processamento, travamento do sistema em determinados momentos ou at mesmo a sua indisponibilidade. Testes de desempenho Para sistemas projetados para funcionamento em tempo real, a questo de desempenho fundamental. Se os requisitos de desempenho no foram atingidos o software se torna inaceitvel. O teste de desempenho foi idealizado para execuo no contexto do sistema integrado, onde todas as partes do software devero responder para o correto funcionamento da aplicao. O teste de desempenho pode ser realizado ao longo do desenvolvimento do software, porm a avaliao plena do desempenho apenas poder ser realizada quando o software estiver todo integrado. E os testes de desempenho podem ser combinados com testes de estresse tambm. O teste de desempenho se preocupa com o rendimento, tempo de resposta e capacidade do banco de dados. 2.4 Ferramentas de Apoio No mercado possvel encontrar vrias ferramentas que auxiliam e automatizam o trabalho de gerenciar testes, realizar testes automatizados, efetuar anlise de cdigo fonte, etc. Algumas ferramentas so pagas, ou seja, preciso adquirir licena de uso da mesma, e outras no so pagas, na sua maioria conhecidas como open-source. Ferramentas para inspeo Ferramentas para inspeo realizam a anlise esttica do cdigo fonte. Elas varem o cdigo fonte desenvolvido a procura de erros ou possveis situaes que possam gerar problemas ao software quando o mesmo estiver em execuo. Algumas ferramentas so destinadas a certos tipos de linguagem de programao, pois cada linguagem possui sua sintaxe, regras e padres de codificao. A prpria ferramenta de desenvolvido j garante muitas vezes a correo de pequenos erros comuns durante o desenvolvimento. Exemplos de ferramentas: PC-Lint: Ferramenta paga utilizada para cdigo C/C++; Busybox: Ferramenta open-source utilizada para Linux; Checkstyle: Ferramenta utiliza para cdigo Java; FindBugs: Ferramenta utiliza para cdigo Java; PMD: Ferramenta utiliza para cdigo Java; Klocwork Developer: Ferramenta utiliza para cdigo Java;

ChecKing:Utilizada para vrias linguagens de programao; Compuware DevEnterprise: Utilizada para vrias linguagens de programao; IBM Rational AppScan Source Edition: Utilizada para vrias linguagens de programao; FxCop: Utilizada para .Net; Gendarme: Ferramenta open-source utilizada para .Net; JSLint: Utilizada para JavaScript; Clang: Utilizada para Objective-C; Pychecker: Utilizada para cdigo Python.

Ferramentas para testes Ferramentas para testes ajudam as equipes de testes a registrar testes e executar os mesmos de forma automtica. A prtica de automatizar testes j utilizada pelas empresas de software. Porm os testes so automatizados a partir do momento que os requisitos se tornam estveis, pois o custo de manuteno dos testes automatizados oneroso. A as reas de testes ainda que possuem testes automatizados, parte de seus sistemas sofrem testes manuais. Uma vantagem da automatizao dos testes a possibilidade de poder colocar os testes a serem executados em horrios e em mquinas que esto ociosas. A aps o trmino dos testes avaliar se ocorreram falhas na execuo dos testes. Exemplos de ferramentas: IBM Rational Robot: Ferramenta paga utilizada para testes automatizados; BadBoy: Ferramenta para testes automatizados em pginas web. Possui verso paga e verso free; JUnit: um framework para testes unitrios em Java; Selenium: Ferramenta para testes automatizados utilizado em browser. Utilizado para testes integrados e aceitao; JMeter: Ferramenta para teste de performance, carga e stress. Utilizada para programas em Java; WebLoad: Ferramenta para teste de performance, carga e stress. Ferramentas para gerenciamento e apoio Ferramentas para gerenciamento de testes e controle de defeitos so normalmente utilizadas, sejam os testes automatizados ou no. Inicialmente as empresas quando iniciam um trabalho de registros de testes, defeitos, cenrios de testes, casos de testes, comeam troca de documentos. Porm com o aumento do volume das informaes e a necessidade de retirar informaes gerenciais e estatsticas essa forma de gerenciamento se torna invivel e necessrio utilizar uma ferramenta para gerenciamento. Algumas empresas desenvolvem suas prprias ferramentas, porm existe no mercado ferramentas destinadas a essa finalidade. Exemplos de ferramentas: TestLink: Ferramenta para gesto de testes; Mantis: Ferramenta para gesto de defeitos; Bugzilla Test Runner: Ferramenta para gesto de testes; Mercury Interactive Test Director: Ferramenta para gesto de testes;

CONCLUSO

O processo de desenvolvimento de software a cada dia se torna mais complexo. Sem a aplicao de tcnicas de verificao e validao durante todo o desenvolvimento do software existem grandes possibilidade do projeto de software fracassar. preciso aplicar verificaes e validaes j nas primeiras fases do projeto. Desde os levantamentos iniciais, as primeiras especificaes, os primeiros artefatos gerados. A aplicao da V & V ir garantir que as informaes levantadas e especificadas esto corretas e correntes com as necessidades. Garantir que no faltam informaes e que no existam informaes duvidosas sobre alguma coisa que aps determinado tempo possa vir a comprometer o projeto. Aparentemente parece uma coisa obvia verificar as coisas, porm a maioria das empresas no aplicam a V & V, se preocupando apenas com testes. Porm os testes apenas iro ocorrer aps o software j desenvolvido. Este momento tardio para identificao de problemas de especificaes, incorrendo em retrabalho e custos maiores. Para aplicar a V & V a empresa deve ter inicialmente seu processo de desenvolvimento definido. A partir do processo de desenvolvimento estabelecer os artefatos que deve ser gerados no final de cada etapa. Antes do prpria etapa ser iniciada deve ocorrer a V & V. A empresa deve criar uma metodologia de como atuar na aplicao da V & V, dar treinamento para os colaboradores e demonstrar a importncia para a qualidade do software, onde no final todas ganham. Para a V & V a empresa deve determinar se ir realizar inspeo individual ou em equipe, quais testes ir realizar, quem so as pessoas responsveis por estas atividades. necessrio a organizao das atividades em meio o processo de desenvolvimento. Caso a organizao no ocorra as atividades no sero inseridas na cultura da empresa. E necessrio grande apoio da diretoria para que isso de fato venha a dar resultados. Essas atividades no podem ser deixadas para depois ou menosprezadas. Uma empresa sem a cultura dessas atividades ou sem processos bem definidos ter dificuldade na implantao destas atividades. Neste caso recomenda-se a contratao de consultoria especializada para auxiliar neste trabalho. A empresa tambm deve ter cincia que mais atividades no processo levam mais tempo a serem realizadas. Porm elas sero benficas ao final de todo o projeto, pois a empresa ir economizar nas etapas seguintes e ir deduzir custos de retrabalhos e com clientes insatisfeitos. REFERNCIAS BARTIE, Alexandre. Garantia da Qualidade de Software: As melhores prticas de engenharia de software aplicadas sua empresa. Rio de Janeiro: Campus, 2002. p. 109-119. INTHURN, Cndida. Qualidade & Teste de Software. Visual Books, 2001. p. 51-66. KOSCIANSKI, Andr; SOARES, Michel dos Santos. Qualidade de Software: Aprenda as metodologias e tcnicas mais modernas para o desenvolvimento de software. So Paulo: Novatec Editora, 2006. p. 332-353. PFLEEGER, Shari Lawrence. Engenharia de Software: Teoria e Prtica. Traduo de Dino Franklin. So Paulo: Prentice Hall, 2004. 2 ed. p. 270-290.

SOMMERVILLE, Ian. Engenharia de Software. Traduo de Andr Maurcio de Andrade. So Paulo: Addison Wesley, 2003. 6 ed. p. 357-390. Wikipdia. List of tools for static code analysis. Disponvel em: <http://en.wikipedia.org/wiki/L ist_of_tools_for_static_code_analysis>. Acessado em: 27 jun 2012. Wikipdia. Teste de software. Disponvel em: <http://pt.wikipedia.org/wiki/Teste_de_software# Princ.C3.ADpios>. Acessado em: 27 jun 2012.