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 () kulub uue koodi väljatöötamisele ja ülejäänud osa ajast 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 kogu selle ajani kirjutatud koodi hulk . Eeldades, et koodi kirjutamise kiirus on proportsionaalne , saame:
On loomulik eeldada, et koodi ülalpidamise tööjõukulud on võrdelised selle mahuga:
või
Kust
Saame hõlpsasti integreeritava diferentsiaalvõrrandi. Kui algsel ajahetkel on koodi hulk null, siis
juures funktsioon Ja . 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 kood vananeb ja enam ei toetata, siis korraga tuge vajava koodi hulk on juba võrdne Siis
а on lahendus hilinenud argumendiga diferentsiaalvõrrandile [1]:
Sellise võrrandi lahendus määratakse väärtuste täpsustamisega üheselt "enne aegade algust" . Kuna kood ei olnud meie puhul enne esialgset ajahetke veel kirjutatud juures .
Vaatame mõnda näidet. Mõõdame aega aastates ja koodi hulka tuhandetes ridades. Siis selleks 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 vastuvõetavad väärtused võivad olla: , , . 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 mõne parameetrikombinatsiooni jaoks .
Funktsiooni käitumine koodi vananedes on see muutunud. Funktsioon ei ole enam monotoonne, vaid kõikumised "rahunevad" aja jooksul ja on kalduvus mingi püsiva väärtuseni. Graafikud näitavad: seda rohkem , и , 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 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:
- Kas see on tõsi kipub mingi piirini kõigi jaoks ? Kui mitte kõigile, siis millistele?
- Kui piirmäär on olemas, siis kuidas selle väärtus sõltub ?
Teine küsimus. Kas koodi hooldus võib põhjustada programmeerijate arvu piiramatut kasvu?
Tähistame uue koodi väljatöötamisega seotud programmeerijate arv. Nagu eespool, — teatud ajahetkeni kirjutatud koodi hulk . Siis
Hoidke kooditugi hõivatud programmeerijad. Võttes arvesse vananemiskoodi,
Kust
kui siis
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