Jokin aika sitten käytiin keskustelu minun ja hyvän ystäväni välillä, jossa kuultiin seuraavat lauseet:
— Ohjelmoijien määrä kasvaa jatkuvasti - koska koodin määrä kasvaa, ja yhä useammat kehittäjät tarvitsevat jatkuvasti tukea.
— Mutta koodi vanhenee, osaa siitä ei enää tueta. On jopa mahdollista, että on olemassa jonkinlainen tasapaino.
Muistaessani niitä muutaman päivän kuluttua mietin, voisiko koodin ylläpito, joka vaatii yhä enemmän resursseja ajan myötä, lamaannuttaa uusien toimintojen kehittämisen vai vaatisiko se ohjelmoijien määrän rajoittamattoman lisäämisen? Matemaattinen analyysi ja differentiaaliyhtälöt auttoivat arvioimaan laadullisesti tuen määrän kehitysriippuvuutta ja löytämään vastauksia kysymyksiin.
Kysymys yksi. Voiko tuki "syötää" kaikki kehitysresurssit?
Harkitse ohjelmoijien ryhmää, jossa osallistujien määrä on vakio. Osuus työajastaan () käytetään uuden koodin kehittämiseen ja jäljellä olevasta ajasta menee tueksi. Mallin oletuksissa oletetaan, että ensimmäisen tyyppinen toiminta on suunnattu koodin määrän lisäämiseen ja toinen sen muuttamiseen (virheiden korjaamiseen) eikä sillä ole merkittävää vaikutusta koodin määrään.
Merkitään koko siihen mennessä kirjoitetun koodin määrä . Olettaen, että koodin kirjoitusnopeus on verrannollinen , saamme:
On luonnollista olettaa, että koodin ylläpidon työvoimakustannukset ovat verrannollisia sen määrään:
tai
Mistä
Saamme differentiaaliyhtälön, joka voidaan helposti integroida. Jos alkuhetkellä koodin määrä on nolla, niin
At toiminto Ja . Ja tämä tarkoittaa asteittaista vähentämistä ajan myötä uusien toimintojen kehittämisessä nollaan ja kaikkien resurssien siirtämistä tukeen.
Jos kuitenkin aikana koodi vanhenee ja lakkaa olemasta tuettu, sitten tukea tarvitsevan koodin määrä kerrallaan on jo tasa-arvoinen Sitten
а on ratkaisu differentiaaliyhtälöön, jossa on hidastettu argumentti [1]:
Tällaisen yhtälön ratkaisu määräytyy yksiselitteisesti määrittämällä arvot "ennen aikojen alkua" . Koska koodia ei ollut vielä kirjoitettu ennen alkuperäistä ajanhetkeä, meidän tapauksessamme at .
Katsotaanpa muutamia esimerkkejä. Mittaamme aikaa vuosina ja koodin määrää tuhansina riveinä. Siis varten Kymmenien luokkaa olevat arvot ovat hyväksyttäviä, otamme 50 ja 100. Eli vuodessa kehitystiimi kirjoittaa viisikymmentä ja satatuhatta koodiriviä, vastaavasti. varten hyväksyttävät arvot voivat olla: , , . Tämä tarkoittaa, että kehitystiimi voi tukea vuodessa kirjoittamansa koodin määrää, olipa kyseessä neljännes, puoli tai kokopäiväinen. Määritämme koodin keskimääräiseksi elinkaareksi seuraavat arvot: 1, 2 ja 4 vuotta. Ratkaisemalla yhtälön numeerisesti saamme esimerkkejä funktion käyttäytymisestä joillekin parametriyhdistelmille .
Toiminnon käyttäytyminen koodin ikääntyessä se on muuttunut. Toiminto ei ole enää yksitoikkoinen, vaan heilahtelut "hiljentyvät" ajan myötä ja niillä on taipumus johonkin vakioarvoon. Kaaviot osoittavat: mitä enemmän , и , eli mitä hitaammin koodi vanhenee, mitä nopeammin uusi koodi kehittyy ja mitä huonompi koodin laatu on, sitä vähemmän resursseja jää uuden toiminnallisuuden kehittämiseen. Haluttiin antaa ainakin yksi esimerkki, jossa "käpertyi" lähelle nollaa. Mutta tämä edellytti erittäin huonojen kehityslaadun indikaattoreiden ja koodin valintaa, joka ei vanhene pitkään. Jopa vasemmassa alakulmassa uudelle toiminnallisuudelle jää huomattava määrä resursseja. Siksi oikea vastaus ensimmäiseen kysymykseen on pikemminkin tämä: teoriassa - kyllä, se on mahdollista; käytännössä - tuskin.
Kysymyksiä, joihin ei voitu vastata:
- Onko se totta pyrkii johonkin rajaan kaikille ? Jos ei kaikille, niin mille?
- Jos raja on olemassa, miten sen arvo riippuu ?
Kysymys kaksi. Voisiko koodin ylläpito aiheuttaa ohjelmoijien määrän rajattoman kasvun?
Merkitään uuden koodin kehittämiseen osallistuneiden ohjelmoijien määrä. Kuten edellä, — tiettyyn hetkeen asti kirjoitetun koodin määrä . sitten
Pidä koodituki kiireisenä ohjelmoijat. Ottaen huomioon ikääntymiskoodin,
Mistä
Jos , Sitten
Siten vastaus toiseen kysymykseen on kielteinen: jos uuden koodin kehittäjien määrä on rajoitettu, niin ikääntyvän koodin olosuhteissa tuki ei voi aiheuttaa ohjelmoijien määrän rajoittamatonta kasvua.
Johtopäätös
Tarkasteltavat mallit ovat "pehmeitä" matemaattisia malleja [2]. Ne ovat hyvin yksinkertaisia. Siitä huolimatta simulointitulosten riippuvuus parametriarvoista vastaa sitä, mitä todellisille järjestelmille odotetaan, mikä puhuu mallien riittävyyden ja riittävän tarkkuuden puolesta korkealaatuisten arvioiden saamiseksi.
Viitteet
1. Elsgolts L.E., Norkin S.B. Johdatus differentiaaliyhtälöiden teoriaan poikkeavalla argumentilla. Moskova. Kustantaja "Science". 1971.
2. Arnold V.I. "Kovat" ja "pehmeät" matemaattiset mallit. Moskova. Kustantaja MCNMO. 2004.
Lähde: will.com