The Impact of Energy Source on the Life-Cycle Assessment ...
Introdução a Application Life-cycle Management Open Source
-
Upload
globalcode -
Category
Technology
-
view
1.999 -
download
4
description
Transcript of Introdução a Application Life-cycle Management Open Source
Globalcode – Open4education
@vsenger
Application Lifecycle ManagementVinicius Senger
Globalcode – Open4education
@vsenger
Agenda
Introdução a Application Lifecycle Management
A.L.M. open source
Arquétipos & A.L.M.
Demonstrações práticas
Globalcode – Open4education
@vsenger
@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
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.
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!
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
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
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
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
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
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
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
Globalcode – Open4education
@vsenger
DEMONSTRAÇÃO
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
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
Globalcode – Open4education
@vsenger
• “Qualidade” dos commits
•Cuidar bem das mensagens
•GIT File System?
•Hooks & ALM
Versionamento
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
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
Globalcode – Open4education
@vsenger
•Navegar nos arquivos do SVN via Web clicando no item Repository:
Integração com Redmine
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
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!
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
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)
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)
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
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)
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)
Globalcode – Open4education
@vsenger
• Para que o Maven possa fazer deployment de artefatos no Nexus:
Configurando Maven (Java)
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
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
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
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
Globalcode – Open4education
@vsenger
• Para fazer as configurações iniciais devemos clicar em Manage Hudson
Configuração
Globalcode – Open4education
@vsenger
• Em seguida Configure System teremos acesso as principais configurações do Hudson:
Configuração
Representa o no. de executores de builds.
Globalcode – Open4education
@vsenger
• Após a instalação é importante configurar o local onde estão instalados JDK, Maven e Ant (se usar);
Configuração
Globalcode – Open4education
@vsenger
• A outra configuração importante é uma conta de e-mail funcionando para o Hudson poder se comunicar com equipes:
Configuração
Globalcode – Open4education
@vsenger
•O dashboard traz as informações sobre os diversos jobs / projetos configurados;
• Este ícone indica a estabilidade dos builds:
Dashboard
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
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
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,