53
Maior Sucesso, Menor Risco: Ferramentas Open Source para Desenvolvimento de Software Bruno Souza [email protected] @brjavaman

Alm open source

Embed Size (px)

Citation preview

Page 1: Alm open source

Maior Sucesso, Menor Risco: Ferramentas Open Source para Desenvolvimento de Software

Bruno [email protected]@brjavaman

Page 2: Alm open source

● Vinicius Senger

[email protected]

@vsenger

Programador, Fundador da Globalcode

• Bruno Souza

[email protected]

@brjavaman - http://java.mn

Programador, Fundador da ToolsCloud

Palestrantes

Page 3: Alm open source

Mini Curso ALM Open Source Globalcode

● Esse material é baseado no mini-curso MC-122, Introdução a ALM Open Source

● http://www.globalcode.com.br/gratuitos/minicursos/minicurso-introducao-a-alm-open-source

● Esse é um minicurso gratuito de 3 horas, ministrado pela Globalcode e pela ToolsCloud mensalmente

● A Globalcode também ministra um curso completo de ALM Open Source online, o curso AA1 Online:

● http://www.globalcode.com.br/treinamentos/online/alm-testes

Page 4: Alm open source

• 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 integrada;

Arquitetura e codificação;

Testes e qualidade;

Gerenciamento de versões e componentes;

A.L.M.

Page 5: Alm open source

A.L.M.

• Independente de metodologia, arquitetura e tecnologia, todos os times de desenvolvimento precisam de A.L.M.

• Não documentar o futuro (Agile / Scrum) é uma coisa, poder rastrear o passado é outra;

• 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.

Page 6: Alm open source

• Vantagens na adoção:

• Rastreabilidade e dados post-hoc;

• Cultura de planejamento de releases / backlog;

•Gerenciamento integrado;

• Simplificação nos processos;

• Agilidade na construção do software;

• Conseqüente aumento na cultura de testes;

• Aumento da reusabilidade;

A.L.M. - vantagens

Page 7: Alm open source

• Expõe os ciclos de vida do software, facilitando e motivando sua a gestão:

• Requisitos / Backlog / Atividade / User Story

• Documentação (wiki / files) e suporte (fórum)

• Versionamento, tags, brunches, ..

•Gestão de Componentes e repositórios

• Arquétipos Maven

• Construção

• Testes – Homologação - Produção

• Deployment

Gestão de Arquitetura

Page 8: Alm open source

Pilha A.L.M. Open Source

Disciplina Software

Gerenciamento de Requisitos Redmine

Gestão de código / versionamento SVN e GIT

Construção e dependências Maven

Gerenciamento de arquétipos Maven

Integração Contínua Hudson / Jenkins

Repositório de componentes Nexus

Ferramenta para desenvolvimento ● Eclipse / NetBeans com plugins

Page 9: Alm open source

A.L.M. Novo projeto

RedMine SVN Hudson

Requisitos Codificação Build & Testes

Release

Nexus

HomologaçãoProdução

Bugs e Melhorias

1

2 2 2

53 4

610

9 8

7

Deployment Contínuo

Page 10: Alm open source

A.L.M.

Page 11: Alm open source

1. Gestão de componentes 3os com Nexus

2. Testes

3. Integração contínua

A.L.M. em uma semana

Page 12: Alm open source

1. Testes regressivos

2. Deployment contínuo básico

3. Gestão dos seus próprios componentes com Nexus

A.L.M. em um mês

Page 13: Alm open source

1. Testes avançados

2. Deployment contínuo avançado

3. Code review contínuo

Depois

Page 14: Alm open source

•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

Page 15: Alm open source

• Tela de login do Redmine:

Redmine

Page 16: Alm open source

• Após login, temos dois principais itens: Projects, para entrar em um projeto e Administration para config. geral:

Redmine

Home

Page 17: Alm open source

• Temos dezenas de opções de controladores de versões de arquivos no mercado:

• Subversion / SVN

• CVS

•GIT

•Microsft Sourcesafe e TFS

• Borland Starteam

• Clearcase

Versionamento

Page 18: Alm open source

• 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

Page 19: Alm open source

• “Qualidade” dos commits

• Cuidar bem das mensagens

• Independente de decisão, escolha entre SVN e GIT!

•GIT File System?

• Hooks & ALM

Versionamento

Page 20: Alm open source

• 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;

Introdução ao Subversion

Page 21: Alm open source

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>

Page 22: Alm open source

• Convencionalmente trabalhamos com:• trunk (troco): 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.

Estrutura de trabalho

Trunk1

Branch2Tag3

Page 23: Alm open source

• 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?

GIT

Page 24: Alm open source

•O Redmine pode ser integrar com seu sistema de ;

• Para isso, clique nos Settings do Projeto e, em seguida, escolha Repository:

Integração com Redmine

Page 25: Alm open source

• Ao vincular o projeto a um repositório você terá algumas integrações;

• Últimas mudanças e commits no item Activities

Integração com Redmine

Page 26: Alm open source

• Navegar nos arquivos do SVN via Web clicando no item Repository:

Integração com Redmine

Page 27: Alm open source

• 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”

Integração com Redmine

Page 28: Alm open source

• Você pode configurar as palavras que serão detectadas nas mensagens de commit em:Redmine –> Administration –> Settings -> Repositories

Integração com Redmine

Configuramos as palavras de referência aqui

Fixing keywords podem mudar o status da Issue!

Page 29: Alm open source

cd /home/almadmin/projetos-svn/projeto1/trunk

touch novo-arquivo.txt

svn commit –m “Correçao de problema closes #2”

Integração com Redmine

Page 30: Alm open source

● 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... Mesmo com essas ferramentas, é possível que

os desenvolvedores commitem código não-

compilável.

Integração Continua

Page 31: Alm open source

● Hudson/Jenkins são servidores open-source de integração continua

● Um “Continous integration server / CI server” pode desempenhar várias tarefas como:

● Checkout de código-fonte;

● Build e teste;

● Publicação de resultados;

● 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

Page 32: Alm open source

• 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

Page 33: Alm open source

• 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

Introdução ao Hudson / Jenkins

Page 34: Alm open source

•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;

Instalação e inicialização

Page 35: Alm open source

• Para acessar o Hudson abra um browser e digite a seguinte URL: http://localhost:8080/hudson-2.0.0

Instalação e inicialização

Executores de builds. O Hudson vem com 2 executores de builds por padrão.

Configurações do Hudson

Membros do Hudson e projetos

Relacionamento entre projetos

Views customizadas

Page 36: Alm open source

• Para fazer as configurações iniciais devemos clicar em Manage Hudson

Configuração

Page 37: Alm open source

• Em seguida Configure System teremos acesso as principais configurações do Hudson:

Configuração

Representa o no. de executores de builds.

Page 38: Alm open source

• Após a instalação é importante configurar o local onde estão instalados JDK, Maven e Ant (se usar);

Configuração

Page 39: Alm open source

• A outra configuração importante é uma conta de e-mail funcionando para o Hudson poder se comunicar com equipes:

Configuração

Page 40: Alm open source

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!

Page 41: Alm open source

Criando Jobs

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

Page 42: Alm open source

Criando Jobs

Podemos clicar em Build Now e Hudson vai iniciar o checkout do código e depois vai disparar o build Maven!

Page 43: Alm open source

•O dashboard traz as informações sobre os diversos jobs / projetos configurados;

• Este ícone indica a estabilidade dos builds:

Dashboard

Page 44: Alm open source

•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

Page 45: Alm open source

• Para ajudar a solucionar este tipo de problema contamos com Gerenciadores de Repositórios, que desempenham um papel de proxy para os demais:

Introdução Nexus

Developer Hudson

Build com Maven

jar: log4j, hibernate, spring etc.

Nexus

Internet

Page 46: Alm open source

•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!

Introdução ao Nexus

Page 47: Alm open source

• Devemos adicionar esta configuração em um arquivo settings.xml que ficará no diretório .m2 do usuário:

Configurando Maven

Page 48: Alm open source

• Para que o Maven possa fazer deployment de artefatos no Nexus:

Configurando Maven

Page 49: Alm open source

Outras ferramentas

● Sonar – Análise de qualidade de software● TestLink – Gerencia de Testes● Vagrant – Automatização de servidor de desenvolvimento● Chef – Automação de infraestrutura

Page 50: Alm open source

● 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

Conclusões

Page 51: Alm open source

● Pilha ALM como SaaS na nuvem● Tudo isso que vimos, e mais:

● Ferramentas totalmente integradas● Ambiente montado em minutos● Não precisa de servidores na sua empresa!● Softwares atualizados e suporte

● Experimente online as ferramentas desse mini-curso:● https://demo.toolscloud.com ● user: toolscloud senha: toolscloud

Page 52: Alm open source

Obrigado!

● Vinicius Senger

[email protected]

@vsenger

www.globalcode.com.br

● Bruno Souza

[email protected]

@brjavaman

www.toolscloud.com

Page 53: Alm open source

Obrigado!

Bruno [email protected]@brjavaman