SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
Ambiente	
  de	
  integração	
  con1nua	
  
Ferramentas	
  e	
  soluções	
  para	
  
diminuir	
  a	
  complexidade	
  do	
  
desenvolvimento	
  	
  
Helder	
  da	
  Rocha	
  (helder@argonavis.com.br)	
  
TDC	
   2010	
  
Helder	
  da	
  Rocha	
  
•  Java,	
  since	
  1995	
  
•  Objec)ve-­‐C	
  &	
  iPhone	
  since	
  2008	
  
•  HTML,	
  JavaScript,	
  Web	
  
•  www.argonavis.com.br	
  
•  www.helderdarocha.com.br	
  
ObjeSvos	
  
•  Como	
  lidar	
  com	
  a	
  complexidade	
  crescente	
  do	
  
processo	
  de	
  desenvolvimento	
  
•  Que	
  ferramentas	
  e	
  soluções	
  existem	
  para	
  
isso?	
  
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á	
  
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	
  
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	
  
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	
  
Maven	
  (maven.apache.org)	
  
•  Gerencia	
  builds	
  e	
  repositórios	
  
Ant	
  +	
  Ivy	
  (ant.apache.org)	
  
•  Gerencia	
  builds	
  (Ant)	
  e	
  repositórios	
  
– AlternaSva	
  ao	
  Maven	
  
– Podem	
  ser	
  integrados	
  a	
  um	
  ambiente	
  Maven	
  
Hudson	
  (hlps://hudson.dev.java.net/)	
  
•  Integração	
  con1nua	
  +	
  Feedback	
  con1nuo	
  
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	
  
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	
  
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/	
  
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)	
  
Relatórios	
  de	
  violações	
  	
  
e	
  falhas	
  de	
  testes	
  
Detalhes	
  de	
  uma	
  
violação	
  de	
  esSlo	
  
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	
  
Sonar	
  (www.sonarsource.org)	
  
•  Instale	
  no	
  servidor	
  Web;	
  Gere	
  os	
  dados	
  via	
  plug-­‐in	
  do	
  
Maven	
  (mesmo	
  em	
  projetos	
  Ant)	
  
–  mvn	
  sonar:sonar	
  
Geração	
  de	
  javadoc	
  
•  UML	
  Graph	
  +	
  Javadoc	
  (a	
  cada	
  build)	
  
–  hlp://www.umlgraph.org	
  
–  hlp://www.graphviz.org	
  
Graphviz	
  (www.graphviz.org)	
  
•  Linguagem	
  declaraSva	
  para	
  gerar	
  gráficos	
  
•  Exemplo	
  com	
  UML	
  
	
  Animal	
  [label	
  =	
  "{Animal|+	
  name	
  :	
  stringl+	
  age	
  :	
  intl|+	
  die()	
  :	
  voidl}”]	
  
	
  
	
  
	
  
	
  
	
  edge	
  [arrowhead	
  =	
  "empty”	
  ]	
  
	
  Dog	
  -­‐>	
  Animal	
  
	
  Cat	
  -­‐>	
  Animal	
  
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)	
  	
  
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	
  
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	
  

Weitere ähnliche Inhalte

Was ist angesagt?

Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Bruno Grange
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsIgo Coelho
 
Apresentação sobre MVVMC
Apresentação sobre MVVMCApresentação sobre MVVMC
Apresentação sobre MVVMCAlisson Agiani
 
DOMinando JavaScript
DOMinando JavaScriptDOMinando JavaScript
DOMinando JavaScriptThiago Poiani
 
WebService Restful em Java
WebService Restful em JavaWebService Restful em Java
WebService Restful em Javaalexmacedo
 
As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!Diego Santos
 
Nadando em Dinheiro com jQuery
Nadando em Dinheiro com jQueryNadando em Dinheiro com jQuery
Nadando em Dinheiro com jQueryReinaldo Junior
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScriptCarlos Eduardo Kadu
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a InternetLeonardo Soares
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitFlávio Lisboa
 
CóPia De Minicurso Smsi
CóPia De Minicurso SmsiCóPia De Minicurso Smsi
CóPia De Minicurso Smsitaniamaciel
 
REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com JavaJugVale
 
Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)Ricardo Terra
 

Was ist angesagt? (20)

MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 
Apresentação sobre MVVMC
Apresentação sobre MVVMCApresentação sobre MVVMC
Apresentação sobre MVVMC
 
AJAX
AJAXAJAX
AJAX
 
DOMinando JavaScript
DOMinando JavaScriptDOMinando JavaScript
DOMinando JavaScript
 
introdução a ajax
introdução a ajaxintrodução a ajax
introdução a ajax
 
Framework Yii
Framework YiiFramework Yii
Framework Yii
 
WebService Restful em Java
WebService Restful em JavaWebService Restful em Java
WebService Restful em Java
 
As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!
 
Nadando em Dinheiro com jQuery
Nadando em Dinheiro com jQueryNadando em Dinheiro com jQuery
Nadando em Dinheiro com jQuery
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a Internet
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo Toolkit
 
CóPia De Minicurso Smsi
CóPia De Minicurso SmsiCóPia De Minicurso Smsi
CóPia De Minicurso Smsi
 
Minicurso Smsi
Minicurso SmsiMinicurso Smsi
Minicurso Smsi
 
REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com Java
 
Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)
 

Ähnlich wie Ambiente Integração Contínua

Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiFelipe Caputo
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiMayara Fernandes
 
[DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps![DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps!Camilla Gomes
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceGlobalcode
 
Quasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenhoQuasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenhoPatrick Monteiro
 
TDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureTDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureDr. Spock
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122Bruno Souza
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Ciclo de vida do desenvolvimento de software de ponta a ponta
Ciclo de vida do desenvolvimento de software de ponta a pontaCiclo de vida do desenvolvimento de software de ponta a ponta
Ciclo de vida do desenvolvimento de software de ponta a pontaRodrigo Kono
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAmazon Web Services LATAM
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemRodrigo Valerio
 
Web Tools Pt B R
Web Tools Pt  B RWeb Tools Pt  B R
Web Tools Pt B Rguestb9d145
 
Ferramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilFerramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilInael Rodrigues
 
Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Globalcode
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e HudsonRodrigo Branas
 

Ähnlich wie Ambiente Integração Contínua (20)

Continuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na NuvemContinuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na Nuvem
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em Delphi
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
 
[DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps![DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps!
 
Estratégias de migração para cloud
Estratégias de migração para cloudEstratégias de migração para cloud
Estratégias de migração para cloud
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open Source
 
ESX Tech Lives - DevOps
ESX Tech Lives - DevOpsESX Tech Lives - DevOps
ESX Tech Lives - DevOps
 
Quasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenhoQuasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenho
 
TDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureTDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & Azure
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Web Tools Pt Br
Web Tools Pt BrWeb Tools Pt Br
Web Tools Pt Br
 
Ciclo de vida do desenvolvimento de software de ponta a ponta
Ciclo de vida do desenvolvimento de software de ponta a pontaCiclo de vida do desenvolvimento de software de ponta a ponta
Ciclo de vida do desenvolvimento de software de ponta a ponta
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
 
Web Tools Pt B R
Web Tools Pt  B RWeb Tools Pt  B R
Web Tools Pt B R
 
Ferramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilFerramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento Ágil
 
Alm open source
Alm open sourceAlm open source
Alm open source
 
Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
 

Mehr von Helder da Rocha

Como criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.jsComo criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.jsHelder da Rocha
 
Transforming public data into thematic maps (TDC2019 presentation)
Transforming public data into thematic maps (TDC2019 presentation)Transforming public data into thematic maps (TDC2019 presentation)
Transforming public data into thematic maps (TDC2019 presentation)Helder da Rocha
 
TDC 2019: transformando 
dados
públicos
em mapas interativos
TDC 2019: transformando 
dados
públicos
em mapas interativosTDC 2019: transformando 
dados
públicos
em mapas interativos
TDC 2019: transformando 
dados
públicos
em mapas interativosHelder da Rocha
 
Padrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasPadrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasHelder da Rocha
 
Visualização de dados e a Web
Visualização de dados e a WebVisualização de dados e a Web
Visualização de dados e a WebHelder da Rocha
 
Eletrônica Criativa: criando circuitos com materiais alternativos
Eletrônica Criativa: criando circuitos com materiais alternativosEletrônica Criativa: criando circuitos com materiais alternativos
Eletrônica Criativa: criando circuitos com materiais alternativosHelder da Rocha
 
Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)Helder da Rocha
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8Helder da Rocha
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Helder da Rocha
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Helder da Rocha
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)Helder da Rocha
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Helder da Rocha
 
Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Helder da Rocha
 
Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Helder da Rocha
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)Helder da Rocha
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsHelder da Rocha
 
Threads 07: Sincronizadores
Threads 07: SincronizadoresThreads 07: Sincronizadores
Threads 07: SincronizadoresHelder da Rocha
 

Mehr von Helder da Rocha (20)

Como criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.jsComo criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.js
 
Transforming public data into thematic maps (TDC2019 presentation)
Transforming public data into thematic maps (TDC2019 presentation)Transforming public data into thematic maps (TDC2019 presentation)
Transforming public data into thematic maps (TDC2019 presentation)
 
TDC 2019: transformando 
dados
públicos
em mapas interativos
TDC 2019: transformando 
dados
públicos
em mapas interativosTDC 2019: transformando 
dados
públicos
em mapas interativos
TDC 2019: transformando 
dados
públicos
em mapas interativos
 
Padrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasPadrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemas
 
Visualização de dados e a Web
Visualização de dados e a WebVisualização de dados e a Web
Visualização de dados e a Web
 
Eletrônica Criativa: criando circuitos com materiais alternativos
Eletrônica Criativa: criando circuitos com materiais alternativosEletrônica Criativa: criando circuitos com materiais alternativos
Eletrônica Criativa: criando circuitos com materiais alternativos
 
Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8
 
Java 9, 10, 11
Java 9, 10, 11Java 9, 10, 11
Java 9, 10, 11
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
 
Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7
 
Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)
 
Curso de Java: Threads
Curso de Java: ThreadsCurso de Java: Threads
Curso de Java: Threads
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e Streams
 
Threads 07: Sincronizadores
Threads 07: SincronizadoresThreads 07: Sincronizadores
Threads 07: Sincronizadores
 
Threads 09: Paralelismo
Threads 09: ParalelismoThreads 09: Paralelismo
Threads 09: Paralelismo
 

Ambiente Integração Contínua

  • 1. Ambiente  de  integração  con1nua   Ferramentas  e  soluções  para   diminuir  a  complexidade  do   desenvolvimento     Helder  da  Rocha  (helder@argonavis.com.br)   TDC   2010  
  • 2. Helder  da  Rocha   •  Java,  since  1995   •  Objec)ve-­‐C  &  iPhone  since  2008   •  HTML,  JavaScript,  Web   •  www.argonavis.com.br   •  www.helderdarocha.com.br  
  • 3. ObjeSvos   •  Como  lidar  com  a  complexidade  crescente  do   processo  de  desenvolvimento   •  Que  ferramentas  e  soluções  existem  para   isso?  
  • 4. 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á  
  • 5. 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  
  • 6. 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  
  • 7. 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  
  • 8. Maven  (maven.apache.org)   •  Gerencia  builds  e  repositórios  
  • 9. Ant  +  Ivy  (ant.apache.org)   •  Gerencia  builds  (Ant)  e  repositórios   – AlternaSva  ao  Maven   – Podem  ser  integrados  a  um  ambiente  Maven  
  • 10. Hudson  (hlps://hudson.dev.java.net/)   •  Integração  con1nua  +  Feedback  con1nuo  
  • 11. 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  
  • 12. 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  
  • 13. 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/  
  • 14. 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)  
  • 15. Relatórios  de  violações     e  falhas  de  testes   Detalhes  de  uma   violação  de  esSlo  
  • 16. 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  
  • 17. Sonar  (www.sonarsource.org)   •  Instale  no  servidor  Web;  Gere  os  dados  via  plug-­‐in  do   Maven  (mesmo  em  projetos  Ant)   –  mvn  sonar:sonar  
  • 18. Geração  de  javadoc   •  UML  Graph  +  Javadoc  (a  cada  build)   –  hlp://www.umlgraph.org   –  hlp://www.graphviz.org  
  • 19. Graphviz  (www.graphviz.org)   •  Linguagem  declaraSva  para  gerar  gráficos   •  Exemplo  com  UML    Animal  [label  =  "{Animal|+  name  :  stringl+  age  :  intl|+  die()  :  voidl}”]            edge  [arrowhead  =  "empty”  ]    Dog  -­‐>  Animal    Cat  -­‐>  Animal  
  • 20. 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)    
  • 21. 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  
  • 22. 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