{"id":6576,"date":"2017-07-28T21:34:15","date_gmt":"2017-07-29T00:34:15","guid":{"rendered":"http:\/\/blog.plataformatec.com.br\/?p=6576"},"modified":"2017-08-08T18:13:24","modified_gmt":"2017-08-08T21:13:24","slug":"8-pontos-chaves-para-reescrever-um-software","status":"publish","type":"post","link":"https:\/\/blog.plataformatec.com.br\/2017\/07\/8-pontos-chaves-para-reescrever-um-software\/","title":{"rendered":"8 pontos-chave para reescrever um software"},"content":{"rendered":"

O terceiro post da s\u00e9rie Baixa Qualidade Interna de Software.<\/em><\/p>\n

Assim como uma refatora\u00e7\u00e3o grande<\/a>, reescrever um software n\u00e3o \u00e9 algo simples. Ap\u00f3s v\u00e1rios anos, adquirimos experi\u00eancia suficiente para indicar o que voc\u00ea deve considerar ao planejar e executar um processo para reescrever software.<\/p>\n

1. As duas plataformas existir\u00e3o juntas por um determinado per\u00edodo ou n\u00e3o?<\/h2>\n

Voc\u00ea planeja manter a vers\u00e3o de legado e a nova vers\u00e3o em produ\u00e7\u00e3o? Caso positivo, por quanto tempo? Voc\u00ea deve evitar manter duas vers\u00f5es em produ\u00e7\u00e3o por muito tempo devido aos custos operacionais e de oportunidade.<\/p>\n

2. Quem trabalhar\u00e1 na reescrita do c\u00f3digo e quem trabalhar\u00e1 na vers\u00e3o do legado?<\/h2>\n

Geralmente, os desenvolvedores preferem trabalhar em projetos greenfield<\/em>. Voc\u00ea deve considerar isto ao planejar quem trabalhar\u00e1 na vers\u00e3o do legado e quem trabalhar\u00e1 na nova.<\/p>\n

3. \u00c9 invi\u00e1vel reescrever todas as funcionalidades ao mesmo tempo<\/h2>\n

Mapear cada funcionalidade entre a vers\u00e3o do legado e a nova \u00e9 invi\u00e1vel. Dito isto, que funcionalidades devem ser as primeiras a serem reescritas?<\/p>\n

Leve em considera\u00e7\u00e3o como os clientes atuais ser\u00e3o afetados por um produto com menos funcionalidades.<\/p>\n

4. Reescrever o software diminuir\u00e1 ou interromper\u00e1 o lan\u00e7amento de novas funcionalidades na vers\u00e3o do legado<\/h2>\n

\u00c9 prov\u00e1vel que voc\u00ea n\u00e3o lance novos recursos na vers\u00e3o legada durante o processo de reescrita do c\u00f3digo. Assim como os usu\u00e1rios finais, os clientes internos (comercial, produtos, financeiro) n\u00e3o ter\u00e3o novas funcionalidades. Seus clientes internos e outras partes interessadas v\u00e3o pression\u00e1-lo para entregar novas funcionalidades.<\/p>\n

Certifique-se que a comunica\u00e7\u00e3o antes e durante o processo de reescrita do software seja clara e que cada stakeholder esteja alinhado com as metas.<\/p>\n

5. O processo deve ser secreto ou p\u00fablico?<\/h2>\n

Imagine que voc\u00ea \u00e9 um cliente potencial de um produto de software. Voc\u00ea planeja compr\u00e1-lo, mas descobriu que uma vers\u00e3o completamente nova ser\u00e1 lan\u00e7ada em tr\u00eas meses. Voc\u00ea compraria a vers\u00e3o do legado ou esperaria por tr\u00eas meses? Multiplique isso por dezenas ou centenas de potenciais compradores. O fornecedor pode perder muito dinheiro.<\/p>\n

Por isso, se voc\u00ea \u00e9 o fornecedor, deve pensar cuidadosamente sobre como e quando divulgar o lan\u00e7amento da nova vers\u00e3o.<\/p>\n

6. Migra\u00e7\u00e3o de dados<\/h2>\n

O processo de reescrever um software n\u00e3o envolve apenas o desenvolvimento de funcionalidades. Voc\u00ea tamb\u00e9m precisa planejar a migra\u00e7\u00e3o de dados. As pessoas costumam subestimar a complexidade e o esfor\u00e7o necess\u00e1rios para migrar dados da vers\u00e3o do legado para a nova vers\u00e3o. Essa atividade n\u00e3o deve ser apenas mais uma tarefa em seu quadro, chamado “migra\u00e7\u00e3o de dados”. \u00c9 muito maior que isso.<\/p>\n

Por exemplo, imagine que voc\u00ea precisa migrar as contas de seus usu\u00e1rios. Se a sua vers\u00e3o de legado \u00e9 gerenciada por um terceiro, \u00e9 prov\u00e1vel que voc\u00ea n\u00e3o tenha acesso \u00e0s senhas criptografadas dos usu\u00e1rios, portanto, n\u00e3o ser\u00e1 poss\u00edvel migr\u00e1-las. Voc\u00ea ter\u00e1 de solicitar a cada usu\u00e1rio para redefinir a senha na nova vers\u00e3o. Isso tamb\u00e9m faz parte do processo de migra\u00e7\u00e3o de dados.<\/p>\n

7. Prepare-se para uma poss\u00edvel redu\u00e7\u00e3o nas taxas de convers\u00e3o<\/h2>\n

Voc\u00ea lan\u00e7ar\u00e1 uma nova vers\u00e3o com menos recursos. Quem garante que as taxas de convers\u00e3o permanecer\u00e3o as mesmas? As taxas de convers\u00e3o s\u00e3o essenciais em algumas ind\u00fastrias, como no e-commerce.<\/p>\n

Preferencialmente, voc\u00ea deve manter o suporte \u00e0 vers\u00e3o legada e \u00e0 nova por um tempo para que, no caso de redu\u00e7\u00e3o dr\u00e1stica nas taxas de convers\u00e3o, voc\u00ea tenha um plano de backup.<\/p>\n

8. Planeje treinamento para os usu\u00e1rios internos<\/h2>\n

Este \u00e9 outro ponto negligenciado. O plano de reescrever o software precisa ter uma fase de treinamento de usu\u00e1rios internos antes de disponibilizar seu novo produto em produ\u00e7\u00e3o. N\u00e3o subestime a import\u00e2ncia deste item. Pode demorar algum tempo, pois seus usu\u00e1rios internos dar\u00e3o feedback sobre pontos que talvez precisem ser alterados.<\/p>\n

Usu\u00e1rios internos podem ser encontrados em v\u00e1rias \u00e1reas, como help desk e vendas.<\/p>\n


\n

Leia os outros posts da s\u00e9rie Baixa Qualidade Interna de Software<\/h3>\n
    \n
  1. Sintomas da Baixa Qualidade Interna de Software<\/a><\/li>\n
  2. 9 Pontos-chaves ao se fazer uma refatora\u00e7\u00e3o grande de software<\/a><\/li>\n
  3. 8 pontos-chaves para reescrever um software voc\u00ea est\u00e1 lendo<\/spam><\/li>\n<\/ol>\n
    \n

    Migra\u00e7\u00e3o de Plataforma Tecnol\u00f3gica<\/h3>\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 terceiro post da s\u00e9rie Baixa Qualidade Interna de Software. Assim como uma refatora\u00e7\u00e3o grande, reescrever um software n\u00e3o \u00e9 algo simples. Ap\u00f3s v\u00e1rios anos, adquirimos experi\u00eancia suficiente para indicar o que voc\u00ea deve considerar ao planejar e executar um processo para reescrever software. 1. As duas plataformas existir\u00e3o juntas por um determinado per\u00edodo ou … \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,273,218,269],"aioseo_notices":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/6576"}],"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=6576"}],"version-history":[{"count":13,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/6576\/revisions"}],"predecessor-version":[{"id":6611,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/6576\/revisions\/6611"}],"wp:attachment":[{"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/media?parent=6576"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/categories?post=6576"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/tags?post=6576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}