SlideShare a Scribd company logo
1 of 74
Application Lifecycle Management
com ferramentas Open Source
Minicurso MC-122 Globalcode

Bruno Souza
Evangelista Java e Open Source
ToolsCloud
@brjavaman
Palestrantes
Bruno Souza
bruno@javaman.com.br
@brjavaman - http://java.mn
Programador, Fundador da ToolsCloud
http://www.toolscloud.com

Material e Slides
Vinicius Senger

Kleber Xavier

vinicius@globalcode.com.br
@vsenger
Programador, Fundador
Globalcode

kleber@globalcode.com.br
Instrutor e Arquiteto de
Software
Globalcode
Lembretes!
Curso AA1 online: ALM a fundo!
http://www.globalcode.com.br/treinamentos/modulos/alm-testes

Quer experimentar as ferramentas da ToolsCloud?
Quer fazer parte da lista de discussoes sobre
OpenALM?
• http://jav.mn/tcgratis
ALM – O que é?
Application Lifecycle Management: gerenciamento contínuo
do software;
Casamento da gestão de negócio com engenharia de
software;
Requer ferramentas integradas para gerenciar:
Requisitos;
Repositório de código;
Construção;
Arquitetura e codificação;
Testes e qualidade
Versões e componentes
ALM – Por que?
Vantagens na adoção;
Rastreabilidade e dados post-hoc;
Gerenciamento integrado;
Simplificação nos processos;
Agilidade na construção do software;
Aumento da reusabilidade;
Diminuição dos riscos;
ALM
• Independente de metodologia, arquitetura e tecnologia
toda empresa se beneficia muito com ALM
• Rastreabilidade, transparência, comunicação
• ALM = é como álbum de fotografia do seu software,
com retratos tirados automaticamente a cada
mudança, falha, novo requisito, novo release, etc.
• Todo mundo sai ganhando: bom para o developer,
gerente, arquiteto, Scrum Master, P.O., V.P., CIO, CTO,
Asponi, etc.
Ferramentas
• Existem várias soluções de ALM no mercado:
• Microsoft - Team Foundation Server
• IBM - Rational Team Concert
• Atlassian - Jira
• Rally Software
• Collabnet - TeamForge
• HP - Quality Center
• VersionOne
Open Source
Liberdade de escolha de
fornecedores
Uso livre: excelente para
pequenos e médios times
Possibilidade de suporte local
As ferramentas mais utilizadas pelos
desenvolvedores
Comunidade de plugins e ferramentas
Disponível para parceiros e empresas contratadas
Repositórios de Código

Fonte: ZeroTurnaround
Developer Productivity Report 2013
Integração Contínua

Fonte: ZeroTurnaround
Developer Productivity Report 2013
Issue
Trackers

Fonte: ZeroTurnaround
Developer Productivity Report 2013
Efeito na
Previsibilidade
dos Projetos

Fonte: ZeroTurnaround
Developer Productivity Report 2013

(apenas algumas ferramentas foram comparadas)
O que os “Rock Stars” usam?

Fonte: ZeroTurnaround
Developer Productivity Report 2013
(apenas algumas ferramentas foram comparadas)
ALM – ferramentas
Pilha ALM open-source que usamos:
●

Pilha ALM Open Source na nuvem

●

Ambiente montado em minutos

●

Softwares atualizados e suporte

●

Não precisa de novos servidores na sua empresa!

●

●

Redmine, SVN, GIT, Hudson, Nexus integrados com LDAP:
importante diferencial
Experimente online as ferramentas desse mini-curso:
●

https://demo.toolscloud.net

●

user: toolscloud senha: toolscloud
ALM
1Novo projeto
2 Redmine

2 Git

2 Jenkins

3 Requisitos

4 Codificação

5 Build & Testes

10

Bugs
e Melhorias

9Produção

6 Release
7 Nexus
8 Homologação

Deployment Contínuo
ALM – 1a Semana

1. Gestão de componentes 3os com Nexus
2. Testes
3. Integração contínua
ALM – 1o Mês

1. Testes regressivos
2. Deployment contínuo básico
3. Gestão dos seus próprios componentes com Nexus
Depois

1. Testes avançados
2. Deployment contínuo avançado
3. Code review contínuo
O planejamento inicial
Problema:
Organizar os requisitos em entregas
Atribuir os requisitos para seus desenvolvedores
Acompanhar a evolução do desenvolvimento

Solução:
Utilizar um gerenciador de issues, como o Redmine
Processo – passo 1
requisitos e releases

stakeholder
Redmine
• Gerenciamento de Requisitos com:
• Gestão de pendências;
• Gerenciamento de horas gastas / time tracking;
• Integração com SCM;
• Conceito de projetos e sub-projetos;
• Fórum, wiki, arquivos, news, calendário, gantt chart
e sistema de segurança;
• Software open-source construído em Ruby on Rails;
• Centenas de plug-ins e módulos adicionais;
• Muitas possibilidades de customização;
Redmine
• Após login, temos dois principais itens: Projects, para
entrar em um projeto e Administration para config.
geral:

Home
A organização do código fonte
Problema:
Compartilhar o código fonte entre os
desenvolvedores do projeto
Manter o histórico de alterações

Solução:
Utilizar um repositório de código fonte como o Git
Processo – passo 2
requisitos e releases

stakeholder

desenvolvedor

código fonte

visualização
do histórico
Versionamento
• No mundo open-source os destaques são:
• CVS: sistema mais antigo e precário, porém, ainda
muito utilizado. Trabalha com protocolo proprietário;
• Subversion: evolução do CVS com disponibilização
via HTTP (além de protocolo proprietário) e alta
performance para versionamento;
• GIT: mais moderno ainda, por se tratar de um
repositório distribuído. Tem muitas vantagens, mas
demanda mais conhecimento do usuário;
Versionamento
• “Qualidade” dos commits
• Cuidar bem das mensagens
• Independente de decisão, escolha entre SVN e GIT!
• GIT File System?
• Hooks & ALM
Introdução ao Subversion
• Subversion é um repositório client / server, não
distribuído;
• É mantido pelo grupo Apache:
• subversion.apache.org
• Instalação e administração simples;
• Não requer conhecimentos avançados do usuário;
• Excelente performance para gerar versões / cópias;
• Pode disponibilizar dados por protocolo proprietário ou
por HTTP / HTTPS;
Estrutura de trabalho
• Convencionalmente trabalhamos com:
• trunk (tronco): uma pasta que contém os arquivos de
desenvolvimento do projeto.
• branch (galho): são linhas concorrentes de desenvolvimento do
projeto independentes;
• tag (etiqueta): são versões releases efetivos de um projeto.

1Trunk
3Tag

2Branch
GIT
• Distribuído: no lugar de checkout você clona o
repositório
• Seus commits são locais, portanto você pode trabalhar
offline
• Verbos: add commit log diff status branch merge push
• Entre offline e online vários commits!
• GIT ou Subversion?
Integração com Redmine
• Navegar nos arquivos do SVN via Web clicando no
item Repository:
Integração com Redmine
• E o recurso mais útil é a possibilidade de você
referenciar as Issues nas mensagens de commit;
cd /home/almadmin/projetos-svn/projeto1/trunk
touch novo-arquivo.txt
svn commit –m “Correçao de problema de encoding da IssueID #2”
Gerenciamento das dependências
Problema:
Padronizar as bibliotecas de terceiros utilizadas pelo
projeto
Disponibilizar as bibliotecas utilizadas para a equipe
de desenvolvimento

Solução:
Utilizar uma ferramenta de build com suporte a
gerenciamento de dependências como o Maven
Utilizar um gerenciador de repositórios como o Nexus
Processo – passo 3
requisitos e releases

visualização
do histórico
stakeholder
build

dependências

desenvolvedor

código fonte
Introdução Nexus
• O Maven pode baixar automaticamente bibliotecas da
Internet (se open-source);
• Isso é excelente para o desenvolvimento de pequenos
times, agora se tivermos um time de 100
desenvolvedores criando projetos Maven que fazem
downloads da Internet?
• Fatalmente teremos um problema de rede até que
todos os Mavens terminem seus downloads!
Introdução Nexus
• Para ajudar a solucionar este tipo de problema contamos
com Gerenciadores de Repositórios, que
desempenham um papel de proxy para os demais:
Developer

Hudson
Build com Maven

jar: log4j, hibernate, spring etc.
Nexus
Internet
Introdução ao Nexus
• O Nexus faz o download centralizado dos
componentes fazendo um cache que ele utilizará para
servir aos demais desenvolvedores;
• Além do papel de cache, o Nexus também pode
catalogar o componentes e artefatos da sua empresa,
do seu negócio;
• Isso facilita bastante o reuso entre equipes;
• Maven + Nexus + Hudson: parceria perfeita!
Integração entre módulos
Problema:
Garantir que alterações em um dos módulos não
quebrem o funcionamento de outros módulos
Notificar os responsáveis em caso de quebra, o mais
rapidamente possível

Solução:
Utilizar uma ferramenta de integração contínua como
o Jenkins
Processo – parte 4
requisitos e releases

stakeholder

build

visualização
do histórico
integração contínua

dependências

desenvolvedor

código fonte
Integração Continua
• Apresentamos o Redmine com SCM integrado.
• Desta forma podemos ter um time de
desenvolvimento compartilhando o mesmo servidor
SCM para desenvolver as Issues do projeto;
• Será que isso é o suficiente para nossa necessidade?
• NÃO! Imagine que vários desenvolvedores podem
fazer commit de código no fim do dia resultando em
um código não-compilável;
Introdução ao Hudson / Jenkins
●

●

Hudson/Jenkins são servidores open-source de integração
continua
Um “Continous integration server / CI server” pode
desempenhar várias tarefas como:
●

●

Build e teste;

●

Publicação de resultados;

●

●

Checkout de código-fonte;

Comunicação com membros do time;

Na prática: um agendador de tarefas de construção de
softwares altamente customizável;
Introdução ao Hudson / Jenkins
• Fácil instalação e configuração;
• Interface é web based;
• Pode fazer builds distribuídos;
• Relatório de teste unitário;
• Notificação do estado dos builds;
• Notificação em caso de quebra;
Introdução ao Hudson / Jenkins
• Arquitetura extensível baseada em plugins com mais de
150 de plugins disponíveis;
• Por padrão vem com 4 plugins instalados:
• CVS
• SVN
• Maven
• SSH
Criando Jobs
• Basicamente o Hudson
pode trabalhar com
projetos livres ou Maven;
• Maior parte dos casos
utilizamos Maven ou Ant;
• Maven é o mais simples
de se usar!
Criando Jobs

•Em seguida configuramos o
job indicando principalmente
o repositório para checkout
do projeto!
Criando Jobs

Podemos clicar em Build
Now e Hudson vai iniciar o
checkout do código e
depois vai disparar o build
Maven!
Dashboard
• O dashboard traz as informações sobre os diversos
jobs / projetos configurados;
• Este ícone indica a estabilidade dos builds:
Reutilização de módulos
Problema:
Disponibilizar os módulos desenvolvidos para reuso
entre as equipes

Solução:
Utilizar uma ferramenta de gerenciamento de
repositórios como o Nexus
Processo – parte 5
requisitos e releases

stakeholder
build

visualização
do histórico

integração contínua
dependências

desenvolvedor

código fonte

publicação de
artefatos
Configurando Maven
• Devemos adicionar esta configuração em um arquivo
settings.xml que ficará no diretório .m2 do usuário:
Configurando Maven
• Para que o Maven possa fazer deployment de
artefatos no Nexus:
Qualidade do código
Problema:
Garantir que as convenções e boas práticas estão
sendo seguidas pelos desenvolvedores
Visualizar as violações e a evolução da qualidade
estrutural do código

Solução:
Utilizar uma ferramenta de análise estática do código
como o Sonar
Processo – parte 6
requisitos e releases

stakeholder
build

visualização
do histórico

integração contínua
dependências

desenvolvedor

código fonte

publicação de
artefatos

inspeção
Implantação em produção
Problema:
Implantar um módulo aprovado em produção

Solução:
Utilizar a ferramenta de integração contínua para
fazer o deployment contínuo
Processo final
requisitos e releases

stakeholder
build

visualização
do histórico

integração contínua
dependências

desenvolvedor

código fonte

inspeção

deploy
publicação de
artefatos

servidor
Outras ferramentas
Junit - Testes unitários
Selenium - Testes de interface Web
Jmeter - Testes de carga
TestLink - Gerenciamento de casos de teste
Vagrant – Automatização de servidor de desenvolvimento
Chef – Automação de infraestrutura
Demonstração

Experimente a demonstração por contra própria:
https://demo.toolscloud.net
User: toolscloud - Senha: toolscloud
Conclusões
●

●

●

As ferramentas Maven, Nexus, Hudson/Jenkins, Redmine e
Subversion formam uma poderosa solução de ALM;
Todas as ferramentas são open-source;
Este ambiente é agnóstico de linguagens, e funciona para
projetos Delphi, C, C++, Ruby, PHP e outros;

●

Muitas possibilidades de customização;

●

A ToolsCloud oferece este ambiente como serviço da nuvem
Lembretes!
Curso AA1 online: ALM a fundo!
http://www.globalcode.com.br/treinamentos/modulos/alm-testes

Quer experimentar as ferramentas da ToolsCloud?
Quer fazer parte da lista de discussoes sobre
OpenALM?
• http://jav.mn/tcgratis
Obrigado!
●

Vinicius Senger
vinicius@globalcode.com.br
@vsenger
www.globalcode.com.br

●

Bruno Souza
bruno@javaman.com.br
@brjavaman
www.toolscloud.com
Dúvidas

?
vinicius@globalcode.com.br
kleber@globalcode.com.br
bruno@javaman.com.br
Slides Extras
Veja nos slides a seguir informações extras sobre
como configurar algumas das ferramentas citadas
nesse mini-curso.
Redmine
• Download e Instalação
• www.redmine.org
• Precisa de Ruby 1.8, Rails 2.3.5, Rack 1.0.1,
RubyGems 1.8, Rake, i18n, libmysql-ruby,
libopenssl-ruby1.8;
SVN: Comandos básicos
• Adicionar um arquivo ou diretório*:
svn add <arquivo ou diretorio>

• Remover arquivo ou diretório*:
svn rm <arquivo ou diretorio>

• Mover arquivo ou diretório*:
svn mv <arquivo ou diretorio>

• Listar conteúdo do repositório:
svn ls <URL>

• Reverter alterações locais:
svn revert <arquivo>
*Arquivos serão adicionados ou removidos no próximo
commit
SVN / Git
Integração com Redmine
• O Redmine pode ser integrar com seu sistema de ;
• Para isso, clique nos Settings do Projeto e, em
seguida, escolha Repository:
SVN / Git
Integração com Redmine
• Ao vincular o projeto a um repositório você terá algumas
integrações;
• Últimas mudanças e commits no item Activities
SVN / Git
Integração com Redmine
• Você pode configurar as palavras que serão
detectadas nas mensagens de commit em:
Redmine –> Administration –> Settings ->
Repositories

Configuramos as palavras de referência aqui

Fixing keywords podem mudar o status da Issue!
SVN / Git
Integração com Redmine
cd /home/almadmin/projetos-svn/projeto1/trunk
touch novo-arquivo.txt
svn commit –m “Correçao de problema closes #2”
Jenkins / Hudson:
Instalação e inicialização
• O Hudson pode funcionar de três formas:
• Stand-alone: java –jar hudson.war
• JNLP: https://hudson.dev.java.net/hudson.jnlp
• JavaEE container: fazendo deploy do hudson.war
Glassfish, Jboss, Tomcat, Jetty, Winstone,
Websphere;
Jenkins / Hudson:
Instalação e inicialização
• Para acessar o Hudson abra um browser e digite a
seguinte URL: http://localhost:8080/hudson-2.0.0

Configurações do Hudson
Membros do Hudson e
projetos
Relacionamento entre
projetos
Views customizadas
Executores de builds. O
Hudson vem com 2
executores de builds por
padrão.
Hudson / Jenkins:
Configuração
• Para fazer as configurações iniciais devemos clicar em
Manage Hudson
Hudson / Jenkins:
Configuração
• Em seguida Configure System teremos acesso as
principais configurações do Hudson:

Representa o no. de
executores de builds.
Hudson / Jenkins:
Configuração
• Após a instalação é importante configurar o local
onde estão instalados JDK, Maven e Ant (se usar);
Hudson / Jenkins:
Configuração
• A outra configuração importante é uma conta de e-mail
funcionando para o Hudson poder se comunicar com
equipes:

More Related Content

What's hot

Jenkins e a Integração Contínua
Jenkins e a Integração ContínuaJenkins e a Integração Contínua
Jenkins e a Integração Contínua
Denis Vieira
 
Sistemas de Controle de Versão
Sistemas de Controle de VersãoSistemas de Controle de Versão
Sistemas de Controle de Versão
Jonathas Silva
 
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
tdc-globalcode
 

What's hot (20)

Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versão
 
1.1. treinamentos instalação fluig
1.1. treinamentos instalação fluig1.1. treinamentos instalação fluig
1.1. treinamentos instalação fluig
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
 
Jenkins e a Integração Contínua
Jenkins e a Integração ContínuaJenkins e a Integração Contínua
Jenkins e a Integração Contínua
 
Apresentação controle de versão
Apresentação controle de versãoApresentação controle de versão
Apresentação controle de versão
 
Sistemas de Controle de Versão
Sistemas de Controle de VersãoSistemas de Controle de Versão
Sistemas de Controle de Versão
 
Gestão de Projetos com Redmine
Gestão de Projetos com RedmineGestão de Projetos com Redmine
Gestão de Projetos com Redmine
 
Simtecce 2011 Integracao Continua
Simtecce 2011 Integracao ContinuaSimtecce 2011 Integracao Continua
Simtecce 2011 Integracao Continua
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em Delphi
 
The twelve factor apps and openruko
The twelve factor apps and openrukoThe twelve factor apps and openruko
The twelve factor apps and openruko
 
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
 
Treinamento Android Nooclix
Treinamento Android NooclixTreinamento Android Nooclix
Treinamento Android Nooclix
 
12 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 201812 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 2018
 
Git e redmine
Git e redmineGit e redmine
Git e redmine
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Git
GitGit
Git
 
Svn - grupo de estudos sol7
Svn - grupo de estudos sol7Svn - grupo de estudos sol7
Svn - grupo de estudos sol7
 
Integração contínua - Rumo à automação e ao DEVOPS
Integração contínua - Rumo à automação e ao DEVOPSIntegração contínua - Rumo à automação e ao DEVOPS
Integração contínua - Rumo à automação e ao DEVOPS
 
Jboss eap 6
Jboss eap 6Jboss eap 6
Jboss eap 6
 

Viewers also liked

Trabalho do sistemas operativos
Trabalho do sistemas operativosTrabalho do sistemas operativos
Trabalho do sistemas operativos
David Pereira
 
Sistema Operativos
Sistema OperativosSistema Operativos
Sistema Operativos
Bugui94
 

Viewers also liked (13)

So-mod-4
So-mod-4So-mod-4
So-mod-4
 
Trends on Information Technology
Trends on Information TechnologyTrends on Information Technology
Trends on Information Technology
 
Trabalho do sistemas operativos
Trabalho do sistemas operativosTrabalho do sistemas operativos
Trabalho do sistemas operativos
 
Trabalho Tic - Sistema Operativo
Trabalho Tic - Sistema OperativoTrabalho Tic - Sistema Operativo
Trabalho Tic - Sistema Operativo
 
Gestão de defeitos e testes com Jira
Gestão de defeitos e testes com JiraGestão de defeitos e testes com Jira
Gestão de defeitos e testes com Jira
 
Apresentação implatação do Jira como ferramenta de gestão de bpmn das demanda...
Apresentação implatação do Jira como ferramenta de gestão de bpmn das demanda...Apresentação implatação do Jira como ferramenta de gestão de bpmn das demanda...
Apresentação implatação do Jira como ferramenta de gestão de bpmn das demanda...
 
Sistema Operativos
Sistema OperativosSistema Operativos
Sistema Operativos
 
Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Tipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisTipos de Sistemas Operacionais
Tipos de Sistemas Operacionais
 
Software Livre e Open Source
Software Livre e Open SourceSoftware Livre e Open Source
Software Livre e Open Source
 
Open Source - Código Aberto
Open Source - Código AbertoOpen Source - Código Aberto
Open Source - Código Aberto
 
Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907
 

Similar to ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122

Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
Carlos Gonzaga
 

Similar to ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122 (20)

Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWS
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
 
Projeto e Desenvolvimento de Software
Projeto e Desenvolvimento de SoftwareProjeto e Desenvolvimento de Software
Projeto e Desenvolvimento de Software
 
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
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
 
Continuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na NuvemContinuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na Nuvem
 
Integração Continua - Jenkins
Integração Continua - JenkinsIntegração Continua - Jenkins
Integração Continua - Jenkins
 
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
 
Web Tools Pt B R
Web Tools Pt  B RWeb Tools Pt  B R
Web Tools Pt B R
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack Microsoft
 
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Integração Contínua com Hudson
Integração Contínua com HudsonIntegração Contínua com Hudson
Integração Contínua com Hudson
 
SonarQube
SonarQubeSonarQube
SonarQube
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Web tools pt-br
Web tools pt-brWeb tools pt-br
Web tools pt-br
 

Recently uploaded

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Recently uploaded (6)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 

ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122

  • 1. Application Lifecycle Management com ferramentas Open Source Minicurso MC-122 Globalcode Bruno Souza Evangelista Java e Open Source ToolsCloud @brjavaman
  • 2. Palestrantes Bruno Souza bruno@javaman.com.br @brjavaman - http://java.mn Programador, Fundador da ToolsCloud http://www.toolscloud.com Material e Slides Vinicius Senger Kleber Xavier vinicius@globalcode.com.br @vsenger Programador, Fundador Globalcode kleber@globalcode.com.br Instrutor e Arquiteto de Software Globalcode
  • 3. Lembretes! Curso AA1 online: ALM a fundo! http://www.globalcode.com.br/treinamentos/modulos/alm-testes Quer experimentar as ferramentas da ToolsCloud? Quer fazer parte da lista de discussoes sobre OpenALM? • http://jav.mn/tcgratis
  • 4. ALM – O que é? Application Lifecycle Management: gerenciamento contínuo do software; Casamento da gestão de negócio com engenharia de software; Requer ferramentas integradas para gerenciar: Requisitos; Repositório de código; Construção; Arquitetura e codificação; Testes e qualidade Versões e componentes
  • 5. ALM – Por que? Vantagens na adoção; Rastreabilidade e dados post-hoc; Gerenciamento integrado; Simplificação nos processos; Agilidade na construção do software; Aumento da reusabilidade; Diminuição dos riscos;
  • 6. ALM • Independente de metodologia, arquitetura e tecnologia toda empresa se beneficia muito com ALM • Rastreabilidade, transparência, comunicação • ALM = é como álbum de fotografia do seu software, com retratos tirados automaticamente a cada mudança, falha, novo requisito, novo release, etc. • Todo mundo sai ganhando: bom para o developer, gerente, arquiteto, Scrum Master, P.O., V.P., CIO, CTO, Asponi, etc.
  • 7. Ferramentas • Existem várias soluções de ALM no mercado: • Microsoft - Team Foundation Server • IBM - Rational Team Concert • Atlassian - Jira • Rally Software • Collabnet - TeamForge • HP - Quality Center • VersionOne
  • 8. Open Source Liberdade de escolha de fornecedores Uso livre: excelente para pequenos e médios times Possibilidade de suporte local As ferramentas mais utilizadas pelos desenvolvedores Comunidade de plugins e ferramentas Disponível para parceiros e empresas contratadas
  • 9. Repositórios de Código Fonte: ZeroTurnaround Developer Productivity Report 2013
  • 12. Efeito na Previsibilidade dos Projetos Fonte: ZeroTurnaround Developer Productivity Report 2013 (apenas algumas ferramentas foram comparadas)
  • 13. O que os “Rock Stars” usam? Fonte: ZeroTurnaround Developer Productivity Report 2013 (apenas algumas ferramentas foram comparadas)
  • 14. ALM – ferramentas Pilha ALM open-source que usamos:
  • 15. ● Pilha ALM Open Source na nuvem ● Ambiente montado em minutos ● Softwares atualizados e suporte ● Não precisa de novos servidores na sua empresa! ● ● Redmine, SVN, GIT, Hudson, Nexus integrados com LDAP: importante diferencial Experimente online as ferramentas desse mini-curso: ● https://demo.toolscloud.net ● user: toolscloud senha: toolscloud
  • 16. ALM 1Novo projeto 2 Redmine 2 Git 2 Jenkins 3 Requisitos 4 Codificação 5 Build & Testes 10 Bugs e Melhorias 9Produção 6 Release 7 Nexus 8 Homologação Deployment Contínuo
  • 17. ALM – 1a Semana 1. Gestão de componentes 3os com Nexus 2. Testes 3. Integração contínua
  • 18. ALM – 1o Mês 1. Testes regressivos 2. Deployment contínuo básico 3. Gestão dos seus próprios componentes com Nexus
  • 19. Depois 1. Testes avançados 2. Deployment contínuo avançado 3. Code review contínuo
  • 20. O planejamento inicial Problema: Organizar os requisitos em entregas Atribuir os requisitos para seus desenvolvedores Acompanhar a evolução do desenvolvimento Solução: Utilizar um gerenciador de issues, como o Redmine
  • 21. Processo – passo 1 requisitos e releases stakeholder
  • 22. Redmine • Gerenciamento de Requisitos com: • Gestão de pendências; • Gerenciamento de horas gastas / time tracking; • Integração com SCM; • Conceito de projetos e sub-projetos; • Fórum, wiki, arquivos, news, calendário, gantt chart e sistema de segurança; • Software open-source construído em Ruby on Rails; • Centenas de plug-ins e módulos adicionais; • Muitas possibilidades de customização;
  • 23. Redmine • Após login, temos dois principais itens: Projects, para entrar em um projeto e Administration para config. geral: Home
  • 24. A organização do código fonte Problema: Compartilhar o código fonte entre os desenvolvedores do projeto Manter o histórico de alterações Solução: Utilizar um repositório de código fonte como o Git
  • 25. Processo – passo 2 requisitos e releases stakeholder desenvolvedor código fonte visualização do histórico
  • 26. Versionamento • No mundo open-source os destaques são: • CVS: sistema mais antigo e precário, porém, ainda muito utilizado. Trabalha com protocolo proprietário; • Subversion: evolução do CVS com disponibilização via HTTP (além de protocolo proprietário) e alta performance para versionamento; • GIT: mais moderno ainda, por se tratar de um repositório distribuído. Tem muitas vantagens, mas demanda mais conhecimento do usuário;
  • 27. Versionamento • “Qualidade” dos commits • Cuidar bem das mensagens • Independente de decisão, escolha entre SVN e GIT! • GIT File System? • Hooks & ALM
  • 28. Introdução ao Subversion • Subversion é um repositório client / server, não distribuído; • É mantido pelo grupo Apache: • subversion.apache.org • Instalação e administração simples; • Não requer conhecimentos avançados do usuário; • Excelente performance para gerar versões / cópias; • Pode disponibilizar dados por protocolo proprietário ou por HTTP / HTTPS;
  • 29. Estrutura de trabalho • Convencionalmente trabalhamos com: • trunk (tronco): uma pasta que contém os arquivos de desenvolvimento do projeto. • branch (galho): são linhas concorrentes de desenvolvimento do projeto independentes; • tag (etiqueta): são versões releases efetivos de um projeto. 1Trunk 3Tag 2Branch
  • 30. GIT • Distribuído: no lugar de checkout você clona o repositório • Seus commits são locais, portanto você pode trabalhar offline • Verbos: add commit log diff status branch merge push • Entre offline e online vários commits! • GIT ou Subversion?
  • 31. Integração com Redmine • Navegar nos arquivos do SVN via Web clicando no item Repository:
  • 32. Integração com Redmine • E o recurso mais útil é a possibilidade de você referenciar as Issues nas mensagens de commit; cd /home/almadmin/projetos-svn/projeto1/trunk touch novo-arquivo.txt svn commit –m “Correçao de problema de encoding da IssueID #2”
  • 33. Gerenciamento das dependências Problema: Padronizar as bibliotecas de terceiros utilizadas pelo projeto Disponibilizar as bibliotecas utilizadas para a equipe de desenvolvimento Solução: Utilizar uma ferramenta de build com suporte a gerenciamento de dependências como o Maven Utilizar um gerenciador de repositórios como o Nexus
  • 34. Processo – passo 3 requisitos e releases visualização do histórico stakeholder build dependências desenvolvedor código fonte
  • 35. Introdução Nexus • O Maven pode baixar automaticamente bibliotecas da Internet (se open-source); • Isso é excelente para o desenvolvimento de pequenos times, agora se tivermos um time de 100 desenvolvedores criando projetos Maven que fazem downloads da Internet? • Fatalmente teremos um problema de rede até que todos os Mavens terminem seus downloads!
  • 36. Introdução Nexus • Para ajudar a solucionar este tipo de problema contamos com Gerenciadores de Repositórios, que desempenham um papel de proxy para os demais: Developer Hudson Build com Maven jar: log4j, hibernate, spring etc. Nexus Internet
  • 37. Introdução ao Nexus • O Nexus faz o download centralizado dos componentes fazendo um cache que ele utilizará para servir aos demais desenvolvedores; • Além do papel de cache, o Nexus também pode catalogar o componentes e artefatos da sua empresa, do seu negócio; • Isso facilita bastante o reuso entre equipes; • Maven + Nexus + Hudson: parceria perfeita!
  • 38. Integração entre módulos Problema: Garantir que alterações em um dos módulos não quebrem o funcionamento de outros módulos Notificar os responsáveis em caso de quebra, o mais rapidamente possível Solução: Utilizar uma ferramenta de integração contínua como o Jenkins
  • 39. Processo – parte 4 requisitos e releases stakeholder build visualização do histórico integração contínua dependências desenvolvedor código fonte
  • 40. Integração Continua • Apresentamos o Redmine com SCM integrado. • Desta forma podemos ter um time de desenvolvimento compartilhando o mesmo servidor SCM para desenvolver as Issues do projeto; • Será que isso é o suficiente para nossa necessidade? • NÃO! Imagine que vários desenvolvedores podem fazer commit de código no fim do dia resultando em um código não-compilável;
  • 41. Introdução ao Hudson / Jenkins ● ● Hudson/Jenkins são servidores open-source de integração continua Um “Continous integration server / CI server” pode desempenhar várias tarefas como: ● ● Build e teste; ● Publicação de resultados; ● ● Checkout de código-fonte; Comunicação com membros do time; Na prática: um agendador de tarefas de construção de softwares altamente customizável;
  • 42. Introdução ao Hudson / Jenkins • Fácil instalação e configuração; • Interface é web based; • Pode fazer builds distribuídos; • Relatório de teste unitário; • Notificação do estado dos builds; • Notificação em caso de quebra;
  • 43. Introdução ao Hudson / Jenkins • Arquitetura extensível baseada em plugins com mais de 150 de plugins disponíveis; • Por padrão vem com 4 plugins instalados: • CVS • SVN • Maven • SSH
  • 44. Criando Jobs • Basicamente o Hudson pode trabalhar com projetos livres ou Maven; • Maior parte dos casos utilizamos Maven ou Ant; • Maven é o mais simples de se usar!
  • 45. Criando Jobs •Em seguida configuramos o job indicando principalmente o repositório para checkout do projeto!
  • 46. Criando Jobs Podemos clicar em Build Now e Hudson vai iniciar o checkout do código e depois vai disparar o build Maven!
  • 47. Dashboard • O dashboard traz as informações sobre os diversos jobs / projetos configurados; • Este ícone indica a estabilidade dos builds:
  • 48. Reutilização de módulos Problema: Disponibilizar os módulos desenvolvidos para reuso entre as equipes Solução: Utilizar uma ferramenta de gerenciamento de repositórios como o Nexus
  • 49. Processo – parte 5 requisitos e releases stakeholder build visualização do histórico integração contínua dependências desenvolvedor código fonte publicação de artefatos
  • 50. Configurando Maven • Devemos adicionar esta configuração em um arquivo settings.xml que ficará no diretório .m2 do usuário:
  • 51. Configurando Maven • Para que o Maven possa fazer deployment de artefatos no Nexus:
  • 52. Qualidade do código Problema: Garantir que as convenções e boas práticas estão sendo seguidas pelos desenvolvedores Visualizar as violações e a evolução da qualidade estrutural do código Solução: Utilizar uma ferramenta de análise estática do código como o Sonar
  • 53. Processo – parte 6 requisitos e releases stakeholder build visualização do histórico integração contínua dependências desenvolvedor código fonte publicação de artefatos inspeção
  • 54. Implantação em produção Problema: Implantar um módulo aprovado em produção Solução: Utilizar a ferramenta de integração contínua para fazer o deployment contínuo
  • 55. Processo final requisitos e releases stakeholder build visualização do histórico integração contínua dependências desenvolvedor código fonte inspeção deploy publicação de artefatos servidor
  • 56. Outras ferramentas Junit - Testes unitários Selenium - Testes de interface Web Jmeter - Testes de carga TestLink - Gerenciamento de casos de teste Vagrant – Automatização de servidor de desenvolvimento Chef – Automação de infraestrutura
  • 57. Demonstração Experimente a demonstração por contra própria: https://demo.toolscloud.net User: toolscloud - Senha: toolscloud
  • 58. Conclusões ● ● ● As ferramentas Maven, Nexus, Hudson/Jenkins, Redmine e Subversion formam uma poderosa solução de ALM; Todas as ferramentas são open-source; Este ambiente é agnóstico de linguagens, e funciona para projetos Delphi, C, C++, Ruby, PHP e outros; ● Muitas possibilidades de customização; ● A ToolsCloud oferece este ambiente como serviço da nuvem
  • 59. Lembretes! Curso AA1 online: ALM a fundo! http://www.globalcode.com.br/treinamentos/modulos/alm-testes Quer experimentar as ferramentas da ToolsCloud? Quer fazer parte da lista de discussoes sobre OpenALM? • http://jav.mn/tcgratis
  • 62. Slides Extras Veja nos slides a seguir informações extras sobre como configurar algumas das ferramentas citadas nesse mini-curso.
  • 63. Redmine • Download e Instalação • www.redmine.org • Precisa de Ruby 1.8, Rails 2.3.5, Rack 1.0.1, RubyGems 1.8, Rake, i18n, libmysql-ruby, libopenssl-ruby1.8;
  • 64. SVN: Comandos básicos • Adicionar um arquivo ou diretório*: svn add <arquivo ou diretorio> • Remover arquivo ou diretório*: svn rm <arquivo ou diretorio> • Mover arquivo ou diretório*: svn mv <arquivo ou diretorio> • Listar conteúdo do repositório: svn ls <URL> • Reverter alterações locais: svn revert <arquivo> *Arquivos serão adicionados ou removidos no próximo commit
  • 65. SVN / Git Integração com Redmine • O Redmine pode ser integrar com seu sistema de ; • Para isso, clique nos Settings do Projeto e, em seguida, escolha Repository:
  • 66. SVN / Git Integração com Redmine • Ao vincular o projeto a um repositório você terá algumas integrações; • Últimas mudanças e commits no item Activities
  • 67. SVN / Git Integração com Redmine • Você pode configurar as palavras que serão detectadas nas mensagens de commit em: Redmine –> Administration –> Settings -> Repositories Configuramos as palavras de referência aqui Fixing keywords podem mudar o status da Issue!
  • 68. SVN / Git Integração com Redmine cd /home/almadmin/projetos-svn/projeto1/trunk touch novo-arquivo.txt svn commit –m “Correçao de problema closes #2”
  • 69. Jenkins / Hudson: Instalação e inicialização • O Hudson pode funcionar de três formas: • Stand-alone: java –jar hudson.war • JNLP: https://hudson.dev.java.net/hudson.jnlp • JavaEE container: fazendo deploy do hudson.war Glassfish, Jboss, Tomcat, Jetty, Winstone, Websphere;
  • 70. Jenkins / Hudson: Instalação e inicialização • Para acessar o Hudson abra um browser e digite a seguinte URL: http://localhost:8080/hudson-2.0.0 Configurações do Hudson Membros do Hudson e projetos Relacionamento entre projetos Views customizadas Executores de builds. O Hudson vem com 2 executores de builds por padrão.
  • 71. Hudson / Jenkins: Configuração • Para fazer as configurações iniciais devemos clicar em Manage Hudson
  • 72. Hudson / Jenkins: Configuração • Em seguida Configure System teremos acesso as principais configurações do Hudson: Representa o no. de executores de builds.
  • 73. Hudson / Jenkins: Configuração • Após a instalação é importante configurar o local onde estão instalados JDK, Maven e Ant (se usar);
  • 74. Hudson / Jenkins: Configuração • A outra configuração importante é uma conta de e-mail funcionando para o Hudson poder se comunicar com equipes:

Editor's Notes

  1. abrir falando: eu estou mais motivado que o normal hoje em dia, pois o progresso da tecnologia tem trazido muitas facilidades para desenvolver softwares e eventualmente criar um business ao redor dele.
  2. abrir falando: eu estou mais motivado que o normal hoje em dia, pois o progresso da tecnologia tem trazido muitas facilidades para desenvolver softwares e eventualmente criar um business ao redor dele.
  3. abrir falando: eu estou mais motivado que o normal hoje em dia, pois o progresso da tecnologia tem trazido muitas facilidades para desenvolver softwares e eventualmente criar um business ao redor dele.