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

2,540 views

Published on

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!

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,540
On SlideShare
0
From Embeds
0
Number of Embeds
24
Actions
Shares
0
Downloads
144
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide
  • 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.
  • Introdução a Application Life-cycle Management Open Source

    1. 1. Application Lifecycle Management Vinicius Senger@vsenger Globalcode – Open4education
    2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
    12. 12. 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; @vsenger Globalcode – Open4education
    13. 13. DEMONSTRAÇÃO @vsenger Globalcode – Open4education
    14. 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. 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. 16. Versionamento• “Qualidade” dos commits• Cuidar bem das mensagens• GIT File System?• Hooks & ALM @vsenger Globalcode – Open4education
    17. 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. 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. 19. Integração com Redmine• Navegar nos arquivos do SVN via Web clicando no item Repository: @vsenger Globalcode – Open4education
    20. 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. 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. 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. 23. Maven (Java) • Gestão de dependências e build do seu software Java; • Obriga a declaração das dependências de JARs; • É 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. 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. 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. 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. 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. 28. Configurando Maven (Java) • Para que o Maven possa fazer deployment de artefatos no Nexus: @vsenger Globalcode – Open4education
    29. 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. 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. 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. 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. 33. Configuração • Para fazer as configurações iniciais devemos clicar em Manage Hudson @vsenger Globalcode – Open4education
    34. 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. 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. 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. 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. 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. 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. 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
    41. 41. Obrigado! vinicius@globalcode.com.br @vsenger @vsenger Globalcode – Open4education

    ×