Escolar Documentos
Profissional Documentos
Cultura Documentos
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/
; 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
; 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/
F 7
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/
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/