SlideShare uma empresa Scribd logo
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:

Mais conteúdo relacionado

PDF
Alm open source
PDF
Open4Education | MC122 - Introdução a ALM OpenSource
PPT
Introdução a Application Life-cycle Management Open Source
PPT
Academia do Arquiteto - Implantando A.L.M. em uma semana!
PPT
Academia do Arquiteto - Introdução a ALM e Redmine
ODP
Gerenciamento de Projetos com o Redmine
PDF
Plano do projeto de software SIGEM - Sistema de gestão de materiais
PPT
GCS - Aula 07 - Sistemas de Controle de Versões
Alm open source
Open4Education | MC122 - Introdução a ALM OpenSource
Introdução a Application Life-cycle Management Open Source
Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Introdução a ALM e Redmine
Gerenciamento de Projetos com o Redmine
Plano do projeto de software SIGEM - Sistema de gestão de materiais
GCS - Aula 07 - Sistemas de Controle de Versões

Mais procurados (20)

PPTX
Sistemas de controle de versão
PPTX
1.1. treinamentos instalação fluig
PDF
Apresentação maven
PPTX
Jenkins e a Integração Contínua
PDF
Apresentação controle de versão
PPTX
Sistemas de Controle de Versão
PPTX
Gestão de Projetos com Redmine
PDF
Simtecce 2011 Integracao Continua
 
PPTX
Desconstruindo monolitos - Construindo microservicos em Delphi
PDF
The twelve factor apps and openruko
PDF
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
PDF
Treinamento Android Nooclix
PDF
12 Factor App TDC São Paulo 2018
PPTX
PDF
Analise frameworks php
PDF
Introdução ao docker
PPTX
PPT
Svn - grupo de estudos sol7
PPTX
Integração contínua - Rumo à automação e ao DEVOPS
PDF
Jboss eap 6
Sistemas de controle de versão
1.1. treinamentos instalação fluig
Apresentação maven
Jenkins e a Integração Contínua
Apresentação controle de versão
Sistemas de Controle de Versão
Gestão de Projetos com Redmine
Simtecce 2011 Integracao Continua
 
Desconstruindo monolitos - Construindo microservicos em Delphi
The twelve factor apps and openruko
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
Treinamento Android Nooclix
12 Factor App TDC São Paulo 2018
Analise frameworks php
Introdução ao docker
Svn - grupo de estudos sol7
Integração contínua - Rumo à automação e ao DEVOPS
Jboss eap 6
Anúncio

Destaque (12)

PDF
So-mod-4
PDF
Trends on Information Technology
PPTX
Trabalho do sistemas operativos
PPT
Trabalho Tic - Sistema Operativo
PDF
Gestão de defeitos e testes com Jira
PPSX
Apresentação implatação do Jira como ferramenta de gestão de bpmn das demanda...
PPT
Sistema Operativos
PPT
Sistemas Operacionais
PPT
Tipos de Sistemas Operacionais
ODP
Software Livre e Open Source
ODP
Open Source - Código Aberto
PDF
Node Foundation Membership Overview 20160907
So-mod-4
Trends on Information Technology
Trabalho do sistemas operativos
Trabalho Tic - Sistema Operativo
Gestão de defeitos e testes com Jira
Apresentação implatação do Jira como ferramenta de gestão de bpmn das demanda...
Sistema Operativos
Sistemas Operacionais
Tipos de Sistemas Operacionais
Software Livre e Open Source
Open Source - Código Aberto
Node Foundation Membership Overview 20160907
Anúncio

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

PDF
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
PPTX
Automatize seu processo de entrega de software com CI/CD na AWS
PPTX
Testes automatizados.pptx
PDF
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
PDF
Projeto e Desenvolvimento de Software
PPTX
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
PDF
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
PDF
Continuous Deployment e DevOps na Nuvem
PDF
Integração Continua - Jenkins
PPTX
Ciclo de vida do desenvolvimento de software de ponta a ponta
PPS
Web Tools Pt B R
PDF
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
PDF
DevOps & Docker com a stack Microsoft
PDF
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
PPTX
Tendências e Dicas para o Desenvolvimento de Software
KEY
Integração Contínua com Hudson
PPTX
SonarQube
 
PDF
Escalando apps com React e Type Script e SOLID
PPSX
Web tools pt-br
PPSX
Web Tools Pt Br
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
Testes automatizados.pptx
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
Projeto e Desenvolvimento de Software
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
Continuous Deployment e DevOps na Nuvem
Integração Continua - Jenkins
Ciclo de vida do desenvolvimento de software de ponta a ponta
Web Tools Pt B R
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
DevOps & Docker com a stack Microsoft
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
Tendências e Dicas para o Desenvolvimento de Software
Integração Contínua com Hudson
SonarQube
 
Escalando apps com React e Type Script e SOLID
Web tools pt-br
Web Tools Pt Br

Último (20)

PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Émile Durkheim slide elaborado muito bom
PPTX
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Curso de Java 9 - (Threads) Multitarefas.pptx
PPTX
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
Processos na gestão de transportes, TM100 Col18
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
Apple Pippin Uma breve introdução. - David Glotz
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Aula 18 - Manipulacao De Arquivos python
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Émile Durkheim slide elaborado muito bom
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
Custos e liquidação no SAP Transportation Management, TM130 Col18
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Curso de Java 9 - (Threads) Multitarefas.pptx
Curso de Java 10 - (IO Manipulação de Arquivos).pptx

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:

Notas do Editor

  • #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.
  • #4: 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.
  • #60: 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.