almdeida, silva - entrega contínua um estudo de caso para automatização do fluxo de implantação...

Upload: jeffrey-crane

Post on 26-Feb-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    1/19

    ENTREGA CONTNUA: UM ESTUDO DE CASO PARA AUTOMATIZAO DOFLUXO DE IMPLANTAO DO SISTEMA INTEGRA

    Alicenaira Lanes Souza Carneiro de ALMEIDACentro de Ensino Superior de Juiz de Fora, Juiz de Fora, MG

    Orientador: Evaldo de Oliveira da SILVA

    Resumo:Em muitos ambientes de desenvolvimento os processos realizados, entrea solicitao de uma manuteno e a implantao da mesma em produo, soexecutados manualmente. Esse processo de entrega manual faz com que muitasorganizaes que produzem software tenham um ciclo mais longo para gerar umanova verso da aplicao. Quanto maior a durao para implantar uma manutenoou nova funcionalidade em produo, maior ser o risco de ocorrerem erros. AEntrega Contnua uma prtica que busca a reduo da durao dos ciclos deimplantao de sistemas, atravs da utilizao de ferramentas que automatizam oversionamento, a construo e demais processos de desenvolvimento. Este artigo

    aborda a implantao da Entrega Contnua com o uso de ferramentas open sourcesem um sistema denominado Novo Integra, que desenvolvido e mantido pelaequipe de desenvolvimento do Instituto de Cincias Exatas da Universidade Federalde Juiz de Fora. Ao final, uma metodologia de implantao proposta e osresultados obtidos com essa abordagem so apresentados.

    Palavras-chave:Entrega Contnua; Qualidade de Software; Automatizao deProcessos.

    1 INTRODUO

    A realizao de entregas manuais de softwarepode expor a organizao e o

    usurio final a riscos e gerar um grande desconforto para quem est implantando um

    sistema em produo. Em muitos ambientes de desenvolvimento os processos

    realizados, entre a solicitao de uma manuteno e a implantao da mesma em

    produo, faz com que a durao de um ciclo atinja semanas, meses ou at mesmo

    mais de um ano. Quanto maior sua durao, maior ser o risco de ocorrerem erros

    durante a implantao. Esse o cenrio atual do sistema Novo Integra, que

    desenvolvido e mantido pela equipe de desenvolvimento do Instituto de Cincias

    Exatas (ICE) da Universidade Federal de Juiz de Fora (UFJF).

    Com o objetivo de automatizar os processos da entrega de software, foi

    proposta uma metodologia para a implantao da Entrega Contnua, que de acordo

    com Humble e Farley (2014), cria um processo de entrega confivel, previsvel e

    passvel de repetio, que, por sua vez, gera grandes redues no tempo de ciclo e

    entrega novas funcionalidades e correes aos usurios rapidamente. O estudo de

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    2/19

    caso realizado aponta quais foram as ferramentas open sources utilizadas e os

    resultados obtidos com a implantao.

    A automatizao dos processos diminui o tempo entre um cdigo pronto e

    seu uso pelos usurios finais. Assim, o risco associado entrega tem uma reduo

    significativa, permitindo a reverso de mudanas com facilidade e rpida obtenode feedback(SETE, 2013).

    Essa automatizao pode ser obtida atravs da integrao de todas as

    atividades da entrega de software. Entre elas est o Controle de Modificaes, o

    Controle de Verses, o Controle de Gerenciamento de Construo, os Testes

    Automatizados, a Anlise Esttica do Cdigo, a Gerncia de Dependncias, a

    Gerncia de Artefatos e a Gerncia de Infraestrutura. Para que essas atividades

    sejam transformadas em uma etapa normal e contnua fundamental que todos osmembros da equipe trabalhem em conjunto, isso inclui desde desenvolvedores e

    testadores, at times de implantao e operao (SATO, 2014).

    Este artigo est organizado da seguinte forma: a seo 2 apresenta a

    fundamentao terica com as principais tcnicas utilizadas na Entrega Contnua; a

    seo 3 apresenta o cenrio inicial do estudo de caso, sugere uma metodologia para

    a implantao da Entrega Contnua, indica quais ferramentas open sourcespodem

    ser utilizadas e apresenta os resultados obtidos com essa abordagem; finalmente, a

    seo 4 apresenta as consideraes finais e trabalhos futuros.

    2 REFERENCIAL TERICO

    A Entrega Contnua (Continuous Delivery) surgiu para reduzir o custo, o

    tempo e o risco da entrega de software. Para isso os processos devem ser

    amparados por ferramentas e scripts de automatizao que garantam que o

    software estar pronto para ser implantado em produo a qualquer momento

    (HUMBLE; FARLEY, 2014).

    Para apoiar o processo de Entrega Contnua, a Gerncia de Configurao de

    Software (GCS) fornece tcnicas, processos e ferramentas para automatizar e

    implantar software em ciclos curtos. De acordo com Dantas (2009), os principais

    sistemas da GCS so o Controle de Modificaes, o Controle de Verses e o

    Controle de Gerenciamento de Construo. A seguir sero detalhadas as principais

    atividades da GCS e sua importncia no processo de entrega de software.

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    3/19

    2.1 GERNCIA DE CONFIGURAO DE SOFTWARE

    Segundo Estublier (2000) a GCS definida como uma rea da Engenharia de

    Software (ES) responsvel pelo controle da evoluo de sistemas complexos

    permitindo contribuir com a ES no desenvolvimento e manuteno das aplicaes,com a finalidade de possibilitar a rastreabilidade das modificaes realizadas.

    A configurao de software composta por um conjunto de itens de

    configurao. Entre eles esto documentos, programas, dados e ambiente de

    desenvolvimento. Todos esses itens devem ser controlados pela GCS, que aplicada

    ao longo de todo o ciclo de vida da aplicao. Seu objetivo identificar, controlar,

    auditar e relatar modificaes que ocorrem durante o desenvolvimento e

    manuteno do software, evitando assim a perda de controle do projeto(PRESSMAN, 2002).

    De acordo com Dantas (2009), sob a perspectiva de desenvolvimento, a

    GCS abrange trs sistemas principais: Controle de Modificaes, Controle de

    Verses e Controle de Gerenciamento de Construo.

    O objetivo do Controle de Modificaes garantir a qualidade e a

    consistncia dos itens de configurao de software, medida que as modificaes

    so feitas. Sua utilizao permite acompanhar e gerenciar todas as alteraes

    realizadas durante o ciclo de vida da aplicao (SALES et al, 2010).

    Para controlar as modificaes dos itens e obter o histrico de alteraes, os

    mesmos devem ser armazenados em um repositrio. O Controle de Verses

    composto por procedimentos e ferramentas que permitem a administrao desse

    repositrio e o versionamento de software (GARCIA, 2013).

    A construo de software, tambm conhecida como build, corresponde ao

    processo de compilao, teste e empacotamento do sistema, sua automatizao

    pode ser realizada atravs do Controle de Gerenciamento de Construo. Alm

    dessas etapas, o processo de construo pode incluir o Gerenciamento de

    Dependncias e a execuo de ferramentas de Anlise Esttica do Cdigo, a

    importncia dessas etapas ser esclarecida mais adiante. Aps a execuo de um

    buildobtm-se um ou mais arquivos binrios, tambm conhecidos como artefatos,

    que estaro prontos para serem implantados em produo (SATO, 2014).

    Quando mais de uma pessoa trabalha em um mesmo projeto, frequentemente

    as mudanas realizadas por um membro impactam os demais, podendo conflitar

    entre si e gerar erros durante a construo ou execuo da aplicao. Dessa forma,

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    4/19

    alm de realizar o controle das mudanas, de verses e o gerenciamento da

    construo do software, muito importante que o trabalho de todos os envolvidos

    seja integrado para a obteno de um produto coerente (LOPES, 2011).

    A Integrao Contnua uma atividade da GCS que consiste em diminuir o

    ciclo de integrao, tornando-o o mais frequente possvel. Alm disso, um feedbackcontnuo pode ser obtido atravs de prticas e ferramentas que auxiliam na

    verificao e correo de erros de integrao assim que eles so introduzidos,

    quando ainda barato corrigi-los (LOPES, 2011).

    O pipeline de implantao, que ser apresentado mais a frente, utilizado

    para levar o princpio de IC sua concluso lgica. Ao combin-lo com o uso correto

    da GCS e um alto grau de testes automatizados possvel realizar entregas em

    ambiente de teste, desenvolvimento ou produo, a partir de um clique em umboto.

    2.2 GARANTIA E CONTROLE DA QUALIDADE DE SOFTWARE

    De acordo com Humble e Farley (2014), testar uma atividade multifuncional

    que deve ser executada continuamente desde o comeo do projeto, por todos os

    integrantes do time. Para garantir a qualidade, a cada mudana realizada na

    aplicao, em sua configurao ou no ambiente de software, devem ser escritos

    testes em mltiplos nveis (unitrios, de componentes e de aceitao) e includos no

    pipelinede implantao para que sejam executados.

    A execuo sistemtica de testes tem o objetivo especfico de encontrar e

    remover o maior nmero possvel de erros, evitando assim que eles sejam

    encontrados pelo cliente. Os testes no garantem que o cdigo no possui erros, no

    entanto, so essenciais para verificar se uma mudana em uma parte do software

    no afetou outras que dependem direta ou indiretamente dela (PRESSMAN, 2002).

    Para garantir que o software entregue ao cliente possui alta qualidade, alm

    da execuo de testes automatizados, necessrio realizar o controle da qualidade

    de cdigo atravs da anlise esttica do mesmo, que definida por Terra e Bigonha

    (2008) como um dos instrumentos conhecidos pela engenharia de software para a

    mitigao de erros, seja por sua utilizao para a verificao de regras de estilos,

    para a verificao de erros ou ambos.

    A anlise esttica do cdigo muito importante para o controle de qualidade,

    no entanto, muitos projetos podem evoluir para uma massa de cdigo impossvel de

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    5/19

    ser mantida, caso no sejam divididos em componentes menores quando isso ainda

    possvel.

    2.3 GERNCIA DE DEPENDNCIAS E DE ARTEFATOS

    A diviso de uma aplicao em uma coleo de componentes com baixo

    acoplamento e com um bom encapsulamento alm de representar uma boa

    arquitetura tambm permite colaborao mais eficiente e feedbackmais rpido em

    sistemas de grande porte (SATO, 2014).

    A diferena de um softwarebaseado em componentes o fato de que sua

    base de cdigo separada em pores menores, que possuem interaes limitadas

    e bem definidas. A partir do momento que uma aplicao possui componentessignifica que depende dos mesmos para funcionar corretamente. Essa relao

    conhecida como dependncia. Alm dos componentes, uma aplicao pode

    depender de pacotes que so desenvolvidos, disponibilizados e controlados por

    terceiros, que so conhecidos como bibliotecas (MURTA, 2006).

    A Gerncia de Dependncias responsvel por recuperar dependncias com

    verses especficas de um repositrio da Internet ou de um repositrio de artefatos

    da organizao. Quando a organizao possui um repositrio de artefatos prprio,

    possvel realizar a Gerncia de Artefatos para manter, controlar e disponibilizar

    bibliotecas e componentes. Dessa forma possvel reduzir o volume de downloads

    de bibliotecas da internet e consequentemente o trfego na rede (SATO, 2014).

    O uso da abordagem baseada em componentes, alm de incentivar o reuso,

    contribui para a colaborao entre grandes equipes. Para alcanar entrega eficiente

    e feedbackrpido, fundamental o uso de componentes, de pipelinesbaseados em

    dependncias, de um gerenciamento eficiente de artefatos, alm de um ambiente

    estvel que esteja preparado para a implantao.

    2.4 GERNCIA DE INFRAESTRUTUTRA

    Um ambiente formado por um conjunto de recursos necessrios para que a

    aplicao funcione de forma correta. Esses recursos so obtidos atravs da

    configurao de hardware dos servidores, da infraestrutura de rede que os conecta e

    da configurao do sistema operacional e middleware. A infraestrutura representa

    todos os ambientes em conjunto com todos os servios que os apoiam, isso inclui

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    6/19

    servidores de DNS, os firewalls, os roteadores, os repositrios de controle de

    verso, o armazenamento, as aplicaes de monitoramento, os servidores de e-mail,

    entre outros (HAMBLE; FARLEY, 2014).

    Os princpios da Gerncia de Infraestrutura incluem a especificao do estado

    desejado da infraestrutura por meio de configurao mantida no controle de verso;correo automtica da infraestrutura at chegar ao estado desejado; e uso de

    instrumentao e monitoramento para saber o estado atual da infraestrutura.

    Quando no realizada de forma correta, resulta em atrasos, perda de eficincia no

    desenvolvimento e aumento de custo continuado. Sua responsabilidade preparar e

    gerenciar ambientes de homologao e produo presentes no Pipeline de

    Implantao (SATO, 2014).

    2.5 O PIPELINE DE IMPLANTAO

    O pipeline de implantao uma implementao de ponta a ponta da

    automatizao do processo de compilao, testes e implantao, que permite s

    equipes de teste e operao implantar a aplicao em ambientes de teste, de

    homologao e de produo com o apertar de um boto. Aos desenvolvedores,

    permitida a visualizao dos estgios do processo de entrega alcanados por cada

    verso do softwaree dos problemas encontrados em cada uma delas. Alm disso,

    proporciona ao gerente a verificao e monitorao de mtricas fundamentais como

    tempo de ciclo, taxa de transferncia e qualidade de acesso, permitindo a

    visibilidade sobre o processo de entrega que torna possvel a identificao,

    otimizao e remoo de gargalos. Dessa forma, obtm-se um processo de Entrega

    Contnua que alm de mais rpido, tambm mais seguro (HUMBLE; FARLEY,

    2014).

    O principal objetivo do pipeline de implantao permitir que todos os

    envolvidos no processo de entrega tenham visibilidade sobre o progresso dos

    processos, dessa forma, torna-se possvel identificar quais mudanas quebraram a

    aplicao e quais se tornaram verses candidatas apropriadas para a execuo de

    testes manuais e entrega. Quando uma verso passa por todo o pipeline com

    sucesso, significa que ela foi submetida a testes automatizados e manuais em

    ambiente similares aos de produo. Essa a garantia de que est pronta para ser

    colocada em produo com um simples apertar de um boto (HUMBLE; FARLEY,

    2014).

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    7/19

    3 METODOLOGIA PARA IMPLANTAO DA ENTREGA CONTNUA

    O Integra que desenvolvido e mantido pela equipe de desenvolvimento de

    softwaredo Instituto de Cincias Exatas (ICE) da Universidade Federal de Juiz de

    Fora (UFJF), pode ser acessado atravs do endereo http://integra.ice.ufjf.br/. Deacordo com o prprio site, o projeto consiste na criao de uma plataforma, que

    pode ser vista como uma forma de se abstrair a complexidade da unio de dados

    providos de sistemas diferentes atravs de interfaces de gerenciamento de

    recursos.

    O sistema interno do ICE foi criado em 1999 e com o passar dos anos notou-

    se que o mesmo havia se tornado um sistema legado. Devido ao alto acoplamento,

    foi decidido que um novo sistema deveria ser criado para substituir o antigo. Em2013 o Novo Integra comeou a ser desenvolvido. O lanamento da verso inicial

    est previsto para junho de 2014.

    Entre as suas principais funcionalidades est o controle de salas, marcao

    de aulas, grupos de discusso, eleies, e-mail institucional, matriz curricular,

    eventos, grade de horrio, cadastro de computadores rede sem fio e o Plano de

    Expanso e Reestruturao (REUNI).

    O Novo Integra conta com as tecnologias Java, ZK Framework, Maven,

    Hibernete e Spring e com as ferramentas NetBeans, Mysql Workbank e Tortoise

    SVN. Alm disso, faz integrao com o Sistema Integrado de Gesto Acadmica da

    UFJF (UFJF/SIGA) e com o Google.

    Atualmente a equipe formada por trs funcionrios efetivos (estando um

    deles afastado para mestrado) e mais dois estagirios. O mtodo de

    desenvolvimento gil Kanban utilizado para apoiar o desenvolvimento e a gerncia

    de modificaes.

    Devido ao tamanho da equipe, existe uma grande dificuldade para conciliar o

    desenvolvimento do novo sistema e as manutenes do sistema antigo. A busca

    pela automatizao do processo de entrega do Novo Integra comeou com o

    objetivo de reduzir o tempo gasto com tarefas manuais, garantir a qualidade da

    entrega para evitar o retrabalho e dessa forma aumentar a produtividade da equipe.

    O estudo de caso, previamente autorizado pelo Diretor responsvel pelo ICE,

    apresenta os resultados obtidos com o uso da metodologia sugerida no artigo para a

    automatizao do fluxo de implantao do Novo Integra. Aps a realizao da

    pesquisa sobre Entrega Contnua, foi proposto um modelo que pode ser aplicado em

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    8/19

    outros projetos. Atravs de sua utilizao, foram escolhidas as ferramentas que so

    responsveis pela automatizao de cada um dos processos do estudo de caso. A

    metodologia foi divida nos seguintes procedimentos:

    Definio de qual ferramenta ser utilizada para acompanhar a

    evoluo do desenvolvimento de software; Determinao do Sistema de Controle de Verso a ser utilizado;

    Identificao das dependncias do projeto e definio de como sero

    gerenciadas;

    Verificao de qual ser o servidor utilizado para a integrao entre os

    mdulos dos projetos;

    Definio dos mecanismos que sero utilizados para analisar a

    qualidade do cdigo; Determinao dos tipos de testes necessrios para verificar a

    execuo das funcionalidades do projeto;

    Levantamento das configuraes dos ambientes para definio de um

    gerenciador de infraestrutura;

    Estabelecimento de uma soluo para a implantao da aplicao em

    ambiente de produo.

    Para fortalecer o modelo sugerido para a implantao da Entrega Contnua,no detalhamento de cada procedimento sero apresentados grficos que indicam a

    popularidade de cada ferramenta que pode ser utilizada. Alm disso, sero

    apontadas quais so as opes open sourcese dentre elas quais foram utilizadas na

    automatizao do fluxo de implantao do Novo Integra.

    3.1 DEFINIO DE QUAL FERRAMENTA SER UTILIZADA PARA

    ACOMPANHAR A EVOLUO DO DESENVOLVIMENTO DE SOFTWARE

    Acompanhar a evoluo do desenvolvimento de software significa organizar

    os requisitos em entregas, designar um desenvolvedor para o cumprimento da tarefa

    e manter um histrico com a descrio do que foi realizado durante o

    desenvolvimento.

    Ferramentas de Gerncia de Issues (ou requisies de mudanas) atendem

    aos requistos citados acima e incluem a gesto de novas solicitaes, de mudanas

    e de defeitos. A Figura 1 aponta quais so os Gerenciadores de Issues mais

    utilizados.

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    9/19

    FIGURA 1Popularidade dos Gerenciadores de Issues

    Fonte:White e outros (2013)

    So ferramentas open sources o Trac, o Mantis, o Bugzilla e o Redmine.

    Entre esses, o Redmine (www.redmine.org) o mais utilizado pelos entrevistados. A

    equipe de desenvolvimento j utilizava o mesmo, a mudana realizada na

    implantao da Entrega Contnua foi a integrao com o SVN e o Jenkins. Alm

    disso, a instalao do plugin ekanban que permite trabalhar com o mtodo de

    desenvolvimento gil Kanban, que praticado pela equipe.

    3.2 DETERMINAO DO SISTEMA DE CONTROLE DE VERSO A SER

    UTILIZADO

    Um sistema de controle de verso deve armazenar o cdigo fonte e todos os

    itens de configurao de software. Alm disso, deve permitir o acesso a verses

    anteriores, o compartilhamento entre equipes e a recuperao de informaes sobre

    as alteraes atravs de histricos.

    A Figura 2 mostra a popularidade dos Sistemas de Controle de Verso. Entre

    eles o Mercurial, o CVS, o Git e o Subversion so open sources.

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    10/19

    FIGURA 2Popularidade dos Sistemas de Controle de Verso

    Fonte:White e outros (2013)

    O Subversion (http://subversion.apache.org/), tambm conhecido como SVN

    utilizado tradicionalmente em projetos Java e, de acordo com a o grfico, continua

    sendo o mais utilizado. Apesar da existncia de sistemas mais novos, como o Git

    (http://git-scm.com/), o Subversion foi mantido, pois atende a todas as necessidades

    do projeto e a equipe j domina o seu uso.

    3.3 IDENTIFICAO DAS DEPENDNCIAS DO PROJETO E DEFINIO DE

    COMO SERO GERENCIADAS

    A identificao das dependncias necessria para levantar quais

    modificaes sero realizadas durante a implantao das ferramentas responsveis

    pelo seu gerenciamento. O uso de uma ferramenta de build com suporte a

    gerenciamento de dependncias, em conjunto com um servidor de gerenciamento

    de artefatos permite a padronizao de bibliotecas e componentes do projeto. Alm

    disso, torna possvel a execuo do builda partir de um nico comando.

    Entre os sistemas open sources que possibilitam o build automatizado e a

    gerncia de dependncias esto o Maven, o Gradle e o Ant (em conjunto com o Ivy).

    A Figura 3 apresenta a comparao da popularidade dessas ferramentas,

    considerando o perodo que vai do final de 2010 at meados de 2013.

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    11/19

    FIGURA 3Popularidade das ferramentas de build Final de 2010 a meados de 2013

    Fonte:White e outros (2014)

    No incio do estudo de caso o Maven (http://maven.apache.org/) j estava em

    uso e foi mantido, pois alm de permitir a gesto de dependncias e a criao de

    componentes, tambm possibilita a automatizao do buildde forma independente,

    isto , sem precisar interagir com outras ferramentas.

    Entre os servidores open sources de gerenciamento de artefatos esto oNexus e o Artifactory. O Nexus est sendo estudado para implantao futura.

    3.4 VERIFICAO DE QUAL SER O SERVIDOR UTILIZADO PARA A

    INTEGRAO ENTRE OS MDULOS DOS PROJETOS

    A automatizao de processos por si s no suficiente. fundamental

    possuir um feedbackque indique se as alteraes realizadas em qualquer um doscomponentes, mdulos ou servios no quebraram o funcionamento de outro ponto

    da aplicao.

    Servidores de IC possuem a funo de integrar todas as alteraes realizadas

    no repositrio e podem enviar notificaes para os responsveis em caso de erros.

    A Figura 4 mostra a popularidade dos servidores de IC. Entre eles o Jenkins

    (Hudson) a nica opo open source.

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    12/19

    FIGURA 4Popularidade dos Servidores de Integrao Contnua

    Fonte:White e outros (2013)

    O Jenkins (http://jenkins-ci.org/) possui interface web com mais de 600plugins

    para customizao e possibilita a integrao com tecnologias que permitem a

    compilao, anlise, testes e implantao das aplicaes. responsvel por

    interligar as ferramentas utilizadas para a entrega de software.

    No incio do estudo de caso o Jenkins j estava em uso, no entanto, era

    utilizado apenas para integrao e verificao da qualidade atravs de plugins.

    Durante a implantao foram criados e configurados jobs especficos para a

    compilao, anlise esttica de cdigo, testes e implantao dos componentes,

    servios e mdulos que so utilizados nopipelinede implantao.

    3.5 DEFINIO DOS MECANISMOS QUE SERO UTILIZADOS PARA

    ANALISAR A QUALIDADE DO CDIGO

    As ferramentas para a Anlise Esttica de Cdigo utilizam mtricas para

    verificar violaes e a evoluo da qualidade estrutural do cdigo. A Figura 5 mostra

    a popularidade das ferramentas utilizadas para esse fim, todas as ferramentas

    apresentadas so open sources.

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    13/19

    FIGURA 5Popularidade das ferramentas de anlise esttica de cdigo

    Fonte:Shelajev e outros (2014)

    O Jenkins possibilita a anlise da qualidade de cdigo atravs da instalao

    de vriospluginsque geram relatrios e grficos durante a compilao da aplicao.

    Entre eles esto o FindBugs (https://wiki.jenkins-

    ci.org/display/JENKINS/FindBugs+Plugin), o CheckStyle (https://wiki.jenkins-

    ci.org/display/JENKINS/Checkstyle+Plugin) e o PMD (https://wiki.jenkins-

    ci.org/display/JENKINS/PMD+Plugin). Aps a realizao de vrios testes, observou-se que o tempo gasto na compilao com a gerao desses relatrios chegou a ser

    treze vezes maior que o tempo gasto para uma compilao que no envolvia essa

    anlise.

    A melhor soluo encontrada foi a implantao do Sonar

    (http://www.sonarqube.org/), que uma ferramenta dedicada ao controle e medio

    da qualidade do cdigo, que tambm pode ser customizada com a instalao e

    configurao de plugins e integrada ao Jenkins. Suas mtricas podem ser

    customizadas de acordo com a necessidade de cada projeto e possvel definir um

    limite mnimo aceitvel de incidentes que, se ultrapassado, impedir que a

    compilao seja realizada com sucesso.

    3.6 DETERMINAO DOS TIPOS DE TESTES NECESSRIOS PARA VERIFICAR

    A EXECUO DAS FUNCIONALIDADES DO PROJETO

    O build de uma aplicao garante que no ocorreram erros durante a

    construo do software, no entanto, para entregar valor ao cliente necessrio

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    14/19

    atender aos requisitos especificados. Os testes automatizados so os responsveis

    por garantir que quaisquer problemas que comprometam o cumprimento dos

    requisitos sejam identificados enquanto o custo para corrigi-los ainda baixo, por

    isso devem ser bem definidos. Dessa forma, obtm-se a garantia de que o software

    est funcionando como deveria, isso significa menos defeitos, menor custo commanuteno e melhor reputao com o cliente.

    Ferramentas para diferentes tipos de testes podem ser escolhidas de acordo

    com o escopo e a necessidade de cada projeto. A Figura 6 exibe a popularidade das

    ferramentas de automatizao de testes. Todas as ferramentas listadas so open

    sources.

    As ferramentas escolhidas inicialmente para automatizao de testes do

    Novo Integra foram a JUnit (http://junit.org/) para a criao de testes unitrios e aSelenium (http://docs.seleniumhq.org/) para a criao de testes funcionais.

    FIGURA 6Popularidade das ferramentas de automatizao de testes

    Fonte:White e outros (2013)

    3.7 LEVANTAMENTO DAS CONFIGURAES DOS AMBIENTES PARA

    DEFINIO DE UM GERENCIADOR DE INFRAESTRUTURA

    O provisionamento de infraestrutura deve ser um processo automatizado para

    que seja possvel restabelecer, dentro de um perodo de tempo previsvel, uma novaconfigurao programada em casos de falhas de hardware.

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    15/19

    A escolha de uma ferramenta essencial para reduzir o tempo desperdiado

    com a configurao de ambientes. A Figura 7 mostra as ferramentas mais populares

    de configurao de infraestrutura.

    FIGURA 7Popularidade das ferramentas de configurao de infraestrutura

    Fonte:White e outros (2013)

    O Puppet (http://puppetlabs.com/puppet/puppet-open-source) uma

    ferramenta que centraliza as configuraes em um nico ponto, permitindo que

    sejam distribudas para outros ns dentro de uma rede. Utiliza linguagem declarativapara a configurao de sistemas operacionais, entre eles Linux, Windows e Solaris.

    Entre suas principais funcionalidades est a gerncia de configurao do ambiente e

    a automatizao da instalao de pacotes. Sua implantao permitiu maior controle

    sobre as configuraes dos servidores, tornando possvel sua reproduo para

    criao de ambientes de homologao.

    3.8 ESTABELECIMENTO DE UMA SOLUO PARA A IMPLANTAO DAAPLICAO EM AMBIENTE DE PRODUO

    A implantao da aplicao em um ambiente de produo o ponto crucial da

    Entrega Contnua, pois trata o ponto mais crtico que depende de todos os

    processos anteriores alm de uma ferramenta para tornar a implantao

    automatizada.

    Um pipelinede implantao no servidor de IC ajuda a remover ineficincias

    do processo, tornando o ciclo de feedbackmais rpido e poderoso. No existe uma

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    16/19

    soluo nica para a criao de um pipeline, as configuraes podem variar de

    acordo com a complexidade e arquitetura de cada projeto.

    A equipe de desenvolvimento do Novo Integra optou por utilizar o Build

    Pipeline Plugin (https://wiki.jenkins-ci.org/display/JENKINS/Build+Pipeline+Plugin) no

    Jenkins. Atravs dele possvel interligar os jobs do Jenkins e definir se serodisparados de forma manual ou automtica.

    Sua implantao alm de permitir uma visualizao mais ampla do progresso

    dos processos da Entrega Contnua, tambm permitiu a identificao do uso de

    dependncias desnecessrias em alguns componentes, servios e mdulos do

    sistema.

    3.9 ANLISE DOS RESULTADOS OBTIDOS

    Para identificar em que ponto uma organizao est, em termos de

    maturidade de processos e prticas, Humble e Farley (2014) definiram um modelo

    de maturidade para a gerncia de configurao e entrega de verso. O modelo

    considera as prticas de gesto de construo e IC, ambientes e implantao,

    gesto de entrega de verso e observncia, testes e gerncia de configurao. A

    progresso baseada em nveis pode ser utilizada para a melhoria contnua dos

    processos.

    So apresentados cinco nveis globais, que podem ser utilizados para

    avaliao geral da organizao. So eles:

    Nvel 3 - Otimizao: Foco em melhoria de processo

    Nvel 2 - Gerido quantitativamente: Processos medidos e controlados

    Nvel 1 - Consistente: Processos automatizados aplicados ao longo de

    todo o ciclo de vida da aplicao.

    Nvel 0 - Repetvel: Processo documentado e parcialmente

    automatizado

    Nvel -1 - Regressivo: Processos que no podem ser repetidos, pouco

    controlados e reativos

    O uso das ferramentas utilizadas durante a confeco desse artigo permitiu

    um crescimento que passou do nvel regressivo para o repetvel. A automatizao

    dos processos reduziu o tempo desperdiado com processos manuais, no entanto,

    ainda existem pontos que precisam ser melhorados para que o nvel de otimizao

    seja alcanado.

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    17/19

    4 CONCLUSO

    Entrega contnua um assunto relativamente novo, no entanto, a partir do

    momento que se entende quais so as prticas envolvidas, possvel buscar por

    solues especficas para cada ponto do processo.A metodologia apresentada no captulo 3 possibilitou a automatizao dos

    principais processos da entrega de software e pode ser utilizada por qualquer equipe

    que pretenda implantar a Entrega Contnua para obter reduo do tempo

    desperdiado com tarefas manuais e aumentar a qualidade do software. A escolha

    das ferramentas pode variar de acordo com o escopo e a necessidade de cada

    projeto, cabe a cada equipe avaliar quais so as melhores solues.

    O estudo de caso permite concluir que a implantao da Entrega Contnuadeve ser realizada de forma gradativa. Os nveis mais altos de maturidade podero

    ser alcanados atravs da colaborao diria de todos os membros envolvidos na

    confeco do software. A prtica diria levar a uma evoluo natural com o

    decorrer do tempo, que permitir o incio de buscas por novos procedimentos a partir

    do momento que todos entenderem o real significado de entregar valor ao cliente.

    A implantao muito flexvel, existem muitas opes de ferramentas para

    resolver um mesmo problema. O ponto positivo que havendo alguma ferramenta

    que no atenda a alguma necessidade do processo, ser possvel buscar outra

    soluo. O ponto negativo decidir quais ferramentas usar no incio da implantao.

    Esse foi o principal desafio encontrado durante a elaborao desse artigo.

    As avaliaes a respeito de trabalhos futuros mostram que o trabalho est

    longe de um fim. Muitos tpicos avanados podem ser explorados com o objetivo de

    alcanar melhores nveis de maturidade da Entrega Contnua. Entre eles est a

    gerncia de dados, a implantao na nuvem, os sistemas avanados de

    monitoramento, os pipelines de entregas complexas e a orquestrao de

    implantao. Alm disso, algumas mudanas culturais so essenciais para ajudar na

    melhoria contnua dos processos. Uma das prticas que surgiu recentemente

    denominada DevOps que sugere a colaborao entre os times de desenvolvimento

    e de operaes. Com base nos resultados obtidos possvel vislumbrar uma vasta

    continuao para esse assunto ainda to pouco explorado.

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    18/19

    REFERNCIAS

    BECK, Kent. Extreme Programming Explained: Embrace Change. Addison-WesleyProfessional, 1999.

    DANTAS, Cristine. Gerncia de Configurao de Software: Desenvolvendo

    software de forma eficiente e disciplinada. Rio de Janeiro, 2009. Disponvel em: . Acessoem 20 jun 2014.

    DIAS, Klessis Lopes; LUCENA, Carlos Jos Pereira de; KULESZA, Uir. Umframework orientado a aspectos para monitoramento e anlise de processosde negcio. 2008. 68f. Dissertao (Mestrado em Informtica)-PontifciaUniversidade Catlica do Rio de Janeiro, Rio de Janeiro, 2008.

    ESTUBLIER, Jacky et al. Impact of the research community on the field ofsoftware configuration management: summary of an impact project report.ACM

    SIGSOFT Software Engineering Notes, v. 27, n. 5, p. 31-39, 2002.

    FOWLER, Martin. Continuous Integration. Disponvel em:. Acesso em 7 fev 2014.

    GARCIA, Francisco A. Integrao Contnua: da teoria prtica Parte 1. JavaMagazine, Rio de Janeiro, n. 117, 2013. Disponvel em:. Acesso em 15 abr 2014.

    HUMBLE, Jez; FARLEY, David. Entrega contnua: como entregar software deforma rpida e confivel. Porto Alegre: Bookman, 2014.

    LOPES, Juan. Integrao Contnua. .net Magazine, Rio de Janeiro, n. 85, PortoAlegre: Bookman, 2011. Disponvel em . Acesso em 15 abr 2014.

    MURTA, Leonardo Gresta Paulino. Gerncia de Configurao noDesenvolvimento Baseado em Componentes. Rio de Janeiro, 2006. Disponvelem . Acessado em27 jun 2014.

    PRESSMAN, Roger S. Engenharia de Software. 5. Ed. So Paulo: Ed. McGraw-Hill, 2002.

    SALES, Ernani O; LIMA REIS, Carla A; REIS, R. Q. Apoio a Gerncia deConfigurao de Artefatos de Software integrado a Execuo de Processos deSoftware. Disponvel em:. Acesso em 20 mar 2014.

    SATO, Danilo. DevOps na prtica: entrega de software confivel e automatizada.

    So Paulo: Caso do Cdigo, 2014.

  • 7/25/2019 Almdeida, Silva - Entrega Contnua Um Estudo de Caso Para Automatizao Do Fluxo de Implantao Do Sistema

    19/19

    SETE, Mrcio. Continuous Delivery: Passos para implementao. Engenharia deSoftware Magazine, Rio de Janeiro, n. 65, 2013. Disponvel em:. Acesso em 19 fev 2014.

    SHELAJEV, Oleg; MUUGA, Sigmar; MAPLE, Simon; WHITE, Oliver. The Wise

    Developers Guide to Static Code Analysis featuring FindBugs, Checkstyle,PMD, Coverity and SonarQube. Disponvel em:. Acesso em 05 mai 2014.

    TERRA, Ricardo; BIGONHA, Roberto S. Ferramentas para Anlise Esttica deCdigos Java. Belo Horizonte, 2008. Disponvel em:. Acessado em 25 jun2014.

    WHITE, Oliver; BADRINARAYANAN, Krishnan; KABANOV, Jevgeni. DevOps /ITOps Productivity Report 2013. Disponvel em:. Acesso em 05 mai 2014.

    WHITE, Oliver; MAPLE, Simon; MUUGA, Sigmar; TIMO!IN, Juri; RASMUSSEN,Michael. Java Build Tools Part 2: A Decision Makers Comparison of Maven,Gradle and Ant + Ivy. Disponvel em: .Acesso em 05 mai 2014.