1) O documento apresenta o conceito de Application Lifecycle Management (ALM) e ferramentas open source para implementar ALM, incluindo Redmine para gerenciamento de requisitos, SVN/GIT para controle de versão, Maven para build, Nexus para gerenciamento de pacotes, Jenkins para integração contínua e Selenium para testes.
2) É demonstrado como configurar a integração entre essas ferramentas, incluindo a integração do Redmine com SVN/GIT e do Maven com Nexus.
3) As vantagens do ALM inclue
2. Agenda
Introdução a Application Lifecycle Management
A.L.M. open source
Arquétipos & A.L.M.
Demonstrações práticas
@vsenger
Globalcode – Open4education
3. Vinicius Senger
vinicius@globalcode.com.br
@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!
@vsenger
Globalcode – Open4education
4. A.L.M.
• 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;
@vsenger
Globalcode – Open4education
5. 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!
@vsenger
Globalcode – Open4education
6. A.L.M. - vantagens
• 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!
@vsenger
Globalcode – Open4education
7. Gestão de Arquitetura
• 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
@vsenger
Globalcode – Open4education
8. 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
@vsenger
Globalcode – Open4education
9. • 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
@vsenger
Globalcode – Open4education
10. A.L.M.
1 Novo projeto
2 RedMine 2 SVN 2 Hudson
3 Requisitos 4 Codificação 5 Build & Testes
6 Inspeção
Bugs
10 e Melhorias
7 Nexus
9 Produção 8 Homologação
@vsenger
Deployment Contínuo Globalcode – Open4education
11. 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;
@vsenger
Globalcode – Open4education
14. Versionamento
• 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
@vsenger
Globalcode – Open4education
15. 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;
@vsenger
Globalcode – Open4education
16. Versionamento
• “Qualidade” dos commits
• Cuidar bem das mensagens
• GIT File System?
• Hooks & ALM
@vsenger
Globalcode – Open4education
17. 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:
@vsenger
Globalcode – Open4education
18. 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
@vsenger
Globalcode – Open4education
19. Integração com Redmine
• Navegar nos arquivos do SVN via Web clicando no item
Repository:
@vsenger
Globalcode – Open4education
20. Integração com Redmine
• 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”
@vsenger
Globalcode – Open4education
21. 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!
@vsenger
Globalcode – Open4education
22. Integração com Redmine
cd /home/almadmin/projetos-svn/projeto1/trunk
touch novo-arquivo.txt
svn commit –m “Correçao de problema closes #2”
@vsenger
Globalcode – Open4education
23. Maven (Java)
• 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;
@vsenger
Globalcode – Open4education
24. Nexus (Java)
• 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!
@vsenger
Globalcode – Open4education
25. Introdução Nexus (Java)
• 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
@vsenger Internet
Globalcode – Open4education
26. Introdução ao Nexus (Java)
• 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!
@vsenger
Globalcode – Open4education
27. Configurando Maven (Java)
• Devemos adicionar esta configuração em um arquivo
settings.xml que ficará no diretório .m2 do usuário:
@vsenger
Globalcode – Open4education
28. Configurando Maven (Java)
• Para que o Maven possa fazer deployment de artefatos
no Nexus:
@vsenger
Globalcode – Open4education
29. Introdução ao Jenkins
• 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;
@vsenger
Globalcode – Open4education
30. Introdução ao 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;
@vsenger
Globalcode – Open4education
31. Introdução ao 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
@vsenger
Globalcode – Open4education
32. 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;
@vsenger
Globalcode – Open4education
33. Configuração
• Para fazer as configurações iniciais devemos clicar em
Manage Hudson
@vsenger
Globalcode – Open4education
34. Configuração
• Em seguida Configure System teremos acesso as
principais configurações do Hudson:
Representa o no. de
executores de builds.
@vsenger
Globalcode – Open4education
35. Configuração
• Após a instalação é importante configurar o local onde
estão instalados JDK, Maven e Ant (se usar);
@vsenger
Globalcode – Open4education
36. Configuração
• A outra configuração importante é uma conta de e-mail
funcionando para o Hudson poder se comunicar com
equipes:
@vsenger
Globalcode – Open4education
37. Dashboard
• O dashboard traz as informações sobre os diversos jobs /
projetos configurados;
• Este ícone indica a estabilidade dos builds:
@vsenger
Globalcode – Open4education
38. Selenium
• 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
@vsenger
Globalcode – Open4education
39. Arquétipo
• 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
@vsenger
Globalcode – Open4education
40. 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,
@vsenger
Globalcode – Open4education
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.