Algum tempo atrás, ocorreu uma conversa entre mim e meu bom amigo, na qual as seguintes frases soaram:
- O número de programadores crescerá constantemente - porque a quantidade de código está aumentando e cada vez mais desenvolvedores são constantemente necessários para suportá-lo.
- Mas o código está envelhecendo, parte dele está deixando o suporte. A presença de algum tipo de equilíbrio não é descartada.
Lembrando-os alguns dias depois, imaginei se o suporte ao código, exigindo mais e mais recursos ao longo do tempo, poderia 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 volume de suporte no desenvolvimento e a encontrar respostas para as perguntas.
A primeira pergunta Pode apoiar "comer" todos os recursos de desenvolvimento?
Considere uma equipe de programadores em que o número de participantes seja constante. Parte do seu tempo de trabalho
(
) recai sobre o desenvolvimento de um novo código e a fração restante do tempo
vai apoiar. Sob as premissas do modelo, suponha que o primeiro tipo de atividade tenha como objetivo aumentar a quantidade de código e o segundo - altere-o (corrigindo erros) e não afete significativamente a quantidade de código.
Nós denotamos
todo o código escrito por hora
. Considerando que a velocidade de escrever código é proporcional
nós obtemos:
É natural supor que o trabalho envolvido na manutenção do código seja proporcional ao seu volume:
ou
De onde
Temos uma equação diferencial que se integra facilmente. Se, no momento inicial, a quantidade de código for zero, então
At
função
e
. E isso significa uma redução gradual ao longo do tempo do desenvolvimento de novas funcionalidades para zero e da transição de todos os recursos para suporte.
No entanto, se a tempo
Como o código se torna obsoleto e deixa de ser suportado, a quantidade de código que requer suporte por vez
igual a
Então
mas
é uma solução de uma equação diferencial com um argumento atrasado [1]:
A solução para esta equação é determinada exclusivamente pela configuração dos valores
"Antes do início dos tempos", com
. Como nenhum código foi escrito antes da hora inicial, no nosso caso
às
.
Vejamos alguns exemplos. Mediremos o tempo em anos e a quantidade de código em milhares de linhas. Então para
Valores da ordem de dezenas são aceitáveis, tomamos 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 a equipe de desenvolvimento é capaz de manter a quantidade de código que ele escreveu para o ano, com um quarto, metade ou carga de trabalho completa. Como o tempo médio de vida do código, vamos definir os 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
.

Função Comportamento
em face do código antigo mudou. A função deixou de ser monótona, mas as flutuações “se acalmam” ao longo do tempo, há uma tendência a
para algum valor constante. Os gráficos mostram: quanto mais
,
e
isto é, quanto mais lento o código envelhece, mais rápido ocorre o desenvolvimento de um novo código e menor a qualidade do código, menos recursos permanecerão para o desenvolvimento de novas funcionalidades. Havia um desejo de dar pelo menos um exemplo em que
"Snuggled" perto de zero. Mas isso exigiu a seleção de indicadores de qualidade de desenvolvimento muito ruins e código de longa duração. Mesmo no gráfico inferior esquerdo, resta uma quantidade significativa de recursos para a nova funcionalidade. Portanto, a resposta correta para a primeira pergunta é mais provável: teoricamente - sim, é possível; praticamente - dificilmente.
Perguntas que não puderam ser respondidas:
- É verdade que tende a um certo limite para para todos ? Se não for para todos, então para qual?
- Se o limite existir, como seu valor depende de ?
A segunda pergunta. O suporte ao código pode causar crescimento ilimitado no número de programadores?
Nós denotamos
número de programadores envolvidos no desenvolvimento de novo código. Como acima
- a quantidade de código escrito pela hora
. Então
Deixe o código suportar ocupado
programadores. Envelhecimento do código C
De onde
Se
então
Portanto, a resposta para a segunda pergunta é negativa: se o número de desenvolvedores de novo código for limitado, no contexto do código antigo, o suporte não poderá causar um aumento ilimitado no número de programadores.
Conclusão
Os modelos considerados são modelos matemáticos "suaves" [2]. Eles são muito simples. No entanto, a dependência dos resultados da simulação sobre os valores dos parâmetros corresponde ao esperado para sistemas reais, o que favorece a adequação dos modelos e a precisão suficiente para obter estimativas qualitativas.
Referências
1. Elsgolts L.E., Norkin S.B. Introdução à teoria das equações diferenciais com argumento divergente. Moscovo Editora "Ciência". 1971
2. Arnold V.I. Modelos matemáticos "rígidos" e "flexíveis". Moscovo Editora do Centro. 2004.