Existe um antipadrão que descreve um sistema de software cultivado historicamente em que vários desenvolvedores acabaram de adicionar novos recursos ao sistema, mas ninguém realmente ficou de olho na arquitetura geral nem foram feitas refatorações?
Eu acho que isso acontece quando a gerência / cliente solicita constantemente novos recursos e ninguém refatora nada, apenas acrescenta o que outros desenvolvedores já haviam feito antes.
Um motivo também pode ser que o desenvolvedor está sobrecarregado com o sistema de software e realmente não entende como ele funciona atualmente e apenas adiciona / cola seu código no final (em vez de refatorar o código e alterá-lo).
Com o tempo, fica cada vez mais difícil manter o sistema.
(Gostaria de saber se existem fotos para esse tipo de anti-padrão para deixar isso mais claro para nenhum pessoal de programação - como um carro que foi construído apenas adicionando mais e mais recursos sem pensar no design geral. Como se alguém tivesse a necessidade de rebocar reboques enquanto andava para trás e, em seguida, um engenheiro solda uma barra de reboque na frente do carro. Trabalho feito. Mas agora o capô não abre mais.)
Respostas:
Você se refere à dívida técnica .
Todos nós acumulamos dívidas técnicas nos produtos que desenvolvemos ao longo do tempo; a refatoração é uma das maneiras mais comuns e eficazes de reduzir essa dívida técnica, embora muitas empresas nunca paguem sua dívida técnica. Essas empresas tendem a encontrar seus softwares anos extremamente instáveis no futuro, e a dívida técnica se torna tão horrível que você não pode pagá-lo gradualmente, porque levaria muito tempo para pagá-lo dessa maneira.
Dívida técnica tem o prazo, porque segue os mesmos comportamentos de dívida. Você recebe a dívida e, enquanto continuar gastando (criando recursos) e não pagando essa dívida, ela só aumentará. Muito parecido com a dívida, quando ela é muito grande, você chega a pontos em que pode querer eliminá-la totalmente com tarefas perigosas, como reescritas completas. Também como a dívida real, à medida que se acumula até um certo ponto, dificulta totalmente sua capacidade de gastar (criando recursos).
Apenas para lançar outro termo na mistura, coesão se refere à forma como um sistema, micro ao nível da linha ou macro ao nível do sistema, se encaixa. Um sistema altamente coeso fará com que todas as suas peças se encaixem muito bem e pareça que um engenheiro escreveu tudo. Sua referência acima a alguém apenas colando seu código até o fim estaria violando a coesão desse sistema.
Gerenciamento da dívida técnica
Existem várias maneiras de gerenciar dívidas técnicas, embora, como a dívida real, a melhor abordagem seja pagá-la com frequência. Infelizmente, como a dívida real, ocasionalmente é uma idéia melhor acumular mais por um curto período, onde, por exemplo, o tempo de comercialização de um recurso pode dobrar ou triplicar sua receita. A parte complicada é pesar essas prioridades concorrentes, bem como identificar quando o retorno do investimento da dívida não vale a pena para o recurso fornecido versus quando vale.
Portanto, às vezes vale a pena acumular a dívida por um curto período, mas esse raramente é o caso e, como em todas as dívidas, quanto menor o período, melhor. Portanto, eventualmente (de preferência rapidamente ), depois que você acumula dívida técnica, é necessário pagá-la; estas são abordagens comuns:
fonte
Sua descrição se encaixa na grande bola de lama de Foote e Yoder :
fonte