introdução a application life-cycle management open source

41
Globalcode – Open4education @vsenger Application Lifecycle Management Vinicius Senger

Upload: globalcode

Post on 31-May-2015

1.999 views

Category:

Technology


4 download

DESCRIPTION

Palestra apresentada no #TDC2012 www.thedevelopersconference.com.br com uma introdução completa sobre A.L.M. utilizando ferramentas integradas e open source. Toda empresa de software precisa de ALM!

TRANSCRIPT

Page 1: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

Application Lifecycle ManagementVinicius Senger

Page 2: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

Agenda

Introdução a Application Lifecycle Management

A.L.M. open source

Arquétipos & A.L.M.

Demonstrações práticas

Page 3: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

[email protected]

@vsenger

Fundador da Globalcode

Programador

Desenvolvimento e Pesquisas

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

Sou beta forever!

Vinicius Senger

Page 4: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

• 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 / backlog / projeto;

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: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

A.L.M.

• Independente de metodologia, arquitetura e tecnologia TODA EMPRESA PRECISA DE A.L.M.

• ALM = é como álbum de fotografia do seu software, com retratos tirados automaticamente a cada mudança, falha, novo requisito, novo release, etc.

•Maior exposição da T.I. para líderes;

• Todo mundo sai ganhando!

Page 6: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

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

• Agilidade na prática!

A.L.M. - vantagens

Page 7: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

• 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 e Templates de Arquitetura

•Construção

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

•Deployment

Gestão de Arquitetura

Page 8: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

A.L.M. open-source

Gestão de componentes Nexus

Gerenciamento de Requisitos Redmine

Gestão de código / versionamento SVN, GIT, ...

Construção e dependências Maven / Ant

Gerenciamento de arquétipos Maven

Gestão de componentes Nexus

Teste Carga / Regressivo Jmeter / Selenium

Inspeção Sonar

Integração Contínua Jenkins

Page 9: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

•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 10: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

A.L.M.Novo projeto

RedMine SVN Hudson

Requisitos Codificação Build & Testes

Inspeção

Nexus

HomologaçãoProdução

Bugs e Melhorias

1

2 2 2

53 4

610

9 8

7

Deployment Contínuo

Page 11: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

•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 12: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

•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 13: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

DEMONSTRAÇÃO

Page 14: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

• 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 15: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

•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 16: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

• “Qualidade” dos commits

•Cuidar bem das mensagens

•GIT File System?

•Hooks & ALM

Versionamento

Page 17: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

•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 18: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

• 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 19: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

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

Integração com Redmine

Page 20: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

•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 21: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

• 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 22: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

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 23: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

•Gestão de dependências e build do seu software Java;

•Obriga a declaração das dependências de JAR's;

• É uma “clínica de softwares dependentes”;

• Torna seu projeto Java 100% independente de IDE!

•Representa o elo entre Integração Continua, gestão de componentes, modularidade avançada, testes e +;

• É chato, mas necessário! Alternativa? Gradle.

• TODA plataforma tem problemas com dependências!

•Conceito de arquétipos de projetos é excelente;

Maven (Java)

Page 24: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

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

Nexus (Java)

Page 25: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

• 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 (Java)

Developer Hudson

Build com Maven

jar: log4j, hibernate, spring etc.

Nexus

Internet

Page 26: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

•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 (Java)

Page 27: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

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

Configurando Maven (Java)

Page 28: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

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

Configurando Maven (Java)

Page 29: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

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

Introdução ao Jenkins

Page 30: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

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

Page 31: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

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

Page 32: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

•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 33: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

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

Configuração

Page 34: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

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

Configuração

Representa o no. de executores de builds.

Page 35: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

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

Configuração

Page 36: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

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

Configuração

Page 37: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

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

• Este ícone indica a estabilidade dos builds:

Dashboard

Page 38: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

• Testes regressivos de aplicativos Web;

•Capaz de abrir diferentes navegadores, entrar com dados em formulários e analisar a resposta;

• Selenium IDE: plug-in para firefox que permite gravar scripts de testes;

• Selenium WebDriver: API Java para executar scripts

• Selenium Server: testes remotos

• Selenese: DSL para simulação

•DEMO

Selenium

Page 39: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

•Representa o template de arquitetura;

•Contém os principais elementos de arquitetura;

•Gestão de arquétipos é muito importante para grande cenários multi-arquitetura;

•Com maven podemos escolher centenas de diferentes arquétipos existentes:

– mvn archetype:generate

Arquétipo

Page 40: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

Conclusões

• Tem que ser gostoso modularizar, implantar, testar, integrar, simular!

• Todas as ferramentas apresentadas são open-source;

• Podem funcionar com Delphi, C, C++, Ruby, entre outras plataformas;

•Muitas possibilidades de customização;

• Para pessoal de Java,

Page 41: Introdução a Application Life-cycle Management Open Source

Globalcode – Open4education

@vsenger

Obrigado!

[email protected]

@vsenger