{"id":12,"date":"2006-07-27T19:53:45","date_gmt":"2006-07-27T18:53:45","guid":{"rendered":"http:\/\/www.dtsato.com\/blog\/default\/Agile\/?permalink=Agile-2006-Dia-5.wiki"},"modified":"2006-07-27T19:53:45","modified_gmt":"2006-07-27T18:53:45","slug":"agile-2006-dia-5","status":"publish","type":"post","link":"http:\/\/www.dtsato.com\/blog\/2006\/07\/27\/agile-2006-dia-5\/","title":{"rendered":"Agile 2006 &#8211; Dia 5"},"content":{"rendered":"<p>No \u00faltimo dia da confer\u00eancia tamb\u00e9m estava cheio de trabalho agendado na parte da manh\u00e3 e na parte da tarde.<br \/>\nAs duas \u00faltimas sess\u00f5es que participei foram tamb\u00e9m muito interessantes: refatora\u00e7\u00e3o de banco de dados e t\u00e9cnicas<br \/>\neficientes para trabalhar com c\u00f3digo legado. Para finalizar, uma \u00faltima palestra no banquete servido a noite.<\/p>\n<h3 class=\"heading-1-1\">Refactoring Databases: Evolutionary Database Design &#8211; Scott Ambler e Pramod Sadalage<\/h3>\n<p class=\"paragraph\"\/>Essa palestra foi muito interessante. Ambos os apresentadores acabaram de lan\u00e7ar um<br \/>\n<span class=\"nobr\"><a href=\"http:\/\/www.amazon.com\/exec\/obidos\/redirect?link_code=as2&#38;path=ASIN\/0321293533&#38;tag=danilosato-20&#38;camp=1789&#38;creative=9325\">livro<\/a><\/span><br \/>\nsobre o assunto e falaram sobre como as pessoas do mundo dos bancos de dados est\u00e3o atrasadas<br \/>\nem rela\u00e7\u00e3o ao mundo &#8220;\u00e1gil&#8221;. <span class=\"nobr\"><a href=\"http:\/\/www.ddj.com\/dept\/architect\/188100729\">Poucas ferramentas<\/a><\/span><br \/>\nexistem para <span class=\"nobr\"><a href=\"http:\/\/www.agiledata.org\/essays\/databaseTesting.html\">teste em banco de dados<\/a><\/span> e, conforme os autores<br \/>\ncomentaram, os bancos de dados relacionais j\u00e1 est\u00e3o no mercado h\u00e1 muito tempo. Eles lan\u00e7aram uma pergunta desafiadora:<br \/>\n&#8220;Voc\u00ea acha poss\u00edvel fazer uma mudan\u00e7a trivial no seu banco de dados atual, como mudar o nome de uma coluna, e implantar<br \/>\nessa mudan\u00e7a em produ\u00e7\u00e3o no dia seguinte?&#8221;. Muitos dos presentes achavam muito dif\u00edcil fazer essa simples mudan\u00e7a nas<br \/>\nempresas onde trabalham. <span class=\"nobr\"><a href=\"http:\/\/www.ambysoft.com\">Scott Ambler<\/a><\/span> est\u00e1<br \/>\nlan\u00e7ando uma s\u00e9rie de pesquisas no site do <span class=\"nobr\"><a href=\"http:\/\/www.ddj.com\">Dr. Dobb&#39;s<\/a><\/span> e uma delas \u00e9 sobre<br \/>\nbanco de dados \u00e1geis. Os resultados ser\u00e3o publicados em Novembro e os dados estar\u00e3o dispon\u00edveis no<br \/>\n<span class=\"nobr\"><a href=\"http:\/\/www.ambysoft.com\/surveys\">site<\/a><\/span> dele, por\u00e9m ele disse que, apesar da maioria das pessoas afirmarem que<br \/>\nas informa\u00e7\u00f5es armazenadas no banco de dados s\u00e3o consideradas ativos da empresa, poucos t\u00eam uma estrat\u00e9gia<br \/>\npara recupera\u00e7\u00e3o e manuten\u00e7\u00e3o dos dados em produ\u00e7\u00e3o.<\/p>\n<p class=\"paragraph\"\/>Durante o tutorial, <span class=\"nobr\"><a href=\"http:\/\/www.sadalage.com\">Pramod<\/a><\/span> mostrou exemplos de como trazer a evolu\u00e7\u00e3o do<br \/>\nbanco de dados para seu sistema de controle de vers\u00e3o (CVS, SVN, &#8230;) e como executar algumas das<br \/>\nrefatora\u00e7\u00f5es propostas, integrando tudo com <span class=\"nobr\"><a href=\"http:\/\/ant.apache.org\">Ant<\/a><\/span> e<br \/>\n<span class=\"nobr\"><a href=\"http:\/\/cruisecontrol.sourceforge.net\">Cruise Control<\/a><\/span>.<\/p>\n<p class=\"paragraph\"\/>Devemos dar a devida aten\u00e7\u00e3o para a integra\u00e7\u00e3o entre as 2 comunidades (banco de dados e a comunidade \u00e1gil),<br \/>\npois essa ser\u00e1 uma \u00e1rea que receber\u00e1 grande aten\u00e7\u00e3o nos pr\u00f3ximos anos. Acredito que atrav\u00e9s da colabora\u00e7\u00e3o conjunta,<br \/>\nexiste um grande potencial para o surgimento de novas ferramentas e processos que devem mudar a perspectiva<br \/>\ndas empresas em rela\u00e7\u00e3o ao assunto. E isso n\u00e3o deve acontecer num futuro t\u00e3o distante. Para finalizar, uma foto<br \/>\ncom os apresentadores:<\/p>\n<p class=\"paragraph\"\/><a href=\"http:\/\/www.flickr.com\/photos\/dtsato\/200053530\"><img loading=\"lazy\" decoding=\"async\" class=\"flickr_photo\" src=\"http:\/\/static.flickr.com\/64\/200053530_d39c3e9388_m.jpg\" width=\"240\" height=\"160\" alt=\"Scott Ambler and Pramod Sadalage\"\/><\/a><\/p>\n<h3 class=\"heading-1-1\">Working Effectively with Legacy Code &#8211; Michael Feathers<\/h3>\n<p class=\"paragraph\"\/>Na parte da tarde eu fui auxiliar a sess\u00e3o do Michael Feathers sobre o livro hom\u00f4nimo<br \/>\n<span class=\"nobr\"><a href=\"http:\/\/www.amazon.com\/exec\/obidos\/redirect?link_code=as2&#38;path=ASIN\/0131177052&#38;tag=danilosato-20&#38;camp=1789&#38;creative=9325\">&#8220;Working Effectively with Legacy Code&#8221;<\/a><\/span>.<br \/>\nO tutorial come\u00e7ou com a sua defini\u00e7\u00e3o de c\u00f3digo legado: &#8220;Todo c\u00f3digo que n\u00e3o tem teste&#8221;. Muito boa essa defini\u00e7\u00e3o.<br \/>\nO resto da palestra foi sobre t\u00e9cnicas para conseguir colocar peda\u00e7os de c\u00f3digo existentes numa suite de testes. Grande<br \/>\nparte do desafio nessa tarefa \u00e9 conseguir instanciar objetos numa suite de teste, evitando opera\u00e7\u00f5es<br \/>\ndemoradas ou efeitos colaterais indesejados num teste de unidade. Alguns dos crit\u00e9rios que Michael prop\u00f4s para saber quando<br \/>\num teste de unidade n\u00e3o \u00e9 eficiente s\u00e3o:<\/p>\n<ul class=\"star\">\n<li>O teste fala com o Banco de Dados<\/li>\n<li>O teste faz algum tipo de comunica\u00e7\u00e3o na rede<\/li>\n<li>O teste fala com o Sistema de Arquivos<\/li>\n<li>O teste n\u00e3o pode ser executado ao mesmo tempo que outros testes (depend\u00eancia entre testes)<\/li>\n<li>Voc\u00ea precisa fazer altera\u00e7\u00f5es especiais no ambiente para poder execut\u00e1-los<\/li>\n<\/ul>\n<p>De modo geral, ele n\u00e3o quis dizer que voc\u00ea n\u00e3o deve testar coisas como acesso ao Banco de Dados ou Sistema de Arquivos,<br \/>\nmas sim que essas coisas fazem seu teste de unidade demorar para rodar. Testes de unidade devem rodar r\u00e1pido. Ou melhor:<br \/>\nvoc\u00ea considera o Banco de Dados parte da &#8220;unidade&#8221; que est\u00e1 testando?<\/p>\n<p class=\"paragraph\"\/>A grande fonte de dificuldade quando voc\u00ea precisa lidar com c\u00f3digo legado \u00e9 que ele est\u00e1 muito acoplado ou dependente<br \/>\nde outras partes do c\u00f3digo, tornando dif\u00edcil instanci\u00e1-lo independentemente do resto no seu teste.<br \/>\n<span class=\"nobr\"><a href=\"http:\/\/www.michaelfeathers.com\">Michael<\/a><\/span> mostrou<br \/>\ndiversas t\u00e9cnicas para quebrar tais depend\u00eancias. Refatorar o c\u00f3digo para melhorar o design e diminuir as<br \/>\ndepend\u00eancias \u00e9 algo inseguro, por isso a refatora\u00e7\u00e3o depende tanto da suite de testes: ela \u00e9 sua rede de seguran\u00e7a<br \/>\npara evitar que as coisas quebrem. Por\u00e9m, ao lidar com c\u00f3digo legado, \u00e9 dif\u00edcil saber se voc\u00ea quebrou alguma outra<br \/>\ncoisa, pois os testes n\u00e3o est\u00e3o l\u00e1 para te ajudar. Por isso as t\u00e9cnicas mostradas no tutorial s\u00e3o muito cuidadosas,<br \/>\ncompostas de pequenos passos seguros onde as chances de quebrar s\u00e3o muito pequenas. Pode ser que seu c\u00f3digo fique<br \/>\nmais feio para conseguir escrever o teste. Por\u00e9m, uma vez que seu c\u00f3digo est\u00e1 &#8220;cercado&#8221; por testes, voc\u00ea tem<br \/>\nseguran\u00e7a para come\u00e7ar a mud\u00e1-lo e melhor\u00e1-lo, levando-o em dire\u00e7\u00e3o a um design mais robusto.<\/p>\n<h3 class=\"heading-1-1\">Engineering Outside the Box &#8211; Greg Harbaugh<\/h3>\n<p class=\"paragraph\"\/>O dia e a confer\u00eancia terminaram com um banquete na parte da noite, com muita comida, bebida,<br \/>\n<span class=\"nobr\"><a href=\"http:\/\/en.wikipedia.org\/wiki\/Cowbell\">cowbells<\/a><\/span> e colares brilhantes:<\/p>\n<p class=\"paragraph\"\/><a href=\"http:\/\/www.flickr.com\/photos\/dtsato\/200053578\"><img loading=\"lazy\" decoding=\"async\" class=\"flickr_photo\" src=\"http:\/\/static.flickr.com\/61\/200053578_f0f03ac74a_m.jpg\" width=\"240\" height=\"160\" alt=\"Student Volunteers at the Banquet Table\"\/><\/a><\/p>\n<p class=\"paragraph\"\/>Durante o banquete, Greg Harbaugh, um ex-astronauta, deu uma palestra inspiradora sobre a forma com a qual<br \/>\nencaramos nossos problemas. Ap\u00f3s a palestra, foram apresentados os ganhadores do pr\u00eamio<br \/>\n<span class=\"nobr\"><a href=\"http:\/\/www.infoq.com\/news\/Recognition-Awards-Presented-at-\">Gordon Pask<\/a><\/span> desse ano, um pr\u00eamio entregue<br \/>\npara lembrar e recompensar as pessoas que contribu\u00edram para o movimento \u00e1gil durante o \u00faltimo ano.<\/p>\n<p class=\"paragraph\"\/>Essa foi a primeira vez que fui a uma confer\u00eancia e foi uma experi\u00eancia incr\u00edvel. Durante esses 6 dias eu aprendi<br \/>\nmuita coisa, conheci muita gente (n\u00e3o \u00e9 todo dia que voc\u00ea almo\u00e7a do lado do <span class=\"nobr\"><a href=\"http:\/\/www.martinfowler.com\">Martin Fowler<\/a><\/span>)<br \/>\ne fiquei realmente inspirado com as id\u00e9ias e valores do movimento \u00e1gil. Mais do que assistir palestras dos<br \/>\nautores que admiro, eu consegui apreciar por completo o valor da exist\u00eancia de uma comunidade que suporta e<br \/>\npromove os mesmos valores. S\u00e3o pessoas que realmente gostam e acreditam naquilo que fazem e trabalham para<br \/>\nelevar o estado da arte da nossa profiss\u00e3o. Termino com uma frase dita por um dos ganhadores do pr\u00eamio desse ano,<br \/>\n<span class=\"nobr\"><a href=\"http:\/\/bossavit.com\/thoughts\">Laurent Bossavit<\/a><\/span>:<\/p>\n<p class=\"paragraph\"\/>&#8220;Devemos continuar trabalhando para fazer da nossa profiss\u00e3o algo t\u00e3o nobre quanto a profiss\u00e3o do bombeiro ou do astronauta&#8221;<\/p>\n<p class=\"paragraph\"\/>\n","protected":false},"excerpt":{"rendered":"<p>No \u00faltimo dia da confer\u00eancia tamb\u00e9m estava cheio de trabalho agendado na parte da manh\u00e3 e na parte da tarde. As duas \u00faltimas sess\u00f5es que participei foram tamb\u00e9m muito interessantes: refatora\u00e7\u00e3o de banco de dados e t\u00e9cnicas eficientes para trabalhar com c\u00f3digo legado. Para finalizar, uma \u00faltima palestra no banquete servido a noite. Refactoring Databases: [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[6,7,19,20,64],"class_list":["post-12","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-agile","tag-agile2006","tag-conference","tag-database","tag-refactoring"],"_links":{"self":[{"href":"http:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/posts\/12","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/comments?post=12"}],"version-history":[{"count":0,"href":"http:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/posts\/12\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/media?parent=12"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/categories?post=12"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/tags?post=12"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}