Fa un temps, va tenir lloc una conversa entre jo i un bon amic meu en la qual es van escoltar les següents frases:
— El nombre de programadors creixerà constantment, perquè la quantitat de codi està creixent i cada vegada es requereixen més desenvolupadors per donar-hi suport.
— Però el codi s'està fent vell, alguns ja no són compatibles. Fins i tot és possible que hi hagi algun tipus d'equilibri.
Recordant-los uns dies després, em vaig preguntar si el manteniment del codi, que requeriria cada cop més recursos al llarg del temps, podria paralitzar el desenvolupament de noves funcionalitats, o requeriria un augment il·limitat del nombre de programadors? L'anàlisi matemàtica i les equacions diferencials van ajudar a avaluar qualitativament la dependència de la quantitat de suport en el desenvolupament i a trobar respostes a les preguntes.
Pregunta XNUMX. El suport pot "menjar-se" tots els recursos de desenvolupament?
Penseu en un equip de programadors en el qual el nombre de participants és constant. Part del seu temps de treball () es dedica a desenvolupar codi nou i la part restant de temps va a donar suport. Dins dels supòsits del model, suposem que el primer tipus d'activitat està orientat a augmentar el volum de codi, i el segon està dirigit a canviar-lo (corregir errors) i no té un impacte significatiu en el volum de codi.
Denotem tota la quantitat de codi escrit fins a aquest moment . Suposant que la velocitat d'escriptura del codi és proporcional , obtenim:
És natural suposar que els costos laborals per mantenir el codi són proporcionals al seu volum:
o
Des d'on
Obtenim una equació diferencial que es pot integrar fàcilment. Si en el moment inicial de temps la quantitat de codi és zero, aleshores
En funció I . I això suposa una reducció gradual al llarg del temps en el desenvolupament de noves funcionalitats a zero i la transferència de tots els recursos al suport.
Tanmateix, si durant el temps el codi queda obsolet i deixa de ser compatible, després la quantitat de codi que requereix suport alhora ja és igual Llavors
а és una solució a una equació diferencial amb un argument retardat [1]:
La solució d'aquesta equació es determina de manera única especificant els valors "abans del principi dels temps" . Com que el codi encara no s'havia escrit abans del moment inicial, en el nostre cas en .
Vegem-ne uns quants exemples. Mesurarem el temps en anys i la quantitat de codi en milers de línies. Llavors per valors de l'ordre de les desenes són acceptables, prendrem 50 i 100. És a dir, en un any l'equip de desenvolupament escriurà cinquanta i cent mil línies de codi, respectivament. Per els valors acceptables poden ser: , , . Això vol dir que un equip de desenvolupament pot suportar la quantitat de codi que escriu en un any, ja sigui un quart, la meitat o el temps complet. Com a vida mitjana del codi, establirem els valors següents: 1, 2 i 4 anys. Resolvent l'equació numèricament, obtenim exemples del comportament de la funció per a algunes combinacions de paràmetres .
Comportament de la funció a mesura que el codi envelleix, ha canviat. La funció ja no és monòtona, però les fluctuacions "es calmen" amb el temps i hi ha una tendència a a algun valor constant. Els gràfics mostren: com més , и , és a dir, com més lent envelleix el codi, més ràpid és el desenvolupament de codi nou i com més baixa és la qualitat del codi, menys recursos quedaran per al desenvolupament de noves funcionalitats. Hi havia la voluntat de posar almenys un exemple en què "abraçat" prop de zero. Però això va requerir la selecció d'indicadors i codis de qualitat de desenvolupament molt pobres que no envelleixen durant molt de temps. Fins i tot al gràfic inferior esquerre, queda una quantitat important de recursos per a la nova funcionalitat. Per tant, la resposta correcta a la primera pregunta és més aviat aquesta: teòricament, sí, és possible; pràcticament - amb prou feines.
Preguntes que no s'han pogut respondre:
- És cert que? tendeix a algun límit a per a tot ? Si no és per a tothom, per a quins?
- Si existeix un límit, de com depèn el seu valor ?
Pregunta dos. El manteniment del codi podria provocar un creixement il·limitat del nombre de programadors?
Denotem el nombre de programadors implicats en el desenvolupament de nou codi. Com més amunt, — la quantitat de codi escrit fins a un moment determinat . Aleshores
Mantingueu ocupat el suport de codi programadors. Tenint en compte el codi d'antiguitat,
Des d'on
Si , Llavors
Per tant, la resposta a la segona pregunta és negativa: si el nombre de desenvolupadors de codi nou és limitat, en condicions d'envelliment del codi, el suport no pot provocar un augment il·limitat del nombre de programadors.
Conclusió
Els models considerats són models matemàtics "tous" [2]. Són molt senzills. No obstant això, la dependència dels resultats de la simulació dels valors dels paràmetres correspon al que s'espera per als sistemes reals, això parla a favor de l'adequació dels models i la precisió suficient per obtenir estimacions d'alta qualitat.
Referències
1. Elsgolts L.E., Norkin S.B. Introducció a la teoria d'equacions diferencials amb argument desviant. Moscou. Editorial "Ciència". 1971.
2. Arnold V.I. Models matemàtics “durs” i “tous”. Moscou. Editorial MCNMO. 2004.
Font: www.habr.com