Câți programatori sunt necesari pentru a menține codul scris anterior?

Cu ceva timp în urmă, a avut loc o conversație între mine și un bun prieten de-al meu în care s-au auzit următoarele fraze:

— Numărul de programatori va crește constant - deoarece cantitatea de cod este în creștere și din ce în ce mai mulți dezvoltatori sunt nevoiți în mod constant să îl susțină.
— Dar codul devine vechi, o parte din el nu mai este acceptată. Este chiar posibil să existe un fel de echilibru.

Amintindu-le câteva zile mai târziu, m-am întrebat dacă menținerea codului, necesitând tot mai multe resurse în timp, ar putea paraliza în cele din urmă dezvoltarea de noi funcționalități sau ar necesita o creștere nelimitată a numărului de programatori? Analiza matematică și ecuațiile diferențiale au ajutat la evaluarea calitativă a dependenței cantității de sprijin de dezvoltare și la găsirea răspunsurilor la întrebări.

Întrebarea unu. Poate sprijinul să „mâncă” toate resursele de dezvoltare?

Luați în considerare o echipă de programatori în care numărul de participanți este constant. Cota din timpul lor de lucru Câți programatori sunt necesari pentru a menține codul scris anterior? (Câți programatori sunt necesari pentru a menține codul scris anterior?) este cheltuită pentru dezvoltarea unui cod nou și partea rămasă de timp Câți programatori sunt necesari pentru a menține codul scris anterior? merge la sprijin. În cadrul ipotezelor modelului, presupunem că primul tip de activitate vizează creșterea volumului de cod, iar al doilea vizează modificarea acestuia (corectarea erorilor) și nu are un impact semnificativ asupra volumului de cod.

Să notăm Câți programatori sunt necesari pentru a menține codul scris anterior? întreaga cantitate de cod scrisă până în acel moment Câți programatori sunt necesari pentru a menține codul scris anterior?. Presupunând că viteza de scriere a codului este proporțională Câți programatori sunt necesari pentru a menține codul scris anterior?, primim:

Câți programatori sunt necesari pentru a menține codul scris anterior?

Este firesc să presupunem că costurile cu forța de muncă pentru menținerea codului sunt proporționale cu volumul acestuia:

Câți programatori sunt necesari pentru a menține codul scris anterior?

sau

Câți programatori sunt necesari pentru a menține codul scris anterior?

De unde

Câți programatori sunt necesari pentru a menține codul scris anterior?

Obținem o ecuație diferențială care poate fi ușor integrată. Dacă în momentul inițial de timp cantitatea de cod este zero, atunci

Câți programatori sunt necesari pentru a menține codul scris anterior?

la Câți programatori sunt necesari pentru a menține codul scris anterior? funcție Câți programatori sunt necesari pentru a menține codul scris anterior?Și Câți programatori sunt necesari pentru a menține codul scris anterior?. Și asta înseamnă o reducere treptată în timp a dezvoltării de noi funcționalități la zero și transferul tuturor resurselor pentru suport.

Cu toate acestea, dacă în timpul timpului Câți programatori sunt necesari pentru a menține codul scris anterior? codul devine învechit și încetează să mai fie acceptat, apoi cantitatea de cod care necesită suport la un moment dat Câți programatori sunt necesari pentru a menține codul scris anterior? este deja egal Câți programatori sunt necesari pentru a menține codul scris anterior? Apoi

Câți programatori sunt necesari pentru a menține codul scris anterior?

Câți programatori sunt necesari pentru a menține codul scris anterior?

а Câți programatori sunt necesari pentru a menține codul scris anterior? este o soluție la o ecuație diferențială cu un argument retardat [1]:

Câți programatori sunt necesari pentru a menține codul scris anterior?

Soluția unei astfel de ecuații este determinată în mod unic prin specificarea valorilor Câți programatori sunt necesari pentru a menține codul scris anterior? „Înainte de începutul timpurilor” Câți programatori sunt necesari pentru a menține codul scris anterior?. Deoarece codul nu fusese încă scris înainte de momentul inițial în timp, în cazul nostru Câți programatori sunt necesari pentru a menține codul scris anterior? la Câți programatori sunt necesari pentru a menține codul scris anterior?.

Să ne uităm la câteva exemple. Vom măsura timpul în ani și cantitatea de cod în mii de linii. Atunci pentru Câți programatori sunt necesari pentru a menține codul scris anterior? valori de ordinul zecilor sunt acceptabile, vom lua 50 și 100. Adică, într-un an, echipa de dezvoltare va scrie cincizeci și, respectiv, o sută de mii de linii de cod. Pentru Câți programatori sunt necesari pentru a menține codul scris anterior? valorile acceptabile pot fi: Câți programatori sunt necesari pentru a menține codul scris anterior?, Câți programatori sunt necesari pentru a menține codul scris anterior?, Câți programatori sunt necesari pentru a menține codul scris anterior?. Aceasta înseamnă că o echipă de dezvoltare poate suporta cantitatea de cod pe care o scrie într-un an, fie că este un sfert, jumătate sau normă întreagă. Ca durata medie de viață a codului, vom seta următoarele valori: 1, 2 și 4 ani. Rezolvând ecuația numeric, obținem exemple de comportament al funcției Câți programatori sunt necesari pentru a menține codul scris anterior? pentru unele combinații de parametri Câți programatori sunt necesari pentru a menține codul scris anterior?.
Câți programatori sunt necesari pentru a menține codul scris anterior?
Comportamentul funcției Câți programatori sunt necesari pentru a menține codul scris anterior? pe măsură ce codul îmbătrânește, s-a schimbat. Funcția nu mai este monotonă, dar fluctuațiile „se calmează” în timp și există tendința de a Câți programatori sunt necesari pentru a menține codul scris anterior? la o valoare constantă. Graficele arată: cu atât mai mult Câți programatori sunt necesari pentru a menține codul scris anterior?, Câți programatori sunt necesari pentru a menține codul scris anterior? и Câți programatori sunt necesari pentru a menține codul scris anterior?, adică cu cât codul îmbătrânește mai lent, cu atât mai rapidă dezvoltarea codului nou și cu cât este mai scăzută calitatea codului, cu atât mai puține resurse vor rămâne pentru dezvoltarea de noi funcționalități. A existat dorinţa de a da măcar un exemplu în care Câți programatori sunt necesari pentru a menține codul scris anterior? „înghesuit” aproape de zero. Dar acest lucru a necesitat selectarea unor indicatori de calitate foarte slabă a dezvoltării și a unui cod care nu îmbătrânește mult timp. Chiar și în graficul din stânga jos, rămâne o cantitate semnificativă de resurse pentru noua funcționalitate. Prin urmare, răspunsul corect la prima întrebare este mai degrabă acesta: teoretic - da, este posibil; practic – cu greu.

Întrebări la care nu s-a putut răspunde:

  1. Este adevarat ca Câți programatori sunt necesari pentru a menține codul scris anterior? tinde la o anumită limită la Câți programatori sunt necesari pentru a menține codul scris anterior? pentru toți Câți programatori sunt necesari pentru a menține codul scris anterior?? Dacă nu pentru toată lumea, atunci pentru care?
  2. Dacă există o limită, de ce depinde valoarea acesteia Câți programatori sunt necesari pentru a menține codul scris anterior??

Întrebarea doi. Ar putea întreținerea codului să determine o creștere nelimitată a numărului de programatori?

Să notăm Câți programatori sunt necesari pentru a menține codul scris anterior? numărul de programatori implicați în dezvoltarea codului nou. Ca mai sus, Câți programatori sunt necesari pentru a menține codul scris anterior? — cantitatea de cod scrisă până la un moment dat Câți programatori sunt necesari pentru a menține codul scris anterior?. atunci

Câți programatori sunt necesari pentru a menține codul scris anterior?

Țineți ocupat suportul pentru coduri Câți programatori sunt necesari pentru a menține codul scris anterior? programatori. Ținând cont de codul de vechime,

Câți programatori sunt necesari pentru a menține codul scris anterior?

De unde

Câți programatori sunt necesari pentru a menține codul scris anterior?

Dacă Câți programatori sunt necesari pentru a menține codul scris anterior?, Apoi,

Câți programatori sunt necesari pentru a menține codul scris anterior?

Astfel, răspunsul la a doua întrebare este negativ: dacă numărul de dezvoltatori de cod nou este limitat, atunci, în condițiile vechimii codului, suportul nu poate provoca o creștere nelimitată a numărului de programatori.

Concluzie

Modelele luate în considerare sunt modele matematice „soft” [2]. Sunt foarte simple. Cu toate acestea, dependența rezultatelor simulării de valorile parametrilor corespunde cu ceea ce se așteaptă pentru sistemele reale, aceasta vorbește în favoarea adecvării modelelor și a unei precizii suficiente pentru a obține estimări de înaltă calitate.

Referinte

1. Elsgolts L.E., Norkin S.B. Introducere în teoria ecuațiilor diferențiale cu argument deviant. Moscova. Editura „Știință”. 1971.
2. Arnold V.I. Modele matematice „dure” și „moale”. Moscova. Editura MCNMO. 2004.

Sursa: www.habr.com

Adauga un comentariu