Vor einiger Zeit fand ein GesprÀch zwischen mir und meinem guten Freund statt, in dem die folgenden SÀtze erklangen:
- Die Anzahl der Programmierer wird stĂ€ndig zunehmen - weil die Menge an Code wĂ€chst und immer mehr Entwickler stĂ€ndig benötigt werden, um ihn zu unterstĂŒtzen.
- Aber der Code altert, ein Teil davon verlĂ€sst die UnterstĂŒtzung. Das Vorhandensein eines Gleichgewichts ist nicht ausgeschlossen.
Als ich sie einige Tage spĂ€ter zurĂŒckrief, fragte ich mich, ob die CodeunterstĂŒtzung, die im Laufe der Zeit immer mehr Ressourcen erfordert, letztendlich die Entwicklung neuer Funktionen lĂ€hmen oder eine unbegrenzte Erhöhung der Anzahl der Programmierer erfordern wĂŒrde. Mathematische Analysen und Differentialgleichungen halfen dabei, die AbhĂ€ngigkeit des UnterstĂŒtzungsvolumens von der Entwicklung qualitativ zu bewerten und Antworten auf Fragen zu finden.
Die erste Frage. Kann die UnterstĂŒtzung alle Entwicklungsressourcen âessenâ?
Stellen Sie sich ein Team von Programmierern vor, bei dem die Anzahl der Teilnehmer konstant ist. Anteil ihrer Arbeitszeit
(
) entfielen auf die Entwicklung neuen Codes und den verbleibenden Teil der Zeit
geht zur UnterstĂŒtzung. Nehmen wir unter den Annahmen des Modells an, dass die erste Art von AktivitĂ€t darauf abzielt, die Codemenge zu erhöhen, und die zweite darauf, sie zu Ă€ndern (Fehler zu korrigieren) und die Codemenge nicht wesentlich beeinflusst.
Wir bezeichnen
Der gesamte Code wurde nach Zeit geschrieben
. Die Geschwindigkeit beim Schreiben von Code ist proportional
wir bekommen:
Es ist natĂŒrlich anzunehmen, dass der Arbeitsaufwand fĂŒr die Pflege des Codes proportional zu seinem Volumen ist:
oder
Woher?
Wir erhalten eine Differentialgleichung, die sich leicht integrieren lÀsst. Wenn zum anfÀnglichen Zeitpunkt die Codemenge Null ist, dann
Bei
Funktion
und
. Dies bedeutet eine schrittweise Reduzierung der Entwicklung neuer Funktionen auf Null im Laufe der Zeit und den Ăbergang aller Ressourcen zur UnterstĂŒtzung.
Wenn jedoch rechtzeitig
Da der Code veraltet ist und nicht mehr unterstĂŒtzt wird, muss jeweils nur noch Code unterstĂŒtzt werden
gleich
Dann
aber
ist eine Lösung einer Differentialgleichung mit einem verzögerten Argument [1]:
Die Lösung dieser Gleichung wird eindeutig durch Einstellen der Werte bestimmt
"Vor dem Beginn der Zeit", mit
. Da in unserem Fall vor dem ersten Mal kein Code geschrieben wurde
bei
.
Schauen wir uns einige Beispiele an. Wir werden die Zeit in Jahren und die Codemenge in Tausenden von Zeilen messen. Dann fĂŒr
Werte in der GröĂenordnung von zehn sind akzeptabel, wir nehmen 50 und 100. Das heiĂt, in einem Jahr wird das Entwicklungsteam fĂŒnfzig bzw. einhunderttausend Codezeilen schreiben. FĂŒr
akzeptable Werte können sein:
,
,
. Dies bedeutet, dass das Entwicklungsteam die Menge an Code, die es fĂŒr das Jahr geschrieben hat, mit einer viertel, halben oder vollen Arbeitslast beibehalten kann. Als durchschnittliche Lebensdauer des Codes legen wir die Werte 1, 2 und 4 Jahre fest. Wenn wir die Gleichung numerisch lösen, erhalten wir Beispiele fĂŒr das Verhalten der Funktion
fĂŒr einige Kombinationen von Parametern
.

Funktionsverhalten
Angesichts des Alterns hat sich der Code geĂ€ndert. Die Funktion ist nicht mehr eintönig, aber Schwankungen âberuhigenâ sich im Laufe der Zeit, es besteht eine Tendenz dazu
auf einen konstanten Wert. Diagramme zeigen: je mehr
,
und
Das heiĂt, je langsamer der Code Ă€lter wird, je schneller die Entwicklung von neuem Code erfolgt und je geringer die QualitĂ€t des Codes ist, desto weniger Ressourcen verbleiben fĂŒr die Entwicklung neuer Funktionen. Es bestand der Wunsch, mindestens ein Beispiel dafĂŒr zu nennen
"Kuschelte" nahe Null. Dies erforderte jedoch die Auswahl sehr schlechter Indikatoren fĂŒr die EntwicklungsqualitĂ€t und eines Codes fĂŒr die Langzeitalterung. Selbst in der unteren linken Grafik verbleibt eine erhebliche Menge an Ressourcen fĂŒr die neue FunktionalitĂ€t. Daher ist die richtige Antwort auf die erste Frage wahrscheinlicher: theoretisch - ja, es ist möglich; praktisch - kaum.
Fragen, die nicht beantwortet werden konnten:
- Ist es wahr, dass neigt zu einer gewissen Grenze fĂŒr fĂŒr alle ? Wenn nicht fĂŒr alle, fĂŒr welche?
- Wenn die Grenze existiert, hÀngt es davon ab, wie ihr Wert ist ?
Die zweite Frage. Kann die CodeunterstĂŒtzung die Anzahl der Programmierer unbegrenzt erhöhen?
Wir bezeichnen
Anzahl der Programmierer, die an der Entwicklung neuen Codes beteiligt sind. Wie oben
- die Menge an Code, die von der Zeit geschrieben wurde
. Dann
Lassen Sie die Code-UnterstĂŒtzung beschĂ€ftigt
Programmierer. Alterung des C-Codes
Woher?
Wenn
dann
Daher ist die Antwort auf die zweite Frage negativ: Wenn die Anzahl der Entwickler von neuem Code begrenzt ist, kann die UnterstĂŒtzung im Zusammenhang mit dem Altern von Code nicht zu einer unbegrenzten Erhöhung der Anzahl von Programmierern fĂŒhren.
Fazit
Die betrachteten Modelle sind âweicheâ mathematische Modelle [2]. Sie sind sehr einfach. Die AbhĂ€ngigkeit der Simulationsergebnisse von den Parameterwerten entspricht jedoch der fĂŒr reale Systeme erwarteten, was fĂŒr die Angemessenheit der Modelle und eine ausreichende Genauigkeit spricht, um qualitative SchĂ€tzungen zu erhalten.
Referenzliste
1. Elsgolts L.E., Norkin S.B. EinfĂŒhrung in die Theorie der Differentialgleichungen mit abweichendem Argument. Moskau Verlag "Wissenschaft". 1971.
2. Arnold V.I. "Harte" und "weiche" mathematische Modelle. Moskau Verlag des Zentrums. 2004.