Koliko je programera potrebno za održavanje prethodno napisanog koda?

Prije nekog vremena vodio se razgovor između mene i mog dobrog prijatelja u kojem su se čule sljedeće fraze:

— Broj programera će stalno rasti - jer količina koda raste, a sve više i više programera stalno je potrebno da ga podržavaju.
— Ali kôd stari, neki od njih više nisu podržani. Čak je moguće da postoji neka vrsta ravnoteže.

Prisjećajući ih se nekoliko dana kasnije, zapitao sam se može li održavanje koda, koji s vremenom zahtijeva sve više i više resursa, u konačnici paralizirati razvoj novih funkcionalnosti ili bi to zahtijevalo neograničeno povećanje broja programera? Matematička analiza i diferencijalne jednadžbe pomogle su da se kvalitativno ocijeni ovisnost visine potpore o razvoju i pronađu odgovori na pitanja.

Pitanje jedno. Može li podrška “pojesti” sve razvojne resurse?

Zamislite tim programera u kojem je broj sudionika konstantan. Udio njihovog radnog vremena Koliko je programera potrebno za održavanje prethodno napisanog koda? (Koliko je programera potrebno za održavanje prethodno napisanog koda?) troši se na razvoj novog koda, a preostali dio vremena Koliko je programera potrebno za održavanje prethodno napisanog koda? ide u podršku. Unutar pretpostavki modela pretpostavljamo da je prva vrsta aktivnosti usmjerena na povećanje volumena koda, a druga je usmjerena na njegovu promjenu (ispravljanje grešaka) i nema značajan utjecaj na volumen koda.

Označimo Koliko je programera potrebno za održavanje prethodno napisanog koda? cjelokupnu količinu koda napisanu do te točke u vremenu Koliko je programera potrebno za održavanje prethodno napisanog koda?. Pod pretpostavkom da je brzina pisanja koda proporcionalna Koliko je programera potrebno za održavanje prethodno napisanog koda?, dobivamo:

Koliko je programera potrebno za održavanje prethodno napisanog koda?

Prirodno je pretpostaviti da su troškovi rada za održavanje koda proporcionalni njegovom volumenu:

Koliko je programera potrebno za održavanje prethodno napisanog koda?

ili

Koliko je programera potrebno za održavanje prethodno napisanog koda?

Odakle

Koliko je programera potrebno za održavanje prethodno napisanog koda?

Dobivamo diferencijalnu jednadžbu koja se lako integrira. Ako je u početnom trenutku vremena količina koda nula, tada

Koliko je programera potrebno za održavanje prethodno napisanog koda?

u Koliko je programera potrebno za održavanje prethodno napisanog koda? funkcija Koliko je programera potrebno za održavanje prethodno napisanog koda?I Koliko je programera potrebno za održavanje prethodno napisanog koda?. A to znači postupno smanjivanje razvoja novih funkcionalnosti na nulu i prijenos svih resursa na podršku.

Međutim, ako tijekom vremena Koliko je programera potrebno za održavanje prethodno napisanog koda? kod postaje zastario i prestaje biti podržan, zatim količina koda koja zahtijeva podršku u jednom trenutku Koliko je programera potrebno za održavanje prethodno napisanog koda? već je jednaka Koliko je programera potrebno za održavanje prethodno napisanog koda? Zatim

Koliko je programera potrebno za održavanje prethodno napisanog koda?

Koliko je programera potrebno za održavanje prethodno napisanog koda?

а Koliko je programera potrebno za održavanje prethodno napisanog koda? je rješenje diferencijalne jednadžbe s retardiranim argumentom [1]:

Koliko je programera potrebno za održavanje prethodno napisanog koda?

Rješenje takve jednadžbe je jedinstveno određeno zadavanjem vrijednosti Koliko je programera potrebno za održavanje prethodno napisanog koda? "prije početka vremena" Koliko je programera potrebno za održavanje prethodno napisanog koda?. Budući da kôd još nije bio napisan prije početnog trenutka u vremenu, u našem slučaju Koliko je programera potrebno za održavanje prethodno napisanog koda? na Koliko je programera potrebno za održavanje prethodno napisanog koda?.

Pogledajmo nekoliko primjera. Vrijeme ćemo mjeriti u godinama, a količinu koda u tisućama linija. Zatim za Koliko je programera potrebno za održavanje prethodno napisanog koda? prihvatljive su vrijednosti reda desetaka, uzet ćemo 50 i 100. To jest, u godinu dana razvojni tim će napisati pedeset, odnosno sto tisuća redaka koda. Za Koliko je programera potrebno za održavanje prethodno napisanog koda? prihvatljive vrijednosti mogu biti: Koliko je programera potrebno za održavanje prethodno napisanog koda?, Koliko je programera potrebno za održavanje prethodno napisanog koda?, Koliko je programera potrebno za održavanje prethodno napisanog koda?. To znači da razvojni tim može podržati količinu koda koju napiše u jednoj godini, bilo da je to četvrtina, pola ili puno radno vrijeme. Kao prosječni životni vijek koda postavit ćemo sljedeće vrijednosti: 1, 2 i 4 godine. Numeričkim rješavanjem jednadžbe dobivamo primjere ponašanja funkcije Koliko je programera potrebno za održavanje prethodno napisanog koda? za neke kombinacije parametara Koliko je programera potrebno za održavanje prethodno napisanog koda?.
Koliko je programera potrebno za održavanje prethodno napisanog koda?
Ponašanje funkcije Koliko je programera potrebno za održavanje prethodno napisanog koda? kako kod stari, mijenjao se. Funkcija više nije monotona, već se fluktuacije s vremenom „smiruju“ i postoji tendencija Koliko je programera potrebno za održavanje prethodno napisanog koda? na neku konstantnu vrijednost. Grafikoni pokazuju: što više Koliko je programera potrebno za održavanje prethodno napisanog koda?, Koliko je programera potrebno za održavanje prethodno napisanog koda? и Koliko je programera potrebno za održavanje prethodno napisanog koda?, odnosno što kod sporije stari, što je brži razvoj novog koda i što je kvaliteta koda niža, to će manje resursa ostati za razvoj nove funkcionalnosti. Postojala je želja da se navede barem jedan primjer u kojem Koliko je programera potrebno za održavanje prethodno napisanog koda? “ušuljao” blizu nule. Ali to je zahtijevalo odabir vrlo loših pokazatelja kvalitete razvoja i koda koji dugo ne stari. Čak iu donjem lijevom grafikonu ostaje značajna količina resursa za novu funkcionalnost. Stoga je točan odgovor na prvo pitanje otprilike sljedeći: teoretski - da, moguće je; praktično - jedva.

Pitanja na koja nije bilo moguće odgovoriti:

  1. Je li istina da Koliko je programera potrebno za održavanje prethodno napisanog koda? teži nekoj granici na Koliko je programera potrebno za održavanje prethodno napisanog koda? za sve Koliko je programera potrebno za održavanje prethodno napisanog koda?? Ako ne za sve, onda za koje?
  2. Ako ograničenje postoji, o čemu ovisi njegova vrijednost Koliko je programera potrebno za održavanje prethodno napisanog koda??

Drugo pitanje. Može li održavanje koda uzrokovati neograničeni rast broja programera?

Označimo Koliko je programera potrebno za održavanje prethodno napisanog koda? broj programera uključenih u razvoj novog koda. Kao gore, Koliko je programera potrebno za održavanje prethodno napisanog koda? — količina koda napisanog do određenog trenutka Koliko je programera potrebno za održavanje prethodno napisanog koda?, tada

Koliko je programera potrebno za održavanje prethodno napisanog koda?

Neka podrška za kod bude zaposlena Koliko je programera potrebno za održavanje prethodno napisanog koda? programeri. Uzimajući u obzir šifru starenja,

Koliko je programera potrebno za održavanje prethodno napisanog koda?

Odakle

Koliko je programera potrebno za održavanje prethodno napisanog koda?

Ako Koliko je programera potrebno za održavanje prethodno napisanog koda?tada

Koliko je programera potrebno za održavanje prethodno napisanog koda?

Dakle, odgovor na drugo pitanje je negativan: ako je broj programera novog koda ograničen, tada u uvjetima starenja koda podrška ne može uzrokovati neograničeno povećanje broja programera.

Zaključak

Razmatrani modeli su "meki" matematički modeli [2]. Vrlo su jednostavni. Unatoč tome, ovisnost rezultata simulacije o vrijednostima parametara odgovara onome što se očekuje za stvarne sustave, što govori u prilog adekvatnosti modela i dovoljnoj točnosti za dobivanje visokokvalitetnih procjena.

reference

1. Elsgolts L.E., Norkin S.B. Uvod u teoriju diferencijalnih jednadžbi s odstupajućim argumentom. Moskva. Izdavačka kuća "Science". 1971. godine.
2. Arnold V.I. “Tvrdi” i “meki” matematički modeli. Moskva. Izdavačka kuća MCNMO. 2004. godine.

Izvor: www.habr.com

Dodajte komentar