O documento apresenta uma solução de Application Lifecycle Management (ALM) open source composta por ferramentas como Redmine, Subversion/Git, Maven, Nexus, Hudson/Jenkins. A pilha ALM descrita permite gerenciar todo o ciclo de vida de desenvolvimento de software de forma integrada e com baixo custo.
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122Bruno Souza
Slides do Minicurso ministrado pela ToolsCloud na Globalcode. Para se inscrever nas proximas turmas, acesse:
http://www.globalcode.com.br/gratuitos/minicursos/minicurso-introducao-a-alm-open-source
Para experimentar as ferramentas apresentadas no minicurso, você pode utilizar o ambiente de demonstração da ToolsCloud:
https://demo.toolscloud.net
User: toolscloud
Password: toolscloud
ToolsCloud -- As ferramentas que os desenvolvedores adoram, na nuvem!
Solução complete de ALM, open source e sem stress. Começe a usar no seu projeto hoje!
http://www.toolscloud.com
Introdução a Application Life-cycle Management Open SourceGlobalcode
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!
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122Bruno Souza
Slides do Minicurso ministrado pela ToolsCloud na Globalcode. Para se inscrever nas proximas turmas, acesse:
http://www.globalcode.com.br/gratuitos/minicursos/minicurso-introducao-a-alm-open-source
Para experimentar as ferramentas apresentadas no minicurso, você pode utilizar o ambiente de demonstração da ToolsCloud:
https://demo.toolscloud.net
User: toolscloud
Password: toolscloud
ToolsCloud -- As ferramentas que os desenvolvedores adoram, na nuvem!
Solução complete de ALM, open source e sem stress. Começe a usar no seu projeto hoje!
http://www.toolscloud.com
Introdução a Application Life-cycle Management Open SourceGlobalcode
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!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Globalcode
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.
Apresentação realizada no dia 13/04/2013, no 29º Guru-SP: gurusp.org/encontros/vigesimo-nono-encontro-do-guru-sp
Versão original em js: https://github.com/nuxlli/12factor-openruko
Desconstruindo monolitos - Construindo microservicos em DelphiFelipe Caputo
Palestra apresentada no TDC POA 2018 sobre como transformar monolitos delphi em microserviços, com foco em agilidade e qualidade.
Abordamos modelos arquiteturais, técnicas de migração e ferramentas utilizadas
Revisa conceitos de Orientação a Objetos. Revisa conceitos de Padrões de Projeto.
Apresenta um breve histórico da evolução da arquitetura de software. Mostra a importância que a escolha do padrão arquitetural exerce na construção de software. Demonstra de maneira prática e em forma de experimento, um projeto de software Java que tenha sido aplicado os padrões arquiteturais adotados no mercado de trabalho, habilitando os alunos a definirem e utilizarem os padrões arquiteturais.
Que decisões são relevantes no início do projeto para que a aplicação seja portável, escalável, pronta para a nuvem e "production ready" desde as primeiras features? A metodologia dos 12 fatores sintetiza esse assunto de maneira didática.
Existem muitas possibilidades de inovar no seguimento de lojas físicas, que tem em sua maioria uma tecnologia mais antiga.
Essa palestra conta a história do desenvolvimento de um produto para atender esse mercado do mundo físico e é focada nas decisões técnicas que impactaram a visão de negócio diretamente, fazendo um comparativo das tecnologias que levaram a essas decisões (escolha do React, React Native, Electron e libs auxiliares).
Hoje o produto roda em Android, iOS, Windows e web, compartilhando a maior parte do código-fonte, permitindo entregar features multi-plataforma de forma ágil.
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Criciúma Dev
Lucas Ferreira (BurnWeb)
A talk abordará uma forma diferente de desenvolver apps para celular utilizando o framework React Native criado pelos engenheiros do Facebook. Ao final também teremos um pouco de mão na massa.
4º Meetup Criciúma Dev
Academia do Arquiteto - Implantando A.L.M. em uma semana!Globalcode
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.
Apresentação realizada no dia 13/04/2013, no 29º Guru-SP: gurusp.org/encontros/vigesimo-nono-encontro-do-guru-sp
Versão original em js: https://github.com/nuxlli/12factor-openruko
Desconstruindo monolitos - Construindo microservicos em DelphiFelipe Caputo
Palestra apresentada no TDC POA 2018 sobre como transformar monolitos delphi em microserviços, com foco em agilidade e qualidade.
Abordamos modelos arquiteturais, técnicas de migração e ferramentas utilizadas
Revisa conceitos de Orientação a Objetos. Revisa conceitos de Padrões de Projeto.
Apresenta um breve histórico da evolução da arquitetura de software. Mostra a importância que a escolha do padrão arquitetural exerce na construção de software. Demonstra de maneira prática e em forma de experimento, um projeto de software Java que tenha sido aplicado os padrões arquiteturais adotados no mercado de trabalho, habilitando os alunos a definirem e utilizarem os padrões arquiteturais.
Que decisões são relevantes no início do projeto para que a aplicação seja portável, escalável, pronta para a nuvem e "production ready" desde as primeiras features? A metodologia dos 12 fatores sintetiza esse assunto de maneira didática.
Existem muitas possibilidades de inovar no seguimento de lojas físicas, que tem em sua maioria uma tecnologia mais antiga.
Essa palestra conta a história do desenvolvimento de um produto para atender esse mercado do mundo físico e é focada nas decisões técnicas que impactaram a visão de negócio diretamente, fazendo um comparativo das tecnologias que levaram a essas decisões (escolha do React, React Native, Electron e libs auxiliares).
Hoje o produto roda em Android, iOS, Windows e web, compartilhando a maior parte do código-fonte, permitindo entregar features multi-plataforma de forma ágil.
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Criciúma Dev
Lucas Ferreira (BurnWeb)
A talk abordará uma forma diferente de desenvolver apps para celular utilizando o framework React Native criado pelos engenheiros do Facebook. Ao final também teremos um pouco de mão na massa.
4º Meetup Criciúma Dev
GCS - Aula 09 - GCS Ágil
Aspectos quanto ao conceito de GCS Ágil, práticas ágeis relacionadas à GCS e Padrões de Gestão de Configuração de Software
Disciplina de Gestão de Configuração de Software do Curso de Especialização em Engenharia de Software.
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version ControlJoomla!Day Brasil
Flávio Kubota apresentou seu projeto de controle de versões que foi selecionado pelo Google como um dos projetos do Google Summer of Code, concurso que incentiva o desenvolvimento em plataformas Opensource, o Brasil teve 3 estudantes selecionados.
Essa apresentação aborda como usar o Git junto aos serviços do cloud colaborativo BitBucket de maneira simples e pratica.
Links:
https://git-scm.com/
https://bitbucket.org/
Angularjs é um framework javascript construido e mantido pelo grupo de engenheiros do Google, ele usa o HTML como uma "template engine" aliado a conceitos de Orientação a Objetos, testes, dentre outros, no intuito de fornecer uma solução completa para o cliente-side de sua aplicação. Além disso tem total compatibilidade com as bibliotecas javascript mais utilizadas, como jQuery. é um novo conceito para desenvolvimento de web apps client-site.
Entenda as novidades que estão por vir com o AngularJS 2.0, as novas definições, facilidades, novos desafios e entenda o motivo do AngularJS ser um framework excelente para todos os momentos.
Neste webinar, você aprenderá como as empresas podem se valer da nuvem da AWS para automatizar os pipelines de desenvolvimento de software. Essa abordagem permite que sua equipe seja mais ágil, melhorando sua capacidade para entregar aplicações e serviços mais rapidamente.
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAmazon Web Services LATAM
A era dos ciclos anuais e semestrais de entrega de software está ficando para trás. Empresas líderes em seu segmento de mercado entregam software de alta qualidade em ciclos de poucos dias, em alguns casos, de poucas horas. Nesta sessão, iremos apresentar como você pode iniciar sua jornada para DevOps compartilhando boas práticas e ferramentas utilizadas pelos times de ‘duas pizzas’ da Amazon. Vamos mostrar como você pode acelerar sua produtividade implementando fluxos de integração e entrega contínua. E iremos introduzir os serviços que a AWS desenvolveu inspirados nas ferramentas e práticas internas da Amazon: AWS CodeCommit, AWS CodeBuild, AWS CodePipeline e AWS CodeDeploy.
https://aws.amazon.com/pt/products/developer-tools/
Zend Framework 2 - Desenvolvimento Ágil CompetenteMichael Cardoso
Essa apresentação faz parte do minicurso Zend Framework 2, onde apresentamos suas principais características e como fazer a instalação deste framework web de ponta.
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...Amazon Web Services
Ciclos de lançamento de software agora são medidos em dias em vez de meses. Empresas de ponta estão continuamente fornecendo software de alta qualidade em um ritmo acelerado. Nesta sessão, abordaremos como você pode começar sua jornada de DevOps compartilhando melhores práticas e ferramentas usadas pelas equipes de engenharia na Amazon. Nós mostraremos como você pode acelerar a produtividade do desenvolvedor, implementando fluxos de trabalho contínuos de integração e entrega. Além disso, apresentamos o AWS CodeStar, o AWS CodeCommit, o AWS CodeBuild, o AWS CodePipeline, o AWS CodeDeploy e o AWS X-Ray, os serviços inspirados nas ferramentas de desenvolvedor internas e nas práticas DevOps da Amazon.
Palestra apresentada no TDC Recife 2019, na trilha de DevOps.
Apresento uma ferramenta de CI/CD da Microsoft, o Azure Pipelines, serviço que é parte do Azure DevOps, do ponto de vista de um time com quase nenhuma experiência montando um CI/CD. Mostrei algumas funcionalidades que tornaram nossa experiência com a ferramenta mais tranquila e que contribuíram com que a curva de aprendizado fosse a menor possível.
Teste automatizado com Selenium é uma abordagem para testar aplicativos da web usando o Selenium WebDriver, uma ferramenta de automação de teste de código aberto. O objetivo é verificar se o aplicativo funciona conforme o esperado em diferentes cenários.
Para criar um teste automatizado com Selenium, você precisará seguir os seguintes passos:
Escolha uma linguagem de programação: O Selenium suporta várias linguagens de programação, como Java, Python, C#, etc. Escolha uma linguagem que seja adequada para você.
Configure o ambiente de teste: Você precisará configurar o ambiente de teste com o Selenium WebDriver, o navegador da web e o ambiente de desenvolvimento integrado (IDE) da sua escolha.
Identifique elementos da página: Use o inspetor de elementos do navegador para identificar os elementos da página que você deseja testar, como botões, caixas de texto, menus suspensos, etc.
Escreva o código de teste: Use o código da linguagem de programação escolhida para escrever o teste. O código pode incluir as seguintes etapas:
Navegar para a página que contém os elementos que você deseja testar.
Localizar os elementos na página usando seus identificadores únicos, como ID, nome, classe, etc.
Interagir com os elementos, como clicar em um botão, preencher um formulário, selecionar uma opção em um menu suspenso, etc.
Verificar se o aplicativo se comporta conforme o esperado.
Executar o teste: Execute o teste no ambiente de teste configurado. O Selenium abrirá o navegador, navegará para a página e executará as etapas de teste que você escreveu.
Analisar os resultados do teste: Verifique se o teste passou ou falhou e analise os logs para identificar quaisquer erros ou problemas.
Repita para diferentes cenários: Repita os passos 3 a 6 para diferentes cenários de teste, como diferentes entradas de formulário, diferentes caminhos de navegação, etc.
Os testes automatizados com Selenium podem ser integrados ao processo de integração contínua para garantir que o aplicativo da web seja testado regularmente. Isso ajuda a identificar e corrigir problemas antes que se tornem críticos. Além disso, a automação de testes pode economizar tempo e esforço, permitindo que os testes sejam executados mais rapidamente e com menos erros humanos.
Nesta palestra vamos abordar formas de criar um ambiente de desenvolvimento de software mais ágil por meio da utilização e integração das ferramentas Maven 3, Sonar e Hudson. Com isso é possível estímular a eliminação de atividades repetitivas dentro do processo de desenvolvimento além de auxiliar na redução de defeitos e aumentar a qualidade do código produzido. A palestra é montada em ferramentas feitas para a plataforma Java.
3. Mini Curso ALM Open Source Globalcode
● Esse material é baseado no mini-curso MC-122,
Introdução a ALM Open Source
● http://www.globalcode.com.br/gratuitos/minicursos/minicurso-introducao-a-alm-
open-source
● Esse é um minicurso gratuito de 3 horas, ministrado pela
Globalcode e pela ToolsCloud mensalmente
● A Globalcode também ministra um curso completo de ALM
Open Source online, o curso AA1 Online:
● http://www.globalcode.com.br/treinamentos/online/alm-testes
4. • 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.
5. A.L.M.
• Independente de metodologia, arquitetura e tecnologia,
todos os times de desenvolvimento precisam 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.
6. • 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
7. • 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
8. Pilha 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 / Jenkins
Repositório de componentes Nexus
Ferramenta para desenvolvimento ● Eclipse / NetBeans com
plugins
14. • 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
16. • Após login, temos dois principais itens: Projects, para
entrar em um projeto e Administration para config.
geral:
Redmine
Home
17. • 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
18. • 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
19. • “Qualidade” dos commits
• Cuidar bem das mensagens
• Independente de decisão, escolha entre SVN e GIT!
• GIT File System?
• Hooks & ALM
Versionamento
20. • 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
21. 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>
22. • 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
23. • 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
24. • 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
25. • 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
26. • Navegar nos arquivos do SVN via Web clicando no
item Repository:
Integração com Redmine
27. • 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
28. • 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!
30. ●
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... Mesmo com essas ferramentas, é possível que
os desenvolvedores commitem código não-
compilável.
Integração Continua
31. ●
Hudson/Jenkins são servidores 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: um agendador de tarefas de construção de
softwares altamente customizável;
Introdução ao Hudson / Jenkins
32. • 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 / Jenkins
33. • 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 / Jenkins
34. • 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
35. • 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
36. • Para fazer as configurações iniciais devemos clicar em
Manage Hudson
Configuração
37. • Em seguida Configure System teremos acesso as
principais configurações do Hudson:
Configuração
Representa o no. de
executores de builds.
38. • Após a instalação é importante configurar o local
onde estão instalados JDK, Maven e Ant (se usar);
Configuração
39. • A outra configuração importante é uma conta de e-mail
funcionando para o Hudson poder se comunicar com
equipes:
Configuração
40. 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!
41. Criando Jobs
•Em seguida configuramos o
job indicando principalmente
o repositório para checkout
do projeto!
42. Criando Jobs
Podemos clicar em Build
Now e Hudson vai iniciar o
checkout do código e
depois vai disparar o build
Maven!
43. • O dashboard traz as informações sobre os diversos
jobs / projetos configurados;
• Este ícone indica a estabilidade dos builds:
Dashboard
44. • 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
45. • 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
46. • 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
47. • Devemos adicionar esta configuração em um arquivo
settings.xml que ficará no diretório .m2 do usuário:
Configurando Maven
48. • Para que o Maven possa fazer deployment de
artefatos no Nexus:
Configurando Maven
49. Outras ferramentas
● Sonar – Análise de qualidade de software
● TestLink – Gerencia de Testes
● Vagrant – Automatização de servidor de desenvolvimento
● Chef – Automação de infraestrutura
50. ● As ferramentas Maven, Nexus, Hudson/Jenkins, Redmine
e Subversion formam uma poderosa solução de ALM;
● Todas as ferramentas são open-source;
● Este ambiente é agnóstico de linguagens, e funciona para
projetos Delphi, C, C++, Ruby, PHP e outros;
● Muitas possibilidades de customização;
● A ToolsCloud oferece este ambiente como serviço da
nuvem
Conclusões
51. ● Pilha ALM como SaaS na nuvem
● Tudo isso que vimos, e mais:
● Ferramentas totalmente integradas
● Ambiente montado em minutos
● Não precisa de servidores na sua empresa!
● Softwares atualizados e suporte
● Experimente online as ferramentas desse mini-
curso:
● https://demo.toolscloud.com
● user: toolscloud senha: toolscloud