Implantação de Ambiente de Integração contínua para projeto que usa Java e C

29
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

description

Experiência de implantar um ambiente de integração contínua em um projeto multiplataforma

Transcript of Implantação de Ambiente de Integração contínua para projeto que usa Java e C

Page 1: 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

Page 2: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

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

Page 3: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

Company Confidential

3

IntroduçãoIntrodução

Page 4: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

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

Page 5: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

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

Page 6: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

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

Page 7: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

Company Confidential

INTRODUÇÃO

7

Page 8: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

Company Confidential

8

Contexto do AmbienteContexto do Ambiente

Page 9: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

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

Page 10: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

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

Page 11: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

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

Page 12: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

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

Page 13: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

Company Confidential

13

Processo Multiplataforma de Integração ContínuaProcesso Multiplataforma de Integração Contínua

Page 14: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

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

Page 15: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

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

Page 16: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

Company Confidential

� HUDSON

16

PROCESSO Multiplataforma de Integração Contínua

Page 17: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

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

Page 18: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

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

Page 19: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

Company Confidential

� Arquitetura do Processo de Integração Contínua Multiplataforma:

19

PROCESSO Multiplataforma de Integração Contínua

Page 20: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

Company Confidential

20

Execução do Processo e ResultadosExecução do Processo e Resultados

Page 21: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

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

Page 22: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

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

Page 23: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

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

Page 24: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

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

Page 25: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

Company Confidential

Execução do Processo e Resultados

�Resultados Atuais

�Integração com a ferramenta de cobertura de código.

25

Page 26: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

Company Confidential

Execução do Processo e Resultados�Resultados Atuais

�Integração com a Ferramenta Selenium para testes de aceitação automáticos.

26

Page 27: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

Company Confidential

27

ConclusãoConclusão

Page 28: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

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

Page 29: Implantação de Ambiente de Integração contínua para  projeto que usa Java e C

Company Confidential

OBRIGADA!

Perguntas??

29