{"id":6510,"date":"2017-06-16T11:45:53","date_gmt":"2017-06-16T14:45:53","guid":{"rendered":"http:\/\/blog.plataformatec.com.br\/?p=6510"},"modified":"2017-09-29T17:26:03","modified_gmt":"2017-09-29T20:26:03","slug":"9-pontos-chaves-ao-se-fazer-uma-refatoracao-grande-de-software","status":"publish","type":"post","link":"https:\/\/blog.plataformatec.com.br\/2017\/06\/9-pontos-chaves-ao-se-fazer-uma-refatoracao-grande-de-software\/","title":{"rendered":"9 Pontos-chaves ao se fazer uma refatora\u00e7\u00e3o grande de software"},"content":{"rendered":"
O segundo post da s\u00e9rie Baixa Qualidade Interna de Software.<\/em><\/p>\n Realizar uma refatora\u00e7\u00e3o grande1<\/a><\/sup>\u00a0de software n\u00e3o \u00e9 algo simples. H\u00e1 muitos pontos que voc\u00ea deve considerar, desde o planejamento e prioriza\u00e7\u00e3o at\u00e9 a motiva\u00e7\u00e3o e execu\u00e7\u00e3o da equipe. Entender esses pontos de forma estruturada e clara faz parte do processo. A boa not\u00edcia \u00e9 que j\u00e1 passamos por essa situa\u00e7\u00e3o antes e aprendemos quais os pontos principais com os quais voc\u00ea deve se preocupar.<\/p>\n Aqui est\u00e3o os pontos principais que voc\u00ea deve considerar ao planejar e executar uma\u00a0refatora\u00e7\u00e3o grande do seu sistema.<\/span><\/p>\n Uma refatora\u00e7\u00e3o grande de software<\/span> n\u00e3o deve ser iniciada sem metas de neg\u00f3cios claras, caso contr\u00e1rio, voc\u00ea pode sofrer com a falta de comprometimento das partes interessadas. Aqui est\u00e3o alguns exemplos de metas:<\/p>\n Em sua ess\u00eancia, o\u00a0processo de refatora\u00e7\u00e3o de software \u00e9 um esfor\u00e7o t\u00e9cnico, raz\u00e3o pela qual \u00e9 comum n\u00e3o medir o\u00a0progresso de forma estruturada, como \u00e9 medido<\/span> o progresso do desenvolvimento de novas features. N\u00e3o caia nessa armadilha.<\/p>\n Assim como cada tarefa em um projeto, uma refatora\u00e7\u00e3o deve sempre ser planejada e medida<\/a>.<\/p>\n Trabalhar em base de c\u00f3digo legado pode desmotivar os desenvolvedores, especialmente se n\u00e3o conseguem visualizar o progresso de suas atividades<\/a>, ou se n\u00e3o sabem quando v\u00e3o acabar<\/a>. Ao passar por um processo de refatora\u00e7\u00e3o, voc\u00ea deve ter isso em mente.<\/p>\n Mostre \u00e0 sua equipe que est\u00e3o avan\u00e7ando. Planeje pequenas entregas<\/a>, para viabilizar libera\u00e7\u00f5es cont\u00ednuas e celebrar o bom trabalho feito. Al\u00e9m disso, pense <\/span>em rotacionar os<\/span> desenvolvedores para essa tarefa de refatora\u00e7\u00e3o, pois pode ajudar a manter a motiva\u00e7\u00e3o.<\/span><\/p>\n Voc\u00ea vai melhorar a\u00a0base de c\u00f3digo apenas quando encontrar um problema, ou escolher\u00e1 de forma proativa as partes a melhorar?<\/p>\n Clique aqui para assistir o webinar Migra\u00e7\u00e3o de Plataforma Tecnol\u00f3gica. \u00c9 gr\u00e1tis!<\/a><\/p>\n Se voc\u00ea tem uma meta de neg\u00f3cios clara, \u00e9 mais f\u00e1cil escolher proativamente as partes que precisam ser melhoradas para alcan\u00e7ar a\u00a0meta. Com as partes listadas, voc\u00ea pode priorizar, como de costume.<\/p>\n Por outro lado, se voc\u00ea imagina que a\u00a0base de c\u00f3digo <\/span>inteira<\/span> deve ser refatorada<\/span>, priorizar torna-se complicado, porque n\u00e3o h\u00e1 uma ou duas partes principais que precisam de melhorias, h\u00e1\u00a0muitas. \u00c9 dif\u00edcil saber por onde come\u00e7ar.<\/p>\n Uma solu\u00e7\u00e3o \u00e9\u00a0pedir ao time\u00a0para avaliar a complexidade e churn do c\u00f3digo\u00a0para apontar as partes\u00a0a\u00a0refatorar. Para chegar numa conclus\u00e3o se\u00a0o c\u00f3digo deve ou n\u00e3o ser refatorado, eles tem de\u00a0se perguntar:<\/p>\n Se ambas as respostas forem sim, essa parte do c\u00f3digo\u00a0<\/span>parece um bom candidato para refatora\u00e7\u00e3o. Trace um gr\u00e1fico de “complexidade de classe X churn”, priorize as partes que s\u00e3o mais complexas e que passam por altera\u00e7\u00f5es com frequ\u00eancia<\/span>.<\/p>\n As partes do c\u00f3digo que tem complexidade alta e que sofrem poucas modifica\u00e7\u00f5es n\u00e3o s\u00e3o boas candidatas para serem refatoradas. Isso porque apesar de feias, funcionam. E tamb\u00e9m tem pouco impacto no desenvolvimento, j\u00e1 que a os desenvolvedores precisam modific\u00e1-las pouco no seu dia a dia.<\/span><\/p>\n O\u00a0processo de refatora\u00e7\u00e3o de software pode se transformar em esfor\u00e7o infinito se voc\u00ea n\u00e3o planejar, priorizar e medir o progresso. Voc\u00ea deve trat\u00e1-lo como um projeto. Deve ter come\u00e7o, meio e fim.<\/p>\n A\u00a0refatora\u00e7\u00e3o deve melhorar o\u00a0que j\u00e1 est\u00e1 funcionando, sem quebrar nada. Certifique-se que a cobertura de testes est\u00e1 adequada, caso contr\u00e1rio, o processo pode gerar mais bugs do que melhorias de qualidade.<\/p>\n Se a su\u00edte de testes \u00e9 lenta, refatorar tamb\u00e9m se tornar\u00e1 um processo lento, visto que a refatora\u00e7\u00e3o de software \u00e9 fortemente baseada na execu\u00e7\u00e3o cont\u00ednua dos testes. Assegure que o desempenho da su\u00edte de testes n\u00e3o seja um gargalo.<\/p>\n O\u00a0processo de refatora\u00e7\u00e3o pode levar muito tempo: semanas, meses. Durante esse per\u00edodo, a velocidade das entregas de novas features ser\u00e1 comprometida.<\/p>\n Certifique-se que stakeholders das \u00e1reas de neg\u00f3cio entendam os objetivos e a natureza desse tipo de trabalho para evitar que eles desistam no meio do caminho.<\/p>\n E voc\u00ea tem alguma dica al\u00e9m dessas para grande refatora\u00e7\u00e3o de software? Compartilhe conosco!<\/p>\n Bionexo e Locaweb compartilham neste webinar a experi\u00eancia que tiveram ao migrarem de plataforma e os fatores cruciais para que essa opera\u00e7\u00e3o fosse bem sucedida.<\/p>\n ASSISTIR WEBINAR<\/a><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":" O segundo post da s\u00e9rie Baixa Qualidade Interna de Software. Realizar uma refatora\u00e7\u00e3o grande1\u00a0de software n\u00e3o \u00e9 algo simples. H\u00e1 muitos pontos que voc\u00ea deve considerar, desde o planejamento e prioriza\u00e7\u00e3o at\u00e9 a motiva\u00e7\u00e3o e execu\u00e7\u00e3o da equipe. Entender esses pontos de forma estruturada e clara faz parte do processo. A boa not\u00edcia \u00e9 que … \u00bb<\/a><\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[3],"tags":[101,205,272,271,269],"aioseo_notices":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/6510"}],"collection":[{"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/comments?post=6510"}],"version-history":[{"count":16,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/6510\/revisions"}],"predecessor-version":[{"id":6769,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/6510\/revisions\/6769"}],"wp:attachment":[{"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/media?parent=6510"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/categories?post=6510"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/tags?post=6510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}1. Defina metas de neg\u00f3cios<\/h2>\n
\n
2. Fa\u00e7a a medi\u00e7\u00e3o do progresso<\/h2>\n
3. Preste aten\u00e7\u00e3o \u00e0 motiva\u00e7\u00e3o da sua equipe<\/h2>\n
4. Defina sua abordagem: puxada ou empurrada?<\/h2>\n
5. Prioriza\u00e7\u00e3o<\/h2>\n
\n
6.\u00a0Defina o “pronto”<\/h2>\n
7. Cobertura da su\u00edte de testes<\/h2>\n
8. Desempenho da su\u00edte de testes<\/h2>\n
9. Compromisso dos patrocinadores<\/h2>\n
\nLeia os outros posts da s\u00e9rie Baixa Qualidade Interna de Software<\/h3>\n
\n
\n\n
Migra\u00e7\u00e3o de Plataforma Tecnol\u00f3gica<\/h3>\n