IMPLANTAÇÃO DE UMA FERRAMENTA DE INTEGRAÇÃO CONTíNUA EM UM NÚCLEO DE PRÁTICAS EM...

42
Universidade Federal do Ceará Campus Quixadá Curso de Engenharia de Software Guylherme Tabosa Cabral IMPLANTAÇÃO DE UMA FERRAMENTA DE INTEGRAÇÃO CONTíNUA EM UM NÚCLEO DE PRÁTICAS EM INFORMÁTICA: RELATO DE EXPERIÊNCA Quixadá, Ceará 2014

description

O desenvolvimento ágil está cada dia mais presente no cotidiano das empresas desenvolvedoras de software. A crescente busca por agilidade no desenvolvimento e a competitividadedo mercado impactam na existência deste cenário. Portanto, muitas empresas buscamaplicar as metodologias definidas neste ramo de desenvolvimento em seu processos, porém,essa não é uma tarefa simples. A definição e implantação dessas práticas realizadas demaneira não suficientemente adequada podem trazer resultados adversos ao esperado.Portanto este trabalho teve como objetivo implantar a utilização de uma ferramenta deintegração contínua em uma fábrica de software, o Núcleo de Práticas em Informática(NPI) da UFC - Campus Quixadá. Uma ferramenta de integração contínua está inseridaem uma das práticas definidas p elo Extreme Programming (XP). Para a realização desteobjetivo fora analisado o pro cesso vigente executado no NPI, além da experiência doautor que era um membro desta fábrica de software. Somado a esta etapa foi definidaa ferramenta de integração contínua a ser implantada de acordo com um conjunto decaracterística especificadas, o conhecimento dos membros da fábrica acerca de Gerência deconfiguração e Integração Contínua foi avaliado, e por fim, a implantação, com a definiçãode pontos positivos e negativos encontrados na implantação.

Transcript of IMPLANTAÇÃO DE UMA FERRAMENTA DE INTEGRAÇÃO CONTíNUA EM UM NÚCLEO DE PRÁTICAS EM...

  • Universidade Federal do Cear

    Campus Quixad

    Curso de Engenharia de Software

    Guylherme Tabosa Cabral

    IMPLANTAO DE UMA FERRAMENTA DE INTEGRAO CONTNUA EMUM NCLEO DE PRTICAS EM INFORMTICA: RELATO DE EXPERINCA

    Quixad, Cear

    2014

  • Guylherme Tabosa Cabral

    IMPLANTAO DE UMA FERRAMENTA DE INTEGRAO CONTNUA EM UM NCLEODE PRTICAS EM INFORMTICA: RELATO DE EXPERINCA

    Trabalho de Concluso de Curso submetido Coordenao do Curso de Engenharia de Soft-ware do Campus Quixad da UniversidadeFederal do Cear, como requisito parcial paraobteno do Ttulo de Bacharel em Engenha-ria de Software.

    Orientador: Prof Msc. Carlos Diego Andradede Almeida

    Co-Orientador:

    Quixad, Cear

    2014

  • Dados Internacionais de Catalogao na Publicao

    Universidade Federal do Cear

    Biblioteca do Campus de Quixad

    C117i Cabral, Guylherme Tabosa Implantao de uma ferramenta de integrao contnua em um ncleo de prticas em informtica:

    relato de experincia / Guylherme Tabosa Cabral. 2014. 42 f. : il. color., enc. ; 30 cm.

    Monografia (graduao) Universidade Federal do Cear, Campus de Quixad, Curso de Engenharia de Software, Quixad, 2014.

    Orientao: Prof. Me. Carlos Diego Andrade de Almeida rea de concentrao: Computao

    1. Gerenciamento de configuraes de software 2. Integrao de dados (Computao) 3.

    Desenvolvimento gil de software I. Ttulo.

    CDD 005.1

  • Guylherme Tabosa Cabral

    IMPLANTAO DE UMA FERRAMENTA DEINTEGRAO CONTNUA EM UM NCLEO DEPRTICAS EM INFORMTICA: RELATO DE

    EXPERINCA

    Trabalho de Concluso de Curso submetido Coordenao do Curso de Engenharia deSoftware do Campus Quixad da Universidade Federal do Cear, como requisito parcialpara obteno do Ttulo de Bacharel em Engenharia de Software.

    rea de concentrao: Computao

    Aprovada em: 19 / novembro/ 2014

    BANCA EXAMINADORA

    Prof Msc. Carlos Diego Andrade de Almeida(Orientador)

    Universidade Federal do Cear (UFC)

    Prof Msc. Camilo Camilo Almendra(Membro)

    Universidade Federal do Cear (UFC)

    Prof Msc. Rgis Pires Magalhes (Membro)Universidade Federal do Cear (UFC)

  • A minha famlia principalmente meus avs, minha me, meu irmo, meu pai e a Mikaely.

  • Agradecimentos

    Agradeo primeiramente a Deus por me dar sabedoria, vontade e disposio paraconcluir este trabalho, sem ele nada seria possvel.

    A minha me Rejane, pelo exemplo de mulher e amor. Por sempre cuidar de mimmesmo quando no estive perto por todos esses anos de universidade.

    A meu av Nonato, pelo smbolo de pai, modelo de ser humano e seu meu maiorexemplo de vida.

    A minha av Rita, por todo o amor, fora e cuidado, minha segunda me.

    A meu irmo Felype por sempre partilhar comigo momentos bons e ruins e cuidarde mim quando precisei.

    A meu pai Joo por ensinar que o trabalho sempre gera resultados, e que o esforo seu maior aliado para o sucesso.

    A minha famlia pela ajuda e cuidado.

    A Mikaely por ter me aturado nos momentos de confuso, medo, raiva, angstia eoutros mais, sua presena ao meu lado me fez mais forte e focado nos objetivos.

    A meus amigos de faculdade, por todos esses anos de companheirismo, felicidadese ajudas.

    A meu orientador Carlos Diego por me guiar na obteno do melhor resultadopossvel e disponibilidade e interesse neste projeto.

    A UFC e seus funcionrios por fornecer as ferramentas para que pudesse evoluirmeus conhecimentos. Obrigado a todos.

  • ResumoO desenvolvimento gil est cada dia mais presente no cotidiano das empresas desenvolve-doras de software. A crescente busca por agilidade no desenvolvimento e a competitividadedo mercado impactam na existncia deste cenrio. Portanto, muitas empresas buscamaplicar as metodologias definidas neste ramo de desenvolvimento em seu processos, porm,essa no uma tarefa simples. A definio e implantao dessas prticas realizadas demaneira no suficientemente adequada podem trazer resultados adversos ao esperado.Portanto este trabalho teve como objetivo implantar a utilizao de uma ferramenta deintegrao contnua em uma fbrica de software, o Ncleo de Prticas em Informtica(NPI) da UFC - Campus Quixad. Uma ferramenta de integrao contnua est inseridaem uma das prticas definidas pelo Extreme Programming (XP). Para a realizao desteobjetivo fora analisado o processo vigente executado no NPI, alm da experincia doautor que era um membro desta fbrica de software. Somado a esta etapa foi definidaa ferramenta de integrao contnua a ser implantada de acordo com um conjunto decaracterstica especificadas, o conhecimento dos membros da fbrica acerca de Gerncia deconfigurao e Integrao Contnua foi avaliado, e por fim, a implantao, com a definiode pontos positivos e negativos encontrados na implantao.

    Palavras-chaves: Integrao Contnua. Desenvolvimento gil. Gerenciamento de Confi-gurao.

  • AbstractThe agile development is day by day inserted on the quotidian of software developmentcompanies. The growing seek for agility in the development and market competitivenesshas impacted in the existence of this scenario. Therefore, many companies seek to applythe defined methodologies in this kind of development in their processes, however, this isnot an easy task. The definition and deployment of this practices executed in a way notadequate enough can bring contrary results to the expected. So, this work had as an aimto implant the using of a continuous integration tool on a software factory, the InformaticsPractice Center (NPI) at UFC in Quixad. A continuous integration tool is inserted in oneof the practices defined by Extreme Programming (XP). In order to reach this goals, thecurrent process of NPI was analyzed, beyond the author experience thas was a member ofthis software factory. Added to this stage was defined the continuous integration tool to beimplanted according with a set of specified characteristics, the knowledges of the factorysmembers about Configuration Management and Continuous Integration was evaluated,and finally the deployment, with the definition of positives and negatives points found atthe deployment.

    Key-words: Continuous Integration. Agile Development. Configuration Management.

  • Lista de ilustraes

    Figura 1 Branch no Sistema de Controle de Verso . . . . . . . . . . . . . . . . 15Figura 2 Processo Lgico de uma Build . . . . . . . . . . . . . . . . . . . . . . . 17Figura 3 Ambiente de Integrao Contnua . . . . . . . . . . . . . . . . . . . . . 19Figura 4 Processo do NPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Figura 5 Processo de Gerenciamento de Configurao . . . . . . . . . . . . . . . 24Figura 6 Funo NPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Figura 7 Conhecem Integrao Contnua . . . . . . . . . . . . . . . . . . . . . . 32Figura 8 Utilizao em Projetos Pessoais . . . . . . . . . . . . . . . . . . . . . . 33Figura 9 Conhecimento e Utilizao de Ferramentas de Integrao Contnua . . 33Figura 10 Conhecem Gerncia de Configurao . . . . . . . . . . . . . . . . . . . 34Figura 11 Painel do SonarQube . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Figura 12 Histrico de Violaes . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

  • Lista de tabelas

    Tabela 1 Conhecimentos em Integrao Contnua . . . . . . . . . . . . . . . . . 31

  • Sumrio

    1 INTRODUO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    2 FUNDAMENTAO TERICA . . . . . . . . . . . . . . . . . . . . 142.1 Gerncia de Configurao . . . . . . . . . . . . . . . . . . . . . . . . . 142.1.1 Plano de Gerenciamento de Configurao . . . . . . . . . . . . . . . . . . 142.1.2 Sistema de Controle de Verso . . . . . . . . . . . . . . . . . . . . . . . . 142.1.3 Sistema de Controle de Mudana . . . . . . . . . . . . . . . . . . . . . . 152.1.4 Auditoria de Configurao . . . . . . . . . . . . . . . . . . . . . . . . . . 162.1.5 Ferramentas de Build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.2 Integrao Contnua . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.2.1 Caractersticas de Integrao . . . . . . . . . . . . . . . . . . . . . . . . . 182.2.2 Processo de Integrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.2.3 Benefcios da Integrao Contnua . . . . . . . . . . . . . . . . . . . . . . 192.2.4 Integrao Contnua Manual . . . . . . . . . . . . . . . . . . . . . . . . . 202.2.5 Integrao Contnua Automatizada . . . . . . . . . . . . . . . . . . . . . . 202.2.6 Processo de Escolha da Ferramenta . . . . . . . . . . . . . . . . . . . . . 202.3 Mtricas de Software . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.4 Processo do NPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.4.1 Processo de Gerncia de Configurao do NPI . . . . . . . . . . . . . . . . 23

    3 TRABALHOS RELACIONADOS . . . . . . . . . . . . . . . . . . . . 25

    4 PROCEDIMENTOS METODOLGICOS . . . . . . . . . . . . . . . 274.1 Analisar as atividades do Ncleo de Prticas . . . . . . . . . . . . . . 274.2 Pesquisar e selecionar a ferramenta de Integrao Contnua . . . . . 274.3 Absoro do perfil dos estagirios do Ncleo de Prticas . . . . . . . 274.4 Implantao da ferramenta de integrao contnua . . . . . . . . . . 274.5 Coleta de Mtricas do Cdigo . . . . . . . . . . . . . . . . . . . . . . 284.6 Anlise dos dados coletados . . . . . . . . . . . . . . . . . . . . . . . 28

    5 DESENVOLVIMENTO/RESULTADOS . . . . . . . . . . . . . . . . 295.1 Anlise das atividades do Ncleo de Prticas em Informtica . . . . 295.2 Pesquisa e Seleo da Ferramenta . . . . . . . . . . . . . . . . . . . . 295.3 Perfil dos Estagirios e conhecimentos sobre Integrao Contnua . 305.4 Processo de Implantao da Ferramenta de Integrao Contnua . . 345.4.1 Gesto de Projetos Acadmicos . . . . . . . . . . . . . . . . . . . . . . . 345.4.2 Pontos Positivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

  • 5.4.3 Pontos Negativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.5 Mtricas do Cdigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.5.1 Violaes de cdigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    6 CONSIDERAES FINAIS . . . . . . . . . . . . . . . . . . . . . . . 39

    REFERNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

  • 12

    1 Introduo

    Nas ltimas dcadas, as metodologias geis atraram uma grande ateno por partedas empresas desenvolvedoras de software. Isto deve-se muito relao das metodologiasgeis com o conjunto de boas prticas pertencentes a ela, que adicionam qualidade, controlee garantia ao produto.

    A Integrao Contnua uma dessas prticas, definida como uma ferramentade gesto de configurao, que auxilia os desenvolvedores e permite que as mudanasque foram realizadas no software sejam imediatamente avaliadas, testadas e verificadas,de modo a prover um feedback imediato para correo de possveis erros de integrao.Integraes, estas, que seriam verificadas apenas futuramente, posterior a problemas maiscomplexos de integrao. (DUVALL; MATYAS; GLOVER, 2007).

    A metodologia gil Scrum utilizada no Ncleo de Prticas em Informtica(NPI). T rata-se de um ambiente onde estudantes que esto em fase de concluso decurso podem estagiar e aprimorar seus conhecimentos adquiridos no decorrer de sua vidaacadmica, alm de conclurem seus componentes curriculares obrigatrios. Este surgiu,devido pouca demanda de empresas de Tecnologia da Informao (TI) na regio onde auniversidade se encontra e a crescente exigncia por profissionais dotados de experinciaem desenvolvimento de software (GONALVES et al., 2013).

    Os projetos l desenvolvidos tm como objetivo construir solues que facilitem asatividades do cotidiano da universidade, esta que tem um grande interesse no desenvolvi-mento destes projetos, pois consegue reduzir custos ao priorizar construes de sistemasinternamente (GONALVES et al., 2013). Em paralelo, se pode obter um aumento daqualidade dos profissionais formados, alm de proporcionar um ambiente real de trabalhoque tem como intuito facilitar a entrada dos concludentes no mercado de trabalho.

    No NPI existe um modelo de processo definido em que os desenvolvedores devemseguir para o exerccio de suas atividades (GONALVES et al., 2013). Entretanto, este emmomentos no devidamente seguido, e, em seu processo a utilizao de uma ferramentade integrao contnua no est introduzida, podendo ocasionar uma despadronizao namaneira como estes desenvolvedores trabalham em seus projetos. Somado-se a isto, o NPIapresenta problemas tais como: "Baixa qualidade da documentao dos sistemas; [. . . ]Falta de uma equipe de manuteno; [. . . ] Rotatividade dos profissionais"(PADUELLI;SANCHES, 2006, p. 4).

    A experincia em aplicar ferramentas de gesto de configurao foi abordada porOliveira e Nelson (2005), eles inseriram a utilizao destas com o intuito de evitar ainsero de novos erros oriundos de manutenes realizadas no software. Diferentemente

  • Captulo 1. Introduo 13

    do trabalho a ser desenvolvido nesse projeto que busca relatar a experincia obtida naimplantao de uma ferramenta de integrao contnua.

    Este trabalho tem como objetivo implantar uma ferramenta de integrao contnuano Ncleo de Prticas em Informtica da Universidade Federal do Cear do Campus deQuixad e como objetivos especficos estudar e analisar ferramentas de integrao contnua,e selecionar a que melhor se adapta ao Ncleo de Prticas em Informtica; selecionar eimplantar uma ferramenta de integrao contnua automatizada e por fim coletar relatos eresultados provenientes da implantao da ferramenta.

  • 14

    2 Fundamentao Terica

    Nesta seo ser apresentado os conceitos necessrios para um completo entendi-mento deste trabalho. A seo 2.1 aborda os conceitos inerentes gerncia de configurao,juntamente com algumas ferramentas CASE (Computer-Aided Software Engineering), comnfase em Integrao Contnua descrito na seo 2.2 e por fim na seo 2.4 ser descrito oprocesso do NPI e uma nfase no processo de Gerncia de Configurao.

    2.1 Gerncia de ConfiguraoA gerncia de configurao a rea da engenharia de software responsvel pela

    evoluo do software. Ela atua durante todo o ciclo de vida do produto de software e,por meio de tcnicas, ferramentas e metodologias, visa garantir que as mudanas queiro ocorrer dentro do ciclo de vida do desenvolvimento do software sejam identificadas,avaliadas e comunicada a todos os envolvidos atravs de ferramentas que auxiliam nesteprocesso de evoluo. Portanto "o propsito do processo de Gerncia de Configurao estabelecer e manter a integridade de todos os produtos de trabalho de um processo ouprojeto e disponibiliz-la a todos os envolvidos" (SOFTEX, 2013).

    2.1.1 Plano de Gerenciamento de ConfiguraoO Plano de Gerenciamento de Configurao (PGC) descreve todas as atividades

    de configurao e mudana que sero realizadas durante o projeto. Um conjunto deatividades, responsabilidades, ferramentas, recursos e etc. A gerncia de configuraotem como objetivo garantir a integridade dos itens de configurao, que so quaisquerartefatos que estejam sob custdia da gerncia de configurao, atravs do versionamento,da identificao e controle de mudanas e acesso (PRESSMAN, 2010).

    2.1.2 Sistema de Controle de VersoUm sistema de controle de verso: "[...] combina procedimentos e ferramentas para

    gerenciar diferentes verses de objetos de configuraes que so criadas durante o processode engenharia de software"(PRESSMAN, 2010, p. 927). Atualmente, o uso de sistemasde controle de verso se tornou comum nas empresas de grande e pequeno porte. Taisferramentas permitem que se tenha o controle de diferentes verses de arquivos que estosubmetidos ao versionamento, recuperao de verses antigas, visualizao de alteraesrealizadas em arquivos e saber por quem, e quando o arquivo foi alterado. Atravs de

  • Captulo 2. Fundamentao Terica 15

    comandos (i.e.,check-in,check-out) os usurios conseguem se comunicar com o repositrioa fim de obter os artefatos ali armazenados (MENEZES, 2011).

    Em situaes especiais, faz-se necessrio que os desenvolvedores trabalhem em umalinha diferente da original chamada de mainline geralmente essa situao ocorre quandotem-se como objetivo a correo de bugs de verses anteriores do repositrio, nesse caso,um branch, uma ramificao na linha de desenvolvimento do controle de verso, criadoafim de permitir a realizao desta ao, concedendo assim o trabalho em paralelo sobreo mesmo repositrio. A Figura 1 demonstra a criao de um branch paralelo linha de

    Figura 1: Branch no Sistema de Controle de Verso.

    Fonte: Eis (2012).

    desenvolvimento principal chamada de branch feature1 e branch master respectivamente.Posteriormente as aes realizadas no branch feature1 so incorporadas ao branch master.

    Os sistemas de controle de verso podem possuir trs caractersticas: Local, Centra-lizado e Distribudo. Um sistema de controle de verso local armazena todas as informaesde um arquivo submetido ao versionamento na mquina, localmente, guardando diferentesverses daquele arquivo. Enquanto um sistema de controle de verso centralizado comoo nome diz, possui um nico servidor centralizado, como o subversion 1, perforce 2 estetipo de padro de SCV mantm em seu nico servidor todos os arquivos versionados.Para cada comando de comunicao realizado nos arquivos versionados, uma requisiodever ser feita, podendo gerar lentido ou deixar o servidor fora de funcionamento. E porfim os sistemas de controle de verso distribudos que possuem um servidor central ondeos arquivos so submetidos ao versionamento, entretanto, cada desenvolvedor possui emsua mquina de trabalho as verses que estavam no servidor, tornando cada workstationum "servidor", portanto, caso ocorra um problema no servidor central, estes podem serrecuperados via workstation, mantendo assim, a integridade dos arquivos e evitando serum ponto nico de falha (GIT, 20_) .

    2.1.3 Sistema de Controle de MudanaTodo software sofre mudanas enfrentar essas mudanas o papel da gerncia

    de configurao, e para isso o gerente de configurao utiliza um sistema de controlede mudana. "O controle de mudana combina procedimentos humanos e ferramentas1 http://subversion.apache.org2 http://www.perforce.com

  • Captulo 2. Fundamentao Terica 16

    automatizadas para proporcionar um mecanismo de controle de mudana" Pressman(2010, p .930). As mudanas devem ser avaliadas com cautela baseando-se, em seu custobenefcio. Uma combinao de esforo e business value. A mudana tem incio quando um"cliente"solicita a mudanas atravs de um formulrio, conhecido como change request.

    Nesse formulrio est descrito os aspectos da mudana. Aps a solicitao serrealizada, esta deve ser avaliada, verificando se a mesma j foi solicitada, ou corrigidaem caso de bugs. Aps a mudana ser validada, uma equipe de desenvolvedores avaliamos impactos que esta mudana tem sobre o sistema, verificando custo/benefcio e esforode realizao (SOMMERVILLE, 2011). Posterior a esta anlise, a mudana ser avaliadapor um comit de controle de mudana (CCB), que avaliar o impacto da perspectivado negcio, que decidir se esta mudana ser revisada, aprovada ou reprovada. Algunssistemas que fornecem este controle sobre as mudana so: Redmine 3, GitHub 4 Jira 5

    2.1.4 Auditoria de Configurao"Uma auditoria de configurao de software complementa a reviso tcnica formal

    ao avaliar um objeto de configurao quanto s caractersticas que geralmente no soconsideradas durante a reviso" Pressman (2010, p .934). Ela tem como objetivo garantirque mesmo com as mudanas realizadas no software, a qualidade foi mantida. As auditoriasse dividem em dois tipos: auditorias funcionais e auditorias fsicas, a auditoria fsica baseia-se em verificar se os itens de configurao esto devidamente atualizados e se as prticas epadres foram realizados da maneira correta, enquanto a auditoria funcional busca verificaros aspectos lgicos dos itens de configurao.

    2.1.5 Ferramentas de BuildAs ferramentas de build tm como objetivo automatizar processos repetitivos,

    aumentando a produtividade e facilitando o trabalho do desenvolvedor. Atravs da definiode uma rotina, ou conjunto de comandos, o desenvolvedor informa a ferramenta que tipode processo ele deseja automatizar, podendo ser uma compilao, teste de classe, recriaode uma tabela nova no banco de dados, comprimir arquivos css e javascript. Cabe aodesenvolvedor definir o escopo da automatizao. Alguns exemplo deste tipo de ferramentaso: Ant, Grunt, Gulp, Maven.3 http://www.redmine.org4 http://www.github.com5 https://www.atlassian.com/software/jira

  • Captulo 2. Fundamentao Terica 17

    Figura 2: Processo Lgico de uma Build.

    Fonte: Duvall, Matyas e Glover (2007).

    Na figura Figura 2 um script foi definido para realizar as seguintes funes: cleanno projeto, compilao do cdigo fonte, integrao com o banco de dados, execuo dostestes, inspees no cdigo e por fim,o deploy da aplicao.

    2.2 Integrao ContnuaA integrao contnua tem como objetivo identificar erros mais rapidamente, per-

    mitindo que alteraes efetuadas e integradas aos repositrios dos sistemas de controlede verso sejam posteriormente verificadas e, caso erros ocorram, estes sejam notificadosimediatamente ao autor da alterao. A melhor definio acerca de integrao contnua foidefinida por Fowler (2006)

    "[...] uma prtica de desenvolvimento de software onde os membros deum time integram seu trabalho frequentemente, geralmente cada pessoaintegra pelo menos diariamente podendo haver mltiplas integraes pordia. Cada integrao verificada por uma build automatizada (incluindotestes) para detectar erros de integrao o mais rpido possvel. Muitostimes acham que essa abordagem leva a uma significante reduo nosproblemas de integrao e permite que um time desenvolva softwarecoeso mais rapidamente."Fowler (2006, traduo nossa).

  • Captulo 2. Fundamentao Terica 18

    2.2.1 Caractersticas de IntegraoOs requisitos para utilizao de uma ferramenta de integrao contnua de acordo

    com Sepalla (2010) so:

    Uma conexo com um sistema de controle de verso:A integrao contnua necessita desta conexo, pois ela identifica as alteraesocorridas no repositrio, e inicia o processo de integrao.

    A definio de uma build:A integrao contnua possui uma build privada que ser executada assim que oprocesso de integrao for iniciado, e esta build que definir quais aes serorealizadas no processo de integrao, tais como compilao, testes, anlise de cdigo.

    Um mecanismo de feedback:Um dos principais objetivos da integrao contnua consiste em seu feedback imediato,sendo assim, um mecanismo deste tipo essencial para a ferramenta, tais comoe-mail, sms.

    Um processo de integrao do cdigo: O processo de integrao consiste emcomo este ser realizado, se manualmente ou atravs de um servidor de integraocontnua.

    2.2.2 Processo de IntegraoA integrao ocorre quando alguma mudana enviada ao sistema de controle de

    verso do repositrio, que, atravs de um servidor de integrao contnua identifica asmudanas e executa sua build privada (MRZ, 2013).

  • Captulo 2. Fundamentao Terica 19

    Figura 3: Ambiente de Integrao Contnua.

    Fonte: Duval (20_).

    A Figura 3 descreve um ambiente em que um servidor de integrao contnua utilizado. Existem trs ambientes de trabalho distintos formado por trs desenvolvedores,que obtiveram uma cpia do projeto do repositrio do SCV para trabalharem em suasworkstation. Durante o trabalho, alteraes foram efetuadas e foi realizado o commit aorepositrio central. Aps a insero junto ao repositrio, o servidor de integrao contnuaverifica as alteraes e executa uma build de integrao. Caso exista um problema com abuild e esta no seja bem sucedida, o responsvel pela alterao ser informado sobre oocorrido, assim seu objetivo em diante ser a correo da build.

    2.2.3 Benefcios da Integrao ContnuaEsta subseo tem como objetivo destacar os principais objetivos existentes na

    utilizao de uma ferramenta de integrao contnua.

    As principais vantagens em utilizar um servidor de integrao contnua segundoDuvall, Matyas e Glover (2007, p. 29) so:

    Reduo de Riscos: Atravs da deteco imediada de cdigo quebrados, ou incor-retos, reduz-se riscos atrelados ao produto.

    Reduo de processos manuais repetitivos: Um conjunto de tarefas so execu-tadas automaticamente pela build privada do servidor de integrao contnua.

    Permitir melhor visibilidade do projeto: Atravs da identificao de informa-es inerentes ao desenvolvimento, como frequncia de cdigos defeituosos, mdulosmais complexos, permitindo maior gerenciamento do projeto.

  • Captulo 2. Fundamentao Terica 20

    Estabelecer uma maior confiana no produto do time de desenvolvimento:Atravs da visualizaes de mudanas bem sucedidas, os desenvolvedores sentemmaior confiana ao realizarem mudanas.

    Coleta de mtricas a cada build: Um dos benefcios que podem ser obtidosatravs da ferramenta, a coleta das mtricas do cdigo a ser desenvolvido e alterado.Atravs da utilizao de uma ferramenta de anlise esttica de cdigo possvelrealizar uma anlise de violaes, no conformidades. E por meio desses indicadores,a equipe consegue ter um maior controle no desenvolvimento do software, investindona melhoria contnua do software.

    2.2.4 Integrao Contnua ManualNa integrao contnua manual o processo de integrao realizado individualmente,

    possibilitando que apenas um desenvolvedor realize check-in no repositrio durante ointervalo de integrao Menezes (2011). Este tipo de abordagem permite que apenas umapessoa realize o check-in, assim, as integraes sero contnuas e seguidas, no paralelas.Este tipo de abordagem garante uma maior confiabilidade nas integraes, pois segue umpadro de integrao e os itens do repositrio possuem maior consistncia, garantindo quea estrutura do repositrio seja mantida (MENEZES, 2011).

    2.2.5 Integrao Contnua AutomatizadaA integrao contnua automatizada auxiliada pelo uso de um servidor de inte-

    grao contnua, que obtm do controle de verso as alteraes realizadas e executa suabuild privada com o objetivo de verificar possveis erros gerados por essas modificaes.

    Integrao contnua automtica possui a vantagem de ser escalvel e,deste modo, oferecer maior suporte ao trabalho colaborativo. Com autilizao de Servidores de IC, a responsabilidade de realizar construesda integrao retirada dos desenvolvedores. Portanto, os desenvolve-dores podem realizar check-in sem a necessidade de conquistar a vez deintegrar. Esse fator fundamental para que os check-ins continuem sendoverificados sem a necessidade de um desenvolvedor realizar a construoe identificar problemas, resultando na eliminao do gargalo humano.Menezes (2011, p .54).

    2.2.6 Processo de Escolha da FerramentaEsta seo define um conjunto de caractersticas que auxiliam no processo de

    escolha de uma ferramenta de integrao contnua.

    Suporte Linguagem:

  • Captulo 2. Fundamentao Terica 21

    O processo de escolha de um servidor de integrao continua deve ser baseado deacordo com o suporte a linguagem, visto que alguns sistemas so construdos paratrabalharem com uma linguagem de programao especfica.

    Suporte ao Sistema de Controle de Verso:Como explanado anteriormente, a importncia do SCV dentro de um servidor deintegrao contnua altssima, portanto escolher uma ferramenta que integre-secom o repositrio essencial, pois alguns servidores fornecem suporte a SCV maispopulares, como Subversion, Git, entretanto pode no haver suporte ao Mercurialpor exemplo.

    Segurana:Garantir que somente pessoas autorizadas devem ter acessos aos artefatos existentesno servidor de integrao contnua.

    Extensibilidade:Capacidade da ferramenta ter funcionalidades adicionadas por meio de plugins, serextensvel.

    Usabilidade:Possuir baixa dificuldade na realizao de aes dentro da ferramenta, boa aprendi-zagem, compreensibilidade.

    Instalao e Configurao:Facilidade de instalao em diferentes ambientes de operao, tais como sistemasoperacionais, hardware atravs da utilizao de recursos. Documentao clara eobjetiva do processo de instalao.

    2.3 Mtricas de SoftwareUma mtrica de software uma caracterstica de um determinado sistema de

    software, desenvolvimento, processo ou documentao, de modo que possa ser medido(SOMMERVILLE, 2011).

    As mtricas de software so dados quantitativos que informaram o estado de umsistema de software. Atravs desses dados, possvel um maior controle e tomada dedeciso pela parte gerencial de uma organizao de software (GUARIZZO, 2008). Soexemplos de mtricas segundo Merson et al. (2014):

    Cobertura de Testes

    Complexidade Ciclomtica

  • Captulo 2. Fundamentao Terica 22

    Dbito Tcnico

    Dentre o conjunto de mtricas avaliados, as violaes esto inseridas. Violaes sono conformidades encontradas em um conjunto de regras definidas.

    As violaes podem ser classificadas em diferentes graus de severidade:

    Critical: Causam perda de dados, vulnerabilidades de segurana, tornam o sistemainutilizvel.

    Major: Erros que impactam uma minoria de usurios do sistema.

    Normal: Erros que afetam uma parte da funcionalidade do sistema.

    Minor: Esto mais relacionados ao estilo do cdigo.

    2.4 Processo do NPIO NPI possui um modelo de processo definido, este processo baseado nos modelos

    e metodologias Scrum, MPS.BR e XP. Este modelo define as prticas e o modelo detrabalho dos envolvidos nas atividades do ncleo. Dentro do modelo de processo definidono NPI 6 este trabalho tem como objetivo focar no modelo de processo de gerncia deconfigurao.

    O NPI subdivide-se em dois turnos, manh e tarde, sendo cada turno supervisionadopor um professor supervisor diferente. Estes turnos podem ou no estar trabalhando nomesmo projeto, embora o mais comum que trabalhem em projetos diferentes. As equipescontam com em mdia oito membros onde comumente destes, dois so alocados paraas atividades de requisitos e testes, um para liderana tcnica, enquanto o restante daequipe alocado para as atividades de desenvolvimento, incluindo o lder tcnico. Oprofessor supervisor tem como papel o auxlio aos lderes tcnicos, acompanhamento doprojeto, avaliao dos estagirios, escolha dos projetos a serem desenvolvidos pelas equipese usualmente realizar o papel de Product Owner.

    O lder tcnico possui papel gerencial bem como de desenvolvimento, suas atribui-es partem desde a conduo de reunies, resoluo de conflitos,atribuio e definiesde tarefas, at o acompanhamento das atividades.

    A Figura 4 mostra o processo utilizado no NPI modelado atravs da ferramentaEPF Composer. Na figura existem duas atividades que ocorrem em paralelo, so elas:Avaliao do Processo e Iniciar Projeto, este que subdivide-se em mais trs atividades,a primeira delas a atividade de Requisitos, que posteriormente fornece entrada paraum ciclo de Sprints que ocorrer enquanto houver funcionalidades no implementadas,6 http://www.npi.quixada.ufc.br/processo/

  • Captulo 2. Fundamentao Terica 23

    simultaneamente com a atividade de Requisitos esto de Gerenciamento do Projeto e oGerenciamento de Configurao.

    Figura 4: Processo do NPI.

    Fonte: NPI (201_).

    2.4.1 Processo de Gerncia de Configurao do NPIO modelo de processo7 relacionado a gerncia de configurao descrito na Figura 5.

    Este modelo de processo possui duas atividades que sero descritas abaixo:

    Criar Plano de Gerenciamento de Configurao: Esta atividade realizadapelo lder tcnico da equipe envolvida. Esta atividade subdivide-se em quatro etapasso elas:

    Identificar Itens de Configurao: Esta atividade caracteriza-se pela cria-o, especificao e seleo dos produtos de trabalho, ferramentas, itens que temobjetivo descrever os produtos de trabalho. Exemplos de itens desta atividadeso: Requisitos, Diagramas, Testes.

    Atribuir Identificadores nicos para os itens de configurao: Estaatividade possui um nome bem sugestivo tem como intuito atribuir a cada

    7 http://www.npi.quixada.ufc.br/processo/

  • Captulo 2. Fundamentao Terica 24

    item de configurao um identificador nico de modo a facilitar a identifica-o dentro do projeto. O identificador segue o padro [PROJETO]-[TIPO]-EXTRA.EXTENSO. Como exemplo um artefato possuiria o seguinte identifi-cador: [GPA]-[REQ]-Especificacao.doc

    Identificar o responsvel por cada item de configurao: Esta atividadetem como objetivo atribuir a cada item de configurao um responsvel, per-mitindo assim, uma maior facilidade na identificao do responsvel de umdeterminado item de configurao.

    Criar Plano de Gerenciamento de Configurao: Esta atividade temcomo objetivo a elaborao do PGC explicado na subseo 2.1.1 por meiodos dados obtidos com as tarefas anteriores. O plano define os responsveispelas atividades de Gerncia de Configurao, ferramentas e ambientes a seremutilizados e todos os itens de configurao identificados.

    Estabelecer um sistema de Gesto de Configurao: Esta atividade tem comorequisito que o plano de gerenciamento de configurao esteja concludo, e possuiapenas uma etapa:

    Estabelecer um sistema de Gesto de Configurao: Esta atividade temcomo objetivo definir as ferramentas de acesso, ambiente de armazenamento emtodos para criao e alterao dos itens de configurao (NPI, 201_).

    Figura 5: Processo de Gerenciamento de Configurao.

    Fonte: NPI (201_).

  • 25

    3 Trabalhos Relacionados

    Nesta seo ser descrito trabalhos que influenciaram os conceitos envolvidos nestetrabalho, alm de demonstrar pontos comuns e distintos entre si e o proposto.

    O trabalho de Pereira, Arruda e Gomes (2013) descreve a implantao de umaferramenta de integrao contnua em um departamento de desenvolvimento e pesquisa, oSedna, de uma empresa de engenharia, em um ambiente de MPS.BR nvel F. Onde osprincipais clientes do Sedna so voltados a rea de leo e gs.

    Durante o perodo de implantao, o Sedna fornecia manuteno a trs sistemas,onde um tratava-se de uma aplicao web, deste modo o deploy da aplicao para todosos seus usurios era de responsabilidade do Sedna. Tal ao tornava-se bastante custosadevido ao grande nmero de web sites que deveriam ser atualizados.

    Dentro do Sedna algumas ferramentas de gerncia de configurao j eram utilizadas,tais como o Atlassian Jira, Subversion (SVN) e o Atlassian Confluence. Ainda com autilizao destas ferramentas a equipe possua grandes dificuldades no tempo de realizaodo deploy, pois esta atividade consumia uma grande parte do tempo da equipe, tempo deaprendizagem e realizao do deploy da aplicao, principalmente para novos membros daequipe, e um feedback atrasado para problemas bsicos de commits errneos.

    Os autores descrevem que os pontos positivos da integrao esto a utilizao deuma ferramenta de integrao contnua da mesma empresa que fornecia o sistema degerenciamento de projetos, a ferramenta utilizada foi o Atlassian Bamboo e a utilizao deferramentas de automao do processo de build, o que facilitava o trabalho da integraocontnua. Bem como o autor destaca as experincias negativas da implantao, que estona ausncia de uma mquina com requisitos mnimos exigidos para a utilizao, a ausnciade treinamento da equipe, onde os conhecimentos de IC estavam com o lder de projetos eo gerente de configurao, e por fim a ferramenta no fornecia suporte ao redeploy dosartefatos gerados, o que gerou uma barreira na equipe acerca da ferramenta.

    Uma das principiais vantagens da utilizao da integrao contnua o seu feedbackimediato acerca de problemas de integrao, e, entender e interpretar as principais causasdos problemas de integrao foi realizado por Miller (2008). Quando este percebeu que emum projeto da Microsoft, o Service Factory, a maior causa de falha na build eram violaesno sistema de anlise de cdigo seguido por testes automatizados e erros de compilao.

    A obteno de mtricas atravs da coleta contnua de mtricas uma grandevantagem includa dentro da integrao contnua, pois a sua principal vantagem oaumento da qualidade do produto ao facilitar o processo de manuteno do software.Para isso Moreira et al. (2010) desenvolveram um framework para a extrao de mtricas

  • Captulo 3. Trabalhos Relacionados 26

    automatizadas, implementado em um ambiente de integrao contnua, logo, evidenciou-sea importncia das inspees e teste de cdigos nas builds, como foi descrito anteriormente.

    Os testes so fundamentais na qualidade do software, e na confiana do produtoem uma build de integrao contnua. Assim Kim, Na e Ryoo (2009) propuseram a criaode um framework automatizado de testes que permitisse facilitar a construo dos casos detestes, reuso de componentes, relatrios mais legveis e integrado ao ambiente de integraocontnua.

    Implantar uma integrao contnua em um ambiente de desenvolvimento gil foirealizado por Abdul e Fhang (2012). Estes propuseram um conjunto de boas prticas ecoletaram experincias acerca desta implantao. Estes afirmam que os engenheiros podemno ser to facilmente convencidos de aceitar a integrao contnua, independentementese esta implementada top-down, quando parte de uma hierarquia mais elevada daorganizao para as camadas inferiores, ou bottom-up, quando parte dos desenvolvedoresat os nveis mais altos da hierarquia, e que em ambas as abordagens existem prs econtras.

  • 27

    4 Procedimentos Metodolgicos

    4.1 Analisar as atividades do Ncleo de PrticasEsta atividade visa identificar como as atividades ocorrem dentro do Ncleo de

    Prticas em Informtica, com o objetivo de gerar informaes que serviro de complementopara a escolha da ferramenta a ser implantada de acordo com o contexto que ser detectadonesta ao. Para tal foi analisado o processo1 existente modelado pela ferramenta EPFComposer. Alm da experincia do autor, pois este era um estagirio da organizao comexperincia de 8 meses nas atividades l realizadas.

    4.2 Pesquisar e selecionar a ferramenta de Integrao ContnuaEsta atividade consiste em colher informaes e selecionar a ferramenta que melhor

    se adapta a realidade existente no Ncleo de Prticas em Informtica. Para a escolha daferramenta foi preciso definir um conjunto de requisitos que a ferramenta deveria possuir esuprir, de modo a filtrar a ferramenta escolhida dentre as diversas existentes. As definiesforam descritas subseo 2.2.6.

    4.3 Absoro do perfil dos estagirios do Ncleo de PrticasEsta atividade tem como objetivo entender e identificar os conhecimentos dos

    estagirios do ncleo acerca de integrao contnua, experincia de uso em projetospessoais, conhecimento na ferramenta e como esta funciona. Para assim elaborar solues aserem utilizadas na implantao da ferramenta como: acompanhamento, treinamento, etc.Para tal fora realizado um questionrio online de escopo fechado que tinha como objetivoextrair o conhecimentos dos estagirios sobre integrao contnua, seu uso e gerncia deconfigurao de software.

    4.4 Implantao da ferramenta de integrao contnuaA implantao ser realizada no ncleo de prticas e a utilizao da ferramenta ser

    aplicada a um projeto piloto que estar em desenvolvimento no momento da aplicao, demodo a avaliar o impacto que a ferramenta causar. Ao inicio ser realizado um treinamentopara explanao do funcionamento da ferramenta, bem como a utilizao desta impactarnas atividades dos estagirios para assim, ser implantada.1 www.npi.quixada.ufc.br/processo/

  • Captulo 4. Procedimentos Metodolgicos 28

    4.5 Coleta de Mtricas do CdigoEsta etapa consiste na coleta contnua de mtricas atravs da inspeo contnua

    de cdigo do software em desenvolvimento utilizando a integrao contnua. Para issofora utilizado uma ferramenta de anlise esttica de cdigo, o Sonarqube 2 integrado aoJenkins em um processo post-build, onde o cdigo ser verificado e analisado com intuito deencontrar no conformidade que servir de insumo para melhorias no cdigo. Aumentandoassim, sua qualidade, controle de acompanhamento do projeto e diminuio de esforos deretrabalho e futuras manutenes .

    4.6 Anlise dos dados coletadosEsta atividade tem como objetivo analisar os dados das violaes fornecidos pela fer-

    ramenta SonarQube, de modo a representar graficamente os dados quantitativos coletadosdo cdigo.

    2 www.sonarqube.org/

  • 29

    5 Desenvolvimento/Resultados

    Esta seo tem como objetivo apresentar as etapas para a elaborao deste trabalho.A seo composta de cinco subsees. A seo 5.1 retrata a primeira fase do trabalho onde explanado as atividades do NPI. A seo 5.2 descreve como a ferramenta de integraocontnua foi escolhida e sob quais critrios, enquanto que a seo 5.3 detalha qual o perfildos estagirios do NPI no que concede integrao contnua. A seo 5.4 descrever oprocesso de implantao da ferramenta, seus pontos positivos e negativos.

    5.1 Anlise das atividades do Ncleo de Prticas em InformticaA anlise de como as atividades eram executadas dentro do NPI foi primeiramente

    analisada de acordo com o processo definido, disponvel no site do NPI 1, o qual regula comoas atividades ocorrem. As atividades e o processo baseia-se no SCRUM e nas metodologiasgeis como equipes de pequeno nmero de componentes Sprint Planning, Product Backlog,Sprint Review.

    5.2 Pesquisa e Seleo da FerramentaO processo de escolha da ferramenta de integrao contnua teve como primeiro

    critrio estar em acordo com a realidade das atividades executadas no NPI. Consequente-mente o primeiro ponto a ser considerado foi o suporte que a ferramenta deveria proveras linguagens utilizadas no NPI, a linguagem Java. Outro aspecto considerado est re-lacionado com o custo de aquisio, esta no poderia ser paga ou deveria possuir umaverso free que atendesse a demanda das atividades. Extensibilidade, devido as constantesmudanas de tecnologias utilizadas, fornecer suporte a diferentes linguagens, ferramentas,faz-se essencial; usabilidade, pois o NPI no conta com um Gerente de Configurao, sendoassim esta tarefa de manter uma integrao contnua deve ser facilitada ao mximo pormeio de sua usabilidade, tais como, inteligibilidade, apreensibilidade; possuir seguranaadequada, definio de usurio, papis.

    Deste modo a ferramenta escolhida foi o Jenkins , anteriormente conhecido comoHudson, uma ferramenta de integrao contnua open source, que fornece suporte aprojetos de diferentes linguagens e tecnologias ,.NET, Ruby, Grails, PHP, bem como Java,linguagem base de sua construo. (SMART, 2011), e como esta preenche os requisitosdefinidos ser descrito abaixo.1 www.npi.quixada.ufc.br/processo/

  • Captulo 5. Desenvolvimento/Resultados 30

    Suporte a Linguagem:O Jenkins permite suporte a uma grande gama de linguagens, tais como Java, PHP,Rails, Grails, Python, entre outras.

    Suporte ao Sistema de Controle de Verso: O Jenkins consegue integrarnativamente com os principais sistemas de controle de verso tais como: CVS, SVN,Mercurial, e o Git atravs da utilizao de plugin.

    Segurana: A segurana do Jenkins habilitada atravs de permisses e papis,onde a base de dados de usurios pode ser pela base interna do Jenkins, LDAP,usurios do sistema operacional e tambm atravs do usurio vinculado ao GitHub.

    Extensibilidade: Jenkins extremamente flexvel e adaptvel, permitindo assimoferecer uma melhor atuao para diferentes propsitos, atravs das centenas deplugins disponveis. Plugins este que oferecem tudo desde sistemas de controle deverso, ferramentas de build, ferramentas de anlise esttica de cdigo, notificadoresde build, alteraes de UI, integrao com sistemas externos (Jira, Redmine) (SMART,2011).

    Usabilidade: "Primeiramente, Jenkins fcil de usar. A interface simples eintuitiva, e o Jenkins como um todo possui uma curva de aprendizado baixa"(SMART, 2011, p .3).

    Instalao e Configurao:Facilidade de instalao, diferentes ambiente de operao, tais como sistemas ope-racionais, utilizao de recursos. Documentao clara e objetiva do processo deinstalao informando dependncia existentes.

    5.3 Perfil dos Estagirios e conhecimentos sobre Integrao Cont-nuaEntender os conhecimentos dos estagirios do NPI acerca do entendimento, funcio-

    nalidade e como esta mudaria suas rotinas de trabalho foi essencial para um entendimentoe aperfeioamento do processo de implantao da ferramenta.

    Para tal, fora realizado um questionrio fechado, distribudo de maneira eletrnicapara todos os estagirios do NPI. Embora todos no tenham respondido, uma boa amostrafoi obtida em confronto com o nmero total de estagirios em atividade. O referidoquestionrio ser apresentado abaixo.

  • Captulo 5. Desenvolvimento/Resultados 31

    Tabela 1: Conhecimento em Integrao Contnua.

    Perguntas Opes de RespostasTestador

    Qual a sua funo no NPI? Engenheiro de RequisitosTestadorLder Tcnico / Gerente

    Voc sabe o que IntegraoContnua?

    Sim

    NoVoc j utilizou IntegraoContnua em algum projeto?

    Sim

    NoVoc conhece ou utilizou al-guma destas ferramentas deIntegrao Contnua?

    Atlassian BambooApache ContinuumCruiseControlJenkins / HudsonOutraDesconheo ou nunca utilizei nenhuma delas

    Voc sabe o que Gernciade Configurao?

    Sim

    NoFonte: Elaborado pelo autor.

    Ao todo, vinte e trs estagirios participaram da pesquisa de um total de trinta equatro, cerca de 67% dos estagirios, quase o NPI em sua totalidade, as devidas respostassero exibidas abaixo na ordem em que as perguntas foram apresentadas aos questionados.A elaborao deste questionrio teve como objetivo gerar dados quantitativos de modoa entender o perfil dos estagirios do NPI, facilitando assim o processo de implantaoda ferramenta de integrao contnua. Onde esses dados geraram conhecimentos paraapresentao e explicao as equipes de forma mais proveitosa e focada nas dificuldades.

  • Captulo 5. Desenvolvimento/Resultados 32

    Figura 6: Funo no NPI.

    Fonte: Elaborado pelo autor.

    A Figura 6 demonstra que a grande maioria dos estagirios do NPI esto alocadospara atividades exclusivas de desenvolvimento, posteriormente atividade de engenharia derequisitos, lderes tcnicos e gerentes. Este resultado obtido por meio das respostas ajudoua elucidar os conhecimentos e os tipos de conhecimentos predominante nos estagirios doncleo.

    Figura 7: Conhecem Integrao Contnua.

    Fonte: Elaborado pelo autor.

    Como descrito na Figura 7, a maioria dos questionados conheciam o que era umaferramenta de integrao contnua, e como esta funcionava, embora esta no tenha sido umasuperioridade notvel, facilitou o processo de implantao em razo dos conhecimentosprvios dos estagirios a cerca do assunto, permitindo assim uma menor rejeio na

  • Captulo 5. Desenvolvimento/Resultados 33

    implantao devido ao conhecimentos dos benefcios que este tipo de ferramenta causariaao projeto.

    Figura 8: Utilizao em Projetos Pessoais.

    Fonte: Elaborado pelo autor.

    Embora a maioria dos estagirios conhea a ferramenta, pouco mais de 4% dosquestionados utilizaram a integrao contnua de forma prtica, isto , enfrentaram oimpacto de sua utilizao. Seja atravs do feedback imediato fornecido pela ferramenta, oupela alterao de seus processos de trabalho.

    Figura 9: Conhecimento e Utilizao de Ferramentas de Integrao Contnua.

    Fonte: Elaborado pelo autor.

    O grfico da Figura 9 contrasta com o grfico anterior, onde a maioria desconheceou nunca utilizou nenhuma ferramenta, e dentre a nica ferramenta citada, o Jenkins

  • Captulo 5. Desenvolvimento/Resultados 34

    / Hudson, enquanto um questionado citou outra ferramenta mas no especificou qualseria esta. De todo modo a familiarizao de alguns questionados com a ferramentafacilitar o processo de aceitao desta por parte dos membros, e gerar uma unificao deconhecimento, pois todos os membros iro trabalhar e conhecer apenas uma ferramenta,no caso o Jenkins.

    Figura 10: Conhecem Gerncia de Configurao.

    Fonte: Elaborado pelo autor.

    A Figura 10 destaca que cerca de 87% dos estagirios sabiam o que uma ativi-dade de gerncia de configurao, sendo assim, supes-se que estes sabiam quais so asatribuies, responsabilidade e deveres exercidos por esta atividade.

    5.4 Processo de Implantao da Ferramenta de Integrao Cont-nuaEsta atividade tem como objetivo explicar como o processo ocorreu, apresentando

    o contexto do projeto, pontos negativos e positivos da implantao e aspectos a seremmelhorados. A distribuio do contedo se dar da seguinte forma: subseo 5.4.1 apre-sentar o projeto piloto onde a ferramenta foi implantada. O projeto GPA (Gesto deProjetos Acadmicos) foi escolhido devido estar em construo no momento da aplicaodeste trabalho e devido a indisponibilidade de aplicao e treinamento para os membrosdos outros projetos.

    5.4.1 Gesto de Projetos AcadmicosO projeto GPA mdulo de pesquisa tem como objetivo facilitar o processo de

    criao, submisso, aceitao e divulgao dos projetos da UFC do campus de Quixad.

  • Captulo 5. Desenvolvimento/Resultados 35

    Antes do desenvolvimento do sistema, este processo era totalmente manual. Enquantoeste trabalho estava sendo desenvolvido o software do GPA era construdo. Abaixo serdescrito caractersticas deste sistema.

    Back-end: A linguagem base da construo do sistema o Java, com a utilizao doSpring Framework. Este framework utiliza-se do padro arquitetural MVC (ModelView Control) alm da rapidez de execuo e segurana atravs da utilizao domdulo de segurana Spring Security. A utilizao do framework comeou junto coma construo do sistema, sendo necessrio treinamento aos membros das equipes,pois tratava-se de uma tecnologia nova no NPI.

    Front-end: Para a criao da aplicao front-end fora utilizado JSP (JavaServerPages), HTML (HyperText Markup Language), CSS (Cascading Style Sheets) Ja-vascript e o Bootstrap como framework front-end pois esta garante um padro deinterface na aplicao.

    Build: Para uma ferramenta de gesto de dependncia e ferramenta de build, forautilizado o Apache Maven, pois este garante que todos os membros do projetostenham os mesmo itens de configurao corretos do projeto.

    ORM - (Object-Relational Mapping): O Hibernate uma framework pararealizao do mapeamento objeto relacional com o objetivo de abstrair a persistnciados dados.

    Gerenciamento de Projeto: O Redmine foi a ferramenta utilizada para o geren-ciamento do projeto durante a construo do sistema.

    5.4.2 Pontos Positivos

    Mquina com boas configuraes:A implantao ocorreu em uma mquina comboas configuraes para hospedagem. A execuo da ferramenta no sofreu engasgosou problemas de lentido devido a alta performance do hardware.

    Boa receptividade da equipe: Ao serem explanados de como a ferramenta atuavae quais eram seus benefcios para o projeto e produto, os membros da equipe noreagiram de maneira contrria utilizao da ferramenta, mesmo que esta alterasseseu processo de trabalho.

    Fcil entendimento: A ferramenta forneceu uma interface amigvel que permitiao bom entendimento das aes que estavam sendo executadas, facilitando a interpre-tao dos dados por ela gerados. Alguns membros comentaram que comparada aoutras ferramenta do gnero como o CruiseControl, o Jenkins possua uma interfacemais bonita e era mais simples de utilizar.

  • Captulo 5. Desenvolvimento/Resultados 36

    Coleta contnua de mtricas: Atravs da integrao do SonarQube como processopost-build do Jenkins, o resultados das anlises serviram de insumo para melhoria docdigo atravs de refatorao. Assim, uma alterao no processo do NPI ocorreu, demodo a contemplar uma atividades de correo de issues fornecidas pelo SonarQubeao escopo da Sprint a fim de melhorar a qualidade do sistema, reduzir esforos efuturas manutenes. Alm de permitir uma maior controle e acompanhamento doprojeto, alm de criar um entendimento da equipe de como construir o softwaredaquele ponto em diante.

    Comunicao: Com a utilizao da integrao contnua percebeu-se que a comuni-cao da equipe melhorou, pois as informaes de falha de build foram discutidasassim que informadas aos responsveis, que priorizavam sua correo, mesmo emhorrio fora de expediente. A falha era comunicada pessoalmente aos encontros entreaulas, e caso no fosse possvel via meio virtual, redes sociais e e-mail.

    5.4.3 Pontos Negativos

    Ausncia de um Gerente de Configurao: A ausncia de um gerente de confi-gurao com experincia na equipe foi sentida durante problemas com o repositrio,gerando gastos no tempo da equipe e ociosidade na ferramenta. Embora em algumcasos, o autor tenha ficado informalmente responsvel por essas atividade peranteequipe e projeto.

    Problemas estruturais: A execuo da ferramenta em uma mquina de um doslaboratrios do NPI constantemente era desligada por algum funcionrio da universi-dade, ou esta era desligada devido as constantes quedas de energia ocorridas, sendonecessrio a reinicializao manual.

    Ausncia de testes automatizados: A ausncia de testes automatizados noprojeto inviabilizou a valorao de um dos principais benefcios da integrao contnua,que se trata da execuo de testes em sua build privada para verificao de problemasde integrao, pois os testes embora fossem documentados e os casos de testesexistissem, a forma como era testado era manual, atravs de teste de explorao.

    Identificao de build em Branches distintos: Ao longo que o projeto tra-balhava com o desenvolvimento em vrios branches, a ferramenta SonarQube nofornecia uma identificao individual para cada, assim tornava-se difcil obter infor-maes mais precisas sobre anlise aplicada a cada branch.

  • Captulo 5. Desenvolvimento/Resultados 37

    5.5 Mtricas do CdigoA coleta das mtricas do cdigo foi realizado pelo SonarQube, onde este era um

    processo de post-build da build privada do Jenkins. Embora das muitas informaesfornecidas pela ferramenta, apenas algumas foram bastantes focadas, como as issues elinha de cdigo duplicadas.

    Aps cada coleta, um histrico foi armazenado na base de dados da ferramenta,onde a ltima anlise do dia foi mantida. O histrico das mtricas do cdigo foi mantidono painel da ferramenta, onde todos os membros da equipe podiam visualizar.

    Figura 11: Painel do SonarQube.

    Fonte: Painel do SonarQube.

    5.5.1 Violaes de cdigoA ferramenta tambm forneceu o histrico das violaes existente a cada anlise

    realizada. O histrico das violaes/issues est mostrado na Figura 12.

    Neste percebe-se que, aps a atribuio de um desenvolvedor para a atividade desolucionar as issues existentes para o escopo da Sprint, esta teve uma queda considervel,

  • Captulo 5. Desenvolvimento/Resultados 38

    as violaes tinham uma mdia em torno de 129 violaes, e aps este o processo desoluo das issues, esta teve uma queda para 87 e posteriormente, 81 violaes. Uma quedade 38%, mesmo quando possivelmente os outros membros da equipe continuaram a inserircdigo com violaes.

    Figura 12: Histrico de Violaes.

    Fonte: Elaborado pelo autor.

  • 39

    6 Consideraes Finais

    Com o mercado cada vez mais competitivo para consumir software, construir soft-ware com uma maior qualidade essencial para a sobrevivncia no mercado de trabalho.Por isso, muitas empresas esto investindo na utilizao de ferramentas de integrao con-tnua no desenvolvimento de seus produtos. Entretanto, realizar uma implantao de umaferramenta desta natureza, requer cuidados, pois caso esta no seja suficientemente bemplanejada, poder trazer resultados adversos ao esperado, pois uma implantao foradaou mal sucedida pode gerar resistncia da equipe, bem como diminuir a produtividade daequipe, burocratizar o processo, gerando assim um mal estar entre os membros do time eperca na qualidade do produto.

    O trabalho proposto visou implantar uma ferramenta de integrao contnua noNcleo de Prticas em Informtica da Universidade Federal do Cear do Campus deQuixad. O processo de implantao se iniciou a partir da extrao de como os softwareseram desenvolvidos no NPI, obtido atravs da experincia do autor, e da anlise do processovigente. Somado-se a isto, fora pesquisada e selecionada uma ferramenta de integraocontnua adaptada ao desenvolvimento praticado no NPI. Depois de escolhida a ferramenta,esta foi devidamente implantada e assim, conseguiu-se obter pontos positivos e negativosda implantao. Verificou-se que a utilizao da coleta contnua das mtricas foi essencialna melhoria da qualidade do produto.

    O trabalho realizado por Pereira, Arruda e Gomes (2013) serviu como sabe paraeste trabalho, pois ajudou com conhecimentos sobre integrao contnua este trabalhodiverge nos pontos positivos e negativos identificados, pois era aplicado em um contextode ferramentas semelhantes, mas em um organizao com um nvel de maturidade maiselevado, e converge na abordagem utilizada, e na conduo do trabalho.

    As limitaes deste trabalho so a implantao de uma ferramenta de integraocontnua em um ambiente de pequeno porte, onde seu impacto no pode ser validado emum ambiente maior de desenvolvimento. Alm de uma validao cientfica mais criteriosa.

    Como trabalhos futuros, sugerimos um acompanhamento de como a implantaodesta ferramenta alterar o processo de desenvolvimento, e a coleta de dados que confirmema melhoria dos sistema a longo prazo alm da validao de uma integrao contnua emum ambiente de projeto com testes automatizados.

    Este trabalho permitiu a criao de uma cultura de integrao contnua no NPI,possibilitando que os envolvidos visualizassem o impacto que esta ferramenta exerce nodesenvolvimento do software e relatar as lies aprendidas que podero ser utilizadas emfuturas implantaes.

  • 40

    Referncias

    ABDUL, F. A.; FHANG, M. C. S. Implementing continuous integration towards rapidapplication development. International Conference on Innovation , Management andTechnology Research, p. 118 123, 2012. Citado na pgina 26.

    DUVAL, P. M. Continuous integration: Patterns and anti-patterns. DZone Refcardz, n. 1,p. 16, 20_. Citado na pgina 19.

    DUVALL, P.; MATYAS, S.; GLOVER, A. Continuous Integration: Improving SoftwareQuality and Reducing Risk. [S.l.]: Addison-Wesley, 2007. (A Martin Fowler signaturebook). ISBN 9780321336385. Citado 3 vezes nas pginas 12, 17 e 19.

    EIS, D. Janeiro 2012. Disponvel em: . Acesso em: 27.3.2014. Ci-tado na pgina 15.

    FOWLER, M. Maio 2006. Disponvel em: . Acesso em: 27.3.2014. Citado na pgina 17.

    GIT. 20_. Disponvel em: . Acesso em: 27.3.2014. Citadona pgina 15.

    GONALVES, E. J. T. et al. Ncleo de prticas em informtica: Contribuindo para aformao em sistemas de informao atravs do desenvolvimento de projetos de software.XXXIII CONGRESSO DA SOCIEDADE BRASILEIRA DE COMPUTAO (WEI,Macei, n. 1, p. 601610, 2013. Citado na pgina 12.

    GUARIZZO, K. Mtricas de Software. 38 p. Faculdade de Jaguarina, Jaguarina,2008. Citado na pgina 21.

    KIM, E. H.; NA, J. C.; RYOO, S. M. Test automation framework for implementingcontinuous integration. Sixth International Conference on Information Technology: ewGenerations, n. 6, p. 784789, 2009. Citado na pgina 26.

    MENEZES, G. G. L. de. OURIO:UMA ABORDAGEM PARA MANUTENO DACONSISTNCIA EM REPOSITRIOS DE GERNCIA DE CONFIGURAO. Niteri:[s.n.], 2011. Citado 2 vezes nas pginas 15 e 20.

    MERSON, P. et al. Continuous inspection: A pattern for keeping your code healthy andaligned to the architecture. p. 13, 2014. Citado na pgina 21.

    MILLER, A. A hundred days of continuous integration. Agile Conference, p. 289 293,2008. Citado na pgina 25.

    MOREIRA, G. de S. P. et al. Software product measurement and analysis in a continuousintegration environment. Seventh International Conference on Information Technology,n. 7, p. 1177 1182, 2010. Citado na pgina 25.

  • Referncias 41

    MRZ, M. Use of continuous integration in web application development. Dissertao(Mestrado) Masarykova Univerzita Fakulta Informatiky, Brno, 2013. Citado na pgina18.

    NPI. 201_. Disponvel em: . Acesso em:20.4.2014. Citado 2 vezes nas pginas 23 e 24.

    OLIVEIRA, P. A. de; NELSON, M. A. V. Integrao de ferramentas para minimizarerros provenientes de efeitos colaterais inseridos durante a manuteno. Workshop deManuteno de Software Moderna, n. 1, 2005. Citado na pgina 12.

    PADUELLI, M. M.; SANCHES, R. Problemas em manuteno de software caracterizaoe evoluo. III Workshop de manuteno moderna, 2006. Citado na pgina 12.

    PEREIRA, J. A. D.; ARRUDA, R. F. V. de; GOMES, A. M. Lessons learned during theimplementantion of a continuous integration software in mps.br level f environment. IXWorkshop Anual do MPS, 2013. Citado 2 vezes nas pginas 25 e 39.

    PRESSMAN, R. S. Engenharia de Software. [S.l.]: Pearson Education, 2010. 1056 p.Citado 2 vezes nas pginas 14 e 16.

    SEPALLA, A. Improving software quality with Continuous Integration. Dissertao(Mestrado) Aalto University, Esbo, Maio 2010. Citado na pgina 18.

    SMART, J. F. Jenkins The Definitive Guide. [S.l.]: OReilly Media, 2011. Citado 2 vezesnas pginas 29 e 30.

    SOFTEX. Guia de Implementacao - Parte 2: Fundamentacao para Implementacao do NivelF do MR-MPS-SW:2012. [S.l.], 2013. Disponvel em: . Acesso em:17.4.2014. Citado na pgina 14.

    SOMMERVILLE, I. Engenharia de Software. 9. ed. [S.l.]: Pearson Education, 2011. 529 p.Citado 2 vezes nas pginas 16 e 21.

    Folha de rostoFolha de aprovaoDedicatriaAgradecimentosResumoAbstractLista de ilustraesLista de tabelasSumrioIntroduoFundamentao TericaGerncia de ConfiguraoPlano de Gerenciamento de ConfiguraoSistema de Controle de VersoSistema de Controle de MudanaAuditoria de ConfiguraoFerramentas de Build

    Integrao ContnuaCaractersticas de IntegraoProcesso de IntegraoBenefcios da Integrao ContnuaIntegrao Contnua ManualIntegrao Contnua AutomatizadaProcesso de Escolha da Ferramenta

    Mtricas de SoftwareProcesso do NPIProcesso de Gerncia de Configurao do NPI

    Trabalhos RelacionadosProcedimentos MetodolgicosAnalisar as atividades do Ncleo de PrticasPesquisar e selecionar a ferramenta de Integrao ContnuaAbsoro do perfil dos estagirios do Ncleo de PrticasImplantao da ferramenta de integrao contnuaColeta de Mtricas do CdigoAnlise dos dados coletados

    Desenvolvimento/ResultadosAnlise das atividades do Ncleo de Prticas em InformticaPesquisa e Seleo da FerramentaPerfil dos Estagirios e conhecimentos sobre Integrao ContnuaProcesso de Implantao da Ferramenta de Integrao ContnuaGesto de Projetos Acadmicos Pontos PositivosPontos Negativos

    Mtricas do CdigoViolaes de cdigo

    Consideraes FinaisReferncias