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

Prije nekog vremena dogodio 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 programera je stalno potrebno da ga podržavaju.
— Ali kod je zastario, neki od njega više nisu podržani. Moguće je čak i da postoji neka vrsta ravnoteže.

Sjetivši ih se nekoliko dana kasnije, zapitao sam se da li bi održavanje koda, koje zahtijeva sve više resursa tokom vremena, moglo na kraju paralizirati razvoj nove funkcionalnosti ili bi zahtijevalo neograničeno povećanje broja programera? Matematička analiza i diferencijalne jednadžbe pomogle su da se kvalitativno procijeni ovisnost količine podrške od razvoja i pronađu odgovori na pitanja.

Prvo pitanje. Može li podrška „pojesti“ sve razvojne resurse?

Zamislite tim programera u kojem je broj učesnika 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?) se troši na razvoj novog koda, a preostali dio vremena Koliko je programera potrebno za održavanje prethodno napisanog koda? ide na podršku. U okviru pretpostavki modela pretpostavljamo da je prva vrsta aktivnosti usmjerena na povećanje obima koda, a druga na njegovu promjenu (ispravljanje grešaka) i da nema značajniji utjecaj na obim koda.

Označimo Koliko je programera potrebno za održavanje prethodno napisanog koda? cjelokupna količina koda napisana do tog trenutka 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?, dobijamo:

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

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

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?

Dobijamo diferencijalnu jednačinu koja se lako može integrirati. Ako je u početnom trenutku 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 postepeno smanjenje razvoja nove funkcionalnosti s vremenom na nulu i prijenos svih resursa na podršku.

Međutim, ako tokom vremena Koliko je programera potrebno za održavanje prethodno napisanog koda? kod postaje zastario i prestaje biti podržan, tada količina koda zahtijeva podršku u isto vrijeme Koliko je programera potrebno za održavanje prethodno napisanog koda? je već 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 sa retardiranim argumentom [1]:

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

Rješenje takve jednačine je jednoznačno određeno specificiranjem 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?. Pošto kod u našem slučaju još nije bio napisan prije početnog trenutka Koliko je programera potrebno za održavanje prethodno napisanog koda? at Koliko je programera potrebno za održavanje prethodno napisanog koda?.

Pogledajmo nekoliko primjera. Vrijeme ćemo mjeriti u godinama, a količinu koda u hiljadama redova. Onda za Koliko je programera potrebno za održavanje prethodno napisanog koda? Vrijednosti reda desetica su prihvatljive, mi ćemo uzeti 50 i 100. To jest, za godinu dana razvojni tim će napisati pedeset, odnosno sto hiljada linija 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 godini, bilo da se radi o četvrtini, pola ili puno radno vrijeme. Kao prosječni vijek trajanja koda, postavićemo sljedeće vrijednosti: 1, 2 i 4 godine. Numerički rješavajući jednadžbu, 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, to se promijenilo. Funkcija više nije monotona, ali se fluktuacije s vremenom „smiruju“ i postoji tendencija da se 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 kvalitet koda niži, 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šuškani" blizu nule. Ali to je zahtijevalo odabir vrlo loših indikatora kvaliteta razvoja i koda koji ne stari dugo vremena. Čak iu donjem lijevom grafikonu ostaje značajna količina resursa za novu funkcionalnost. Stoga je tačan odgovor na prvo pitanje prije sljedeći: teoretski - da, moguće je; praktično - jedva.

Pitanja na koja nije bilo moguće odgovoriti:

  1. Da li je to istina 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čen rast broja programera?

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

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

Podrška koda zauzeta Koliko je programera potrebno za održavanje prethodno napisanog koda? programeri. Uzimajući u obzir kod 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?, onda

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, onda u uvjetima starenja koda podrška ne može uzrokovati neograničeno povećanje broja programera.

zaključak

Modeli koji se razmatraju su “meki” matematički modeli [2]. Vrlo su jednostavne. Ipak, ovisnost rezultata simulacije o vrijednostima parametara odgovara onome što se očekuje za stvarne sisteme, što govori u prilog adekvatnosti modela i dovoljnoj tačnosti za dobijanje visokokvalitetnih procjena.

Reference

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

izvor: www.habr.com

Dodajte komentar