O apodrecimento do software refere-se principalmente ao desempenho ou a códigos confusos?

22

A definição de rot de software da Wikipedia se concentra no desempenho do software. Esse é um uso diferente do que estou acostumado; Pensei muito mais nisso em termos de limpeza e design do código - em termos de o código ter todas as características de qualidade padrão: legibilidade, facilidade de manutenção etc. Agora, é provável que o desempenho diminua quando o código se tornar ilegível, porque ninguém sabe o que está acontecendo. Mas o termo software rot tem referência especial ao desempenho? ou estou certo ao pensar que se refere à limpeza do código? ou esse talvez seja um caso de múltiplos sentidos do termo sendo de uso comum - da perspectiva do usuário, isso tem a ver com desempenho; mas para o especialista em software, isso tem a ver mais especificamente com a leitura do código?

Kazark
fonte
1
Wikipedia lista 3 causas, 2 dos quais não estão relacionadas com o desempenho, o código não utilizado e código Raramente atualizados ...
Izkata
2
"O software pode deteriorar-se no" desempenho "ao longo do tempo e se tornar o que é comumente chamado de" legado "à medida que é executado e acumula erros; isso geralmente não é considerado podridão de software, embora possa ter algumas das mesmas consequências". Eu acho que está claro que o apodrecimento do software não está relacionado ao desempenho.
ZzzzBov 12/12/12
1
O único recurso de redeaming em toda a página da wikipidia é o aviso de tag que não faz referência a fontes de nova conexão.
mattnz

Respostas:

39

O termo não está relacionado ao desempenho, pelo menos não em qualquer lugar que eu o tenha usado.

É especificamente sobre código que não é mantido bem e se torna ... sujo ... podre. Trata-se de código cujo design não foi atualizado à medida que foram feitas alterações e é difícil de ler e entender.

Oded
fonte
1
Ouvi dizer que costumava se referir ao desempenho: por exemplo, "podridão do Windows", a sensação de que você precisa reformatar e reinstalar o Windows de vez em quando, à medida que fica mais lento com o tempo.
Carson63000
3
Sim ... mas "apodrecer software" e "apodrecer janelas" são termos diferentes.
Stephen C
4
@Oded - a analogia não é com sujeira. É com o tipo de podridão que ocorre em prédios antigos que os deixa estruturalmente doentios.
Stephen C
18

Vamos encarar. "Apodrecimento do software" não é um conceito técnico bem definido. É mais uma descrição pejorativa do que acontece quando o software é mal mantido.

A página da Wikipedia representa uma visão, mas há visões claramente alternativas. E você poderia dizer que as diferentes visões refletem as diferentes prioridades e preocupações da pessoa que as mantém:

  • Alguém focado em acelerar o software estará mais inclinado a procurar evidências de "apodrecimento do software" no desempenho.

  • Alguém focado no design / arquitetura (por exemplo, porque precisa adicionar novas funcionalidades ou corrigir bugs de funcionalidades), verá o "software apodrecer" dessa perspectiva.

E, não é realmente útil dizer cuja perspectiva é mais correta. (É como discutir se a turquesa é mais verde ou mais azul.)

Stephen C
fonte
1
Como o post do OP era sobre a Wikipedia, apresento: Turquesa (cor) - é "verde", mas com um "tom azulado". Então eu acho que seu argumento é sólido :).
Ben Lee
6

Eu diria que o termo "podridão de software" refere-se geralmente à adequação da tarefa em questão. O software pode se tornar menos adequado para a tarefa pretendida devido a camadas e mais camadas de correções de bugs, novos recursos e pequenos ajustes. Em conjunto, eles podem afetar adversamente a manutenção e o desempenho. Além disso, as necessidades da organização provavelmente mudarão com o tempo e o software poderá ser forçado a assumir funções para as quais nunca foi realmente projetado. Todos esses fatores fazem com que o software se torne menos adequado às necessidades da organização e isso pode acontecer mesmo com um esforço conjunto para manter o software.

Caleb
fonte
6

A Wikipedia diz que a rotação do software e a rotação do código são iguais. Discordo.

A podridão do código é a perda gradual de legibilidade e manutenção, à medida que mais e mais alterações são feitas no código.

A podridão do software é a perda gradual de desempenho à medida que o software é movido de um emulador de ambiente para outro. Um exemplo é todo o software Data General PDP em execução em emuladores. Na verdade, é o ambiente que está apodrecendo, não o software.

Gilbert Le Blanc
fonte
+1. a wikipedia equiparou software rot com código rot. Nós devemos editar isso. Há mais podridão de software. Um exemplo é inútil / difícil de usar a GUI. A documentação desatualizada / incorreta também contribui.
Jayan
3

Na verdade, o software não sai mal, fica obsoleto, se desgasta ou "apodrece" no sentido tradicional.

Se o ambiente em que o software opera não mudar, o software durará essencialmente para sempre. É por isso que fico tão irritado quando alguém pergunta se uma biblioteca está "morta" porque o autor não a atualizou nos últimos 5 minutos (exagerando apenas um pouco para o efeito).

Mas o ambiente normalmente faz mudança; os sistemas operacionais são corrigidos e atualizados, os computadores são substituídos por outros mais poderosos e novos programas são instalados (como a versão mais recente de um cliente como o Internet Explorer, drivers de dispositivo ou outras bibliotecas), dos quais o software pode depender. Portanto, o software deve ser atualizado para levar em conta essas alterações.

Existem sistemas de software que estão em execução contínua e confiável há literalmente décadas, sem serem atualizados ou mantidos significativamente. O software COBOL executado em mainframes que lidam com transações bancárias vem à mente (embora todos tenham sido modificados em 1999 para lidar com o Y2K).

A ênfase da Wikipedia no desempenho parece estar perdendo o objetivo; muitos aplicativos de software realmente aumentam o desempenho quando são instalados em um ambiente mais novo. O artigo da Wikipedia realmente parece mais preocupado com o inchaço do software .

Robert Harvey
fonte
Inchaço do software - sim, bom ponto. No meu entendimento do termo quando fiz a pergunta, o apodrecimento do software tinha a ver com o fato de que ele continuou a ser modificado por um grupo de desenvolvedores cujos padrões para limpeza e design de código eram inferiores.
Kazark 12/12/12
3

"Apodrecimento do software" - é um termo muito vago e pode significar várias coisas para qualquer pessoa, dependendo de como está sua percepção do conceito e de qual é o seu ângulo de visão .

A definição da Wikipedia sobre Software rot não define um padrão, pois também é escrita por algumas pessoas. Eu acho que esse termo tem uma variedade de significados e precisa ser dividido em áreas específicas, onde é arbitrado.

  • Os programadores podem entender isso como uma base de código insustentável, cheia de antipadrões, sem consistência no estilo de nomeação e codificação.
  • Os administradores de sistema podem entender isso como um desempenho ruim, cheio de vazamentos de memória e muito mais. manutenção.
  • O usuário final pode entender isso como um software muito complicado, não intuitivo e difícil de trabalhar.
EL Yusubov
fonte
2

Sempre pensei na podridão de software como uma condição que ocorre quando você não usa o software por um período de tempo. De alguma forma, o software se transforma em um estado em que é impossível de construir. Então, quando você chega a um ponto em que pode construí-lo, ele não funciona com as entradas e saídas como antes. É quase como se o código realmente se degradasse na forma, mesmo estando armazenado digitalmente.

Kent
fonte
1
Porque o ambiente (compilador, bibliotecas ou qualquer outra coisa) mudou? A Wikipedia discute isso.
Kazark 12/12