Reescreva (programação) - Rewrite (programming)

A reescrita em programação de computadores é o ato ou resultado de re-implementação de uma grande parte da funcionalidade existente sem re-uso de seu código fonte ou escrever inscrição . Quando a reescrita não está usando código existente em tudo, é comum falar de uma reescrita a partir do zero .

motivações

Um pedaço de software é tipicamente reescrito quando um ou mais das seguintes condições:

  • seu código fonte não está disponível ou está disponível apenas sob uma incompatível licença
  • seu código não pode ser adaptado a uma nova plataforma alvo
  • seu código existente tornou-se muito difícil de manusear e estender
  • a tarefa de depuração parece muito complicado
  • o programador tem dificuldade para entender seu código fonte
  • desenvolvedores aprender novas técnicas ou quiser fazer uma revisão grande característica que requer muita mudança
  • desenvolvedores de saber que novos códigos escritos pode estender-se opções de conteúdo que pode corrigir ou substituir problemas anteriores
  • a linguagem de programação do código fonte tem que ser mudado

riscos

Vários engenheiros de software, tais como Joel Spolsky alertaram contra regravações totais, especialmente sob restrições do cronograma ou pressões competitivas. Enquanto os desenvolvedores podem inicialmente saudar a chance de corrigir erros de design históricos, uma reescrita também descarta as partes do projeto que trabalhar conforme necessário. Uma reescrita compromete a equipe de desenvolvimento para entregar não apenas novos recursos, mas todos aqueles que existem no código anterior, enquanto potencialmente introduzir novos bugs ou regressões de erros previamente fixados. Uma reescrita também interfere com o rastreamento de bugs não corrigidos na versão antiga.

A reescrita incremental é uma abordagem alternativa, em que os desenvolvedores gradualmente substituir o código existente com chamadas em uma nova implementação, expansão que a implementação até que substitui totalmente o antigo. Esta abordagem evita uma ampla perda de funcionalidade durante a reescrita. Engenharia de software Cleanroom é uma outra abordagem, o que exige a equipe a trabalhar a partir de uma especificação escrita exaustiva da funcionalidade do software, sem acesso a seu código.

Exemplos notáveis

Netscape projeto 's para melhorar o layout de HTML no Navigator 4 tem sido citado como um exemplo de uma reescrita falhou. O novo mecanismo de layout ( Gecko ) tinham desenvolvido independentemente do Navigator e não integrar facilmente com o código do Navigator; portanto, em si Navigator foi reescrito em torno do novo motor, quebrando muitos recursos existentes e atrasando liberação por vários meses. Enquanto isso, a Microsoft focada em melhorias incrementais para Internet Explorer e não enfrentam os mesmos obstáculos. Ironicamente, a própria Navigator foi um sucesso reescrita sala limpa da NCSA Mosaic supervisionado por desenvolvedores que programa. Veja guerra dos navegadores .

Veja também

Alguns projetos mencionando grandes regravações em sua história:

Referências

links externos