SlideShare uma empresa Scribd logo
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008
Análise Estática de Código
Ricardo Terra
rterrabh [at] gmail.com
Análise Estática de Código 1
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008
CV
2Análise Estática de Código
Nome: Ricardo Terra
Email: rterrabh [at] gmail.com
www: ricardoterra.com.br
Twitter: rterrabh
Lattes: lattes.cnpq.br/ 0162081093970868
Ph.D. (UFMG/UWaterloo),
Post-Ph.D. (INRIA/Université Lille 1)
Background
Acadêmico: UFLA (desde 2014), UFSJ (1 ano), FUMEC (3 anos), UNIPAC (1 ano), FAMINAS (3 anos)
Profissional: DBA Eng. (1 ano), Synos (2 anos), Stefanini (1 ano)
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 3Análise Estática de Código
1. Introdução (1/2)
§  Construção de software não é uma tarefa simples
§  pode se tornar bastante complexa
§  Sujeita a diversos tipos de problemas
§  leva à obtenção de um produto diferente daquele que se
esperava
§  Vários fatores são causas desses problemas
§  contudo a maioria deles tem origem no erro humano
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 4Análise Estática de Código
1. Introdução (2/2)
§  A construção do software depende principalmente das pessoas
que o constroem
§  por isto, erros acabam surgindo mesmo com a utilização de
métodos e ferramentas de engenharia de software
§  Estes erros podem ser encontrados antes de o software entrar
em produção
§  uma série de atividades, em conjunto conhecidas como
"Verificação e Validação" ou "V&V" possuem esse objetivo
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 5Análise Estática de Código
2. Verificação e Validação (1/5)
§  Verificação e validação, segundo Boehm, podem parecer a
mesma coisa, mas não são
§  Verificação – estamos construindo o produto corretamente?
§  o projeto do software atende à sua especificação?
§  Validação – estamos construindo o produto correto?
§  o software realiza exatamente o que o usuário espera
que ele faça?
§  Confiança no software é o objetivo principal do processo de V&V
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 6Análise Estática de Código
2. Verificação e Validação (2/5)
§  Segundo Sommerville, existem duas abordagens
complementares para a verificação e validação do sistema:
§  Inspeções de software
§  analisam e verificam representações de sistema como
documentos de requisitos, diagramas e código fonte do
programa
§  revisões de código, análises automatizadas e verificação
formal são técnicas de V&V estáticas
§  Testes de software
§  envolvem executar uma implementação do software com
dados de teste para examinar as saídas e o
comportamento operacional
§  teste é uma técnica de V&V dinâmica
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 7Análise Estática de Código
2. Verificação e Validação (3/5)
§  Inspeções de software
§  Revisão de código
§  examinar o programa, em buscas de erros, omissões ou
anomalias, sem executá-lo
§  geralmente dirigidas por checklists de erros e heurísticas
§  Análises automatizadas
§  processo de revisão de código automatizado para alguns
erros e heurísticas
§  Verificação formal
§  verificar a correção dos algoritmos subjacentes a um
sistema com relação a uma certa propriedade ou
especificação formal, utilizando métodos formais
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 8Análise Estática de Código
2. Verificação e Validação (4/5)
§  Testes de software
§  Teste de defeitos
§  encontrar inconsistências entre um programa e sua
especificação, isto é, revelar defeitos
§  Teste de validação
§  tem a finalidade de mostrar que o software é o que o
cliente deseja
§  Contudo, conforme Dijkstra, o teste pode mostrar a presença de
erros, mas não demonstrar que não existam erros
remanescentes
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 9Análise Estática de Código
2. Verificação e Validação (5/5)
§  As técnicas de inspeções de software podem somente verificar
a correspondência entre um programa e sua especificação
§  Os testes podem verificar a correspondência entre um programa
e sua especificação e:
§  validar se a funcionalidade é a que o seu proprietário
realmente deseja
§  verificar propriedades emergentes como desempenho e
confiabilidade
§  Portanto, inspeções e testes não são abordagens concorrentes,
mas sim, complementares
§  cada uma tem vantagens e desvantagens sobre a outra
§  devem ser usadas em conjunto no processo de V&V
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 10Análise Estática de Código
3. Análise Estática de Código (AEC) (1/9)
§  AEC se refere à análise automatizada
§  que é uma das técnicas de inspeção de software no
processo de V&V
§  seu objetivo é reduzir o número de erros de um programa
§  faz isto chamando a atenção para anomalias do programa
§  geralmente erros de programação ou omissões
§  possíveis erros quando o programa fosse executado
§  exemplos comuns de anomalias:
§  bloco catch vazio
§  conexão ou fluxo não encerrado
§  perda de referência nula
§  comparação de objetos com '=='
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 11Análise Estática de Código
3. Análise Estática de Código (AEC) (2/9)
§  Verificação estática de código
§  é verificação realizada por uma ferramenta automatizada
(verificador) seguida de uma análise humana sobre os
resultados
§  não é necessário passar informações ao verificador
§  as informações necessárias são dedutíveis do código
fonte ou mesmo do código objeto
§  algumas ferramentas adotam anotações em código para
passar mais informações ao verificador
§  as anomalias encontradas podem não ser defeitos o que
justifica:
§  a análise humana
§  adoção de anotações
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 12Análise Estática de Código
3. Análise Estática de Código (AEC) (3/9)
§  Benefícios da utilização de um verificador estático:
1.  encontra erros e códigos de risco
2.  fornece um retorno objetivo aos programadores para ajudá-los
a reconhecer onde eles foram precisos e onde eles foram
desatentos
3.  fornece a um líder de projeto uma oportunidade para estudar o
código, o projeto e a equipe sob uma perspectiva diferente
4.  retira certas classes de defeitos, o que possibilita que a equipe
concentre-se mais em outras deficiências do projeto
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 13Análise Estática de Código
3.1. AEC: Linhas de Atuação (4/9)
§  Os verificadores estáticos de código podem verificar:
§  regras de estilo
§  erros
§  ambos
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 14Análise Estática de Código
3.1. AEC: Linhas de Atuação (5/9)
§  Verificador de regras de estilo (style checker, em inglês)
§  verifica a conformação de um código fonte à sua definição de
estilo de programação, por exemplo:
§  abertura de chaves
§  ordem de declaração
§  javadoc
§  atribuições em subexpressões
§  uso da referência this
§  visibilidade não explicitada
§  difere-se de um programa Beautifier
§  podem ajudar a prevenir certos tipos de erros e a melhorar a
qualidade do software
§  mas violações em regras de estilo não são
necessariamente erros
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 15Análise Estática de Código
3.1. AEC: Linhas de Atuação (6/9)
§  Verificador de erro (bug checker, em inglês)
§  uma ferramenta voltada para a detecção automática de erro,
por exemplo:
§  comparação de objetos sem utilizar equals
§  concatenação de strings em laços de repetição
§  fluxo não encerrado
§  com base nas tendências comuns dos desenvolvedores em
atrair defeitos que, em sua maioria, não são visíveis aos
compiladores
§  nem sempre os resultados são defeitos reais
§  mas podem ser vistos como um alerta
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 16Análise Estática de Código
3.1. AEC: Linhas de Atuação (7/9)
§  Existe algum problema em se utilizar, em um mesmo projeto, um
verificador de erro e um verificador de regras de estilo?
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 17Análise Estática de Código
3.2. AEC: Comparativo com outras técnicas de V&V (8/9)
§  Revisão de código
§  encontrou todos os tipos de defeitos encontrados por um
verificador de erro
§  disparidade em alguns tipos de erros, por exemplo:
§  "variáveis inicializadas, mas não utilizadas"
§  "claúsula if não necessária"
§  mostrou-se mais bem sucedida
§  pois detecta mais tipos de defeitos
§  logo, recomenda-se utilizar uma ferramenta de verificação de
erros antes de revisar o código
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 18Análise Estática de Código
3.2. AEC: Comparativo com outras técnicas de V&V (9/9)
§  Teste de software
§  técnica dinâmica, o que já faz com que espere tipos de erros
diferentes
§  defeitos lógicos
§  não houve um mesmo defeito que tenha sido encontrado por
testes e por uma ferramenta de verificação de erros
§  logo, recomenda-se a utilização de ambas as técnicas
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 19Análise Estática de Código
4. Ferramentas (1/9)
§  A idéia de ferramentas de análise estática não é nova
§  Em 1970, Stephen Johnson escreveu Lint
§  examinar programas C compilados sem erros
§  verificava erros que tenham escapado ao compilador
§  forçava as regras de tipos e várias restrições de
portabilidade
§  ferramentas descendentes de abordagem diferente, pois:
§  as linguagens atuais apresentam tipagem forte,
portabilidade e não utilizam várias características
propensas a erros
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 20Análise Estática de Código
4. Ferramentas: Características (2/9)
§  Existem importantes atributos que uma ferramenta de análise
estática deve ter:
§  Consistência (soundness, em inglês)
§  todo erro real é reportado pela análise
§  Integridade (completeness, em inglês)
§  todo erro reportado é um erro real, isto é, nenhum erro
reportado é um falso positivo
§  Utilidade (usefulness, em inglês)
§  se reporta erros que são relevantes
§  Uma ferramenta de análise estática é consistente, íntegra e útil?
§  não é consistente nem íntegra, assim como as demais
técnicas de V&V
§  ainda assim, esses atributos são cada vez mais visados
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 21Análise Estática de Código
4. Ferramentas: Técnicas (3/9)
§  A análise estática em aplicações Java podem atuar sobre o
código fonte e/ou bytecode
§  cada uma das versões tem suas vantagens
§  atuar sobre as duas versões, tirando proveito das vantagens
particulares de cada uma, apresenta-se como a melhor
solução
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 22Análise Estática de Código
4. Ferramentas: Principais ferramentas (4/9)
§  As ferramentas em negrito são abordadas nesta palestra:
§  Por que não Jlint, QJ-PRO e ESC/Java2?
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 23Análise Estática de Código
4. Ferramentas: Principais ferramentas (5/9)
§  Checkstyle
§  é uma ferramenta voltada à verificação de regras de estilo
§  ordem de declaração
§  padrão de nomenclatura
§  posição da claúsula default em instruções switch
§  atualmente, provê algumas funcionalidades de um
verificador de erro
§  é configurável permitindo customizar as regras por projeto
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 24Análise Estática de Código
4. Ferramentas: Principais ferramentas (6/9)
§  FindBugs
§  uma popular ferramenta voltada à verificação de erros
desenvolvida pela University of Maryland
§  provê suporte a mais de 250 padrões de erros
§  valor de retorno ignorado
§  comparação com nulo redundante
§  não utilização de operador de curto-circuito
§  mais de uma centena deles classificados como erros de
correção
§  permite que programadores escrevam seus próprios padrões
de erros
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 25Análise Estática de Código
4. Ferramentas: Principais ferramentas (7/9)
§  Klocwork Developer
§  é uma ferramenta voltada exclusivamente à verificação de
erros
§  além de encontrar defeitos
§  também procura por vulnerabilidades de segurança
§  executa métricas e análises arquiteturais
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 26Análise Estática de Código
4. Ferramentas: Principais ferramentas (8/9)
§  PMD
§  é uma ferramenta mista
§  começou como um simples verificador de regras de estilo
§  atualmente, já permite que programadores escrevam seus
próprios padrões de erros, assim como ocorre no FindBugs
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 27Análise Estática de Código
4. Ferramentas: Principais ferramentas (9/9)
§  Módulos de extensão para a versão mais atual da IDE Eclipse:
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 28Análise Estática de Código
5. Avaliação (1/5)
§  As tabelas a seguir apresentam uma breve descrição do defeito
e os resultados da aplicação de cada ferramenta
§  √ indica que alertou
§  - indica que não alertou
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 29Análise Estática de Código
5. Avaliação (2/5)
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 30Análise Estática de Código
5. Avaliação (3/5)
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 31Análise Estática de Código
5. Avaliação (4/5)
§  Falso positivo
§  ocorre quando se adota uma implementação pouco
convencional
§  ocorreu um único falso positivo em um único estudo de caso
§  uma excelente taxa de integridade
§  Se os alertas referem-se a erros reais, mas que os
desenvolvedores não o consideram importante
§  basta a ferramenta prover um filtro de quais problemas
devem ser verificados
§  Contudo, se os alertas referem-se a falso positivos, o problema
está na própria ferramenta
§  uma possível solução seria o uso de anotações
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 32Análise Estática de Código
5. Avaliação (5/5)
§  Um único estudo de caso não foi alertado por nenhuma
ferramenta
§  reforça que a ausência de alertas não implica na ausência
de erros
§  A existência de um erro real não alertado e um falso positivo,
somente nos remete ao conceito de que nenhum verificador
estático de código é consistente e íntegro
§  nenhum verificador pode nos assegurar que um programa
está correto - tal garantia não é possível
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 33Análise Estática de Código
6. Considerações Finais (1/5)
§  A análise de código-fonte automatizada é uma das técnicas de
inspeções de software
§  automatização de parte do checklist de uma revisão de
código manual
§  A revisão de código encontra todos os defeitos encontrados por
um verificador estático de código
§  disparidade de alertas em alguns tipos de defeitos
§  As ferramentas de análise estática automatizada são eficazes
em encontrar defeitos relacionados aos princípios de
programação estruturada e à manutenibilidade
§  uma excelente prática de programação defensiva
§  Por outro lado, os testes de software detectam defeitos
diferentes
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 34Análise Estática de Código
6. Considerações Finais (2/5)
§  Metodologia proposta para a qualidade de um projeto de
software:
1.  ferramenta de verificação estática sempre após a compilação
e antes de uma revisão de código manual
2.  assim o programa obtém uma indicação inicial de correção
adequada para a realização de testes
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 35Análise Estática de Código
6. Considerações Finais (3/5)
§  A ferramenta Checkstyle apresentou-se como a melhor
ferramenta de verificação de regras de estilo
§  A ferramenta Klocwork Developer foi a melhor ferramenta de
verificação de erros alertando sobre todos os erros
§  contudo proprietária, o que faz o FindBugs ser uma
excelente alternativa
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 36Análise Estática de Código
6. Considerações Finais (4/5)
§  As ferramentas verificadoras de regras de estilo tendem a
incorporar verificadores para outros propósitos
§  PMD e Checkstyle
§  Isso pode ser bom, por se tornarem mais abrangentes
§  evitar que acabe por não fazer nenhuma das funções
corretamente
§  Por outro lado, as ferramentas verificadoras de erros mantêm
seu foco
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 37Análise Estática de Código
6. Considerações Finais (5/5)
§  Nenhuma máquina pode substituir o bom senso, o sólido
conhecimento dos fundamentos, o pensamento claro e a
disciplina
§  Contudo, ferramentas de verificação estática de código podem
efetivamente ajudar os desenvolvedores e, a sua mais ampla
adoção, pode aumentar significativamente a qualidade do
software
Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 38Análise Estática de Código
Dúvidas?
???

Mais conteúdo relacionado

Mais procurados

X-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareX-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de Software
AlexandreBartie
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
Diemesleno Souza Carvalho
 
Exercício resolvido normalização
Exercício resolvido normalizaçãoExercício resolvido normalização
Exercício resolvido normalizaçãoTicianne Darin
 
PostgreSQL
PostgreSQLPostgreSQL
Estimativa de software usando pontos de função
Estimativa de software usando pontos de funçãoEstimativa de software usando pontos de função
Estimativa de software usando pontos de função
Claudio Martins
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
Sedu
 
Fundamentos de Pruebas de Software - Capítulo 3
Fundamentos de Pruebas de Software - Capítulo 3Fundamentos de Pruebas de Software - Capítulo 3
Fundamentos de Pruebas de Software - Capítulo 3
Professional Testing
 
Aula 6 - Qualidade de Software
Aula 6 - Qualidade de SoftwareAula 6 - Qualidade de Software
Aula 6 - Qualidade de Software
Leinylson Fontinele
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
Daniel Brandão
 
Sistemas Operacionais - Gnu/Linux Gerenciamento de Arquivos
Sistemas Operacionais - Gnu/Linux Gerenciamento de ArquivosSistemas Operacionais - Gnu/Linux Gerenciamento de Arquivos
Sistemas Operacionais - Gnu/Linux Gerenciamento de ArquivosLuiz Arthur
 
Aula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da InformaçãoAula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da Informação
Carlos Henrique Martins da Silva
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de software
Rondinelli Mesquita
 
Comando Traceroute
Comando TracerouteComando Traceroute
Comando Traceroute
Mayara Mônica
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
Alvaro Oliveira
 
Introdução à Qualidade de Software
Introdução à Qualidade de SoftwareIntrodução à Qualidade de Software
Introdução à Qualidade de Software
Cloves da Rocha
 
A linguagem de programação c
A linguagem de programação cA linguagem de programação c
A linguagem de programação cClausia Antoneli
 
Fundamentos de Testes de Software
Fundamentos de Testes de SoftwareFundamentos de Testes de Software
Fundamentos de Testes de Software
Álvaro Farias Pinheiro
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }
Mariana Camargo
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
vini_campos
 

Mais procurados (20)

X-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareX-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de Software
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Exercício resolvido normalização
Exercício resolvido normalizaçãoExercício resolvido normalização
Exercício resolvido normalização
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Estimativa de software usando pontos de função
Estimativa de software usando pontos de funçãoEstimativa de software usando pontos de função
Estimativa de software usando pontos de função
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 
Fundamentos de Pruebas de Software - Capítulo 3
Fundamentos de Pruebas de Software - Capítulo 3Fundamentos de Pruebas de Software - Capítulo 3
Fundamentos de Pruebas de Software - Capítulo 3
 
Aula 6 - Qualidade de Software
Aula 6 - Qualidade de SoftwareAula 6 - Qualidade de Software
Aula 6 - Qualidade de Software
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Sistemas Operacionais - Gnu/Linux Gerenciamento de Arquivos
Sistemas Operacionais - Gnu/Linux Gerenciamento de ArquivosSistemas Operacionais - Gnu/Linux Gerenciamento de Arquivos
Sistemas Operacionais - Gnu/Linux Gerenciamento de Arquivos
 
Aula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da InformaçãoAula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da Informação
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de software
 
Aula 3 - Política de Segurança da Informação (PSI)
Aula 3 - Política de Segurança da Informação (PSI)Aula 3 - Política de Segurança da Informação (PSI)
Aula 3 - Política de Segurança da Informação (PSI)
 
Comando Traceroute
Comando TracerouteComando Traceroute
Comando Traceroute
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
 
Introdução à Qualidade de Software
Introdução à Qualidade de SoftwareIntrodução à Qualidade de Software
Introdução à Qualidade de Software
 
A linguagem de programação c
A linguagem de programação cA linguagem de programação c
A linguagem de programação c
 
Fundamentos de Testes de Software
Fundamentos de Testes de SoftwareFundamentos de Testes de Software
Fundamentos de Testes de Software
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 

Semelhante a Análise Estática de Código

Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdf
MichaelArrais1
 
DevQA: Como medir qualidade de código ?
DevQA: Como medir qualidade de código ?DevQA: Como medir qualidade de código ?
DevQA: Como medir qualidade de código ?
Kamilla Queiroz Xavier
 
Melhoria da qualidade e padrões de código fonte utilizando ferramentas de aná...
Melhoria da qualidade e padrões de código fonte utilizando ferramentas de aná...Melhoria da qualidade e padrões de código fonte utilizando ferramentas de aná...
Melhoria da qualidade e padrões de código fonte utilizando ferramentas de aná...
Leandro Ugioni
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016
Bruno Maomeh
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
Roberto Nunes
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
minastestingconference
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
Samanta Cicilia
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
Matheus Fechine de Moura
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidade
rzauza
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e Validação
Joeldson Costa Damasceno
 
3 engenharia de software
3   engenharia de software3   engenharia de software
3 engenharia de software
Felipe Bugov
 
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOS
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOSOS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOS
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOS
Luiz Ladeira
 
Prototipação
PrototipaçãoPrototipação
Prototipação
Daniel Fernandes
 
Teste de software
Teste de software Teste de software
Teste de software
Allan Almeida de Araújo
 
Teste de software
Teste de softwareTeste de software
Teste de software
Rodrigo Cardoso Alves Fonte
 
Aula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdfAula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdf
HoctairBernardino
 
Qualidade de Software com Visual Studio 2012
Qualidade de Software com Visual Studio 2012Qualidade de Software com Visual Studio 2012
Qualidade de Software com Visual Studio 2012
Adriano Bertucci
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geralpaulo peres
 

Semelhante a Análise Estática de Código (20)

Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdf
 
DevQA: Como medir qualidade de código ?
DevQA: Como medir qualidade de código ?DevQA: Como medir qualidade de código ?
DevQA: Como medir qualidade de código ?
 
Melhoria da qualidade e padrões de código fonte utilizando ferramentas de aná...
Melhoria da qualidade e padrões de código fonte utilizando ferramentas de aná...Melhoria da qualidade e padrões de código fonte utilizando ferramentas de aná...
Melhoria da qualidade e padrões de código fonte utilizando ferramentas de aná...
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidade
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e Validação
 
3 engenharia de software
3   engenharia de software3   engenharia de software
3 engenharia de software
 
Rbt Group At Promise V3
Rbt Group At Promise V3Rbt Group At Promise V3
Rbt Group At Promise V3
 
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOS
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOSOS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOS
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOS
 
Prototipação
PrototipaçãoPrototipação
Prototipação
 
Teste de software
Teste de software Teste de software
Teste de software
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Aula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdfAula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdf
 
Qualidade de Software com Visual Studio 2012
Qualidade de Software com Visual Studio 2012Qualidade de Software com Visual Studio 2012
Qualidade de Software com Visual Studio 2012
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geral
 
Analise aula2
Analise aula2Analise aula2
Analise aula2
 

Mais de Ricardo Terra

Microsserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORMMicrosserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORM
Ricardo Terra
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)
Ricardo Terra
 
Análise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesAnálise Estática de Código: Aplicações
Análise Estática de Código: Aplicações
Ricardo Terra
 
Engenharia de Software: POC
Engenharia de Software: POCEngenharia de Software: POC
Engenharia de Software: POC
Ricardo Terra
 
Which Programming Language is the best one?
Which Programming Language is the best one?Which Programming Language is the best one?
Which Programming Language is the best one?
Ricardo Terra
 
Refactoring
RefactoringRefactoring
Refactoring
Ricardo Terra
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
Ricardo Terra
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática Computacional
Ricardo Terra
 
English---and LaTeX---Writing Tips
English---and LaTeX---Writing TipsEnglish---and LaTeX---Writing Tips
English---and LaTeX---Writing Tips
Ricardo Terra
 
Casamento de Padrões
Casamento de PadrõesCasamento de Padrões
Casamento de Padrões
Ricardo Terra
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)
Ricardo Terra
 
Segurança da Internet
Segurança da InternetSegurança da Internet
Segurança da Internet
Ricardo Terra
 
Java Net: Interagindo com a Internet
Java Net: Interagindo com a InternetJava Net: Interagindo com a Internet
Java Net: Interagindo com a Internet
Ricardo Terra
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
Ricardo Terra
 
Aula Zero
Aula ZeroAula Zero
Aula Zero
Ricardo Terra
 
Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)
Ricardo Terra
 
Apostila Lógica de Programação
Apostila Lógica de ProgramaçãoApostila Lógica de Programação
Apostila Lógica de Programação
Ricardo Terra
 
Apostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLTApostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLT
Ricardo Terra
 
Java JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDBJava JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDB
Ricardo Terra
 
Apostila UML
Apostila UMLApostila UML
Apostila UML
Ricardo Terra
 

Mais de Ricardo Terra (20)

Microsserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORMMicrosserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORM
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)
 
Análise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesAnálise Estática de Código: Aplicações
Análise Estática de Código: Aplicações
 
Engenharia de Software: POC
Engenharia de Software: POCEngenharia de Software: POC
Engenharia de Software: POC
 
Which Programming Language is the best one?
Which Programming Language is the best one?Which Programming Language is the best one?
Which Programming Language is the best one?
 
Refactoring
RefactoringRefactoring
Refactoring
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática Computacional
 
English---and LaTeX---Writing Tips
English---and LaTeX---Writing TipsEnglish---and LaTeX---Writing Tips
English---and LaTeX---Writing Tips
 
Casamento de Padrões
Casamento de PadrõesCasamento de Padrões
Casamento de Padrões
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)
 
Segurança da Internet
Segurança da InternetSegurança da Internet
Segurança da Internet
 
Java Net: Interagindo com a Internet
Java Net: Interagindo com a InternetJava Net: Interagindo com a Internet
Java Net: Interagindo com a Internet
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
Aula Zero
Aula ZeroAula Zero
Aula Zero
 
Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)
 
Apostila Lógica de Programação
Apostila Lógica de ProgramaçãoApostila Lógica de Programação
Apostila Lógica de Programação
 
Apostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLTApostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLT
 
Java JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDBJava JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDB
 
Apostila UML
Apostila UMLApostila UML
Apostila UML
 

Último

"Está o lascivo e doce passarinho " de Luís Vaz de Camões
"Está o lascivo e   doce passarinho " de Luís Vaz de Camões"Está o lascivo e   doce passarinho " de Luís Vaz de Camões
"Está o lascivo e doce passarinho " de Luís Vaz de Camões
goncalopecurto
 
APOSTILA JUIZ DE PAZ capelania cristã.pdf
APOSTILA JUIZ DE PAZ capelania cristã.pdfAPOSTILA JUIZ DE PAZ capelania cristã.pdf
APOSTILA JUIZ DE PAZ capelania cristã.pdf
CarlosEduardoSola
 
Apresentação Formação em Prevenção ao Assédio
Apresentação Formação em Prevenção ao AssédioApresentação Formação em Prevenção ao Assédio
Apresentação Formação em Prevenção ao Assédio
ifbauab
 
Roteiro para análise do Livro Didático .pptx
Roteiro para análise do Livro Didático .pptxRoteiro para análise do Livro Didático .pptx
Roteiro para análise do Livro Didático .pptx
pamellaaraujo10
 
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdfProjeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Bibliotecas Infante D. Henrique
 
Evolução - Teorias evolucionistas - Darwin e Lamarck
Evolução - Teorias evolucionistas - Darwin e LamarckEvolução - Teorias evolucionistas - Darwin e Lamarck
Evolução - Teorias evolucionistas - Darwin e Lamarck
luanakranz
 
Manejo de feridas - Classificação e cuidados.
Manejo de feridas - Classificação e cuidados.Manejo de feridas - Classificação e cuidados.
Manejo de feridas - Classificação e cuidados.
RafaelNeves651350
 
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptxSlides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
LuizHenriquedeAlmeid6
 
Correção do 1º Simulado Enem 2024 - Mês de Abril.pdf
Correção do 1º Simulado Enem 2024 - Mês de Abril.pdfCorreção do 1º Simulado Enem 2024 - Mês de Abril.pdf
Correção do 1º Simulado Enem 2024 - Mês de Abril.pdf
Edilson431302
 
Junho Violeta - Sugestão de Ações na Igreja
Junho Violeta - Sugestão de Ações na IgrejaJunho Violeta - Sugestão de Ações na Igreja
Junho Violeta - Sugestão de Ações na Igreja
Comando Resgatai
 
curso-de-direito-constitucional-gilmar-mendes.pdf
curso-de-direito-constitucional-gilmar-mendes.pdfcurso-de-direito-constitucional-gilmar-mendes.pdf
curso-de-direito-constitucional-gilmar-mendes.pdf
LeandroTelesRocha2
 
o que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sulo que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sul
CarlaInsStaub
 
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdfAPOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
RenanSilva991968
 
Caça-palavras - ortografia S, SS, X, C e Z
Caça-palavras - ortografia  S, SS, X, C e ZCaça-palavras - ortografia  S, SS, X, C e Z
Caça-palavras - ortografia S, SS, X, C e Z
Mary Alvarenga
 
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptxMÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
Martin M Flynn
 
Química orgânica e as funções organicas.pptx
Química orgânica e as funções organicas.pptxQuímica orgânica e as funções organicas.pptx
Química orgânica e as funções organicas.pptx
KeilianeOliveira3
 
Profissão de Sociólogo - Bourdieu et al.
Profissão de Sociólogo - Bourdieu et al.Profissão de Sociólogo - Bourdieu et al.
Profissão de Sociólogo - Bourdieu et al.
FelipeCavalcantiFerr
 
MAIO LARANJA EU DEFENDO AS CRIANÇAS E ADOLESCENTES
MAIO LARANJA EU DEFENDO AS CRIANÇAS E ADOLESCENTESMAIO LARANJA EU DEFENDO AS CRIANÇAS E ADOLESCENTES
MAIO LARANJA EU DEFENDO AS CRIANÇAS E ADOLESCENTES
estermidiasaldanhada
 
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdfAPOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
RenanSilva991968
 
Capitalismo a visão de John Locke........
Capitalismo a visão de John Locke........Capitalismo a visão de John Locke........
Capitalismo a visão de John Locke........
Lídia Pereira Silva Souza
 

Último (20)

"Está o lascivo e doce passarinho " de Luís Vaz de Camões
"Está o lascivo e   doce passarinho " de Luís Vaz de Camões"Está o lascivo e   doce passarinho " de Luís Vaz de Camões
"Está o lascivo e doce passarinho " de Luís Vaz de Camões
 
APOSTILA JUIZ DE PAZ capelania cristã.pdf
APOSTILA JUIZ DE PAZ capelania cristã.pdfAPOSTILA JUIZ DE PAZ capelania cristã.pdf
APOSTILA JUIZ DE PAZ capelania cristã.pdf
 
Apresentação Formação em Prevenção ao Assédio
Apresentação Formação em Prevenção ao AssédioApresentação Formação em Prevenção ao Assédio
Apresentação Formação em Prevenção ao Assédio
 
Roteiro para análise do Livro Didático .pptx
Roteiro para análise do Livro Didático .pptxRoteiro para análise do Livro Didático .pptx
Roteiro para análise do Livro Didático .pptx
 
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdfProjeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
 
Evolução - Teorias evolucionistas - Darwin e Lamarck
Evolução - Teorias evolucionistas - Darwin e LamarckEvolução - Teorias evolucionistas - Darwin e Lamarck
Evolução - Teorias evolucionistas - Darwin e Lamarck
 
Manejo de feridas - Classificação e cuidados.
Manejo de feridas - Classificação e cuidados.Manejo de feridas - Classificação e cuidados.
Manejo de feridas - Classificação e cuidados.
 
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptxSlides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
 
Correção do 1º Simulado Enem 2024 - Mês de Abril.pdf
Correção do 1º Simulado Enem 2024 - Mês de Abril.pdfCorreção do 1º Simulado Enem 2024 - Mês de Abril.pdf
Correção do 1º Simulado Enem 2024 - Mês de Abril.pdf
 
Junho Violeta - Sugestão de Ações na Igreja
Junho Violeta - Sugestão de Ações na IgrejaJunho Violeta - Sugestão de Ações na Igreja
Junho Violeta - Sugestão de Ações na Igreja
 
curso-de-direito-constitucional-gilmar-mendes.pdf
curso-de-direito-constitucional-gilmar-mendes.pdfcurso-de-direito-constitucional-gilmar-mendes.pdf
curso-de-direito-constitucional-gilmar-mendes.pdf
 
o que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sulo que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sul
 
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdfAPOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
 
Caça-palavras - ortografia S, SS, X, C e Z
Caça-palavras - ortografia  S, SS, X, C e ZCaça-palavras - ortografia  S, SS, X, C e Z
Caça-palavras - ortografia S, SS, X, C e Z
 
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptxMÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
 
Química orgânica e as funções organicas.pptx
Química orgânica e as funções organicas.pptxQuímica orgânica e as funções organicas.pptx
Química orgânica e as funções organicas.pptx
 
Profissão de Sociólogo - Bourdieu et al.
Profissão de Sociólogo - Bourdieu et al.Profissão de Sociólogo - Bourdieu et al.
Profissão de Sociólogo - Bourdieu et al.
 
MAIO LARANJA EU DEFENDO AS CRIANÇAS E ADOLESCENTES
MAIO LARANJA EU DEFENDO AS CRIANÇAS E ADOLESCENTESMAIO LARANJA EU DEFENDO AS CRIANÇAS E ADOLESCENTES
MAIO LARANJA EU DEFENDO AS CRIANÇAS E ADOLESCENTES
 
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdfAPOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
 
Capitalismo a visão de John Locke........
Capitalismo a visão de John Locke........Capitalismo a visão de John Locke........
Capitalismo a visão de John Locke........
 

Análise Estática de Código

  • 1. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 Análise Estática de Código Ricardo Terra rterrabh [at] gmail.com Análise Estática de Código 1
  • 2. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 CV 2Análise Estática de Código Nome: Ricardo Terra Email: rterrabh [at] gmail.com www: ricardoterra.com.br Twitter: rterrabh Lattes: lattes.cnpq.br/ 0162081093970868 Ph.D. (UFMG/UWaterloo), Post-Ph.D. (INRIA/Université Lille 1) Background Acadêmico: UFLA (desde 2014), UFSJ (1 ano), FUMEC (3 anos), UNIPAC (1 ano), FAMINAS (3 anos) Profissional: DBA Eng. (1 ano), Synos (2 anos), Stefanini (1 ano)
  • 3. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 3Análise Estática de Código 1. Introdução (1/2) §  Construção de software não é uma tarefa simples §  pode se tornar bastante complexa §  Sujeita a diversos tipos de problemas §  leva à obtenção de um produto diferente daquele que se esperava §  Vários fatores são causas desses problemas §  contudo a maioria deles tem origem no erro humano
  • 4. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 4Análise Estática de Código 1. Introdução (2/2) §  A construção do software depende principalmente das pessoas que o constroem §  por isto, erros acabam surgindo mesmo com a utilização de métodos e ferramentas de engenharia de software §  Estes erros podem ser encontrados antes de o software entrar em produção §  uma série de atividades, em conjunto conhecidas como "Verificação e Validação" ou "V&V" possuem esse objetivo
  • 5. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 5Análise Estática de Código 2. Verificação e Validação (1/5) §  Verificação e validação, segundo Boehm, podem parecer a mesma coisa, mas não são §  Verificação – estamos construindo o produto corretamente? §  o projeto do software atende à sua especificação? §  Validação – estamos construindo o produto correto? §  o software realiza exatamente o que o usuário espera que ele faça? §  Confiança no software é o objetivo principal do processo de V&V
  • 6. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 6Análise Estática de Código 2. Verificação e Validação (2/5) §  Segundo Sommerville, existem duas abordagens complementares para a verificação e validação do sistema: §  Inspeções de software §  analisam e verificam representações de sistema como documentos de requisitos, diagramas e código fonte do programa §  revisões de código, análises automatizadas e verificação formal são técnicas de V&V estáticas §  Testes de software §  envolvem executar uma implementação do software com dados de teste para examinar as saídas e o comportamento operacional §  teste é uma técnica de V&V dinâmica
  • 7. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 7Análise Estática de Código 2. Verificação e Validação (3/5) §  Inspeções de software §  Revisão de código §  examinar o programa, em buscas de erros, omissões ou anomalias, sem executá-lo §  geralmente dirigidas por checklists de erros e heurísticas §  Análises automatizadas §  processo de revisão de código automatizado para alguns erros e heurísticas §  Verificação formal §  verificar a correção dos algoritmos subjacentes a um sistema com relação a uma certa propriedade ou especificação formal, utilizando métodos formais
  • 8. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 8Análise Estática de Código 2. Verificação e Validação (4/5) §  Testes de software §  Teste de defeitos §  encontrar inconsistências entre um programa e sua especificação, isto é, revelar defeitos §  Teste de validação §  tem a finalidade de mostrar que o software é o que o cliente deseja §  Contudo, conforme Dijkstra, o teste pode mostrar a presença de erros, mas não demonstrar que não existam erros remanescentes
  • 9. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 9Análise Estática de Código 2. Verificação e Validação (5/5) §  As técnicas de inspeções de software podem somente verificar a correspondência entre um programa e sua especificação §  Os testes podem verificar a correspondência entre um programa e sua especificação e: §  validar se a funcionalidade é a que o seu proprietário realmente deseja §  verificar propriedades emergentes como desempenho e confiabilidade §  Portanto, inspeções e testes não são abordagens concorrentes, mas sim, complementares §  cada uma tem vantagens e desvantagens sobre a outra §  devem ser usadas em conjunto no processo de V&V
  • 10. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 10Análise Estática de Código 3. Análise Estática de Código (AEC) (1/9) §  AEC se refere à análise automatizada §  que é uma das técnicas de inspeção de software no processo de V&V §  seu objetivo é reduzir o número de erros de um programa §  faz isto chamando a atenção para anomalias do programa §  geralmente erros de programação ou omissões §  possíveis erros quando o programa fosse executado §  exemplos comuns de anomalias: §  bloco catch vazio §  conexão ou fluxo não encerrado §  perda de referência nula §  comparação de objetos com '=='
  • 11. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 11Análise Estática de Código 3. Análise Estática de Código (AEC) (2/9) §  Verificação estática de código §  é verificação realizada por uma ferramenta automatizada (verificador) seguida de uma análise humana sobre os resultados §  não é necessário passar informações ao verificador §  as informações necessárias são dedutíveis do código fonte ou mesmo do código objeto §  algumas ferramentas adotam anotações em código para passar mais informações ao verificador §  as anomalias encontradas podem não ser defeitos o que justifica: §  a análise humana §  adoção de anotações
  • 12. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 12Análise Estática de Código 3. Análise Estática de Código (AEC) (3/9) §  Benefícios da utilização de um verificador estático: 1.  encontra erros e códigos de risco 2.  fornece um retorno objetivo aos programadores para ajudá-los a reconhecer onde eles foram precisos e onde eles foram desatentos 3.  fornece a um líder de projeto uma oportunidade para estudar o código, o projeto e a equipe sob uma perspectiva diferente 4.  retira certas classes de defeitos, o que possibilita que a equipe concentre-se mais em outras deficiências do projeto
  • 13. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 13Análise Estática de Código 3.1. AEC: Linhas de Atuação (4/9) §  Os verificadores estáticos de código podem verificar: §  regras de estilo §  erros §  ambos
  • 14. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 14Análise Estática de Código 3.1. AEC: Linhas de Atuação (5/9) §  Verificador de regras de estilo (style checker, em inglês) §  verifica a conformação de um código fonte à sua definição de estilo de programação, por exemplo: §  abertura de chaves §  ordem de declaração §  javadoc §  atribuições em subexpressões §  uso da referência this §  visibilidade não explicitada §  difere-se de um programa Beautifier §  podem ajudar a prevenir certos tipos de erros e a melhorar a qualidade do software §  mas violações em regras de estilo não são necessariamente erros
  • 15. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 15Análise Estática de Código 3.1. AEC: Linhas de Atuação (6/9) §  Verificador de erro (bug checker, em inglês) §  uma ferramenta voltada para a detecção automática de erro, por exemplo: §  comparação de objetos sem utilizar equals §  concatenação de strings em laços de repetição §  fluxo não encerrado §  com base nas tendências comuns dos desenvolvedores em atrair defeitos que, em sua maioria, não são visíveis aos compiladores §  nem sempre os resultados são defeitos reais §  mas podem ser vistos como um alerta
  • 16. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 16Análise Estática de Código 3.1. AEC: Linhas de Atuação (7/9) §  Existe algum problema em se utilizar, em um mesmo projeto, um verificador de erro e um verificador de regras de estilo?
  • 17. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 17Análise Estática de Código 3.2. AEC: Comparativo com outras técnicas de V&V (8/9) §  Revisão de código §  encontrou todos os tipos de defeitos encontrados por um verificador de erro §  disparidade em alguns tipos de erros, por exemplo: §  "variáveis inicializadas, mas não utilizadas" §  "claúsula if não necessária" §  mostrou-se mais bem sucedida §  pois detecta mais tipos de defeitos §  logo, recomenda-se utilizar uma ferramenta de verificação de erros antes de revisar o código
  • 18. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 18Análise Estática de Código 3.2. AEC: Comparativo com outras técnicas de V&V (9/9) §  Teste de software §  técnica dinâmica, o que já faz com que espere tipos de erros diferentes §  defeitos lógicos §  não houve um mesmo defeito que tenha sido encontrado por testes e por uma ferramenta de verificação de erros §  logo, recomenda-se a utilização de ambas as técnicas
  • 19. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 19Análise Estática de Código 4. Ferramentas (1/9) §  A idéia de ferramentas de análise estática não é nova §  Em 1970, Stephen Johnson escreveu Lint §  examinar programas C compilados sem erros §  verificava erros que tenham escapado ao compilador §  forçava as regras de tipos e várias restrições de portabilidade §  ferramentas descendentes de abordagem diferente, pois: §  as linguagens atuais apresentam tipagem forte, portabilidade e não utilizam várias características propensas a erros
  • 20. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 20Análise Estática de Código 4. Ferramentas: Características (2/9) §  Existem importantes atributos que uma ferramenta de análise estática deve ter: §  Consistência (soundness, em inglês) §  todo erro real é reportado pela análise §  Integridade (completeness, em inglês) §  todo erro reportado é um erro real, isto é, nenhum erro reportado é um falso positivo §  Utilidade (usefulness, em inglês) §  se reporta erros que são relevantes §  Uma ferramenta de análise estática é consistente, íntegra e útil? §  não é consistente nem íntegra, assim como as demais técnicas de V&V §  ainda assim, esses atributos são cada vez mais visados
  • 21. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 21Análise Estática de Código 4. Ferramentas: Técnicas (3/9) §  A análise estática em aplicações Java podem atuar sobre o código fonte e/ou bytecode §  cada uma das versões tem suas vantagens §  atuar sobre as duas versões, tirando proveito das vantagens particulares de cada uma, apresenta-se como a melhor solução
  • 22. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 22Análise Estática de Código 4. Ferramentas: Principais ferramentas (4/9) §  As ferramentas em negrito são abordadas nesta palestra: §  Por que não Jlint, QJ-PRO e ESC/Java2?
  • 23. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 23Análise Estática de Código 4. Ferramentas: Principais ferramentas (5/9) §  Checkstyle §  é uma ferramenta voltada à verificação de regras de estilo §  ordem de declaração §  padrão de nomenclatura §  posição da claúsula default em instruções switch §  atualmente, provê algumas funcionalidades de um verificador de erro §  é configurável permitindo customizar as regras por projeto
  • 24. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 24Análise Estática de Código 4. Ferramentas: Principais ferramentas (6/9) §  FindBugs §  uma popular ferramenta voltada à verificação de erros desenvolvida pela University of Maryland §  provê suporte a mais de 250 padrões de erros §  valor de retorno ignorado §  comparação com nulo redundante §  não utilização de operador de curto-circuito §  mais de uma centena deles classificados como erros de correção §  permite que programadores escrevam seus próprios padrões de erros
  • 25. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 25Análise Estática de Código 4. Ferramentas: Principais ferramentas (7/9) §  Klocwork Developer §  é uma ferramenta voltada exclusivamente à verificação de erros §  além de encontrar defeitos §  também procura por vulnerabilidades de segurança §  executa métricas e análises arquiteturais
  • 26. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 26Análise Estática de Código 4. Ferramentas: Principais ferramentas (8/9) §  PMD §  é uma ferramenta mista §  começou como um simples verificador de regras de estilo §  atualmente, já permite que programadores escrevam seus próprios padrões de erros, assim como ocorre no FindBugs
  • 27. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 27Análise Estática de Código 4. Ferramentas: Principais ferramentas (9/9) §  Módulos de extensão para a versão mais atual da IDE Eclipse:
  • 28. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 28Análise Estática de Código 5. Avaliação (1/5) §  As tabelas a seguir apresentam uma breve descrição do defeito e os resultados da aplicação de cada ferramenta §  √ indica que alertou §  - indica que não alertou
  • 29. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 29Análise Estática de Código 5. Avaliação (2/5)
  • 30. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 30Análise Estática de Código 5. Avaliação (3/5)
  • 31. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 31Análise Estática de Código 5. Avaliação (4/5) §  Falso positivo §  ocorre quando se adota uma implementação pouco convencional §  ocorreu um único falso positivo em um único estudo de caso §  uma excelente taxa de integridade §  Se os alertas referem-se a erros reais, mas que os desenvolvedores não o consideram importante §  basta a ferramenta prover um filtro de quais problemas devem ser verificados §  Contudo, se os alertas referem-se a falso positivos, o problema está na própria ferramenta §  uma possível solução seria o uso de anotações
  • 32. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 32Análise Estática de Código 5. Avaliação (5/5) §  Um único estudo de caso não foi alertado por nenhuma ferramenta §  reforça que a ausência de alertas não implica na ausência de erros §  A existência de um erro real não alertado e um falso positivo, somente nos remete ao conceito de que nenhum verificador estático de código é consistente e íntegro §  nenhum verificador pode nos assegurar que um programa está correto - tal garantia não é possível
  • 33. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 33Análise Estática de Código 6. Considerações Finais (1/5) §  A análise de código-fonte automatizada é uma das técnicas de inspeções de software §  automatização de parte do checklist de uma revisão de código manual §  A revisão de código encontra todos os defeitos encontrados por um verificador estático de código §  disparidade de alertas em alguns tipos de defeitos §  As ferramentas de análise estática automatizada são eficazes em encontrar defeitos relacionados aos princípios de programação estruturada e à manutenibilidade §  uma excelente prática de programação defensiva §  Por outro lado, os testes de software detectam defeitos diferentes
  • 34. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 34Análise Estática de Código 6. Considerações Finais (2/5) §  Metodologia proposta para a qualidade de um projeto de software: 1.  ferramenta de verificação estática sempre após a compilação e antes de uma revisão de código manual 2.  assim o programa obtém uma indicação inicial de correção adequada para a realização de testes
  • 35. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 35Análise Estática de Código 6. Considerações Finais (3/5) §  A ferramenta Checkstyle apresentou-se como a melhor ferramenta de verificação de regras de estilo §  A ferramenta Klocwork Developer foi a melhor ferramenta de verificação de erros alertando sobre todos os erros §  contudo proprietária, o que faz o FindBugs ser uma excelente alternativa
  • 36. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 36Análise Estática de Código 6. Considerações Finais (4/5) §  As ferramentas verificadoras de regras de estilo tendem a incorporar verificadores para outros propósitos §  PMD e Checkstyle §  Isso pode ser bom, por se tornarem mais abrangentes §  evitar que acabe por não fazer nenhuma das funções corretamente §  Por outro lado, as ferramentas verificadoras de erros mantêm seu foco
  • 37. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 37Análise Estática de Código 6. Considerações Finais (5/5) §  Nenhuma máquina pode substituir o bom senso, o sólido conhecimento dos fundamentos, o pensamento claro e a disciplina §  Contudo, ferramentas de verificação estática de código podem efetivamente ajudar os desenvolvedores e, a sua mais ampla adoção, pode aumentar significativamente a qualidade do software
  • 38. Ricardo Terra (rterrabh [at] gmail.com) Outubro, 2008 38Análise Estática de Código Dúvidas? ???