Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?

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 Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? (Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?) käytetään uuden koodin kehittämiseen ja jäljellä olevasta ajasta Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? 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 Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? koko siihen mennessä kirjoitetun koodin määrä Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?. Olettaen, että koodin kirjoitusnopeus on verrannollinen Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?, saamme:

Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?

On luonnollista olettaa, että koodin ylläpidon työvoimakustannukset ovat verrannollisia sen määrään:

Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?

tai

Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?

Mistä

Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?

Saamme differentiaaliyhtälön, joka voidaan helposti integroida. Jos alkuhetkellä koodin määrä on nolla, niin

Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?

At Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? toiminto Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?Ja Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?. 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 Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? koodi vanhenee ja lakkaa olemasta tuettu, sitten tukea tarvitsevan koodin määrä kerrallaan Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? on jo tasa-arvoinen Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? Sitten

Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?

Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?

а Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? on ratkaisu differentiaaliyhtälöön, jossa on hidastettu argumentti [1]:

Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?

Tällaisen yhtälön ratkaisu määräytyy yksiselitteisesti määrittämällä arvot Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? "ennen aikojen alkua" Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?. Koska koodia ei ollut vielä kirjoitettu ennen alkuperäistä ajanhetkeä, meidän tapauksessamme Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? at Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?.

Katsotaanpa muutamia esimerkkejä. Mittaamme aikaa vuosina ja koodin määrää tuhansina riveinä. Siis varten Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? Kymmenien luokkaa olevat arvot ovat hyväksyttäviä, otamme 50 ja 100. Eli vuodessa kehitystiimi kirjoittaa viisikymmentä ja satatuhatta koodiriviä, vastaavasti. varten Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? hyväksyttävät arvot voivat olla: Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?, Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?, Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?. 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ä Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? joillekin parametriyhdistelmille Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?.
Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?
Toiminnon käyttäytyminen Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? koodin ikääntyessä se on muuttunut. Toiminto ei ole enää yksitoikkoinen, vaan heilahtelut "hiljentyvät" ajan myötä ja niillä on taipumus Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? johonkin vakioarvoon. Kaaviot osoittavat: mitä enemmän Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?, Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? и Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?, 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 Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? "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:

  1. Onko se totta Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? pyrkii johonkin rajaan Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? kaikille Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?? Jos ei kaikille, niin mille?
  2. Jos raja on olemassa, miten sen arvo riippuu Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia??

Kysymys kaksi. Voisiko koodin ylläpito aiheuttaa ohjelmoijien määrän rajattoman kasvun?

Merkitään Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? uuden koodin kehittämiseen osallistuneiden ohjelmoijien määrä. Kuten edellä, Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? — tiettyyn hetkeen asti kirjoitetun koodin määrä Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?. sitten

Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?

Pidä koodituki kiireisenä Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia? ohjelmoijat. Ottaen huomioon ikääntymiskoodin,

Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?

Mistä

Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?

Jos Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?, Sitten

Kuinka monta ohjelmoijaa tarvitaan ylläpitämään aiemmin kirjoitettua koodia?

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

Lisää kommentti