Pred časom je potekal pogovor med mano in mojim dobrim prijateljem, v katerem so bile slišane naslednje fraze:
— Število programerjev bo nenehno raslo - ker količina kode raste in vse več razvijalcev jo mora nenehno podpirati.
— Toda koda postaja stara, nekatere niso več podprte. Možno je celo, da obstaja nekakšno ravnotežje.
Ko sem se nekaj dni kasneje spomnil nanje, sem se spraševal, ali lahko vzdrževanje kode, ki sčasoma zahteva vse več virov, na koncu ohromi razvoj novih funkcionalnosti ali pa bo zahtevalo neomejeno povečanje števila programerjev? Z matematično analizo in diferencialnimi enačbami smo kvalitativno ocenili odvisnost višine podpore od razvoja in našli odgovore na vprašanja.
Prvo vprašanje. Ali lahko podpora »požre« vse razvojne vire?
Razmislite o ekipi programerjev, v kateri je število udeležencev konstantno. Delež njihovega delovnega časa () se porabi za razvoj nove kode, preostali del časa pa gre v podporo. V okviru predpostavk modela predvidevamo, da je prva vrsta aktivnosti usmerjena v povečanje obsega kode, druga pa v njeno spreminjanje (popravljanje napak) in nima pomembnega vpliva na obseg kode.
Označimo celotno količino kode, napisane do te točke v času . Ob predpostavki, da je hitrost pisanja kode sorazmerna , dobimo:
Naravno je domnevati, da so stroški dela za vzdrževanje kode sorazmerni z njenim obsegom:
ali
od koder
Dobimo diferencialno enačbo, ki jo je mogoče enostavno integrirati. Če je v začetnem trenutku količina kode nič, potem
Ob funkcijo In . In to pomeni postopno zmanjševanje razvoja novih funkcionalnosti na nič in prenos vseh virov v podporo.
Vendar, če med časom koda postane zastarela in ni več podprta, nato količina kode, ki zahteva podporo naenkrat je že enaka Potem
а je rešitev diferencialne enačbe z zaostalim argumentom [1]:
Rešitev takšne enačbe je enolično določena z določitvijo vrednosti "pred začetkom časa" . Ker koda še ni bila napisana pred začetnim trenutkom v našem primeru na .
Poglejmo si nekaj primerov. Čas bomo merili v letih, količino kode pa v tisočih vrsticah. Potem za vrednosti reda deset so sprejemljive, vzeli bomo 50 in 100. To pomeni, da bo razvojna ekipa v enem letu napisala petdeset oziroma sto tisoč vrstic kode. Za sprejemljive vrednosti so lahko: , , . To pomeni, da lahko razvojna ekipa podpira količino kode, ki jo napiše v enem letu, ne glede na to, ali je to četrtina, polovica ali polni delovni čas. Kot povprečno življenjsko dobo kode bomo nastavili naslednje vrednosti: 1, 2 in 4 leta. Z numeričnim reševanjem enačbe dobimo primere obnašanja funkcije za nekatere kombinacije parametrov .
Obnašanje funkcije s staranjem se je koda spremenila. Funkcija ni več monotona, ampak se nihanja sčasoma »umirijo« in obstaja težnja k na neko konstantno vrednost. Grafi kažejo: več , и , to je, počasneje kot se koda stara, hitrejši kot je razvoj nove kode in nižja kot je kakovost kode, manj sredstev bo ostalo za razvoj nove funkcionalnosti. Je bila želja dati vsaj en primer, v katerem “prilepil” blizu nule. Toda to je zahtevalo izbiro zelo slabih indikatorjev kakovosti razvoja in kode, ki se dolgo ne stara. Tudi v spodnjem levem grafu ostaja precejšnja količina sredstev za novo funkcionalnost. Pravilen odgovor na prvo vprašanje je torej tale: teoretično - da, možno je; praktično - komaj.
Vprašanja, na katera ni bilo mogoče odgovoriti:
- Ali je res, da teži k neki meji pri za vse ? Če ne za vse, za katere?
- Če omejitev obstaja, kako je odvisna njena vrednost ?
Drugo vprašanje. Ali lahko vzdrževanje kode povzroči neomejeno rast števila programerjev?
Označimo število programerjev, vključenih v razvoj nove kode. Kot zgoraj, — količino kode, napisane do določenega trenutka . Potem
Naj bo podpora za kodo zaposlena programerji. Ob upoštevanju kodeksa staranja,
od koder
če , Potem
Tako je odgovor na drugo vprašanje negativen: če je število razvijalcev nove kode omejeno, potem v pogojih staranja kode podpora ne more povzročiti neomejenega povečanja števila programerjev.
Zaključek
Obravnavani modeli so »mehki« matematični modeli [2]. So zelo preprosti. Kljub temu odvisnost rezultatov simulacije od vrednosti parametrov ustreza pričakovanemu za realne sisteme, kar govori v prid ustreznosti modelov in zadostni natančnosti za pridobitev kakovostnih ocen.
Reference
1. Elsgolts L.E., Norkin S.B. Uvod v teorijo diferencialnih enačb z odklonskim argumentom. Moskva. Založba "Science". 1971.
2. Arnold V.I. »Trdi« in »mehki« matematični modeli. Moskva. Založba MCNMO. 2004.
Vir: www.habr.com