médias da indústria para o tempo gasto em manutenção

17

Um gerente anunciou recentemente que estava gastando muito tempo corrigindo bugs. Eu acho que ele acha que devemos escrever código perfeito o tempo todo (embora ainda cumpra os prazos impossíveis, é claro!) E isso me fez pensar em qual era a média de tempo gasto no setor corrigindo erros ao escrever um novo código.

Então, alguém tem alguma métrica sobre o tempo gasto na correção de bugs no desenvolvimento de novos códigos? Ou existe alguma análise empírica do tempo de correção de bugs para a indústria como um todo? 50% dos erros gastos são consertados demais ou estão certos? Como cerca de 20% ou 33%?

Fico feliz em aceitar evidências anedóticas da experiência pessoal, pois isso faria parte de algumas estatísticas aqui nas quais eu poderia comparar nosso desempenho.

gbjbaanb
fonte
9
seu gerente parece muito ignorante. Leitura sugerida para casos como esse: Fatos e falácias de engenharia de software de Robert L. Glass, particularmente "Fato 43. A manutenção é uma solução, não um problema". Artigo da Wikipédia menciona 80% de esforços gastos em manutenção de software
mosquito
3
Qual é o verdadeiro problema? Você tem um problema de qualidade? Seu processo é realmente ineficiente? Ou seu gerente está apenas desejando que o software não custe tanto?
Kevin Cline
@gnat: o seu comentário é a melhor resposta
kevin Cline
@kevincline graças - comentário convertido para uma resposta
mosquito
A manutenção não consiste apenas em corrigir bugs (defeitos) e sua quantidade varia muito para projetos individuais (= sem resposta definitiva). Para mim, parece que você tem problemas de qualidade.
21412 MaR

Respostas:

13

Um gerente anunciou recentemente que estava gastando muito tempo corrigindo bugs.

Acima parece muito ignorante. Leitura sugerida para casos como esse: Fatos e falácias de engenharia de software de Robert L. Glass, particularmente "Fato 43. A manutenção é uma solução, não um problema".

Artigo da Wikipedia menciona 80% dos esforços gastos em manutenção de software.

meu gerente faz o PHB de Dilbert parecer um gênio :)

Hum, dado acima, eu também me esforçaria ao analisar se todos os pedidos que você faz são realmente erros .

Na minha experiência, era muito frequente que solicitações de aprimoramentos ou novos recursos fossem enviadas como bugs. Bons gerentes envolvem seus programadores em descobrir isso - gerentes ruins, bem, continuam reclamando por muito tempo corrigindo bugs .

mosquito
fonte
2
Correção de bug! = Manutenção! A correção de erros significa que você codificou falhas no sistema e elas precisam ser corrigidas para restaurar a funcionalidade correta . Por manutenção, significaria que todas as tarefas, como correções de bugs, melhorias de escalabilidade, migração de hardware e melhorias de desempenho, etc. Diria que mais de 25 a 30% do tempo gasto apenas em correções de bugs precisa de uma chamada de governança imediatamente. Até 40-50% do esforço gasto em manutenção geral parece razoável para um sistema corporativo de médio porte.
Apoorv Khurasia
Você tem números para as diferentes classes de erros? Obviamente, se você estiver recebendo um grande número de bugs de alta prioridade, "show stopper", pode haver um caso em que o processo de desenvolvimento precise de algum trabalho para determinar a fonte, mas se tudo isso for pouco, isso não é tão importante. Também como o gnat diz, muitos deles podem ser pedidos de aprimoramento.
Stevetech
Sua citação do artigo da Wikipedia está errada! Ele diz que "80% do esforço de manutenção é usado para ações não corretivas" , mas não diz nada sobre o tempo de manutenção em comparação ao design, codificação ou outro trabalho.
Tobias Knauss
9

A primeira pergunta a fazer é se a sua "correção de bugs" está realmente corrigindo erros de codificação ou algo mais. A correção de erros de código reais deve ser relativamente pequena na maioria dos casos, desde que você tenha uma boa base de código. Se você estiver trabalhando com uma base de código ruim, a correção extensiva de erros é inevitável.

No entanto, ao colocar um programa em produção, você encontrará requisitos que não foram documentados, atividade inesperada do usuário, anomalias de dados, incompatibilidades de hardware, problemas de instalação e outros problemas que não são estritamente erros de código. Freqüentemente, gerentes e usuários consideram esses problemas de suporte / manutenção de produção como bugs, pois geralmente exigem alterações de código.

Também encontrei gerentes que agrupariam o que deveria ter sido denominado como pequenas solicitações de aprimoramento como bugs. Freqüentemente, eles são inseridos em um sistema de rastreamento de erros ou de relatórios de problemas e isso pode tornar suas estatísticas de "erros" mais altas do que realmente são.

jfrankcarr
fonte
O que você descreve é ​​o que temos, mas isso não muda nada :(
gbjbaanb
8

Depende de quanto código você tem por aí, há quanto tempo ele está lá, etc.

O tempo gasto na correção de bugs no software deve ser antecipado nos primeiros 6 a 12 meses do lançamento, no entanto, à medida que o tempo se aproxima do infinito, o tempo gasto em manutenção versus o tempo gasto no desenvolvimento inicial excederá 100% - é assim que as coisas acontecem. trabalhos.

Embora eu não tenha nenhuma estatística rígida (o Code Complete tem, mas não sei exatamente qual página / seção), na minha experiência, aproximadamente 40% do desenvolvimento (às vezes até 60%) é gasto em manutenção. É óbvio que quanto mais código você liberar, mais tempo de manutenção você terá. Os erros nem sempre são funcionais e resultam tanto da incerteza quanto de defeitos programáticos.

Jonathan Rich
fonte
0

se você está usando um bom rastreador de tickets (como Jira, da Atlasian) e passou algum tempo inserindo todas as diferentes categorias, histórias de usuários, níveis de urgência corretamente e com o acordo de seus companheiros de equipe, calculando essas métricas (e mais) são incrivelmente fáceis.

Em um projeto anterior, usamos o Jira para gerenciar nossas listas de bugs / tarefas / tarefas e, no final, nos mostrou que a maior causa de atrasos e problemas acabou sendo práticas de gerenciamento ineficientes.

Estranhamente, quando essas informações foram divulgadas, de repente nos disseram que não usaríamos mais o Jira e que um novo produto seria trazido para substituí-lo.

Nesse meio tempo, todas as solicitações de dados a serem passadas por Jira precisavam ser enviadas à equipe de gerenciamento, e nosso acesso direto foi removido.

O que não foi notado foi que, como parte do cálculo das estatísticas, a equipe de desenvolvedores tinha Jira cutucando dados em um gancho da web, e esse gancho da web era usado para passar dados para um ponto final em alguns servidores internos, onde tínhamos código que criava esses relatórios automaticamente.

Começamos a monitorar o gancho da Web e descobrimos que, mesmo sabendo que o Jira não era mais usado, ele permaneceu vivo por um período considerável de tempo (mais de 6 meses para ser exato) e o abuso por parte da alta gerência foi simplesmente desenfreado com uso incorreto.

Claro, não precisa ser algo tão complexo quanto Jira.

Se você deseja uma solução de baixo rendimento, pode usar uma planilha do Google Docs e a API de notificação do GDocs para rastrear tarefas / tickets / bugs / solicitações de recursos etc.

O próprio GDocs agora pode emitir ganchos da web e todo tipo de coisa.

Junte isso ao Git e / ou Github e a alguns ganchos que são acionados quando o código é confirmado no seu repositório, e você tem um sistema de distribuição doméstica razoavelmente eficiente, capaz de registrar uma quantidade surpreendente de dados.

Em geral, no entanto, de 100% da vida útil natural de um produto, a divisão entre desenvolvimento greenfield e manutenção é geralmente 20/80, a maior parte do custo no ciclo do ALM (Application Lifetime Management) é gasto com custos de manutenção e suporte.

Não existe tempo demais para consertar bugs, porque simplesmente não é possível escrever código sem bugs.

Boas políticas de teste e integração contínua reduzirão o déficit, mas você nunca o erradicará completamente.

Qualquer um que acredite no contrário (IMHO) não tem conhecimento suficiente para fazer um julgamento preciso ou é cego (o caso mais comum) sobre o quão difícil é realmente escrever software.

Se o seu gerente está disposto a fazê-lo, e alguns deles estão, então você pode sugerir que ele o acompanhe por um dia, para que ele possa ver exatamente o que você faz e como o faz.

Iv'e trabalhou em algumas empresas onde esse tipo de trabalho foi incentivado ativamente, com funcionários de nível superior acompanhando funcionários de níveis inferiores e vice-versa, pode ser uma experiência de aprendizado muito, muito boa para ambas as partes envolvidas.

shawty
fonte
2
"Não existe tempo demais para consertar bugs" - que monte de porcaria. Se você gasta tempo suficiente consertando bugs que sua empresa sofre porque não podia se manter competitivo no mercado (porque você estava consertando bugs em vez de fazer coisas), gastou muito tempo consertando bugs ...
Telastyn
E a alternativa? - Você não gasta tempo suficiente consertando bugs, e seu aplicativo falha, queima e seu concorrente leva todo o seu costume, empurrando você para fora do mercado. O truque (e a parte mais difícil de tudo isso) é encontrar um equilíbrio aceitável.
shawty
1
Não, eu concordo, mas essas são as minhas próprias opiniões, porque eu realmente acredito que hoje em dia a arte da depuração adequada está se tornando uma arte perdida. Muitos de nós confiam demais em coisas como testes de unidade, que o IMHO fornece muita segurança falsa. Não estou dizendo que o teste de unidade deve ser abolido, mas estou dizendo que não há mais práticas adequadas de depuração e correção de erros, por causa disso. Esta é a vez que os gerentes (como descrito acima) acreditam que a correção de bugs não é necessária e, como resultado, nós realmente não fazemos (Novamente IMHO) o suficiente.
Julio
2
testes de unidade e depuração são artes diferentes usadas para problemas diferentes. Embora a solução do problema "nosso código esteja correto" evite melhor o problema "por que meu código está quebrado"? Com todas as coisas iguais, prefiro que as pessoas sejam boas em criar código correto do que em identificar causas-raiz.
Telastyn
1
Agora, nesse ponto, você tem meu total acordo. É um fato triste que, na indústria de hoje, muitos programadores o tratam como apenas mais um trabalho das 9 às 5, onde eles registram, digitam código até o horário de casa e terminam. Antigamente, os desenvolvedores tinham imenso orgulho em escrever código bom, sólido e bem testado, e passavam um tempo pensando nisso antes de chegarem perto de um teclado, você vê muito pouco disso hoje em dia.
Julio