Որոշ ժամանակ առաջ իմ և լավ ընկերոջս միջև տեղի ունեցավ զրույց, որում հնչում էին հետևյալ արտահայտությունները.
— Ծրագրավորողների թիվը անընդհատ կաճի, քանի որ կոդի քանակն աճում է, և ավելի ու ավելի շատ ծրագրավորողներ անընդհատ պահանջվում են աջակցել դրան:
— Բայց կոդը հին է, դրա մի մասն այլևս չի աջակցվում: Նույնիսկ հնարավոր է, որ ինչ-որ հավասարակշռություն լինի։
Հիշելով դրանք մի քանի օր անց, ես մտածեցի, թե արդյոք կոդի պահպանումը, որը ժամանակի ընթացքում ավելի ու ավելի շատ ռեսուրսներ է պահանջում, կարող է ի վերջո կաթվածահար անել նոր ֆունկցիոնալության զարգացումը, թե՞ դա կպահանջի ծրագրավորողների թվի անսահմանափակ ավելացում: Մաթեմատիկական վերլուծությունը և դիֆերենցիալ հավասարումները օգնեցին որակապես գնահատել աջակցության չափի կախվածությունը զարգացումից և գտնել հարցերի պատասխանները:
Հարց առաջին. Կարո՞ղ է աջակցել զարգացման բոլոր ռեսուրսները «ուտել»:
Դիտարկենք ծրագրավորողների թիմը, որի մասնակիցների թիվը մշտական է: Նրանց աշխատանքային ժամանակի մասնաբաժինը () ծախսվում է նոր կոդի մշակման վրա, իսկ մնացած ժամանակը գնում է աջակցելու. Մոդելի ենթադրությունների շրջանակում մենք ենթադրում ենք, որ գործունեության առաջին տեսակն ուղղված է կոդի ծավալի ավելացմանը, իսկ երկրորդը՝ այն փոխելուն (սխալների ուղղումը) և էական ազդեցություն չի ունենում կոդի ծավալի վրա։
Նշենք մինչև այդ ժամանակաշրջանը գրված կոդի ամբողջ ծավալը . Ենթադրենք, որ կոդը գրելու արագությունը համաչափ է , ստանում ենք.
Բնական է ենթադրել, որ օրենսգրքի պահպանման համար աշխատանքային ծախսերը համաչափ են դրա ծավալին.
կամ
Որտեղ
Մենք ստանում ենք դիֆերենցիալ հավասարում, որը կարող է հեշտությամբ ինտեգրվել: Եթե սկզբնական պահին կոդի գումարը զրո է, ապա
Ի գործառույթը Իսկ . Իսկ դա նշանակում է ժամանակի ընթացքում նոր ֆունկցիոնալության զարգացման աստիճանական կրճատում մինչև զրոյի և բոլոր ռեսուրսների փոխանցումը աջակցությանը:
Այնուամենայնիվ, եթե ժամանակի ընթացքում կոդը դառնում է հնացած և դադարում է աջակցվել, այնուհետև այն կոդի քանակը, որը միաժամանակ պահանջում է աջակցություն արդեն հավասար է Ապա
а Դիֆերենցիալ հավասարման լուծում է հետամնաց արգումենտով [1]:
Նման հավասարման լուծումը եզակիորեն որոշվում է՝ նշելով արժեքները «Ժամանակի սկզբից առաջ» . Քանի որ օրենսգիրքը դեռևս գրված չէր ժամանակի սկզբնական պահից, մեր դեպքում ի .
Դիտարկենք մի քանի օրինակ։ Մենք ժամանակը չափելու ենք տարիներով, իսկ կոդի քանակը՝ հազարավոր տողերով: Այնուհետև համար Տասնյակների կարգի արժեքները ընդունելի են, մենք կվերցնենք 50 և 100: Այսինքն, մեկ տարի հետո մշակողների թիմը կգրի համապատասխանաբար հիսուն և հարյուր հազար տող կոդ: Համար ընդունելի արժեքները կարող են լինել. , , . Սա նշանակում է, որ մշակողների թիմը կարող է աջակցել իր գրած կոդի քանակին մեկ տարվա ընթացքում՝ լինի դա քառորդ, կես կամ լրիվ դրույքով: Որպես կոդի միջին ժամկետ՝ մենք սահմանելու ենք հետևյալ արժեքները՝ 1, 2 և 4 տարի։ Հավասարումը լուծելով թվային եղանակով՝ ստանում ենք ֆունկցիայի վարքագծի օրինակներ որոշ պարամետրերի համակցությունների համար .
Գործառույթի վարքագիծը քանի որ ծածկագիրը ծերանում է, այն փոխվել է: Ֆունկցիան այլևս միապաղաղ չէ, բայց տատանումները ժամանակի ընթացքում «հանգստանում» են, և միտում կա. որոշակի հաստատուն արժեքի: Գրաֆիկները ցույց են տալիս. այնքան ավելին , и , այսինքն՝ որքան դանդաղ է ծերանում ծածկագիրը, որքան արագ է նոր կոդի մշակումը և որքան ցածր է կոդի որակը, այնքան քիչ ռեսուրսներ կմնան նոր ֆունկցիոնալության մշակման համար։ Ցանկություն կար գոնե մեկ օրինակ բերել, որում «կծկվել» զրոյի մոտ: Բայց դա պահանջում էր զարգացման շատ վատ որակի ցուցանիշների և երկար ժամանակ չծերացող կոդի ընտրություն։ Նույնիսկ ներքևի ձախ գրաֆիկում զգալի քանակությամբ ռեսուրսներ են մնում նոր ֆունկցիոնալության համար: Հետևաբար, առաջին հարցի ճիշտ պատասխանն ավելի շուտ սա է. տեսականորեն՝ այո, հնարավոր է. գործնականում - հազիվ թե:
Հարցեր, որոնց հնարավոր չէ պատասխանել.
- Ճի՞շտ է դա ձգտում է որոշակի սահմանի ժամը բոլորի համար ? Եթե ոչ բոլորի համար, ապա որո՞նք:
- Եթե սահման կա, ինչի՞ց է կախված դրա արժեքը ?
Հարց երկրորդ. Կոդերի պահպանումը կարո՞ղ է առաջացնել ծրագրավորողների թվի անսահմանափակ աճ:
Նշենք նոր կոդի մշակման մեջ ներգրավված ծրագրավորողների թիվը։ Ինչպես վերևում, — մինչև ժամանակի որոշակի կետ գրված կոդի քանակը . Հետո
Կոդերի աջակցությունը զբաղված պահեք ծրագրավորողներ. Հաշվի առնելով ծերացման կոդը՝
Որտեղ
Եթե , Հետո
Այսպիսով, երկրորդ հարցի պատասխանը բացասական է՝ եթե նոր կոդի մշակողների թիվը սահմանափակ է, ապա ծերացման պայմաններում աջակցությունը չի կարող ծրագրավորողների թվի անսահմանափակ աճ առաջացնել։
Ամփոփում
Դիտարկված մոդելները «փափուկ» մաթեմատիկական մոդելներ են [2]: Նրանք շատ պարզ են. Այնուամենայնիվ, մոդելավորման արդյունքների կախվածությունը պարամետրերի արժեքներից համապատասխանում է իրական համակարգերի համար ակնկալվողին, սա խոսում է մոդելների համարժեքության և բարձրորակ գնահատումներ ստանալու համար բավարար ճշգրտության օգտին:
Հիշատակում
1. Էլսգոլց Լ.Է., Նորկին Ս.Բ. Շեղվող փաստարկով դիֆերենցիալ հավասարումների տեսության ներածություն. Մոսկվա. «Գիտություն» հրատարակչություն. 1971 թ.
2. Առնոլդ Վ.Ի. «Դժվար» և «փափուկ» մաթեմատիկական մոդելներ. Մոսկվա. Հրատարակչություն MCNMO. 2004 թ.
Source: www.habr.com