Você está na página 1de 4

Integrao de ferramentas para minimizar erros provenientes de efeitos colaterais inseridos durante a manuteno

Relato de experincia Poliana A. C. de Oliveira 1 !aria Augusta ". #elson 1


1

Instituto de Informtica Pontifcia Universidade Catlica de Minas Gerais (PUC Minas) Belo Hori onte MG Brasil
poliana.correa@gmail.com, guta@pucminas.br

Resumo. Este artigo relata a experincia de uma fbrica de software com a integrao de frameworks de testes unitrios com ferramentas de gesto de configurao, compilao automtica, integrao contnua e histrico de projeto, com o intuito de minimi ar erros pro!enientes de efeitos colaterais inseridos durante a manuteno" Abstract. #his paper reports on the experience of a software factor$ with the integration of unit testing frameworks with tools for configuration management, automatic compilation, continuous integration, and project histor$" #he goal of this integration is to minimi e errors caused b$ side effects introduced during maintenance"

1. Introduo
Um dos !ro"lemas causados !or altera#$es no software% se&undo Gru"" e 'a(an& ()**+)% , -ue durante as modifica#$es no cdi&o , !rovvel -ue se.am inseridos efeitos colaterais demandando novas manuten#$es/ 0ste arti&o a!resenta uma e1!eri2ncia de uso de ferramentas !ara au1iliar na automa#3o da identifica#3o destes erros durante o !rocesso de inte&ra#3o do cdi&o modificado com o e1istente/ 4 o".etivo , evitar -ue os erros se !ro!a&uem ou se.am identificados muito de!ois da codifica#3o/ Conforme 5o6ler ()***)% o tem!o &asto !elo desenvolvedor !ara voltar ao conte1to anterior e corri&ir o erro costuma ser muito maior do -ue se ele o corri&isse lo&o a!s a altera#3o do cdi&o/ Para Molinari ()**7) o custo de !arar o sistema em !rodu#3o em termos do -ue o cliente dei1a de &an8ar ou !rodu ir s3o su!eriores aos custos !reventivos de erros/ Para esta e1!eri2ncia foram inte&radas cinco ferramentas automati adas9 &est3o de confi&ura#3o !ara controlar as mudan#as do sistema: com!ila#3o automtica !ara identificar momentos de erros -ue im!ossi"ilitem a constru#3o do sistema dado os ar-uivos do re!ositrio: frame6or( de testes unitrios !ara testar o cdi&o: inte&ra#3o contnua !ara isolar os erros e suas causas mais facilmente e 8istrico de !ro.eto !ara re&istrar informa#$es so"re o erro/ 0ste tra"al8o est or&ani ado da se&uinte forma/ ; se#3o dois cita tra"al8os correlatos a este/ ; se#3o tr2s descreve a !ro!osta de solu#3o/ ; se#3o -uatro caracteri a a inte&ra#3o e os !ro.etos/ ; se#3o cinco mostra os resultados o"tidos a!s a inte&ra#3o e im!lanta#3o das ferramentas na f"rica de software/ Por fim% a se#3o seis a!resenta uma conclus3o e su&ere al&uns tra"al8os futuros/

$. %ra&al'os Correlatos
; ferramenta Buildi11 a&re&a as ferramentas citadas na se#3o um como !acotes o -ue torna a instala#3o "em sim!les/ ; inte&ra#3o de ferramentas !ro!osta a-ui re-uer confi&ura#$es mais com!le1as/ 0ntretanto% , mais fle1vel ao !ermitir alterar o con.unto de ferramentas dada a lin&ua&em de !ro&rama#3o% n3o se limitando a <ava como o Buildi1/ 4utra desvanta&em deste , ter sido criado !ara uma distri"ui#3o =inu1/ < a inte&ra#3o !ro!osta !ode ser feita tanto em am"iente >indo6s -uanto em =inu1/ ?odde ()**@) desenvolveu uma ta"ela !ara re&istrar o nvel de inte&ra#3o reali ado em cada !ro.eto dado o am"iente de inte&ra#3o adotado/ Por,m% ele n3o a!resenta dados so"re o uso deste am"iente/ 0m contraste% este relato a!resenta al&umas medidas !ara demonstrar a mel8oria o"servada com o uso do am"iente de inte&ra#3o/

(. Proposta
; !artir do estudo do cenrio de inte&ra#3o de cdi&o de uma f"rica de software% um novo cenrio foi !ro!osto/ Para validAlo as ferramentas !ro!ostas foram ent3o inte&radas e im!lantadas na em!resa onde dados foram coletados e analisados/ ; 5i&ura 1 ilustra o cenrio de inte&ra#3o de cdi&o da em!resa/ Beste cenrio o desenvolvedor e1ecuta localmente somente os testes unitrios -ue .ul&a !ertinente C altera#3o reali ada/ Uma constru#3o (build) automtica do sistema , reali ada diariamente/ 0 o desenvolvedor master fa de forma manual a detec#3o de -ue"ra do build, a identifica#3o das !ossveis causas e a notifica#3o do res!onsvel !ela -ue"ra/

Figura 1. Cenrio de integrao de cdigo da empresa

Figura 2. Cenrio proposto para integrao de cdigo da empresa

; 5i&ura ) mostra o cenrio !ro!osto/ Beste am"iente% um servidor de inte&ra#3o contnua verifica !eriodicamente o re!ositrio/ ;ssim -ue ele detecta uma altera#3o% a ferramenta automtica de com!ila#3o , acionada !ara construir (build) o sistema/ De o build n3o -ue"rar% todos os testes unitrios s3o e1ecutados/ De am"os forem e1ecutados com sucesso% a inte&ra#3o , concluda/ Den3o% um email , enviado !ara o desenvolvedor master" Ba ferramenta de 8istrico de !ro.eto% com a!enas um cli-ue% um re&istro , criado com informa#$es so"re a -ue"ra do build" 0sta ferramenta% !or sua ve % dis!ara automaticamente um email !ara o desenvolvedor res!onsvel !ela -ue"ra/ 0 este ciclo se re!ete at, -ue o erro se.a corri&ido e% conse-uentemente% a inte&ra#3o se.a concluda/
1

8tt!9EE"uildi1/t8ou&8t6or(s/comE

). Integrao das *erramentas


;s ferramentas de "ase utili adas foram+ Du"version1 !ara &est3o de confi&ura#3o% 'rac) !ara 8istrico de !ro.eto e CruiseControl+ como servidor de inte&ra#3o contnua/ Inicialmente% o 'rac foi inte&rado ao CruiseControl/ Para tanto% foi utili ado o plugin 'racCCF" ;l&umas funcionalidades foram adicionadas ao plugin !ara -ue% al,m de re&istrar a ocorr2ncia de -ue"ra de build% re&istrasse a corre#3o efetuada/ Para a im!lanta#3o das ferramentas inte&radas foram selecionados dois !ro.etos da em!resa% am"os desenvolvidos em CGG e em am"iente =inu1/ 4 !ro.eto M est em manuten#3o desde *)E)**@ e !ossui H 1F*/*** lin8as de cdi&o e o !ro.eto D desde *IE)**J e !ossui H IK7/*** lin8as de cdi&o/ 4 frame6or( de testes unitrio utili ado foi o C11test7 e a ferramenta de automa#3o da com!ila#3o adotada foi o Ma(eI/

,. Resultados ,.1. Aumento da -xecuo e !anuteno de %estes .nit/rios


Bo cenrio anti&o% a cada altera#3o o desenvolvedor e1ecutava somente os casos de testes -ue ele considerava relacionados com as modifica#$es reali adas/ Bo cenrio !ro!osto% a cada altera#3o o sistema , construdo e todos os testes s3o e1ecutados/ De um deles fal8ar% a inte&ra#3o n3o ser "em sucedida e o desenvolvedor ser notificado/ ;s 5i&uras + e F relacionam o !ercentual de casos de testes e1ecutados com sucesso a cada build com o nLmero de dias decorridos a!s a inte&ra#3o das ferramentas/ Inicialmente% !oucos dos casos de testes im!lementados foram e1ecutados com sucesso/ ;!enas F*%KIM deles !ara o !ro.eto M e @%F1M !ara o !ro.eto D/

Figura 3: Projeto M - Percentual de casos de testes executados a cada build

Figura 4: Projeto S - Percentual de casos de testes executados a cada build

; em!resa ale&a -ue sa"ia de al&uns erros% !or,m n3o sa"ia -ue este nLmero ultra!assava 7*M de sua totalidade/ 0sses% em sua maioria% decorrem de manuten#$es no cdi&o sem a atuali a#3o do teste unitrio corres!ondente/ Nada essa informa#3o% a em!resa investiu um certo esfor#o !ara atuali ar seus casos de testes/

,.$. !anuteno da -sta&ilidade do 0istema


Um dos o".etivos do cenrio !ro!osto , minimi ar momentos de erros onde n3o se.a !ossvel construir o sistema/ Para analisar esse as!ecto% com!arouAse o tem!o m,dio -ue o build ficava -ue"rado nos dois cenrios/ Para o !ro.eto M% medindo os tr2s meses anteriores C im!lanta#3o das ferramentas inte&radas constatouAse -ue o build ficava -ue"rado em m,dia !or )%77 dias consecutivos/ Bos !rimeiros tr2s meses a!s a im!lanta#3o o"servouAse -ue o build fica -ue"rado !or 1 dia em m,dia/ Como no
1 )

8tt!9EEsu"version/ti&ris/or&E 8tt!9EEtrac/ed&e6all/or&E + 8tt!9EEcruisecontrol/sourcefor&e/netE

F 7

8tt!s9EEoss/6er("old/deEtracAcc 8tt!9EEc11test/ti&ris/or&E I 8tt!9EE666/&nu/or&Esoft6areEma(eEmanualEma(e/8tml

cenrio !ro!osto um build , e1ecutado a cada nova modifica#3o enviada ao re!ositrio al&umas -ue"ras de build s3o resolvidas em menos de meia 8ora/ Para o !ro.eto D n3o foi !ossvel reali ar a com!ara#3o entre os dois cenrios dado -ue ele n3o tin8a nem se-uer o build noturno no cenrio anterior/ Bo entanto% nos tr2s meses se&uintes C im!lanta#3o das ferramentas% o tem!o m,dio -ue um build fica -ue"rado , de a!enas 1*%@) 8oras/

,.(. Reduo do %aman'o das !odifica1es Integradas ao C2digo


Bo cenrio anti&o as inte&ra#$es de cdi&o eram reali adas somente uma ve ao dia% es!eraAse -ue o novo cenrio !ermita uma redu#3o no taman8o de cada inte&ra#3o . -ue a inte&ra#3o no mel8or caso !assa a ser reali ada a cada revis3o enviada ao re!ositrio e -ue esta redu#3o facilite a identifica#3o do local onde o erro ocorreu/ Bos tr2s meses antes da im!lanta#3o do cenrio !ro!osto no !ro.eto M% eram modificadas em m,dia 1K*%@ lin8as de cdi&o !or inte&ra#3o/ Bos tr2s meses a!s a im!lanta#3o% foram modificadas em m,dia II%17 lin8as de cdi&o !or inte&ra#3o% ou se.a% 8ouve uma redu#3o m,dia de I1%)KM no taman8o da modifica#3o !or inte&ra#3o/ ;o contrrio do !ro.eto M% o !ro.eto D n3o a!resentou mel8orias e1!ressivas/

3. Conclus1es
0ste tra"al8o !ro!Os a ado#3o de !rticas automati adas com o intuito de aumentar a detec#3o de erros !rovenientes de efeitos colaterais inseridos durante a manuten#3o/ 4s resultados mostraram uma evolu#3o do cenrio anti&o !ara o !ro!osto/ 0m es!ecial% a constru#3o do sistema e a e1ecu#3o dos testes unitrios !assou a acontecer a cada modifica#3o mantendo o build mais estvel/ PodeAse concluir -ue% a!esar do esfor#o !ara confi&urar% inte&rar e im!lantar as ferramentas% o a!oio oferecido !ara a atividade de codifica#3o a lon&o !ra o , .ustificvel% !ois evita -ue al&uns erros se.am identificados muito de!ois da codifica#3o/ Como tra"al8os futuros !odeAse fa er e1!erimentos em outros !ro.etos e coletar mais dados isolando o !erodo de im!lanta#3o al,m de desenvolver funcionalidades !ara o plugin 'racCC como a cria#3o automtica de re&istros dado uma -ue"ra de build a fim de automati ar totalmente as tarefas do desenvolvedor master/ 4utras mel8orias incluem a automa#3o da coleta de dados e constru#3o de &rficos de -ue"ras de build/

4. Referncias 5i&liogr/ficas
5o6ler% M/ ()***) PInte&ra#3o contnuaQ% 8tt!9EEmartinfo6ler/comEarticlesEcontinuousInte&ration/8tml% De!tem"er/ Gru""% P/: 'a(an&% ;/ ()**+) PDoft6are Maintenance9 Conce!ts and PracticeQ/ )R/ed/ >orld Dcientific/ Molinari% =/ ()**7) P'estes de soft6are9 !rodu indo sistemas mel8ores e mais confiveisQ/ )R/ed/ D3o Paulo9 Srica/ ?odde% B/ ()**@) PMeasurin& Continuous Inte&ration Ca!a"ilitTQ% Crosstal(9 '8e <ournal of Nefense Doft6are 0n&ineerin&/ ?ol/ )1 Bo/ 7/ MaT/

Você também pode gostar