Pergunta

Como você manter as aplicações legadas que:

  1. Não tem testes de unidade têm grandes métodos

  2. com um monte de lógica duplicada Tem

  3. tem Nenhuma separação de preocupação
  4. tem um monte de hacks rápidos e codificado cordas
  5. tenham ultrapassado e errado documentação
  6. requisitos não são devidamente documentadas ! Isso tem realmente resultou em disputas entre os testadores, desenvolvedores e os clientes no passado. Claro que existem alguns requisitos não-funcionais, tais como não deve ser lenta, não se chocam e outras lógicas de negócios que são conhecidos para os usuários do aplicativo. Mas, além do cenário mais bom senso e o fluxo de trabalho de negócios mais de senso comum, há pouca orientação sobre o que deve ser (ou não) fazer.

???

Foi útil?

Outras dicas

testes de escrever tão breve quanto possível. De um modo preferido contra os requisitos (se existirem). Comece com testes funcionais. Refactor em pequenos pedaços. Toda vez que você tocar código, deixá-lo mais limpo e melhor do que quando você começou.

Duas coisas.

  1. testes Write unidade como você tem a chance.
  2. Uma vez que você tem testes de unidade suficientes para estar confiante, começar a refatoração.

A taxa em que você alcançar este objetivo pode ser lento .... Normalmente, você deveria "apenas mantê-la" não corrigi-lo.

Durante o "aprender a mantê-lo" fase, no entanto, você pode escrever um monte de testes de unidade.

Então, como bugs são encontrados e melhorias solicitadas, você pode adicionar ainda mais testes.

É do Agile, aplicada ao legado.

Eu vi, trabalhou e estou trabalhando em uma base de código que preencha todas as condições que é mencionado na pergunta: -)

A abordagem seguida em manter esta base de código é NÃO quebrar nada . FWIW, o código funciona e os usuários finais são felizes. Ninguém está indo para ouvir o desenvolvedor chora que não existe duplicação de código, cordas codificados etc. Nós apenas roubar algum tempo para corrigir o que for possível e ter o máximo cuidado para não introduzir novos bugs ..

Eu acho que eu iria criar um pequeno conjunto de informações atualizadas:. Chamadas que ação que funciona etc

De lá, eu iria olhar para refatoração. Duplicado Logic parece ser algo que poderia ser reformulado, mas lembre-se que

  • Isso pode ser uma tarefa enorme quando você perceber em quantos muitos lugares que a lógica é chamado e
  • função Dois que parecem semelhantes podem ter uma pequena diferença, ou seja, um - em vez de um +

Acho que o maior desejo de resistir é "apenas reconstruir a coisa toda!" e obter uma visão geral do sistema em primeiro lugar, para desmistificar a besta.

sudo rm-rf /

Mas o mais sério, eu acho que tem que ser avaliada. Se o código é continuamente uma fonte de pedidos de mudança e as mudanças são difíceis, em seguida, em pouco tempo você tem que considerar se vale a pena tentar e refatorar / re-engenharia do sistema em algo mais moderno. É claro que isso nem sempre é prático, por isso, muitas vezes você acaba com apenas algumas pessoas da equipe que são responsáveis ??pela manutenção das peças legadas. Tanto quanto possível, todos na equipe deve ser capaz de manter todas as partes do sistema ......

Mais uma coisa que eu acho que é importante é controlar a quantidade de tempo e esforço que a equipe gasta trabalhando em um sistema legado fazendo solicitações de manutenção / metragens. Essas métricas podem ser convincente quando se avalia o planejamento de um novo esforço para substituir os sistemas legados / componentes.

Basicamente, eu concordo com tudo o Paul C disse. Eu não sou um padre TDD, mas quando você está tocando uma base de código legado - especialmente aquele com o qual você não está intimamente familiarizado - você precisa ter um caminho sólido para reteste e fazer Hipócrates certeza que você já seguidas: Primeira , fazer nenhum mal. Testes, bons testes de unidade e de regressão em particular, está prestes a única maneira de fazer esse jogo.

Eu recomendo pegar uma cópia do Invertendo: Segredos de Engenharia Reversa software se é uma base de código com o qual você não está familiarizado. Embora este livro vai para grandes profundidades que estão fora suas necessidades atuais (e meu, para que o assunto), ele me ensinou muito sobre como com segurança e trabalho sanely com alguém código de outra pessoa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top