Há algum tempo, ocorreu uma conversa entre mim e um grande amigo meu, na qual foram ouvidas as seguintes frases:
— O número de programadores crescerá constantemente - porque a quantidade de código está crescendo e cada vez mais desenvolvedores são constantemente solicitados a apoiá-lo.
— Mas o código está ficando antigo, parte dele não é mais compatível. É até possível que exista algum tipo de equilíbrio.
Lembrando-me deles alguns dias depois, me perguntei se a manutenção do código, exigindo cada vez mais recursos ao longo do tempo, poderia, em última análise, paralisar o desenvolvimento de novas funcionalidades ou exigiria um aumento ilimitado no número de programadores? A análise matemática e as equações diferenciais ajudaram a avaliar qualitativamente a dependência do montante do apoio ao desenvolvimento e a encontrar respostas às questões.
Pergunta um. O apoio pode “consumir” todos os recursos de desenvolvimento?
Considere uma equipe de programadores em que o número de participantes é constante. Partilha do seu tempo de trabalho () é gasto no desenvolvimento de novo código, e o restante do tempo vai para o suporte. Dentro dos pressupostos do modelo, assumimos que o primeiro tipo de atividade visa aumentar o volume de código, e o segundo visa alterá-lo (corrigir erros) e não tem impacto significativo no volume de código.
Vamos denotar toda a quantidade de código escrito até aquele momento . Supondo que a velocidade de escrita do código seja proporcional , Nós temos:
É natural supor que os custos trabalhistas para manutenção do código sejam proporcionais ao seu volume:
ou
De onde
Obtemos uma equação diferencial que pode ser facilmente integrada. Se no momento inicial a quantidade de código for zero, então
em funcionar E . E isso significa uma redução gradual ao longo do tempo no desenvolvimento de novas funcionalidades a zero e a transferência de todos os recursos para suporte.
Contudo, se durante o tempo o código se torna obsoleto e deixa de ser suportado, então a quantidade de código que requer suporte por vez já é igual Depois
а é uma solução para uma equação diferencial com um argumento retardado [1]:
A solução para tal equação é determinada exclusivamente pela especificação dos valores "antes do início dos tempos" . Como o código ainda não havia sido escrito antes do momento inicial, no nosso caso em .
Vejamos alguns exemplos. Mediremos o tempo em anos e a quantidade de código em milhares de linhas. Então para valores da ordem das dezenas são aceitáveis, tomaremos 50 e 100. Ou seja, em um ano a equipe de desenvolvimento escreverá cinquenta e cem mil linhas de código, respectivamente. Para valores aceitáveis podem ser: , , . Isso significa que uma equipe de desenvolvimento pode suportar a quantidade de código que escreve em um ano, seja um trimestre, meio ou período integral. Como vida útil média do código, definiremos os seguintes valores: 1, 2 e 4 anos. Resolvendo a equação numericamente, obtemos exemplos do comportamento da função para algumas combinações de parâmetros .
Comportamento da função à medida que o código envelhece, ele mudou. A função deixa de ser monótona, mas as flutuações “se acalmam” com o tempo, e há uma tendência a para algum valor constante. Os gráficos mostram: quanto mais , и , ou seja, quanto mais lento o código envelhecer, mais rápido será o desenvolvimento de novo código e quanto menor for a qualidade do código, menos recursos sobrarão para o desenvolvimento de novas funcionalidades. Houve o desejo de dar pelo menos um exemplo em que “aconchegado” perto de zero. Mas isto exigiu a selecção de indicadores de qualidade de desenvolvimento muito fracos e de códigos que não envelhecem durante muito tempo. Mesmo no gráfico inferior esquerdo, resta uma quantidade significativa de recursos para a nova funcionalidade. Portanto, a resposta correta à primeira pergunta é esta: teoricamente - sim, é possível; praticamente - dificilmente.
Perguntas que não puderam ser respondidas:
- É verdade que tende a algum limite em para todos ? Se não para todos, então para quais?
- Se existe um limite, como seu valor depende de ?
Pergunta dois. A manutenção do código poderia causar um crescimento ilimitado no número de programadores?
Vamos denotar o número de programadores envolvidos no desenvolvimento de novo código. Como acima, — a quantidade de código escrito até um determinado momento . em seguida
Mantenha o suporte de código ocupado programadores. Tendo em conta o código de envelhecimento,
De onde
Se em seguida
Assim, a resposta à segunda questão é negativa: se o número de desenvolvedores de novo código for limitado, então, em condições de código antigo, o suporte não pode causar um aumento ilimitado no número de programadores.
Conclusão
Os modelos considerados são modelos matemáticos “soft” [2]. Eles são muito simples. No entanto, a dependência dos resultados da simulação dos valores dos parâmetros corresponde ao esperado para sistemas reais, o que fala a favor da adequação dos modelos e precisão suficiente para obter estimativas de alta qualidade.
Referências
1. Elsgolts LE, Norkin SB. Introdução à teoria das equações diferenciais com argumentos divergentes. Moscou. Editora "Ciência". 1971.
2. Arnaldo V.I. Modelos matemáticos “hard” e “soft”. Moscou. Editora MCNMO. 2004.
Fonte: habr.com