Paradigmas de programação e desenvolvedor de manutenção [fechado]

9

Eu estava lendo, Facts and Fallacies of Software Engineering, que tem uma seção de manutenção. Desde que sou desenvolvedor de manutenção há anos, fui apresentado fatos muito interessantes. Aqui estão três.

  • Fato 41: A manutenção normalmente consome de 40 a 80% (média, 60%) dos custos de software. Portanto, é provavelmente a fase mais importante do ciclo de vida do software.
  • Fato 42: O aprimoramento é responsável por aproximadamente 60% dos custos de manutenção de software. A correção de erros é de aproximadamente 17%. Portanto, a manutenção do software é basicamente adicionar novos recursos ao software antigo, não corrigi-lo.
  • Fato 45: Melhor desenvolvimento de engenharia de software leva a mais manutenção, não menos.

Este foi contra-intuitivo, verifica-se que um bom software tem mais manutenção, porque é fácil mudar. Portanto, ele permanece em uso por mais tempo, levando a, sim, mais alterações.

Qual paradigma (como funcional, orientado a objetos, processual) tem a melhor capacidade de manutenção e existe alguma pesquisa para respaldar isso?

KaizenSoze
fonte
Eu possuo uma cópia de Facts and Fallacies e, para cada fato (e falácia), há citações para várias publicações que a apóiam. Não tenho uma cópia à mão, mas alguma dessas citações discute o efeito do paradigma na manutenção?
Thomas Owens
O livro foi escrito em 2003, muitas das conclusões ainda são relevantes hoje. Fiquei curioso se as pessoas tivessem novos estudos sobre paradigmas específicos. A manutenção parece ser uma parte esquecida da discussão.
KaizenSoze
Se algum dos estudos ou publicações citados em Facts and Fallacies trata da manutenção de um paradigma específico, uma opção seria procurar nas bases de dados do IEEE ou ACM outros artigos e documentos que citam esse artigo. Se você não tiver acesso aos bancos de dados IEEE ou ACM, posso ver minha cópia do livro quando chegar em casa e ver se consigo fazer essa pesquisa. Infelizmente, eu só poderia obter nomes de outros papéis e não os próprios papéis.
Thomas Owens

Respostas:

12

Acho que você descobrirá que paradigmas como funcional, OO e processual provavelmente não se correlacionam com a manutenção do software de maneira significativa.

O que você pode encontrar a seguir se destaca muito mais claramente com a manutenção do software:

  • Nível de coleta de requisitos e engenharia de requisitos

  • Boas práticas de desenvolvimento: (acoplamento fraco, alta coesão, teste de unidade, YAGNI ...)

  • Engenheiros de software qualificados e qualificados (eles valem 10 vezes mais que um idiota)

  • Equipe qualificada e organizada de controle de qualidade técnico

  • Bom gerenciamento de projetos liderado por gerentes de projetos competentes (ainda mais difícil de encontrar do que IMHO de desenvolvedores de software qualificados)

  • Bons proprietários de produtos ou gerentes de aplicativos, liderança forte, boa direção a longo prazo, bom feedback para as equipes do projeto, visão geral.

maple_shaft
fonte
+1 Quero adicionar uma boa documentação à lista
treecoder 5/11
+1 Adicione o processo "Valor focado" à lista. O processo define e direciona o que é feito e o que não é feito. O que o processo mede é importante e o que o processo não mede não é importante. Especialmente verdade quando o pessoal de RH começa a preencher vagas com "idiotas".
mattnz
2

Este foi contra-intuitivo, verifica-se que um bom software tem mais manutenção, porque é fácil mudar. Portanto, ele permanece em uso por mais tempo, levando a, sim, mais alterações.

Você parece estar vendo isso da quantidade de manutenção e não da porcentagem de custo. Um bom software com mais recursos adicionados é apenas uma quantidade maior de software. Se o percentual de manutenção for fixo (por ser um bom software e assumirmos que os recursos adicionais foram adicionados como um bom software), o valor aumentará. É apenas um pedaço maior de torta com o mesmo número de fatias.

Com base nas suas perguntas, importa se o software "bom" foi escrito em: código funcional, OOP ou procedural. Dar a alguém uma serra elétrica guiada por laser economizará na madeira se a pessoa não souber medir?

JeffO
fonte