Hai tempo tivo lugar unha conversa entre min e un bo amigo meu na que se escoitaron as seguintes frases:
— O número de programadores crecerá constantemente, porque a cantidade de código está crecendo, e cada vez máis desenvolvedores necesitan apoialo.
— Pero o código está quedando vello, algúns xa non son compatibles. Mesmo é posible que haxa algún tipo de equilibrio.
Recordándoos uns días despois, pregunteime se manter o código, que requiría cada vez máis recursos ao longo do tempo, podería paralizar o desenvolvemento de novas funcionalidades ou sería necesario un aumento ilimitado do número de programadores? A análise matemática e as ecuacións diferenciais axudaron a avaliar cualitativamente a dependencia da cantidade de apoio no desenvolvemento e a atopar respostas ás preguntas.
Pregunta un. Pode soportar "comer" todos os recursos de desenvolvemento?
Considere un equipo de programadores no que o número de participantes é constante. Reparto do seu tempo de traballo () gástase no desenvolvemento de código novo e a parte restante do tempo vai apoiar. Dentro dos supostos do modelo, asumimos que o primeiro tipo de actividade vai dirixido a aumentar o volume de código, e o segundo está dirixido a cambialo (corrixir erros) e non ten un impacto significativo no volume de código.
Denotemos toda a cantidade de código escrito ata ese momento . Asumindo que a velocidade de escritura do código é proporcional , obtemos:
É natural asumir que os custos laborais para manter o código son proporcionais ao seu volume:
ou
donde
Obtemos unha ecuación diferencial que se pode integrar facilmente. Se no momento inicial a cantidade de código é cero, entón
En función E . E isto supón unha redución gradual no tempo no desenvolvemento de novas funcionalidades a cero e a transferencia de todos os recursos ao soporte.
Non obstante, se durante o tempo o código queda obsoleto e deixa de ser compatible, entón a cantidade de código que require soporte á vez xa é igual Entón
а é unha solución dunha ecuación diferencial cun argumento retardado [1]:
A solución a tal ecuación determínase de forma única especificando os valores "antes do comezo dos tempos" . Xa que o código aínda non fora escrito antes do momento inicial, no noso caso en .
Vexamos algúns exemplos. Mediremos o tempo en anos e a cantidade de código en miles de liñas. Despois para valores da orde das decenas son aceptables, tomaremos 50 e 100. É dicir, nun ano o equipo de desenvolvemento escribirá cincuenta e cen mil liñas de código, respectivamente. Para Os valores aceptables poden ser: , , . Isto significa que un equipo de desenvolvemento pode soportar a cantidade de código que escribe nun ano, xa sexa un cuarto, a metade ou a tempo completo. Como duración media do código, estableceremos os seguintes valores: 1, 2 e 4 anos. Resolvendo a ecuación numericamente, obtemos exemplos do comportamento da función para algunhas combinacións de parámetros .
Comportamento da función a medida que o código envellece, cambiou. A función xa non é monótona, pero as flutuacións "calmanse" co paso do tempo, e hai unha tendencia a a algún valor constante. Os gráficos mostran: canto máis , и , é dicir, canto máis lento o código envellece, máis rápido será o desenvolvemento do novo código e canto menor sexa a calidade do código, menos recursos quedarán para o desenvolvemento de novas funcionalidades. Houbo o desexo de poñer polo menos un exemplo no que "acurrucado" preto de cero. Pero isto requiriu a selección de indicadores de calidade de desenvolvemento moi pobres e código que non envellece durante moito tempo. Incluso no gráfico inferior esquerdo, queda unha cantidade significativa de recursos para a nova funcionalidade. Polo tanto, a resposta correcta á primeira pregunta é máis ben esta: teoricamente - si, é posible; practicamente - case.
Preguntas que non se puideron responder:
- É certo que? tende a algún límite en para todos ? Se non é para todos, entón para cales?
- Se existe un límite, de como depende o seu valor ?
Pregunta dúas. Podería o mantemento do código provocar un crecemento ilimitado no número de programadores?
Denotemos o número de programadores implicados no desenvolvemento de novo código. Como anteriormente, — a cantidade de código escrito ata un momento determinado . Entón
Mantén ocupado o soporte de código programadores. Tendo en conta o código de envellecemento,
donde
Se , Entón
Así, a resposta á segunda pregunta é negativa: se o número de desenvolvedores do novo código é limitado, en condicións de envellecemento do código, o soporte non pode provocar un aumento ilimitado do número de programadores.
Conclusión
Os modelos considerados son modelos matemáticos “soft” [2]. Son moi sinxelos. Non obstante, a dependencia dos resultados da simulación dos valores dos parámetros corresponde ao que se espera para os sistemas reais, isto fala a favor da adecuación dos modelos e da suficiente precisión para obter estimacións de alta calidade.
Referencias
1. Elsgolts L.E., Norkin S.B. Introdución á teoría de ecuacións diferenciais con argumento desviado. Moscova. Editorial "Ciencia". 1971.
2. Arnold V.I. Modelos matemáticos “duros” e “suaves”. Moscova. Editorial MCNMO. 2004.
Fonte: www.habr.com