Nemrég zajlott egy beszélgetés köztem és egy jó barátommal, amelyben a következő mondatok hangzottak el:
— A programozók száma folyamatosan nőni fog – mert a kód mennyisége növekszik, és egyre több fejlesztőnek kell folyamatosan támogatnia.
— De a kód öregszik, egy része már nem támogatott. Még az is lehetséges, hogy van valamiféle egyensúly.
Néhány nappal később emlékezve rájuk, azon töprengtem, vajon az idővel egyre több erőforrást igénylő kód karbantartása végső soron megbéníthatja-e az új funkciók fejlesztését, vagy a programozók számának korlátlan növelését követeli meg? Matematikai elemzés és differenciálegyenletek segítettek a támogatás összegének fejlesztéstől való függőségének minőségi felmérésében és a kérdésekre adott válaszok megtalálásában.
Egy kérdés. A támogatás „felfalhat” minden fejlesztési forrást?
Vegyünk egy olyan programozói csapatot, amelyben a résztvevők száma állandó. Munkaidejük megosztása () az új kód fejlesztésére, és a fennmaradó időre fordítódik támogatásra megy. A modell feltételezésein belül azt feltételezzük, hogy az első típusú tevékenység a kód mennyiségének növelésére, a második pedig annak megváltoztatására (hibák kijavítására) irányul, és nincs jelentős hatással a kód mennyiségére.
Jelöljük az addig megírt kód teljes mennyisége . Feltételezve, hogy a kódírás sebessége arányos , kapunk:
Természetes azt feltételezni, hogy a kód fenntartásának munkaerőköltségei arányosak a mennyiségével:
vagy
ahonnan
Könnyen integrálható differenciálegyenletet kapunk. Ha a kezdeti pillanatban a kód mennyisége nulla, akkor
-On funkció És . Ez pedig azt jelenti, hogy idővel fokozatosan nullára csökken az új funkciók fejlesztése, és minden erőforrás átkerül a támogatásra.
Ha azonban az idő alatt a kód elavulttá válik, és megszűnik a támogatás, majd a támogatást igénylő kód mennyisége egyszerre már egyenlő Akkor
а egy késleltetett argumentumú differenciálegyenlet megoldása [1]:
Egy ilyen egyenlet megoldását az értékek megadása határozza meg egyértelműen "az idők kezdete előtt" . Mivel a kód még nem íródott meg a kezdeti pillanat előtt, esetünkben -on .
Nézzünk néhány példát. Az időt években mérjük, a kód mennyiségét pedig ezer sorokban. Aztán azért tízes nagyságrendű értékek elfogadhatók, mi 50-et és 100-at veszünk. Vagyis egy év múlva ötven, illetve százezer soros kódot ír a fejlesztőcsapat. Mert elfogadható értékek lehetnek: , , . Ez azt jelenti, hogy egy fejlesztőcsapat támogatni tudja az egy év alatt megírt kódmennyiséget, legyen az egy negyedév, fél vagy teljes munkaidő. A kód átlagos élettartamaként a következő értékeket állítjuk be: 1, 2 és 4 év. Az egyenletet numerikusan megoldva példákat kapunk a függvény viselkedésére egyes paraméterkombinációkhoz .
A funkció viselkedése ahogy a kód öregszik, úgy változott. A funkció már nem monoton, de az ingadozások idővel „lecsillapodnak”, és hajlamosak valamilyen állandó értékre. A grafikonok azt mutatják: annál több , и , vagyis minél lassabban öregszik a kód, minél gyorsabban fejlődik az új kód és minél alacsonyabb a kód minősége, annál kevesebb erőforrás marad az új funkcionalitás fejlesztésére. Felmerült a vágy, hogy legalább egy példát mondjak, amelyben nullához közel „bújt”. Ehhez azonban nagyon rossz fejlesztési minőségi mutatókat és olyan kódot kellett kiválasztani, amely nem öregszik sokáig. Még a bal alsó grafikonon is jelentős mennyiségű erőforrás marad az új funkcióhoz. Ezért az első kérdésre a helyes válasz inkább a következő: elméletileg - igen, lehetséges; gyakorlatilag – alig.
Kérdések, amelyekre nem lehetett válaszolni:
- Igaz-e az hajlamos bizonyos határt at mindenkinek ? Ha nem mindenkinek, akkor melyiknek?
- Ha létezik határérték, mitől függ az értéke ?
Második kérdés. A kód karbantartása okozhatja a programozók számának korlátlan növekedését?
Jelöljük az új kód fejlesztésében részt vevő programozók száma. Mint fent, — egy adott időpontig felírt kód mennyisége . majd
Legyen elfoglalva a kódtámogatás programozók. Figyelembe véve az öregedési kódot,
ahonnan
Ha , Akkor
Így a második kérdésre a válasz nemleges: ha az új kódot fejlesztők száma korlátozott, akkor az öregedési kód körülményei között a támogatás nem okozhat korlátlan számú programozói növekedést.
Következtetés
A vizsgált modellek „puha” matematikai modellek [2]. Nagyon egyszerűek. Mindazonáltal a szimulációs eredmények függése a paraméterértékektől megfelel a valós rendszerektől elvártaknak, ez a modellek megfelelősége és a jó minőségű becslések készítéséhez szükséges kellő pontosság mellett szól.
Referenciák
1. Elsgolts L.E., Norkin S.B. Bevezetés a differenciálegyenletek elméletébe eltérõ érvekkel. Moszkva. "Science" kiadó. 1971.
2. Arnold V.I. „Kemény” és „puha” matematikai modellek. Moszkva. MCNMO kiadó. 2004.
Forrás: will.com