academia do arquiteto - implantando a.l.m. em uma semana!

53
Globalcode – Open4education Primeiros passos com ALM: Implantando um ambiente ALM em uma semana!

Upload: globalcode

Post on 31-May-2015

7.385 views

Category:

Technology


1 download

DESCRIPTION

Apresentação feita no #TDC2011 para mostrar como é possível migrar para um novo paradgima de desenvolvimento de software com maior qualidade, transparência e gestão ágil do time.

TRANSCRIPT

Page 1: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

Primeiros passos com ALM:Implantando um ambiente ALM em uma semana!

Page 2: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

Agenda

Introdução

Redmine

Maven

Source Code Management

Hudson

Nexus

Page 3: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

[email protected]

@vsenger

Programador

Fundador da Globalcode

Autor de cursos e consultor

Open-source hardware developer

Entusiasta da vida: beatles, pizza, vinhos, surf, travessias oceânicas, filhos, código, yoga, home-office, violão, robôs (e $ pra sustentar tudo isso).

Vinicius Senger

Page 4: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• 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: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

A.L.M.

• Independente de metodologia, arquitetura e tecnologia TODA EMPRESA PRECISA 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: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• 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: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

“Gerenciar sem backlog é como ser um mecânico que recebe carros para conserto sem que expliquem o problema do carro.”

A.L.M. - vantagens

Page 8: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• 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 9: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• Pilha A.L.M. open-source que usamos:

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

Repositório de componentes Nexus

Ferramenta para desenvolvimento Eclipse IDE com plugins

Page 10: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• oferece esta pilha como SaaS rodando na Amazon

•Mais vantagens ainda:

• Você tem o ambiente montado em 24hs

• Você não vai ganhar novos servidores na sua empresa!

• Softwares atualizados pela ToolsCloud e suporte

• Redmine, SVN, GIT, Hudson, Nexus integrados com LDAP é um enorme diferencial

Page 11: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

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 12: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

1. Testes

1. Integração contínua

1. Gestão de componentes 3os com Nexus

A.L.M. em uma semana

Page 13: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

1. Testes regressivos

1. Deployment contínuo básico

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

A.L.M. em um mês

Page 14: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

1. Testes avançados

1. Deployment contínuo avançado

1. Code review contínuo

Depois

Page 15: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

•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 16: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

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

Redmine

Page 17: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• Tela de login do Redmine:

Redmine

Page 18: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

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

Redmine

Home

Page 19: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

DEMONSTRAÇÃO

Page 20: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• 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 21: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• 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 22: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• “Qualidade” dos commits

• Cuidar bem das mensagens

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

•GIT File System?

• Hooks & ALM

Versionamento

Page 23: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• 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 24: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

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

Page 25: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• 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 26: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• 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 27: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

•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 28: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• 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 29: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

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

Integração com Redmine

Page 30: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• 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 31: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• 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 32: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

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 33: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

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

Integração Continua

Page 34: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• Hudson é um servidor 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 o Hudson é um agendador de tarefas de construção de softwares altamente customizável;

Introdução ao Hudson

Page 35: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• 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

Page 36: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• 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

Page 37: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

•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 38: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• 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 39: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

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

Configuração

Page 40: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

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

Configuração

Representa o no. de executores de builds.

Page 41: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

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

Configuração

Page 42: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

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

Configuração

Page 43: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

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 44: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

Criando Jobs

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

Page 45: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

Criando Jobs

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

Page 46: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

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

• Este ícone indica a estabilidade dos builds:

Dashboard

Page 47: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

•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 48: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

• 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 49: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

•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 50: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

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

Configurando Maven

Page 51: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

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

Configurando Maven

Page 52: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

Conclusões

• As ferramentas Maven, Nexus, Hudson, Redmine e Subversion formam uma poderosa solução de ALM;

• Todas as ferramentas são open-source;

• Este ambiente pode funcionar para Delphi, C, C++, Ruby, entre outras plataformas;

•Muitas possibilidades de customização;

• A ToolsCloud oferece este ambiente como serviço da nuvem

Page 53: Academia do Arquiteto - Implantando A.L.M. em uma semana!

Globalcode – Open4education

Obrigado!

[email protected]

@vsenger