Implantação de Ambiente de Integração contínua para projeto que usa Java e C
-
Upload
eliane-collins -
Category
Technology
-
view
1.714 -
download
1
description
Transcript of Implantação de Ambiente de Integração contínua para projeto que usa Java e C
INdT
Hudson
QUALIDADE
Sucess
Unit Test
Verificação
Bug
SCRUM
Melhoria no Desenvolvimento Ágil com Implantação de Processo de Integração Contínua Multiplataforma
para Java e .NET
Instituto Nokia de Tecnologia
SELENIUM
Eliane Collins, Thiago Falcão, Rafael Cunha e Vicente Lucena
Curitiba, Jun 2011
Simpósio Brasileiro de Qualidade de Software - SBQS
AGILIDADE
Company Confidential
2. Contexto do Ambiente
1. Introdução
Agenda
3. Processo Multiplataforma de Integração Contínua
5. Conclusão
4. Execução e Resultados
Company Confidential
3
IntroduçãoIntrodução
Company Confidential
INTRODUÇÃO
� Crescente adoção de metodologias ágeis para o desenvolvimento de software.
�Técnicas e estratégias estão sendo pesquisadas para garantir a qualidade e confiabilidade dos sistemas desenvolvidos.
�A integração contínua se destaca ganhando importância por proporcionar informações que dizem respeito à qualidade durante o desenvolvimento de maneira automática e contínua.
4
Company Confidential
INTRODUÇÃO
� O Processo de Integração Contínua é a prática no onde toda equipe deve integrar seu trabalho sempre a cada alteração.
�Cada integração é verificada, testes unitários e de aceitação são executados para detectar defeitos o mais rápido possível.
�É possível reduzir problemas de integração, controlar versões estáveis do sistema e permitir que o time desenvolva rapidamente um software coeso
5
Company Confidential
INTRODUÇÃO
� Vantagens conhecidas da Integração Contínua:
�A redução de riscos obtida através da detecção e correção de defeitos mais cedo.
�Automação de processos manuais e repetitivos (compilação, integração de base de dados, teste, inspeção, distribuição e feedback).
�Permitir uma melhor visibilidade de projeto (estatísticas reais e recentes fornecidas nos relatórios gerados ).
�Verificações automáticas de cobertura, validação de padrões de design de código e padronização.
6
Company Confidential
INTRODUÇÃO
7
Company Confidential
8
Contexto do AmbienteContexto do Ambiente
Company Confidential
CONTEXTO DO AMBIENTE
� Instituto Nokia de Tecnologia – INdT
�É uma instituição independente e sem fins lucrativos comprometida com a realização de pesquisa e desenvolvimento de soluções tecnológicas através do desenvolvimento de aplicações, novas tecnologias e conceitos.
�A área onde a experiência foi desenvolvida foi Tecnologias de Produto e Manufatura (PMT).
9
Company Confidential
CONTEXTO DO AMBIENTE
� SCRUM
� Metodologia ágil e flexível, centrada no trabalho em equipe;
� Utilizada para o desenvolvimento incremental e iterativo de qualquer produto
10
Company Confidential
CONTEXTO DO AMBIENTE
� Projeto Piloto
� Realizar a manutenção preventiva de equipamentos que são utilizados ininterruptamente na produção de uma fábrica de produtos eletrônicos.
� O sistema deveria se comunicar com equipamentos da linha de produção.
�Evitar a substituição prematura de uma peça ou a parada de linha de produção devido ao desgaste intensivo do equipamento.
�Diminuir os custos com a manutenção dos equipamentos de produção.
�Comunicar-se com outros sistemas de produção, com isso utilização de diferentes tecnologias em seu desenvolvimento.
11
Company Confidential
CONTEXTO DO AMBIENTE
� Projeto Piloto
� 3 módulos de desenvolvimento: um cliente web na plataforma Java usando um servidor JBoss;
�O segundo e o terceiro: um webservice e um serviço na plataforma .NET executando em um servidor Internet Infomation Services (IIS).
�Os módulos necessitavam comunicar-se entre si.
�Necessária a realização da integração entre os módulos.
�Não era interessante que cada integrante da equipe executasse os testes unitários em todo o sistema.
�Se perderia muito tempo com erros de integrações e testes manuais.
12
Company Confidential
13
Processo Multiplataforma de Integração ContínuaProcesso Multiplataforma de Integração Contínua
Company Confidential
PROCESSO Multiplataforma de Integração Contínua
� O processo deveria fazer parte da metodologia ágil Scrum.
� Primeira Etapa: Avaliar frameworks de integração contínua disponíveis no mercado.
�CruiseControl.Net:
�Ferramenta proprietária e difícil configuração em xml.
�Não possui muitos pluggins.
�Hudson
14
Company Confidential
� Hudson Vantagens:
� Ferramenta livre,.
� Interface amigável e simples de configurar
� Configuração do ambiente de teste – segundo sprint
� Possui plug-ins, os quais facilitaram a integração com outros softwares e plataformas que seriam usados no projeto.
�Junit
�Nunit
�Subversion (SVN)
�MSBuild.
�Selenium
�…
15
PROCESSO Multiplataforma de Integração Contínua
Company Confidential
� HUDSON
16
PROCESSO Multiplataforma de Integração Contínua
Company Confidential
� Para o módulo do sistema em Java, foi utilizado Apache Ant.
�Criado um XML responsável por compilar todo o código escrito em Java, executar os testes unitários usando JUnit, empacotar o arquivo, e finalmente enviá-lo para o servidor JBoss através da ferramenta Hudson.
�Para o módulo do sistema na plataforma .NET foi utilizado o Microsoft MSBuild.
�Criado um arquivo MSBuild responsável por compilar o código escrito em .NET, executar os testes unitários usando NUnit, e finalmente, executar a distribuição.
�Distribuição: Republicar e reiniciar a nova versão do webservice no servidor IIS, como também republicar e reiniciar a nova versão do serviço Windows.
17
PROCESSO Multiplataforma de Integração Contínua
Company Confidential
� As duas plataformas trabalhavam paralelamente e integradas por causa das várias compilações, testes e distribuições diárias.
�Quando ocorriam erros de compilação no servidor de integração contínua a correção ou retorno era prioritário
�Impedimentos não poderiam ser gerados para não atrapalhar o desenvolvimento do restante da equipe.
18
PROCESSO Multiplataforma de Integração Contínua
Company Confidential
� Arquitetura do Processo de Integração Contínua Multiplataforma:
19
PROCESSO Multiplataforma de Integração Contínua
Company Confidential
20
Execução do Processo e ResultadosExecução do Processo e Resultados
Company Confidential
Execução do Processo e Resultados
�Sprint Planning
�A estimativa das estórias levavam em consideração a codificação dos testes unitários e a integração do código tanto para o módulo .NET como para o módulo Java.
�Sprint
�Os desenvolvedores codificavam os testes unitários usando JUnit e Mockito para a plataforma Java e NUnit e MOQ para a plataforma .NET.
�Ao final de cada dia, o time tinha que enviar o código trabalhado para o repositório (SVN)
�Hudson detectava e executava os scripts do Ant, no caso do módulo Java e MSBuild no caso do módulo .NET
�Compilavam, executavam os testes, empacotavam o código e enviavam a versão do software estável para o servidor de destino
21
Company Confidential
Execução do Processo e Resultados
�Quando a ferramenta Hudson detectava falhas em qualquer passo desse processo, o script (Ant ou MSBuild) era interrompido.
�A versão não era enviada para o servidor de destino e todo time recebia um e-mail com o relatório sobre as falhas encontradas.
�É possível visualizar e das ações executadas por cada membro do time, identificando o autor de cada mudança.
22
Company Confidential
Execução do Processo e Resultados
�Resultados
�No fim do Sprint obtinha-se uma entrega de software estável para ser validada pela equipe de teste para validar o critério de aceitação.
�Em 10 Sprints de projeto foram geradas 140 builds para o módulo Java e 283 builds para o módulo .NET.
23
Company Confidential
Execução do Processo e Resultados
�Resultados
�Conforme o processo era executado, a cobertura de testes aumentava e a incidência de falhas no software diminuía.
�Isso ocorreu porque o ambiente automatizado propiciou mais facilidade na confecção e execução de testes unitários e com isso aumentar a qualidade do código gerado.
24
Company Confidential
Execução do Processo e Resultados
�Resultados Atuais
�Integração com a ferramenta de cobertura de código.
25
Company Confidential
Execução do Processo e Resultados�Resultados Atuais
�Integração com a Ferramenta Selenium para testes de aceitação automáticos.
26
Company Confidential
27
ConclusãoConclusão
Company Confidential
CONCLUSÃO
� Este processo de integração contínua possibilitou testes automatizados, uma distribuição rápida e versões do software atualizadas e estáveis.
�Os desenvolvedores das plataformas Java e .NET ficaram focados somente no desenvolvimento em sua respectiva tecnologia.
�A equipe de testes foi beneficiada, pois as versões de software para teste se tornaram mais estáveis e sem defeitos de integração e implementação.
�Melhorias: Evoluir o ambiente para inspeção e padronização do código. E melhorar a automação dos testes de aceitação.
28
Company Confidential
OBRIGADA!
Perguntas??
29