Universidade Federal de Pernambuco Ambiente para Integração Contínua Rafael Vanderlei de Souza...

Preview:

Citation preview

Universidade Federalde Pernambuco

Ambiente para Integração Ambiente para Integração ContínuaContínua

Rafael Vanderlei de Souzarvs@cin.ufpe.br

06/12/2008

Programa de Mestrado em Ciência da ComputaçãoIN1149 – Qualidade, Processos e Gestão

Universidade Federalde Pernambuco

AgendaAgendaIntroduçãoAmbiente de CIPráticaConclusõesReferências

2

Universidade Federalde Pernambuco

IntroduçãoIntrodução

3

Universidade Federalde Pernambuco

DefiniçãoDefinição

“Integração contínua é uma prática de desenvolvimento de software onde os membros de uma equipe integram seu trabalho freqüentemente (pelo menos uma vez por dia). Cada integração passa por um processo de build automatizado (incluindo testes) para detectar erros de integração o mais cedo possível.”

Martin Fowler.

4

Universidade Federalde Pernambuco

ObjetivosObjetivosAumentar a qualidade do software

◦ Testes automatizados◦ Inspeção automatizada

Reduzir riscos do projeto◦ Ter sempre um executável◦ Descobrir e corrigir erros rapidamente◦ Automatizar processos repetitivos e sujeitos a erros◦ Ter visibilidade do projeto facilmente

Tornar a integração um “nonevent”◦ Dedicar o tempo para tarefas mais importantes

5

Universidade Federalde Pernambuco

ObjetivosObjetivosSe integrar fosse tão simples assim...

6

Universidade Federalde Pernambuco

Visão GeralVisão Geral

7

A mágica por trás do botão Integrate...

Universidade Federalde Pernambuco

Visão GeralVisão Geral

8

Processo típico de CI...

Universidade Federalde Pernambuco

FerramentasFerramentas

9

Universidade Federalde Pernambuco

Ambiente de CIAmbiente de CI

10

Universidade Federalde Pernambuco

SubversionSubversion Sistema de controle de versão projetado para

resolver problemas existentes no CVS, como:◦ Falta de versionamento de diretórios;◦ Commits atômicos;◦ Entre outros.

Neste ambiente, o SVN será o repositório de código que será observado pelo servidor de Integração Contínua. ◦ Sempre que houver uma mudança neste repositório,

o servidor de CI irá gerar um novo build.

11

Universidade Federalde Pernambuco

JUnitJUnitFramework para escrever testes unitários

repetitíveis.

Instância em Java da arquitetura xUnit para frameworks de testes unitários.

Neste ambiente, usaremos JUnit para escrever, executar e reportar os resultados de testes unitários.

12

Universidade Federalde Pernambuco

CoberturaCoberturaFerramenta que executa uma análise

estática do código Java em busca de trechos de código que não estão sendo testados.

Neste ambiente, o Cobertura será utilizado para reportar os percentuais de código testado, buscando melhorar a qualidade dos testes escritos.

13

Universidade Federalde Pernambuco

FindBugsFindBugsFerramenta que executa uma análise

estática do código Java em busca de potenciais problemas críticos, como:◦ Ocorrência garantida de NullPointerException;◦ Possível divisão por zero;◦ Possível loop infinito.

Neste ambiente, o FindBugs será utilizado para reportar possíveis erros que podem não ter sido detectados durante a execução de testes unitários.

14

Universidade Federalde Pernambuco

PMDPMDFerramenta que executa uma análise

estática do código Java em busca de problemas menores, como:◦ Variáveis locais, atributos e métodos não utilizados;◦ Expressões muito complicadas, como ifs e loops

aninhados;◦ Duplicação de código.

Neste ambiente, o PMD será utilizado para reportar ocorrências como as anteriores, visando o aumento da qualidade do código.

15

Universidade Federalde Pernambuco

MavenMavenFerramenta de compreensão e

gerenciamento de projetos.

Gerencia dependências, geração de build e criação de relatórios e de documentação sobre o projeto.

Neste ambiente, toda a configuração para a geração do build está centralizada no Maven .

16

Universidade Federalde Pernambuco

HudsonHudsonServidor de Integração Contínua que vêm

sendo mais utilizado recentemente.

17

Fonte: http://www.wakaleo.com/polls/18-what-continuous-integration-server-are-you-using-in-2008

Universidade Federalde Pernambuco

HudsonHudsonMonitora a execução de tarefas repetíveis,

como geração de build.

Permite agendar para gerar builds periodicamente ou apenas quando houver mudanças no repositório.

Permite fornecer feedback através de RSS, Email ou Instant Messaging

Possui gráficos que facilitam a visualização do status do projeto.

18

Universidade Federalde Pernambuco

Prática...Prática...

19

Universidade Federalde Pernambuco

PráticaPrática

20

Universidade Federalde Pernambuco

PráticaPrática

21

Universidade Federalde Pernambuco

PráticaPrática

22

Universidade Federalde Pernambuco

PráticaPrática

23

Universidade Federalde Pernambuco

PráticaPrática

24

Universidade Federalde Pernambuco

PráticaPrática

25

Universidade Federalde Pernambuco

PráticaPrática

26

Universidade Federalde Pernambuco

PráticaPrática

27

Universidade Federalde Pernambuco

PráticaPrática

28

Universidade Federalde Pernambuco

PráticaPrática

29

Universidade Federalde Pernambuco

PráticaPrática

30

Universidade Federalde Pernambuco

PráticaPrática

31

Universidade Federalde Pernambuco

PráticaPrática

32

Universidade Federalde Pernambuco

PráticaPrática

33

Universidade Federalde Pernambuco

PráticaPrática

34

Universidade Federalde Pernambuco

ConclusõesConclusões

35

Universidade Federalde Pernambuco

ConclusõesConclusõesCom um ambiente de Integração Contínua,

podemos deixar de nos preocuparmos com a geração manual de build.

Reduzimos os recursos que antes estavam alocados para realizar tarefas manuais e repetitivas.

Reduzimos os riscos associados à execução de tarefas repetitivas e sujeitas as erros.

36

Universidade Federalde Pernambuco

ConclusõesConclusõesAumentamos a qualidade do produto,

utilizando ferramentas que automatizaram a execução de testes e a inspeção de código.

Reduzimos o tempo decorrido entre a detecção e a correção de falhas, com o rápido feedback gerado após a ocorrência de uma falha.

37

Universidade Federalde Pernambuco

ReferênciasReferências

38

Universidade Federalde Pernambuco

ReferênciasReferências Fowler, Martin. Continuous Integration.

◦ Disponível em http://martinfowler.com/articles/continuousIntegration.html .

◦ Último acesso em 30 de novembro de 2008. Duvall, Paul. Continuous Integration – Improving

Software Quality and Reducing Risk. Addison-Wesley, 2007.

Integração Contínua. Rafael Vanderlei – Apresentação de Seminário da disciplina de Qualidade do Mestrado no Cin/UFPE, 2008.2.

Hudson Home◦ Disponível em https://hudson.dev.java.net/ .◦ Último acesso em 30 de novembro de 2008.

39

Universidade Federalde Pernambuco

ReferênciasReferências Subversion Home

◦ Disponível em http://subversion.tigris.org.◦ Último acesso em 30 de novembro de 2008.

Maven Home◦ Disponível em http://maven.apache.org/ .◦ Último acesso em 30 de novembro de 2008.

Findbugs Home◦ Disponível em http://findbugs.sourceforge.net/.◦ Último acesso em 30 de novembro de 2008.

PMD Home◦ Disponível em http://pmd.sourceforge.net/.◦ Último acesso em 30 de novembro de 2008.

40

Universidade Federalde Pernambuco

ReferênciasReferências JUnit Home

◦ Disponível em http://www.junit.org/.◦ Último acesso em 30 de novembro de 2008.

Cobertura Home◦ Disponível em http://cobertura.sourceforge.net/.◦ Último acesso em 30 de novembro de 2008.

Jabber Home◦ Disponível em http://www.jabber.org/.◦ Último acesso em 30 de novembro de 2008.

41

Universidade Federalde Pernambuco

Ambiente para Integração Ambiente para Integração ContínuaContínua

Obrigado!Rafael Vanderlei de Souza

rvs@cin.ufpe.br

Programa de Mestrado em Ciência da ComputaçãoIN1149 – Qualidade, Processos e Gestão

Recommended