tdc 2010: ambiente de integração contínua

22
Ambiente de integração con1nua Ferramentas e soluções para diminuir a complexidade do desenvolvimento Helder da Rocha ([email protected]) TDC 2010

Upload: helder-da-rocha

Post on 07-Aug-2015

36 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: TDC 2010: Ambiente de Integração Contínua

Ambiente  de  integração  con1nua  

Ferramentas  e  soluções  para  diminuir  a  complexidade  do  

desenvolvimento    Helder  da  Rocha  ([email protected])  

TDC   2010  

Page 2: TDC 2010: Ambiente de Integração Contínua

Helder  da  Rocha  

•  Java,  since  1995  •  Objec)ve-­‐C  &  iPhone  since  2008  •  HTML,  JavaScript,  Web  •  www.argonavis.com.br  •  www.helderdarocha.com.br  

Page 3: TDC 2010: Ambiente de Integração Contínua

ObjeSvos  

•  Como  lidar  com  a  complexidade  crescente  do  processo  de  desenvolvimento  

•  Que  ferramentas  e  soluções  existem  para  isso?  

Page 4: TDC 2010: Ambiente de Integração Contínua

Lei  da  preservação  da  complexidade  

•  A  complexidade  não  desaparece!    •  Ela  se  muda  para  outro  lugar  e  se  esconde  – e  conSnua  a  crescer  por  lá  

Page 5: TDC 2010: Ambiente de Integração Contínua

Para  onde  foi  a  complexidade?  

•  Com  orientação  a  objetos,  ferramentas,  frameworks,  etc.  programar  ficou  mais  simples  

•  Mas  a  complexidade  aumentou  nos  processos  e  configuração  dos  ambientes  – Manter  repositórios,  versões,  dependências  –  Configuração,  metadados,  mapeamentos,  ligações  –  Integração,  protocolos,  adaptadores,  filtros,  proteções  

–  Processo,  build,  documentação,  testes  

Page 6: TDC 2010: Ambiente de Integração Contínua

Como  diminuir  a  complexidade?  

•  Nos  processos:  mais  feedback  – Metodologias  de  desenvolvimento  ágeis  –  Ferramentas  para  organizar  e  simplificar  o  processo  –  Ferramentas  para  coletar  e  organizar  informações  automaScamente:  métricas,  qualidade,  prazos,  etc.  

•  Na  configuração:  menos  duplicação  de  esforços  – Automa)zar  processos  como  build,  deploy,  versionamento,  etc.  

–  Integrar  ambientes  e  ferramentas  – Gerar  código  

Page 7: TDC 2010: Ambiente de Integração Contínua

Ferramentas  •  Build  – Ant  /  Ivy  /  Maven  

•  Qualidade  e  métricas  –  PMD  /  Checkstyle  /  Findbugs  –  Sonar  –  JUnit  /  Cobertura  

•  Documentação  –  Javadoc  via  Ant  e  Maven,  Graphviz  

•  Geração  de  código,  configuração  –  XSLT  /  XPath  

Page 8: TDC 2010: Ambiente de Integração Contínua

Maven  (maven.apache.org)  •  Gerencia  builds  e  repositórios  

Page 9: TDC 2010: Ambiente de Integração Contínua

Ant  +  Ivy  (ant.apache.org)  

•  Gerencia  builds  (Ant)  e  repositórios  – AlternaSva  ao  Maven  – Podem  ser  integrados  a  um  ambiente  Maven  

Page 10: TDC 2010: Ambiente de Integração Contínua

Hudson  (hlps://hudson.dev.java.net/)  

•  Integração  con1nua  +  Feedback  con1nuo  

Page 11: TDC 2010: Ambiente de Integração Contínua

Integração  con1nua  

Repositório            CVS      

cvs  commit  

diff  cvs  checkout  

Usuário  

prog  

prog  

sendmail  

logNNNN.xml  

<xml>  <xml>  <xml>  <xml>    

Pagina  Web  

GET  

Hudson   prog  

1.  Usuário  envia          alteração  

2.  CC  compara          sua  cópia  com          repositório  

3.  Se  diferente          faz  checkout  

4.  Monta  aplicação  e  roda  testes  5.  Se  sucesso,  incrementa  contador  6.  Gera  relatório,  envia  emails  

Page 12: TDC 2010: Ambiente de Integração Contínua

Hudson:  dashboard  

Tempo  desde  úlSma  falha  

Tempo  desde  úlSmo  sucesso  

Estado  dos  builds  (quanto  a  violações,  testes,  sucesso,  etc.)  

ÚlSmo  build  obteve  sucesso  

ÚlSmo  build  falhou  

Usuarios  CVS  que  fazem  commit  ou  montam  o  

projeto  

Page 13: TDC 2010: Ambiente de Integração Contínua

PMD  +  Checkstyle  +  Findbugs  •  Ferramentas  de  análise  estáSca  •  Verificam  qualidade  do  código  •  Geralmente  são  incluídas  no  ambiente  de  desenvolvimento  (Eclipse,  Netbeans)  – Mas  também  podem  ser  executadas  via  Ant,  Maven  e  incluídas  na  integração  con1nua  

•  Sonar  e  Hudson  são  óSmos  para  apresentar  resultados  de  PMD,  Checkstyle  e  Findbugs  

•  Onde  encontrar  –  hlp://pmd.sourceforge.net/  –  hlp://checkstyle.sourceforge.net  –  hlp://findbugs.sourceforge.net/  

Page 14: TDC 2010: Ambiente de Integração Contínua

Gráficos  de  tendências:  Hudson  

Clique  no  gráfico  para  detalhamento  (descrição  do  problema  e  link  para  arquivo  e  a  linha  do  código  onde  foi  verificado)  

Page 15: TDC 2010: Ambiente de Integração Contínua

Relatórios  de  violações    e  falhas  de  testes  

Detalhes  de  uma  violação  de  esSlo  

Page 16: TDC 2010: Ambiente de Integração Contínua

JUnit  e  Cobertura  

•  Seu  código  deve  ter  testes  unitários  •  Cobertura  idenSfica  o  nível  de  cobertura  desses  testes  (métricas  via  Sonar)  

•  Hudson  gera  gráfico  de  tendências  

Page 17: TDC 2010: Ambiente de Integração Contínua

Sonar  (www.sonarsource.org)  •  Instale  no  servidor  Web;  Gere  os  dados  via  plug-­‐in  do  

Maven  (mesmo  em  projetos  Ant)  –  mvn  sonar:sonar  

Page 18: TDC 2010: Ambiente de Integração Contínua

Geração  de  javadoc  •  UML  Graph  +  Javadoc  (a  cada  build)  –  hlp://www.umlgraph.org  –  hlp://www.graphviz.org  

Page 19: TDC 2010: Ambiente de Integração Contínua

Graphviz  (www.graphviz.org)  

•  Linguagem  declaraSva  para  gerar  gráficos  •  Exemplo  com  UML  

 Animal  [label  =  "{Animal|+  name  :  string\l+  age  :  int\l|+  die()  :  void\l}”]          

 edge  [arrowhead  =  "empty”  ]    Dog  -­‐>  Animal    Cat  -­‐>  Animal  

Page 20: TDC 2010: Ambiente de Integração Contínua

Graphviz  •  Graphviz  faz  bem  mais  que  UML  – Use  para  gerar  documentação  gráfica  complexa  –  Escreva  “dot  language”  (ou  gere  a  parSr  de  XML  com  XSLT/XPath)    

Page 21: TDC 2010: Ambiente de Integração Contínua

XSLT  e  XPath  (www.w3.org)  •  Pode  ser  usado  via  Java,  tarefa  do  Ant,  plug-­‐in  do  Maven  ou  linha  de  comando  

•  Use  XSLT/XPath  para  extrair  dados  de  arquivos  de  configuração  XML  para    –  Gerar  outros  arquivos  (de  qualquer  Spo)  –  Gerar  PDF  –  Gerar  documentação  com  tabelas  HTML  –  Gerar  documentação  gráfica  com  Graphviz  

XML  

Template  XSLT  

Processador  XSL  (Java,  Ant,  Maven)  

Resultado  

Page 22: TDC 2010: Ambiente de Integração Contínua

Conclusão  •  Vale  a  pena  invesSr  em  tornar  seu  ambiente  de  desenvolvimento  mais  automaSzado  – Menos  tempo  perdido  com  tarefas  burocrá)cas  –  Informações  atualizadas  e  precisas  sobre  o  estado  atual  do  desenvolvimento  e  qualidade  do  código  

–  Subsídios  para  tomadas  de  decisões  em  ambientes  que  adotam  metodologias  ágeis  

•  Há  várias  ferramentas  open-­‐source  que  podem  ajudar  nessa  tarefa,  como  –  Sonar,  Hudson,  Maven,  Ant+Ivy  –  XSLT/Framemarker,  Graphviz