Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?

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 Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? (Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?) se porabi za razvoj nove kode, preostali del časa pa Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? 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 Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? celotno količino kode, napisane do te točke v času Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?. Ob predpostavki, da je hitrost pisanja kode sorazmerna Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?, dobimo:

Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?

Naravno je domnevati, da so stroški dela za vzdrževanje kode sorazmerni z njenim obsegom:

Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?

ali

Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?

od koder

Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?

Dobimo diferencialno enačbo, ki jo je mogoče enostavno integrirati. Če je v začetnem trenutku količina kode nič, potem

Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?

Ob Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? funkcijo Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?In Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?. In to pomeni postopno zmanjševanje razvoja novih funkcionalnosti na nič in prenos vseh virov v podporo.

Vendar, če med časom Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? koda postane zastarela in ni več podprta, nato količina kode, ki zahteva podporo naenkrat Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? je že enaka Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? Potem

Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?

Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?

а Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? je rešitev diferencialne enačbe z zaostalim argumentom [1]:

Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?

Rešitev takšne enačbe je enolično določena z določitvijo vrednosti Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? "pred začetkom časa" Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?. Ker koda še ni bila napisana pred začetnim trenutkom v našem primeru Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? na Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?.

Poglejmo si nekaj primerov. Čas bomo merili v letih, količino kode pa v tisočih vrsticah. Potem za Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? 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 Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? sprejemljive vrednosti so lahko: Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?, Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?, Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?. 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 Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? za nekatere kombinacije parametrov Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?.
Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?
Obnašanje funkcije Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? s staranjem se je koda spremenila. Funkcija ni več monotona, ampak se nihanja sčasoma »umirijo« in obstaja težnja k Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? na neko konstantno vrednost. Grafi kažejo: več Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?, Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? и Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?, 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 Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? “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:

  1. Ali je res, da Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? teži k neki meji pri Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? za vse Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?? Če ne za vse, za katere?
  2. Če omejitev obstaja, kako je odvisna njena vrednost Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode??

Drugo vprašanje. Ali lahko vzdrževanje kode povzroči neomejeno rast števila programerjev?

Označimo Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? število programerjev, vključenih v razvoj nove kode. Kot zgoraj, Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? — količino kode, napisane do določenega trenutka Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?. Potem

Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?

Naj bo podpora za kodo zaposlena Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode? programerji. Ob upoštevanju kodeksa staranja,

Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?

od koder

Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?

če Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?, Potem

Koliko programerjev je potrebnih za vzdrževanje predhodno napisane kode?

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

Dodaj komentar