Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?

Mõni aeg tagasi toimus minu ja mu hea sõbra vahel vestlus, milles kõlasid järgmised laused:

— Programmeerijate arv kasvab pidevalt – kuna koodi hulk kasvab ja aina rohkematelt arendajatelt nõutakse seda pidevalt toetama.
— Aga kood hakkab vananema, osa sellest enam ei toetata. On isegi võimalik, et valitseb mingisugune tasakaal.

Neid paar päeva hiljem meenutades mõtlesin, kas aja jooksul aina rohkem ressursse nõudva koodi säilitamine võib lõpuks halvata uue funktsionaalsuse väljatöötamise või nõuab see piiramatult programmeerijate arvu suurendamist? Matemaatiline analüüs ja diferentsiaalvõrrandid aitasid kvalitatiivselt hinnata toetuse suuruse sõltuvust arengust ja leida vastuseid küsimustele.

Küsimus üks. Kas toetus võib kõik arendusressursid ära süüa?

Mõelge programmeerijate meeskonnale, kus osalejate arv on püsiv. Jaga oma tööajast Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? (Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?) kulub uue koodi väljatöötamisele ja ülejäänud osa ajast Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? läheb toeks. Mudeli eelduste piires eeldame, et esimest tüüpi tegevus on suunatud koodi mahu suurendamisele ja teine ​​selle muutmisele (vigade parandamisele) ega avalda koodi mahule olulist mõju.

Tähistame Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? kogu selle ajani kirjutatud koodi hulk Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?. Eeldades, et koodi kirjutamise kiirus on proportsionaalne Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?, saame:

Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?

On loomulik eeldada, et koodi ülalpidamise tööjõukulud on võrdelised selle mahuga:

Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?

või

Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?

Kust

Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?

Saame hõlpsasti integreeritava diferentsiaalvõrrandi. Kui algsel ajahetkel on koodi hulk null, siis

Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?

juures Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? funktsioon Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?Ja Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?. Ja see tähendab aja jooksul uute funktsionaalsuste arendamise järkjärgulist vähenemist nullini ja kõigi ressursside ülekandmist toele.

Kui aga aja jooksul Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? kood vananeb ja enam ei toetata, siis korraga tuge vajava koodi hulk Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? on juba võrdne Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? Siis

Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?

Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?

а Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? on lahendus hilinenud argumendiga diferentsiaalvõrrandile [1]:

Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?

Sellise võrrandi lahendus määratakse väärtuste täpsustamisega üheselt Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? "enne aegade algust" Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?. Kuna kood ei olnud meie puhul enne esialgset ajahetke veel kirjutatud Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? juures Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?.

Vaatame mõnda näidet. Mõõdame aega aastates ja koodi hulka tuhandetes ridades. Siis selleks Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? väärtused suurusjärgus kümneid on vastuvõetavad, võtame 50 ja 100. See tähendab, et aasta pärast kirjutab arendusmeeskond vastavalt viiskümmend ja sada tuhat koodirida. Sest Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? vastuvõetavad väärtused võivad olla: Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?, Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?, Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?. See tähendab, et arendusmeeskond saab toetada aasta jooksul kirjutatava koodi hulka, olgu see siis veerand, pool või täistööaeg. Koodi keskmise elueana määrame järgmised väärtused: 1, 2 ja 4 aastat. Lahendades võrrandi numbriliselt, saame näiteid funktsiooni käitumisest Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? mõne parameetrikombinatsiooni jaoks Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?.
Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?
Funktsiooni käitumine Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? koodi vananedes on see muutunud. Funktsioon ei ole enam monotoonne, vaid kõikumised "rahunevad" aja jooksul ja on kalduvus Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? mingi püsiva väärtuseni. Graafikud näitavad: seda rohkem Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?, Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? и Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?, ehk mida aeglasemalt kood vananeb, mida kiiremini areneb uus kood ja mida madalam on koodi kvaliteet, seda vähem jääb ressursse uue funktsionaalsuse arendamiseks. Tekkis soov tuua vähemalt üks näide, milles Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? nulli lähedale "muksunud". Kuid selleks oli vaja valida väga kehvad arenduskvaliteedi näitajad ja kood, mis ei vanane kaua. Isegi vasakpoolses alumises graafikus jääb uue funktsionaalsuse jaoks alles märkimisväärne hulk ressursse. Seetõttu on õige vastus esimesele küsimusele pigem selline: teoreetiliselt – jah, see on võimalik; praktiliselt – vaevalt.

Küsimused, millele ei osatud vastata:

  1. Kas see on tõsi Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? kipub mingi piirini Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? kõigi jaoks Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?? Kui mitte kõigile, siis millistele?
  2. Kui piirmäär on olemas, siis kuidas selle väärtus sõltub Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi??

Teine küsimus. Kas koodi hooldus võib põhjustada programmeerijate arvu piiramatut kasvu?

Tähistame Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? uue koodi väljatöötamisega seotud programmeerijate arv. Nagu eespool, Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? — teatud ajahetkeni kirjutatud koodi hulk Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?. Siis

Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?

Hoidke kooditugi hõivatud Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi? programmeerijad. Võttes arvesse vananemiskoodi,

Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?

Kust

Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?

kui Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?siis

Kui palju programmeerijaid on vaja, et säilitada varem kirjutatud koodi?

Seega on vastus teisele küsimusele eitav: kui uue koodi arendajate arv on piiratud, siis vananeva koodi tingimustes ei saa tugi põhjustada programmeerijate arvu piiramatut kasvu.

Järeldus

Vaadeldavad mudelid on "pehmed" matemaatilised mudelid [2]. Need on väga lihtsad. Sellegipoolest vastab simulatsioonitulemuste sõltuvus parameetrite väärtustest reaalsete süsteemide puhul eeldatule, mis räägib mudelite adekvaatsuse ja piisava täpsuse kasuks kvaliteetsete hinnangute saamiseks.

Viited

1. Elsgolts L.E., Norkin S.B. Sissejuhatus hälbiva argumendiga diferentsiaalvõrrandite teooriasse. Moskva. Kirjastus "Teadus". 1971. aastal.
2. Arnold V.I. “Kõvad” ja “pehmed” matemaatilised mudelid. Moskva. Kirjastus MCNMO. 2004. aasta.

Allikas: www.habr.com

Lisa kommentaar