Koľko programátorov je potrebných na údržbu predtým napísaného kódu?

Pred časom sa medzi mnou a mojím dobrým priateľom uskutočnil rozhovor, v ktorom zazneli tieto vety:

— Počet programátorov bude neustále rásť – pretože množstvo kódu rastie a stále viac a viac vývojárov ho musí neustále podporovať.
— Ale kód starne, niektoré už nie sú podporované. Je dokonca možné, že existuje nejaký druh rovnováhy.

Keď som si na ne spomenul o pár dní neskôr, uvažoval som, či udržiavanie kódu, vyžadujúceho si postupom času stále viac zdrojov, môže v konečnom dôsledku ochromiť vývoj novej funkcionality, alebo by si to vyžadovalo neobmedzené zvyšovanie počtu programátorov? Matematická analýza a diferenciálne rovnice pomohli kvalitatívne posúdiť závislosť výšky podpory od rozvoja a nájsť odpovede na otázky.

Otázka jedna. Môže podpora „zožrať“ všetky rozvojové zdroje?

Zoberme si tím programátorov, v ktorom je počet účastníkov konštantný. Podiel ich pracovného času Koľko programátorov je potrebných na údržbu predtým napísaného kódu? (Koľko programátorov je potrebných na údržbu predtým napísaného kódu?) sa vynakladá na vývoj nového kódu a zostávajúci čas Koľko programátorov je potrebných na údržbu predtým napísaného kódu? ide na podporu. V rámci predpokladov modelu predpokladáme, že prvý typ činnosti je zameraný na zvýšenie objemu kódu a druhý na jeho zmenu (opravu chýb) a nemá významný vplyv na objem kódu.

Označme Koľko programátorov je potrebných na údržbu predtým napísaného kódu? celé množstvo kódu napísaného do tohto okamihu Koľko programátorov je potrebných na údržbu predtým napísaného kódu?. Za predpokladu, že rýchlosť zápisu kódu je úmerná Koľko programátorov je potrebných na údržbu predtým napísaného kódu?, dostaneme:

Koľko programátorov je potrebných na údržbu predtým napísaného kódu?

Je prirodzené predpokladať, že mzdové náklady na udržiavanie kódexu sú úmerné jeho objemu:

Koľko programátorov je potrebných na údržbu predtým napísaného kódu?

alebo

Koľko programátorov je potrebných na údržbu predtým napísaného kódu?

odkiaľ

Koľko programátorov je potrebných na údržbu predtým napísaného kódu?

Získame diferenciálnu rovnicu, ktorú možno ľahko integrovať. Ak je v počiatočnom okamihu množstvo kódu nula, potom

Koľko programátorov je potrebných na údržbu predtým napísaného kódu?

Na Koľko programátorov je potrebných na údržbu predtým napísaného kódu? funkcie Koľko programátorov je potrebných na údržbu predtým napísaného kódu?A Koľko programátorov je potrebných na údržbu predtým napísaného kódu?. A to znamená postupné znižovanie v čase vývoja novej funkcionality na nulu a presun všetkých zdrojov na podporu.

Ak však počas doby Koľko programátorov je potrebných na údržbu predtým napísaného kódu? kód sa stane zastaraným a prestane byť podporovaný, potom množstvo kódu vyžadujúce podporu naraz Koľko programátorov je potrebných na údržbu predtým napísaného kódu? je už rovný Koľko programátorov je potrebných na údržbu predtým napísaného kódu? potom

Koľko programátorov je potrebných na údržbu predtým napísaného kódu?

Koľko programátorov je potrebných na údržbu predtým napísaného kódu?

а Koľko programátorov je potrebných na údržbu predtým napísaného kódu? je riešením diferenciálnej rovnice s retardovaným argumentom [1]:

Koľko programátorov je potrebných na údržbu predtým napísaného kódu?

Riešenie takejto rovnice je jednoznačne určené špecifikovaním hodnôt Koľko programátorov je potrebných na údržbu predtým napísaného kódu? "pred začiatkom času" Koľko programátorov je potrebných na údržbu predtým napísaného kódu?. Keďže kód ešte nebol napísaný pred počiatočným časovým okamihom, v našom prípade Koľko programátorov je potrebných na údržbu predtým napísaného kódu? na Koľko programátorov je potrebných na údržbu predtým napísaného kódu?.

Pozrime sa na pár príkladov. Budeme merať čas v rokoch a množstvo kódu v tisíckach riadkov. Potom pre Koľko programátorov je potrebných na údržbu predtým napísaného kódu? hodnoty rádovo desiatky sú prijateľné, vezmeme 50 a 100. To znamená, že za rok napíše vývojový tím päťdesiat, respektíve stotisíc riadkov kódu. Pre Koľko programátorov je potrebných na údržbu predtým napísaného kódu? prijateľné hodnoty môžu byť: Koľko programátorov je potrebných na údržbu predtým napísaného kódu?, Koľko programátorov je potrebných na údržbu predtým napísaného kódu?, Koľko programátorov je potrebných na údržbu predtým napísaného kódu?. To znamená, že vývojový tím môže podporovať množstvo kódu, ktoré napíše za rok, či už ide o štvrť, polovicu alebo plný úväzok. Ako priemernú životnosť kódu nastavíme tieto hodnoty: 1, 2 a 4 roky. Numerickým riešením rovnice získame príklady správania sa funkcie Koľko programátorov je potrebných na údržbu predtým napísaného kódu? pre niektoré kombinácie parametrov Koľko programátorov je potrebných na údržbu predtým napísaného kódu?.
Koľko programátorov je potrebných na údržbu predtým napísaného kódu?
Správanie funkcie Koľko programátorov je potrebných na údržbu predtým napísaného kódu? ako kód starne, zmenil sa. Funkcia už nie je monotónna, no výkyvy sa časom „upokojujú“ a dochádza k tendencii Koľko programátorov je potrebných na údržbu predtým napísaného kódu? na nejakú konštantnú hodnotu. Grafy ukazujú: čím viac Koľko programátorov je potrebných na údržbu predtým napísaného kódu?, Koľko programátorov je potrebných na údržbu predtým napísaného kódu? и Koľko programátorov je potrebných na údržbu predtým napísaného kódu?, teda čím pomalšie kód starne, čím rýchlejší je vývoj nového kódu a čím nižšia je kvalita kódu, tým menej zdrojov zostane na vývoj novej funkcionality. Bola tu túžba uviesť aspoň jeden príklad, v ktorom Koľko programátorov je potrebných na údržbu predtým napísaného kódu? „pritisnutý“ blízko nule. To si však vyžadovalo výber veľmi slabých indikátorov kvality vývoja a kódu, ktorý dlho nestarne. Aj v ľavom dolnom grafe zostáva značné množstvo zdrojov pre novú funkcionalitu. Preto je správna odpoveď na prvú otázku skôr takáto: teoreticky - áno, je to možné; prakticky - sotva.

Otázky, na ktoré sa nedalo odpovedať:

  1. Je to pravda? Koľko programátorov je potrebných na údržbu predtým napísaného kódu? má tendenciu k určitej hranici Koľko programátorov je potrebných na údržbu predtým napísaného kódu? pre všetkých Koľko programátorov je potrebných na údržbu predtým napísaného kódu?? Ak nie pre všetkých, tak pre ktorých?
  2. Ak limit existuje, ako od toho závisí jeho hodnota Koľko programátorov je potrebných na údržbu predtým napísaného kódu??

Otázka druhá. Mohla by údržba kódu spôsobiť neobmedzený rast počtu programátorov?

Označme Koľko programátorov je potrebných na údržbu predtým napísaného kódu? počet programátorov zapojených do vývoja nového kódu. Ako je uvedené vyššie, Koľko programátorov je potrebných na údržbu predtým napísaného kódu? — množstvo kódu zapísaného do určitého časového bodu Koľko programátorov je potrebných na údržbu predtým napísaného kódu?, potom

Koľko programátorov je potrebných na údržbu predtým napísaného kódu?

Udržujte podporu kódu zaneprázdnenú Koľko programátorov je potrebných na údržbu predtým napísaného kódu? programátorov. Berúc do úvahy kód starnutia,

Koľko programátorov je potrebných na údržbu predtým napísaného kódu?

odkiaľ

Koľko programátorov je potrebných na údržbu predtým napísaného kódu?

Ak Koľko programátorov je potrebných na údržbu predtým napísaného kódu?, Potom

Koľko programátorov je potrebných na údržbu predtým napísaného kódu?

Odpoveď na druhú otázku je teda negatívna: ak je počet vývojárov nového kódu obmedzený, potom v podmienkach starnutia kódu podpora nemôže spôsobiť neobmedzené zvýšenie počtu programátorov.

Záver

Uvažované modely sú „mäkké“ matematické modely [2]. Sú veľmi jednoduché. Závislosť výsledkov simulácie na hodnotách parametrov však zodpovedá tomu, čo sa očakáva pre reálne systémy, čo hovorí v prospech primeranosti modelov a dostatočnej presnosti na získanie vysoko kvalitných odhadov.

Referencie

1. Elsgolts L.E., Norkin S.B. Úvod do teórie diferenciálnych rovníc s deviačným argumentom. Moskva. Vydavateľstvo "Veda". 1971.
2. Arnold V.I. „Tvrdé“ a „mäkké“ matematické modely. Moskva. Vydavateľstvo MCNMO. 2004.

Zdroj: hab.com

Pridať komentár