Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?

Pirms kāda laika starp mani un manu labu draugu notika saruna, kurā izskanēja šādas frāzes:

— Programmētāju skaits pastāvīgi pieaugs, jo koda apjoms pieaug, un arvien vairāk izstrādātāju tiek pieprasīts to atbalstīt.
— Bet kods noveco, daļa vairs netiek atbalstīta. Ir pat iespējams, ka pastāv kaut kāds līdzsvars.

Atceroties tos dažas dienas vēlāk, es prātoju, vai koda uzturēšana, kas laika gaitā prasa arvien vairāk resursu, galu galā var paralizēt jaunas funkcionalitātes izstrādi, vai arī tas prasītu neierobežotu programmētāju skaita pieaugumu? Matemātiskā analīze un diferenciālvienādojumi palīdzēja kvalitatīvi novērtēt atbalsta apjoma atkarību no attīstības un rast atbildes uz jautājumiem.

Pirmais jautājums. Vai atbalsts var “apēst” visus attīstības resursus?

Apsveriet programmētāju komandu, kurā dalībnieku skaits ir nemainīgs. Daļa viņu darba laika Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? (Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?) tiek tērēts jauna koda izstrādei un atlikušā laika daļa Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? iet uz atbalstu. Modeļa pieņēmumu ietvaros mēs pieņemam, ka pirmais darbības veids ir vērsts uz koda apjoma palielināšanu, bet otrais ir vērsts uz tā mainīšanu (kļūdu labošanu) un tam nav būtiskas ietekmes uz koda apjomu.

Apzīmēsim Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? viss koda daudzums, kas uzrakstīts līdz šim brīdim Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?. Pieņemot, ka koda rakstīšanas ātrums ir proporcionāls Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?, mēs iegūstam:

Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?

Ir dabiski pieņemt, ka darbaspēka izmaksas koda uzturēšanai ir proporcionālas tā apjomam:

Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?

vai

Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?

no kurienes

Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?

Mēs iegūstam diferenciālvienādojumu, ko var viegli integrēt. Ja sākuma brīdī koda daudzums ir nulle, tad

Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?

Pie Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? funkcija Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?Un Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?. Un tas nozīmē pakāpenisku jaunas funkcionalitātes izstrādes samazināšanos laika gaitā līdz nullei un visu resursu nodošanu atbalstam.

Tomēr, ja laikā Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? kods kļūst novecojis un vairs netiek atbalstīts, tad koda daudzums, kuram vienlaikus ir nepieciešams atbalsts Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? jau ir vienāds Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? Tad

Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?

Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?

а Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? ir diferenciālvienādojuma risinājums ar aizkavētu argumentu [1]:

Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?

Šāda vienādojuma risinājums tiek unikāli noteikts, norādot vērtības Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? "pirms laika sākuma" Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?. Tā kā kods vēl nebija uzrakstīts pirms sākotnējā laika, mūsu gadījumā Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? pie Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?.

Apskatīsim dažus piemērus. Mēs mērīsim laiku gados un koda daudzumu tūkstošos rindiņu. Tad priekš Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? ir pieņemamas vērtības desmitos, mēs ņemsim 50 un 100. Tas ir, gada laikā izstrādes komanda uzrakstīs attiecīgi piecdesmit un simts tūkstošus koda rindu. Priekš Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? pieņemamās vērtības var būt: Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?, Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?, Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?. Tas nozīmē, ka izstrādes komanda var atbalstīt gada laikā ierakstīto koda daudzumu neatkarīgi no tā, vai tas ir ceturksnis, puse vai pilna laika. Kā koda vidējo kalpošanas laiku mēs iestatīsim šādas vērtības: 1, 2 un 4 gadi. Atrisinot vienādojumu skaitliski, iegūstam funkcijas uzvedības piemērus Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? dažām parametru kombinācijām Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?.
Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?
Funkcijas uzvedība Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? kodam novecojot, tas ir mainījies. Funkcija vairs nav monotona, bet laika gaitā svārstības “nomierinās”, un ir tendence Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? uz kādu nemainīgu vērtību. Grafiki parāda: jo vairāk Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?, Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? и Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?, proti, jo lēnāk kods noveco, jo ātrāk tiks izstrādāts jauns kods un zemāka koda kvalitāte, jo mazāk resursu atliek jaunas funkcionalitātes izstrādei. Bija vēlme minēt kaut vienu piemēru, kurā Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? “pieglaudās” tuvu nullei. Bet tas prasīja ļoti sliktu izstrādes kvalitātes rādītāju atlasi un kodu, kas ilgstoši nenoveco. Pat apakšējā kreisajā grafikā jaunajai funkcionalitātei paliek ievērojams daudzums resursu. Tāpēc pareizā atbilde uz pirmo jautājumu drīzāk ir šāda: teorētiski - jā, tas ir iespējams; praktiski - diez vai.

Jautājumi, uz kuriem nevarēja atbildēt:

  1. Vai tā ir taisnība, ka Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? mēdz uz kādu robežu plkst Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? visiem Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?? Ja ne visiem, tad kuriem?
  2. Ja ierobežojums pastāv, no kā ir atkarīga tā vērtība Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu??

Otrais jautājums. Vai koda uzturēšana varētu izraisīt neierobežotu programmētāju skaita pieaugumu?

Apzīmēsim Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? jauna koda izstrādē iesaistīto programmētāju skaits. Kā iepriekš, Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? — koda daudzums, kas ierakstīts līdz noteiktam brīdim Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?. Tad

Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?

Aizņemt koda atbalstu Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu? programmētājiem. Ņemot vērā novecošanas kodu,

Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?

no kurienes

Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?

Ja Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?tad

Cik programmētāju ir nepieciešams, lai uzturētu iepriekš rakstītu kodu?

Tādējādi atbilde uz otro jautājumu ir negatīva: ja jaunā koda izstrādātāju skaits ir ierobežots, tad koda novecošanas apstākļos atbalsts nevar izraisīt neierobežotu programmētāju skaita pieaugumu.

Secinājums

Aplūkotie modeļi ir “mīkstie” matemātiskie modeļi [2]. Tie ir ļoti vienkārši. Neskatoties uz to, simulācijas rezultātu atkarība no parametru vērtībām atbilst reālajām sistēmām sagaidāmajam, tas runā par labu modeļu piemērotībai un pietiekamai precizitātei, lai iegūtu augstas kvalitātes aplēses.

Atsauces

1. Elsgolts L.E., Norkins S.B. Ievads diferenciālvienādojumu teorijā ar novirzošu argumentu. Maskava. Izdevniecība "Zinātne". 1971. gads.
2. Arnolds V.I. “Cietie” un “mīkstie” matemātiskie modeļi. Maskava. Izdevniecība MCNMO. 2004. gads.

Avots: www.habr.com

Pievieno komentāru