Գործընթացի ճիշտ ժամանակի հաշվարկման ալգորիթմ. «Jet Infosystems» նորարարական տեխնոլոգիաների և լուծումների կենտրոնի տեխնիկական տնօրենի պլանավորում (հաշվարկային)


Ներածություն

Արտադրության կազմակերպման սեմինարի նպատակն է ընդլայնել և խորացնել տեսական գիտելիքները, սերմանել անհրաժեշտ հմտություններ՝ արտադրության կազմակերպման և պլանավորման վերաբերյալ գործնականում ամենատարածված խնդիրները լուծելու համար:

Սեմինարը ներառում է առաջադրանքներ դասընթացի հիմնական բաժինների համար: Յուրաքանչյուր թեմայի սկզբում ներկայացված են համառոտ մեթոդական ցուցումներ և տեսական տեղեկատվություն, լուծումներով բնորոշ առաջադրանքներ և ինքնուրույն լուծման առաջադրանքներ:

Յուրաքանչյուր թեմայում մեթոդական ցուցումների և համառոտ տեսական տեղեկատվության առկայությունը հնարավորություն է տալիս այս աշխատարանն օգտագործել հեռակա դասընթացներում:


Տևողության հաշվարկ արտադրական ցիկլը

Որպես արդյունավետության ցուցանիշ արտադրական գործընթացարտադրական ցիկլի տեւողությունն է։

Արտադրության ցիկլը- արտադրության գործընթացում աշխատանքի օբյեկտների գտնվելու ժամանակահատվածը հումքի գործարկման պահից մինչև պատրաստի արտադրանքի թողարկումը.

Արտադրության ցիկլը բաղկացած է Աշխատանքային ժամ,որի ընթացքում ծախսվում է աշխատուժը և ընդմիջման ժամանակներ... Ընդմիջումները, կախված դրանց պատճառած պատճառներից, կարելի է բաժանել.

1) վրա բնականկամ տեխնոլոգիական - դրանք պայմանավորված են արտադրանքի բնույթով.

2) կազմակերպչական(ընդմիջումներ հերթափոխի միջև):

Արտադրության ցիկլի տևողությունը բաղկացած է հետևյալ բաղադրիչներից.

Ցիկլ T = տդրանք + տուտել + տ tr + տկ.կ. + տմ.օ. + տմ.ծ.

որտեղ տդրանք- տեխնոլոգիական գործողությունների ժամանակը.

չի ուտում -բնական գործընթացների ժամանակ (չորացում, սառեցում և այլն);

t tr -աշխատանքի օբյեկտների տեղափոխման ժամանակը.

տ գ.գ. -որակի վերահսկման ժամանակ;

t m.o -միջվիրահատական ​​մահճակալի ժամանակը;

տ մ.ց. -միջգերատեսչական պահեստներում անցկացրած ժամանակը.

(տերեք տկ.կ. կարող է համակցվել տ m.o):

Արտադրության ցիկլի տեւողության հաշվարկը կախված է արտադրության տեսակից։ Զանգվածային արտադրության մեջ արտադրության ցիկլի տեւողությունը որոշվում է այն ժամանակով, երբ արտադրանքը գտնվում է հոսքի վրա, այսինքն.

Ցիկլ T = տՄ–ում,

որտեղ տ v- թողարկման ցիկլ;

Մ- աշխատատեղերի քանակը.

Տակ ազատման տակտպետք է հասկանալ մեկ արտադրված արտադրանքի և հաջորդ արտադրանքի թողարկման միջև ընկած ժամանակահատվածը:

Ազատման ցիկլը որոշվում է բանաձևով

t in = Teff / V,

որտեղ Թեֆ- աշխատողի ժամանակի արդյունավետ ֆոնդը հաշվարկային ժամանակահատվածի համար (հերթափոխ, օր, տարի).

Վ- նույն ժամանակահատվածի արտադրության ծավալը (բնական միավորներով).

Օրինակ՝ T սմ = 8 ժամ = 480 րոպե; T գոտի = 30 րոպե; → Teff = 480 - - 30 = 450 min.

B = 225 հատ; → տ h = 450/225 = 2 րոպե:

Վ սերիական արտադրությունորտեղ վերամշակումն իրականացվում է խմբաքանակով, տեխնոլոգիական ցիկլի տեւողությունը որոշվում է ոչ թե արտադրության միավորի, այլ ամբողջ խմբաքանակի համար։ Ավելին, կախված խմբաքանակի արտադրության մեջ մտնելու եղանակից, մենք ստանում ենք տարբեր ցիկլային ժամանակներ։ Արտադրության մեջ ապրանքները տեղափոխելու երեք եղանակ կա՝ հաջորդական, զուգահեռ և խառը (սերիական-զուգահեռ):


Ի... ժամը հետեւողականշարժվող մասեր, յուրաքանչյուր հաջորդ գործողություն սկսվում է միայն նախորդի ավարտից հետո: Մասերի հաջորդական շարժման ցիկլի ժամանակը հավասար կլինի.

որտեղ n - մշակվող խմբաքանակի մասերի քանակը.

տ հատես- վիրահատության ժամանակի դրույքաչափը;

C i- աշխատատեղերի քանակը մեկ եսրդ վիրահատություն;

մ- տեխնոլոգիական գործընթացի գործողությունների քանակը.

Տրվում է 5 հատից բաղկացած խմբաքանակ։ Խմբաքանակը հաջորդաբար փոխանցվում է 4 գործողությունների միջոցով. առաջին վիրահատության տեւողությունը՝ 10 րոպե, երկրորդը՝ 20 րոպե, երրորդը՝ 10 րոպե, չորրորդը՝ 30 րոպե (նկ. 1):

Նկար 1

Տցիկլ = Տվերջին = 5 (10 + 20 + 10 + 30) = 350 րոպե:

Շարժվող մասերի հաջորդական եղանակն ունի այն առավելությունը, որ թույլ է տալիս սարքին աշխատել առանց խափանումների: Բայց դրա թերությունն այն է, որ արտադրության ցիկլի տեւողությունն այս դեպքում ամենամեծն է։ Բացի այդ, աշխատավայրերում ստեղծվում են մասերի զգալի պաշարներ, ինչը պահանջում է լրացուցիչ արտադրական տարածք:

II... ժամը զուգահեռխմբաքանակի տեղաշարժը, առանձին մասերը աշխատավայրերում չեն հետաձգվում, այլ անհատապես անմիջապես տեղափոխվում են հաջորդ գործողության՝ չսպասելով ամբողջ խմբաքանակի վերամշակման ավարտին: Այսպիսով, յուրաքանչյուր աշխատավայրում մասերի խմբաքանակի զուգահեռ շարժման հետ միաժամանակ տարբեր գործողություններ են կատարվում նույն խմբաքանակի տարբեր մասերի վրա:

Արտադրանքի զուգահեռ տեղաշարժով խմբաքանակային մշակման տևողությունը կտրուկ կրճատվում է.

դլ .

որտեղ n n- մասերի քանակը փոխանցման խմբաքանակ(տրանսպորտային խմբաքանակ), այսինքն. մի գործողությունից մյուսը միաժամանակ փոխանցվող ապրանքների քանակը.

Dl - ամենաերկար գործառնական ցիկլը:

Ապրանքների խմբաքանակի զուգահեռ գործարկման դեպքում ամբողջ խմբաքանակի մասերը շարունակաբար մշակվում են միայն այն աշխատատեղերում, որտեղ երկար գործողությունները հաջորդում են կարճատև գործողություններին: Այն դեպքերում, երբ կարճ գործողությունները հաջորդում են երկարին, այսինքն. ավելի երկար (մեր օրինակում՝ երրորդ գործողությունը), այդ գործողությունների կատարումը կատարվում է ընդհատումներով, այսինքն. պարապ սարքավորումներ. Այստեղ մասերի խմբաքանակը չի կարող անմիջապես մշակվել, առանց ուշացումների, քանի որ նախորդ (երկար) գործողությունը դա թույլ չի տալիս:

Մեր օրինակում. n= 5, տ 1 = 10; տ 2 = 20; տ 3 = 10; տ 4 = 30; հետ= 1.

Տգոլորշու = 1 (10 + 20 + 10 + 30) + (5-1) 30 = 70 + 120 = 190 րոպե:

Դիտարկենք մասերի զուգահեռ շարժման սխեման (նկ. 2).

Նկար 2

III... Բոլոր գործողություններում խմբաքանակի առանձին մասերի մշակման ընդհատումները վերացնելու համար կիրառեք զուգահեռ-սերիալկամ խառըմեկնարկի մեթոդ, որով մասերը (դրանց մշակումից հետո) հերթով տեղափոխվում են հաջորդ գործողության կամ «տրանսպորտային» հետնամասերի (միաժամանակ մի քանի կտոր) տեսքով այնպես, որ գործառնությունները կատարվեն. ոչ մի աշխատավայրում չի ընդհատվում: Խառը մեթոդում մշակման շարունակականությունը վերցվում է հաջորդական մեթոդից, իսկ զուգահեռ մեթոդից՝ մասի անցումը շահագործումից գործառնությունից անմիջապես հետո։ Արտադրության մեկնարկի խառը եղանակով ցիկլի ժամանակը որոշվում է բանաձևով

կոր .

որտեղ կոր. - ամենակարճ գործառնական ցիկլը (յուրաքանչյուր զույգ հարակից գործողությունների);

մ-1հավասարեցումների քանակը.

Եթե ​​հաջորդ գործողությունն ավելի երկար է, քան նախորդը, կամ ժամանակին հավասար է դրան, ապա այս գործողությունը սկսվում է մեկ առ մեկ՝ նախորդ գործողության առաջին մասը մշակելուց անմիջապես հետո։ Եթե, ընդհակառակը, հետագա գործողությունը ավելի կարճ է, քան նախորդը, ապա կտոր-կտոր փոխանցման մեջ կան բացեր: Դրանք կանխելու համար անհրաժեշտ է կուտակել նման ծավալի տրանսպորտային ռեզերվ, որը բավարար է հետագա շահագործման ընթացքում աշխատանքն ապահովելու համար։ Գրաֆիկի վրա այս կետը գործնականում գտնելու համար անհրաժեշտ է փոխանցել խմբաքանակի վերջին դետալը և հետաձգել դրա կատարման տևողությունը դեպի աջ: Խմբաքանակի բոլոր մյուս մասերի մշակման ժամանակը գծագրված է դեպի ձախ գրաֆիկում: Առաջին մասի մշակման սկիզբը ցույց է տալիս այն պահը, երբ նախորդ գործողության տրանսպորտային պահուստը պետք է փոխանցվի այս գործողությանը:

Եթե ​​հարակից գործողությունները տևողությամբ նույնն են, ապա դրանցից միայն մեկն է ընդունվում որպես կարճ կամ երկար (նկ. 3):

Նկար 3

Տվերջին գոլորշի = 5 (10 + 20 + 10 + 30) - (5-1) (10 + 10 + 10) = 350-120 = 230 րոպե:

Արտադրության ցիկլի տևողությունը կրճատելու հիմնական ուղիներն են.

|

2) Ռացիոնալ կազմակերպում աշխատանքային գործընթացները, մասնագիտացման և համագործակցության հիման վրա աշխատատեղերի կազմակերպում և սպասարկում, արտադրության լայնածավալ մեքենայացում և ավտոմատացում։

3) աշխատանքի տարբեր պլանային և չպլանավորված ընդհատումների կրճատում՝ սկզբունքների ռացիոնալ օգտագործման հիման վրա. գիտական ​​կազմակերպությունարտադրական գործընթաց.

4) ռեակցիաների ընթացքի արագացում ճնշման, ջերմաստիճանի բարձրացման, շարունակական գործընթացի անցնելու արդյունքում և այլն.

5) փոխադրման, պահպանման և հսկողության գործընթացների կատարելագործում և դրանց համընկնումը ժամանակին վերամշակման և հավաքման գործընթացին.

Արտադրական ցիկլի տեւողության կրճատումը արտադրության կազմակերպման լուրջ խնդիրներից է, քանի որ ազդում է շրջանառության վրա աշխատանքային կապիտալ, նվազեցնելով աշխատուժի ծախսերը, կրճատելով պահեստային տարածքը, տրանսպորտի անհրաժեշտությունը և այլն։

Առաջադրանքներ

1 Որոշեք արտադրական գործընթացում 50 մասերի մշակման ցիկլի տևողությունը՝ հաջորդական, զուգահեռ և հաջորդական-զուգահեռ շարժման տեսակներով։ Մասերի մշակումը բաղկացած է հինգ գործողություններից, որոնց տևողությունը, համապատասխանաբար, րոպե է. տ 1 =2; տ 2 =3; տ 3 =4; տ 4 =1; տ 5 = 3. Երկրորդ գործողությունը կատարվում է երկու մեքենաների վրա, իսկ մյուսներից յուրաքանչյուրը՝ մեկի վրա։ Փոխանցման խմբաքանակի չափը 4 հատ է։

2 Որոշել արտադրական գործընթացում հաջորդական, զուգահեռ և հաջորդական-զուգահեռ շարժման տեսակներով 50 մասերի մշակման ցիկլի տևողությունը։ Մասերի մշակումը բաղկացած է չորս գործողություններից, որոնց տևողությունը, համապատասխանաբար, min է. տ 1 =1; տ 2 =4; տ 3 =2; տ 4 = 6. Չորրորդ վիրահատությունը կատարվում է երկու մեքենաների վրա, իսկ մյուսներից յուրաքանչյուրը՝ մեկի։ Փոխանցման խմբաքանակի չափը 5 հատ է։

3 200 հատ մասերի խմբաքանակը մշակվում է արտադրության գործընթացում դրա զուգահեռ-հաջորդական շարժումով։ Մասերի մշակումը բաղկացած է վեց գործողությունից, որոնց տևողությունը, համապատասխանաբար, րոպե է. տ 1 =8; տ 2 =3; տ 3 =27; տ 4 =6; տ 5 =4; տ 6 = 20: Երրորդ գործողությունը կատարվում է երեք մեքենաների վրա, վեցերորդը երկուսի վրա, իսկ մյուս գործողություններից յուրաքանչյուրը կատարվում է մեկ մեքենայի վրա։ Որոշեք, թե ինչպես կփոխվի մասերի խմբաքանակի մշակման ցիկլի ժամանակը, եթե արտադրության մեջ շարժման զուգահեռ-հաջորդական տարբերակը փոխարինվի զուգահեռ տարբերակով: Փոխանցման խմբաքանակի չափը 20 հատ է։

4 300 հատից բաղկացած խմբաքանակը մշակվում է դրա զուգահեռ-հաջորդական շարժումով արտադրական գործընթացում։ Մասերի մշակումը բաղկացած է յոթ գործողությունից, որոնց տևողությունը, համապատասխանաբար, րոպե է. տ 1 =4; տ 2 =5; տ 3 =7; տ 4 =3; տ 5 =4; տ 6 =5; տ 7 = 6. Յուրաքանչյուր գործողություն կատարվում է մեկ մեքենայի վրա: Տրանսֆերային խմբաքանակ՝ 30 հատ։ Արտադրության տեխնոլոգիայի բարելավման արդյունքում երրորդ գործողության տեւողությունը կրճատվել է 3 րոպեով, յոթերորդինը` 2 րոպեով։ Որոշեք, թե ինչպես է փոխվում խմբաքանակի ցիկլը:

5 Տրվում է բլանկների խմբաքանակ՝ բաղկացած 5 կտորից։ Խմբաքանակն անցկացվում է 4 գործողությամբ՝ առաջինի տևողությունը 10 րոպե է, երկրորդը՝ 20 րոպե, երրորդը՝ 10 րոպե, չորրորդը՝ 30 րոպե։ Որոշեք ցիկլի տևողությունը՝ օգտագործելով հաջորդական շարժման վերլուծական և գրաֆիկական մեթոդները:

6 Տրվում է բլանկների խմբաքանակ՝ բաղկացած չորս կտորից։ Խմբաքանակն անցկացվում է 4 գործողությամբ՝ առաջինի տևողությունը 5 րոպե է, երկրորդը՝ 10 րոպե, երրորդը՝ 5 րոպե, չորրորդը՝ 15 րոպե։ Որոշեք ցիկլի ժամանակը վերլուծական և գրաֆիկական զուգահեռ շարժումներով:

7 Տրվում է բլանկների խմբաքանակ՝ բաղկացած 5 կտորից։ Խմբաքանակն անցնում է 4 գործողությամբ՝ առաջինի տեւողությունը 10 րոպե է, երկրորդը՝ 20 րոպե, երրորդը՝ 10 րոպե, չորրորդը՝ 30 րոպե։ Որոշեք ցիկլի տևողությունը՝ օգտագործելով հաջորդական-զուգահեռ շարժման վերլուծական և գրաֆիկական մեթոդները:

8 Որոշեք 180 հատ խմբաքանակի մշակման տեխնոլոգիական ցիկլի տևողությունը։ իր շարժման զուգահեռ և հաջորդական տարբերակներով։ Կառուցեք մշակման գրաֆիկներ: Փոխանցման խմբաքանակի չափը՝ 30 հատ։ Գործողություններում ժամանակի և աշխատատեղերի քանակի նորմերը հետևյալն են.

Այն ամենը, ինչ նկարագրված էր նախորդ մի քանի բաժիններում, ավելի շատ ուղղված էր ներքին գործընթացի ժամանակի խնդրի վերաբերյալ հետագա հետազոտությունների իրականացմանը և շատ ավելի փոքր չափով գործնական կիրառություններին: Այս բացը լրացնելու համար եկեք նախանշենք գործընթացի ճիշտ ժամանակը հաշվարկելու եղանակներից մեկը՝ հիմնվելով դրա էվոլյուցիայի վիճակագրական տվյալների վրա:

Դիտարկենք միաչափ պրոցես, որի վիճակը բնութագրվում է իրական x փոփոխականով: Ենթադրենք, որ գործընթացի դինամիկայի դիտարկումները կատարվում են աստղագիտական ​​t ժամանակում, այնպես որ t = tk և x = xk, k = 1, ..., n դիտման ֆիքսված ժամանակներ և վիճակների համապատասխան արժեքներ են: գործընթաց։ Կան բազմաթիվ տարբեր մաթեմատիկական մեթոդներ, որոնք թույլ են տալիս կառուցել կորեր, որոնք կա՛մ անցնում են կետերով (t k, Xk), կա՛մ մոտենում դրանց «լավագույն ձևով»: Ստացված x = x (t) ֆունկցիաները մեր մտքերում առաջացնում են տպավորություն, որ քննարկվող գործընթացը կախված է երկնային մարմինների մեխանիկական շարժումից և, հետևաբար, դրա վիճակն արտահայտվում է աստղագիտական ​​t ժամանակի միջոցով։ Նման եզրակացության հետ կարելի էր հաշվի նստել. եթե գործընթացի հետագա ընթացքը կանխատեսելու փորձերում անընդհատ դժվարություններ չլինեին։ Մեծ թվով տարբեր գործընթացների համար, որոնք ուղղակիորեն կապված չեն երկնային մարմինների մեխանիկական շարժումների հետ, դիտման միջակայքից դուրս x = x (t) ֆունկցիայի օգտագործմամբ ստացված տեսական կանխատեսումները սկսում են զգալիորեն շեղվել հետագա փորձարարական տվյալներից: Տեսության և փորձի միջև անհամապատասխանության պատճառը սովորաբար փորձում են բացատրել անհաջող մշակման մեթոդով, բայց հարցի էությունը կարող է լինել այս հարցում։

Մեզ հետաքրքրող ցանկացած գործընթաց տեղի է ունենում Տիեզերքում: Նա, իհարկե, «զգում է» երկնային մարմինների շարժման ազդեցությունը։ Այնուամենայնիվ, այս ազդեցությունը կարող է լինել «ոչ կոշտ», ոչ դետերմինիստական: Սա, մասնավորապես, կարող է դրսևորվել նրանով, որ աստղագիտական ​​ժամանակի հոսքի որոշակի ինտերվալներում գործընթացի վիճակը մնում է անփոփոխ։ Այս կապակցությամբ հիշենք նախկինում բերված օրինակը արտաքին աշխարհից մեկուսացված փակ դատարկ սենյակի մասին։ Թույլ տվեք միայն մեկ կենդանի թռչել սենյակ: Մի քանի օրվա ընթացքում տուն-ճանճի համակարգի վիճակի փոփոխությունները կախված կլինեն ճանճի տեղաշարժից, քանի որ տան վիճակի փոփոխություն չի կարելի սպասել: Ընդ որում, դժվար է պատկերացնել, որ ճանճի պահվածքը կոշտ կապված է աստղագիտական ​​ժամանակի ընթացքի հետ։

Այսքան երկար շեղում կատարելով՝ անցնենք գործընթացի ճիշտ ժամանակի հաշվարկման ալգորիթմի նկարագրությանը։

Այս ալգորիթմում որպես ժամանակի բնական չափիչ ընտրվում է տեղական մաքսիմումների հաշվարկման միավորը։ Բացի այդ, հաշվի են առնվում գործընթացի անշարժ վիճակի հնարավոր հատվածները, որոնց վրա, ինչպես նշվեց ավելի վաղ, դադարում է համապատասխան ժամանակը: Քանի որ երկու վիճակների ինքնության մասին կարելի է խոսել միայն չափման ճշտության սահմաններում, ապա ապագայում կօգտագործվի ինչ-որ դրական թիվ՝ չափման թույլատրելի սխալ։

Այսպիսով, ալգորիթմի համար մուտքային տվյալներն են բնական թիվը n, դրական թիվը 8, զանգվածները (tk) և (xk), k = 1, ..., n: Ծրագրավորման հարմարության համար ալգորիթմը ներկայացված է. չորս հաջորդաբար կատարված մոդուլների ձև:

Մոդուլ 1,օգտագործելով n, e, tk), (xk) տվյալները, ընդհանուր դեպքում ձևավորում է նոր զանգվածներ 7 = (7+ X = (X t) և շատ կոնկրետ ուղեկցող զանգված P = (?), որտեղ 1 = 1, . .., t, և t<Сп. Основное назначение этого модуля -- выявление в массиве x k) последовательностей идентичных состояний процесса, сохранение первых элементов в таких последовательностях и удаление всех остальных и, наконец, уменьшение по определенному, правилу исходного интервала наблюдения от t до на сумму тех промежутков времени, в которых процесс протекает стационарно.

Մոդուլ 1-ը ներառում է հետևյալ ընթացակարգերը.

p: = 1, m: = 0, k: = 1:

p.p.-ում 1, 2, ներմուծվում են հատուկ սկզբնական արժեքներով հաշվիչներ.

p.p.-ում 3, 4, հաշվիչի արժեքները մեծանում են 1-ով:

Ստուգեք k ^ n պայմանը: Եթե ​​բավարարված է, ապա անցեք 6-րդ կետին, հակառակ դեպքում անցեք 11-րդ կետին:

Ստուգեք x k --x k = e անհավասարությունը, եթե պահպանվում է, ապա անցեք 7-րդ կետին, հակառակ դեպքում անցեք 9-րդ կետին:

7.tii = ti - (tkl - tk), i = k1, ..., p.

Այս ընթացակարգը նշանակում է, որ եթե Xk-ի և Xk 1-ի արժեքները սխալի շրջանակներում չեն տարբերվում, ապա բոլոր ժամանակները, սկսած tk-ից, նվազում են tki-tk-ի չափով:

p = p. Վերադարձ դեպի 4-րդ կետ։

TV = t k; X v: = x k; p = p v = v + l., այսինքն. ձևավորվում են T, X, P զանգվածների տարրերը և վերագրվում է հաջորդ v արժեքը։

  • 10. Վերցրեք (t k, ..., t n AND (Xk, - X n) որպես n - k 1 + 1 չափման սկզբնական զանգվածներ և այնուհետև վերադարձեք 2-րդ կետին:
  • 11. Տպեք m, (T), (X,) և (P,), որտեղ i = l, ..., m Վերջ:

Եկեք բացատրենք ուղեկցող P զանգվածի տարրերի նշանակությունը: Նախորդ տեքստից հետևում է, որ pk-ի արժեքը հավասար է զանգվածի այն տարրերի թվին (xk), որոնք անմիջապես հաջորդում են և տարբերվում են x pi +-ից: .. +, +, e-ից պակաս: Նկատի ունեցեք նաև, որ pi + ... + pm = n:

Օրինակ 1. Տրված է՝ n = 20, (/ *) = (2, 4, 7, 10, 12, 13, 15, 17, 20, 22, 24, 25,

  • 27, 30, 32, 33, 34, 35, 36) և (x,) = (4, 4, 6, 6, 6, 3, 2, 4, 3, 3, 3, 2, 2, 4, 5 , 5,
  • 5, 4, 3), տես նկ. 9, ա.

Մոդուլ 1-ի արդյունքում մենք ստանում ենք m = 11,

(G) = (2, 3, 4, 6, 8, 11, 1-2, 15, 17, 18, 19); (X,) = (4, 6, 3, 2, 4, 3, 2, 4,5,4,3)

և (դ.) = (2, 4, 1, 1, 1.3, 2, 1.3, 1, 1), տես նկ. 9, բ.

Մոդուլ 2.Դրա համար մուտքային տվյալներն են բնական թիվ m, ինչպես նաև զանգվածներ (7+ (XL), = 1, ..., t: Այս մոդուլը զանգվածում (TJ-ն բացահայտում է ժամանակի պահերը [TM a], 1 = 1 մ (մլ

Օրինակ 2. m, (T b) և (X,] արժեքները փոխառված են նախորդ օրինակից: Մոդուլ 2-ը կատարելուց հետո մենք ստանում ենք ml = 3, m2 = 8, (U,) = (3, 8, 17), (T *) = (3, 4, 6, 8, 11, 12, 15, 17), տես նաև Նկ. 9, բ.

Մոդուլ 3.Մուտքային տվյալներ ml, m2, (TM n), 1 = 1, ..., ml, (T *), / 2 = 1, ..., rn2:

Այս մոդուլը նախատեսված է բանաձևով զանգված (m (-g) կառուցելու համար

Որտեղ TV 6 [TMp, TMn + i]

m փոփոխականը իր ժամանակն է, որը առաջանում է x փոփոխականի փոփոխության արդյունքում: Դրա բնական չափումը տեղական առավելագույն միավորն է:

Օրինակ 3. Т 2)-ի սկզբնական տվյալները նույնն են, ինչ մլ արժեքները, m2 ITM, իսկ օրինակ 2.. Համապատասխան հաշվարկներից հետո մենք ստանում ենք N = (0; 0.2; 0.6; 1; 1,33; 1,78; 2).

Մոդուլ 4.Ձևավորում է արդյունքների ելքը՝ համապատասխանություն հաստատելով m-ի և զանգվածի x տարրերի միջև (xk):

Օրինակ 4. 2-րդ և 3-րդ օրինակների տվյալների հիման վրա ստացվում է հետևյալ արդյունքը, տե՛ս նկ. 9, մեջ:

t: 0; 0.2; 0,6; 1; 1.33; 1.44;

x: 6; 3; 2; 4; 3T 0 2;

Այսպիսով, դիտարկված ալգորիթմը հնարավորություն է տալիս աստղագիտական ​​ժամանակային մասշտաբով արձանագրված գործընթացի վիճակի փոփոխության մասին տեղեկատվության հիման վրա մշակել գործընթացի պատշաճ ժամանակի հայեցակարգը։ Միանգամայն պարզ է, որ դուք կարող եք օգտագործել այլ ալգորիթմներ, որոնք հիմնված են, օրինակ, տեղական նվազագույնների հաջորդականության կամ տեղական առավելագույնից և նվազագույնից բաղկացած խառը հաջորդականության հաշվարկի վրա: Փորձարարական տվյալների մշակման ժամանակ դուք, հավանաբար, պետք է փորձեք տարբեր տարբերակներ: Եթե, ինչ-ինչ պատճառներով, փորձարարն ընտրել է հատուկ ժամանակներից մեկը և միաժամանակ ստացել զանգվածները (m4 և (xk), ապա հաջորդ փուլում նա պետք է օգտագործի որոշ մաթեմատիկական մեթոդներ փորձարարական կետերը մոտավորելու համար (m * , x) գործընթացի որոշ մոտավոր աշխարհի գիծ x = x (t) Այս գիծը էքստրապոլյացիայի ենթարկելով սկզբնական դիտարկման միջակայքից այն կողմ, նա կարող է կանխատեսումներ անել գործընթացի հետագա ընթացքի վերաբերյալ:

Հետաքրքիր է նշել հաշվողական փորձը, որը նախատեսված է գնահատելու առաջարկվող ալգորիթմի օգտագործման հեռանկարները: Որպես փորձարարական նյութ ընտրվել են գետի տարեկան արտահոսքի տվյալները։ Վախշ (Տաջիկստան) նախորդ 40 տարիների ընթացքում։ Նույն ժամանակահատվածում տեղեկատվություն է վերցվել Գայլի թվի դինամիկայի մասին՝ արեգակնային ակտիվության ամենահաճախ օգտագործվող ինտեգրալ ցուցանիշը: Վերջինս հիմք է ընդունվել արեգակնային ակտիվության գործընթացի պատշաճ ժամանակի մշակման համար։ Նոր ժամանակներում գետի ծախսերի մասին տեղեկատվությունը փոխվել է։ Վախշը, իսկ հետո դիտարկման ժամանակաշրջանում ջրի հոսքի տեսական կախվածությունը տրվել է որպես արեգակնային ակտիվության պատշաճ ժամանակի ֆունկցիա։ Ստացված ժամանակացույցի բնորոշ առանձնահատկությունն առավելագույն և նվազագույն ծախսերի գրեթե պարբերական վարքն է: Ծախսերը, սակայն, անփոփոխ չեն մնում։

(աշխատանքից սկսած ժամանակը միանում է մինչև այն ավարտվի պարբերական գործունեության դեպքում, կամ մինչև համակարգը պատասխանի օգտատիրոջ առաջին ելքի ձեռքերով ինտերակտիվ գործունեության դեպքում); կամ մաքսիմալացում արդարադատություն(Յուրաքանչյուր գործընթացի համար պրոցեսորի ժամանակի հավասար քանակություն, կամ ավելի ընդհանուր առմամբ, ժամանակի համապատասխան կետերը՝ ըստ յուրաքանչյուր գործընթացի առաջնահերթության և ծանրաբեռնվածության): Գործնականում այս նպատակները հաճախ հակասում են (օրինակ՝ թողունակությունը ընդդեմ հետաձգման), ուստի ժամանակացույցը համապատասխան փոխզիջում կկատարի: Նախապատվությունը չափվում է վերը նշված խնդիրներից որևէ մեկով` կախված օգտագործողի կարիքներից և խնդիրներից:

OS / 360 և իրավահաջորդներ

Էքս

AIX տարբերակ 4-ում կան երեք հնարավոր իմաստներ շղթաների պլանավորման քաղաքականության համար.

  • Նախ, առաջինը հայտնվեց. Այս քաղաքականությամբ շարանը պլանավորելուց հետո այն գործարկվում է մինչև ավարտը, եթե այն արգելափակված չէ, կամովին հրաժարվում է պրոցեսորի վերահսկողությունից, կամ դիսպետչերը դառնում է ավելի բարձր շղթայի առաջնահերթություն: Միայն ֆիքսված առաջնահերթ հոսքերի դեպքում կարելի է ունենալ FIFO պլանավորման քաղաքականություն:
  • Round Robin. Սա նման է AIX տարբերակի 3-ի սխեմայի ժամանակացույցին շրջանաձև եղանակով, որը հիմնված է 10 մթ ժամանակային հատվածների վրա: Երբ PP շարանը վերահսկում է ժամանակային հատվածի վերջում, այն նույն առաջնահերթությամբ շարժվում է դեպի թելի հերթի պոչը: Միայն ֆիքսված առաջնահերթություն ունեցող շղթաները կարող են ունենալ Round Robin պլանավորման քաղաքականություն:
  • ԱՅԼ. Այս քաղաքականությունը սահմանվում է POSIX1003.4a-ով իրագործման ժամանակ: AIX Տարբերակ 4-ում այս քաղաքականությունը սահմանվում է որպես RR-ի համարժեք, բացառությամբ այն, որ այն վերաբերում է ոչ ֆիքսված առաջնահերթ շղթաներին: Ընթացիկ շարանի առաջնահերթության արժեքի վերահաշվարկը մեկ ընդհատման համար նշանակում է, որ շարանը կարող է կորցնել վերահսկողությունը, քանի որ դրա առաջնահերթության արժեքը բարձրացել է մեկ այլ շղթայի համեմատ: Սա AIX տարբերակ 3-ի պահվածքն է:

Թեմաները հիմնականում հետաքրքրություն են ներկայացնում հավելվածների համար, որոնք ներկայումս բաղկացած են բազմաթիվ ասինխրոն գործընթացներից: Այս հավելվածները կարող են թեթև ծանրաբեռնվածություն առաջացնել համակարգի վրա, եթե դրանք վերածվեն բազմաթելային կառուցվածքի:

AIX 5-ն իրականացնում է պլանավորման հետևյալ քաղաքականությունը՝ FIFO, առանցքային և արդար առանցք: FIFO քաղաքականությունը բաղկացած է երեք տարբեր իրականացումներից՝ FIFO, FIFO2 և FIFO3: Շուրջօրյա կանոնակարգը կոչվում է SCHED_RR AIX-ում, իսկ տոնավաճառը՝ SCHED_OTHER:

Linux

Linux 2.4

Brain Fuck Scheduler (BFS), որը նույնպես ստեղծվել է Colivas-ի կողմից, CFS-ի այլընտրանքն է:

FreeBSD

FreeBSD-ն օգտագործում է հետադարձ կապի աստիճանավոր հերթ՝ 0-255-ի առաջնահերթություններով: 0-63-ը վերապահված է ընդհատումների համար, 64-127-ը՝ միջուկի վերին կեսի համար, 128-159-ը՝ իրական ժամանակի օգտատերերի շղթաների համար, 160-223-ը՝ օգտվողի շղթաների համար ժամանակի փոխանակման համար, և 224-255-ը՝ անգործուն օգտագործողի շղթաների համար: Նաև, ինչպես Linux-ը, այն օգտագործում է ակտիվ հերթի կարգավորում, բայց ունի նաև պարապ հերթ:

Նախորդ ալգորիթմի անջատիչ տարբերակը նվազագույն ժամանակի մնացած ալգորիթմն է: Այս ալգորիթմի համաձայն, ժամանակացույցն ամեն անգամ ընտրում է կատարման նվազագույն մնացած ժամանակով գործընթացը: Այս դեպքում անհրաժեշտ է նաև նախապես իմանալ առաջադրանքների կատարման ժամանակը։ Երբ նոր առաջադրանք է գալիս, դրա կատարման ընդհանուր ժամանակը համեմատվում է ընթացիկ առաջադրանքի կատարման մնացած ժամանակի հետ: Եթե ​​նոր առաջադրանքի կատարման ժամանակն ավելի կարճ է, ընթացիկ գործընթացը կասեցվում է, և վերահսկողությունը փոխանցվում է նոր առաջադրանքին: Այս սխեման թույլ է տալիս արագ սպասարկել կարճ հարցումները:

Եռաշերտ պլանավորում

Խմբաքանակային համակարգերը թույլ են տալիս իրականացնել եռաստիճան պլանավորում, ինչպես ցույց է տրված նկարում: Երբ նոր առաջադրանքները մտնում են համակարգ, դրանք նախ տեղադրվում են սկավառակի վրա պահվող հերթում: Մուտք մուտքի պլանավորող ընտրում է աշխատանքը և փոխանցում համակարգին: Մնացած առաջադրանքները մնում են հերթում։

Հենց որ առաջադրանքը մտնի համակարգ, դրա համար կստեղծվի համապատասխան գործընթաց, և այն անմիջապես կարող է պայքարի մեջ մտնել պրոցեսոր մուտք գործելու համար։ Այնուամենայնիվ, հնարավոր է մի իրավիճակ, երբ չափազանց շատ գործընթացներ կան, և դրանք բոլորը չեն տեղավորվում հիշողության մեջ, ապա դրանցից մի քանիսը կտեղադրվեն սկավառակի վրա: Պլանավորման երկրորդ մակարդակը որոշում է, թե որ գործընթացները կարող են պահվել հիշողության մեջ, իսկ որոնք՝ սկավառակի վրա: Սա արված է հիշողության ժամանակացույց .

Հիշողության ժամանակացույցը պարբերաբար դիտարկում է սկավառակի վրա առկա գործընթացները՝ որոշելու համար, թե որ մեկը տեղափոխել հիշողություն: Պլանավորողի կողմից օգտագործվող չափանիշներից են հետևյալը.

1. Որքա՞ն ժամանակ է անցել այն պահից, երբ գործընթացը լցվել է սկավառակի վրա կամ բեռնվել սկավառակից:

2. Որքա՞ն ժամանակ է գործընթացն օգտագործում պրոցեսորը:

3. Որքա՞ն է գործընթացի չափը (փոքր գործընթացները չեն խանգարում):

4. Որքանո՞վ է կարևոր գործընթացը:

Պլանավորման երրորդ մակարդակը պատասխանատու է պրոցեսոր մուտք գործելու համար այն գործընթացների համար, որոնք պատրաստ վիճակում են: Երբ խոսվում է «պլանավորողի» մասին, դա սովորաբար լինում է պրոցեսորի ժամանակացույց ... Այս ժամանակացույցն օգտագործում է իրավիճակին համապատասխան ցանկացած ալգորիթմ՝ ընդհատումներով կամ առանց ընդհատումների: Մենք արդեն դիտարկել ենք այս ալգորիթմներից մի քանիսը, իսկ մյուսներին կծանոթանանք։

Պլանավորում ինտերակտիվ համակարգերում:

Ցիկլային պլանավորում.

Ամենահին, ամենապարզ, արդար և առավել հաճախ օգտագործվող ալգորիթմներից մեկը շրջանաձև պլանավորման ալգորիթմն է: Յուրաքանչյուր գործընթացին տրվում է որոշակի պրոցեսորի ժամանակային ընդմիջում, այսպես կոչված, ժամանակի հատված: Եթե ​​գործընթացը դեռ աշխատում է ժամանակի հատվածի վերջում, այն ընդհատվում է, և վերահսկողությունը փոխանցվում է մեկ այլ գործընթացի: Իհարկե, եթե գործընթացը արգելափակվում է կամ վաղաժամ դուրս է գալիս, վերահսկման անցումը տեղի է ունենում հենց այդ պահին։ Շուրջօրյա պլանավորման իրականացումը պարզ է: Ժամանակացույցը միայն պետք է պատրաստ պահի գործընթացների ցանկը: Երբ գործընթացը հասնում է իր ժամկետի սահմանին, այն ուղարկվում է ցուցակի վերջ:

Այս ալգորիթմի միակ հետաքրքիր կետը քվանտային երկարությունն է։ Մի գործընթացից մյուսին անցնելը որոշակի ժամանակ է պահանջում. անհրաժեշտ է պահպանել և բեռնել գրանցամատյանները և հիշողության քարտերը, թարմացնել աղյուսակներն ու ցուցակները, պահպանել և վերաբեռնել հիշողության քեշը և այլն: արդյունավետությունը, սակայն չափազանց մեծ քվանտը կարող է հանգեցնել կարճ արձագանքման դանդաղ արձագանքմանը հարցումներ։ Մոտ 2 0 -5 0 ms քվանտային արժեքը հաճախ ողջամիտ փոխզիջում է:

Առաջնահերթության պլանավորում.

Ցիկլային պլանավորման ալգորիթմում կա կարևոր ենթադրություն, որ բոլոր գործընթացները հավասար են: Համակարգչային իրավիճակում, որտեղ մեծ թվով օգտվողներ կան, դա չի կարող լինել: Օրինակ՝ բուհում առաջին հերթին պետք է սպասարկեն դեկաններին, հետո դասախոսներին, քարտուղարներին, հավաքարարներին, նոր միայն ուսանողներին։ Նման արտաքին գործոնները հաշվի առնելու անհրաժեշտությունը հանգեցնում է առաջնահերթության պլանավորման: Հիմնական գաղափարը պարզ է. յուրաքանչյուր գործընթացին վերագրվում է առաջնահերթություն, և վերահսկողությունը փոխանցվում է ամենաբարձր առաջնահերթություն ունեցող պատրաստի գործընթացին:

Մի քանի հերթեր.

Առաջին առաջնահերթ ժամանակացույցներից մեկը ներդրվել է համատեղելի ժամանակային համակարգում (CTSS): CTSS համակարգի հիմնական խնդիրը գործընթացի չափազանց դանդաղ անցումն էր, քանի որ IBM 7094 համակարգչի հիշողության մեջ կար միայն մեկ գործընթաց: Յուրաքանչյուր անջատիչ նշանակում էր ընթացիկ գործընթացը սկավառակի վրա նետել

և սկավառակից նոր գործընթաց կարդալը: CTSS մշակողները արագ հասկացան, որ արդյունավետությունը ավելի լավ կլիներ, եթե պրոցեսորի հզորությամբ սահմանափակված գործընթացներին հատկացվեր ավելի մեծ ժամանակ, քան եթե նրանց տրվեին փոքր հատվածներ, բայց հաճախ: Սա, մի կողմից, կնվազեցնի հիշողությունից սկավառակ փոխանակումների քանակը, իսկ մյուս կողմից՝ կհանգեցնի արձագանքման ժամանակի վատթարացման, ինչպես արդեն տեսանք:

Արդյունքում մշակվել է առաջնահերթ դասերով լուծում։ Առավելագույն առաջնահերթություն ունեցող դասի պրոցեսներին հատկացվել է մեկ քվանտ, հաջորդ դասի պրոցեսներին՝ երկու քվանտա, հաջորդին՝ չորս քվանտա և այլն: Երբ գործընթացն սպառվում է իրեն հատկացված ամբողջ ժամանակը, այն տեղափոխվում է դեպի ցածր դաս.

Որպես օրինակ, դիտարկեք մի գործընթաց, որը պետք է կատարի 100 քվանտից ավելի հաշվարկներ: Սկզբում նրան կտրվի մեկ քվանտ, հետո այն կմղեն սկավառակի վրա։ Հաջորդ անգամ նա կստանա 2 քվանտա, այնուհետև 4, 8,16, 32, 64, թեև 64-ից օգտագործում է միայն 37-ը: Այս դեպքում նրան անհրաժեշտ կլինի ընդամենը 7 փոխանցում (ներառյալ նախնական բեռը) 100-ի փոխարեն, որը: անհրաժեշտ կլինի օգտագործելով ցիկլային ալգորիթմ: Բացի այդ, երբ դուք սուզվում եք առաջնահերթ հերթի մեջ, գործընթացը կսկսվի ավելի ու ավելի քիչ հաճախակի՝ պրոցեսորը թողնելով ավելի կարճ գործընթացներին:

«Ամենակարճ գործընթացը հաջորդն է».

Քանի որ Shortest Task First ալգորիթմը նվազագույնի է հասցնում խմբաքանակի մշակման համակարգերի միջին շրջադարձային ժամանակը, մենք կցանկանայինք այն օգտագործել նաև ինտերակտիվ համակարգերում: Որոշակի չափով դա հնարավոր է։ Ինտերակտիվ գործընթացներն ամենից հաճախ հետևում են «հրամանի սպասելու, հրամանի կատարման, հրամանի սպասման, հրամանի կատարման...» օրինակին: Հաշվի առնելով յուրաքանչյուր հրամանի կատարումը որպես առանձին առաջադրանք, դուք կարող եք նվազագույնի հասցնել պատասխանի ընդհանուր միջին ժամանակը. նախ սկսել ամենակարճ առաջադրանքը: Միակ խնդիրն այն է

պարզելու համար, թե սպասվող գործընթացներից որն է ամենակարճը:

Մեթոդներից մեկը հիմնված է գործընթացի երկարության գնահատման վրա՝ հիմնվելով գործընթացի նախորդ վարքագծի վրա: Սա սկսում է գործընթացը ամենակարճ գնահատված ժամանակով: Ենթադրենք, որ հրամանի կատարման գնահատված ժամանակը T 0 է, իսկ հաջորդ գործարկման գնահատված ժամանակը T 1: Դուք կարող եք բարելավել ժամանակի գնահատումը` հաշվի առնելով այս ժամանակների կշռված գումարը T 0 + (1 - ա) T 1: Ընտրելով a-ի համապատասխան արժեքը՝ մենք կարող ենք այնպես անել, որ գնահատման ալգորիթմը արագ մոռանա նախորդ գործարկումների մասին կամ, ընդհակառակը, երկար հիշի դրանք։ Հաշվի առնելով a = 1/2, մենք ստանում ենք մի շարք գնահատականներ.

T 0, T 0/2 + T 1/2, T 0/4 + T 1/4 + T 2/2, T 0/8 + T 1/8 + T 2/4 + T 3/2:

Երեք գործարկումից հետո գնահատման մեջ T 0-ի կշիռը կնվազի մինչև 1/8:

Շարքի հաջորդ արժեքը գնահատելու մեթոդը նախորդ արժեքի և նախորդ գնահատման միջին կշռված միջինի միջոցով հաճախ կոչվում է ծերացում: Այս մեթոդը կիրառելի է շատ իրավիճակներում, երբ պահանջվում է գնահատում նախորդ արժեքներից: Ծերացումը հասկանալու ամենահեշտ ձևը a = 1/2-ն է: Ամեն քայլափոխի ձեզ միայն անհրաժեշտ է

ավելացրեք նոր արժեք ընթացիկ գնահատականին և կիսով չափ կրճատեք գումարը (1 բիթ տեղափոխելով աջ):

Երաշխավորված պլանավորում:

Ժամանակացույցի սկզբունքորեն այլ մոտեցում է օգտատերերին իրական խոստումներ տալն ու դրանք կատարելը: Ահա մի խոստում, որը հեշտ է կատարել և հեշտ է կատարել. եթե n օգտվող կիսվի պրոցեսորով ձեզ հետ, ձեզ կտրվի 1/n պրոցեսորի հզորություն:

Իսկ մեկ օգտագործող և n աշխատող պրոցեսոր ունեցող համակարգում յուրաքանչյուրը կստանա 1/n պրոցեսորային ցիկլ:

Այս խոստումը կատարելու համար համակարգը պետք է հետևի պրոցեսների միջև պրոցեսորի բաշխմանը յուրաքանչյուր գործընթացի ստեղծման պահից: Այնուհետև համակարգը հաշվարկում է պրոցեսորի ռեսուրսների քանակությունը, որոնց իրավունքը տրված է գործընթացին, օրինակ՝ ստեղծման պահից ի վեր ժամանակը բաժանված n-ի: Այժմ դուք կարող եք հաշվարկել գործընթացին տրված ժամանակի հարաբերակցությունը այն ժամանակին, որն իրավունք ունի: Ստացված 0.5 արժեքը նշանակում է, որ գործընթացին հատկացվել է ենթադրվողի միայն կեսը, իսկ 2.0 նշանակում է, որ գործընթացը երկու անգամ ավելի է ստացել, քան պետք է: Այնուհետև գործընթացը սկսվում է ամենափոքր հարաբերակցությամբ մինչև

այն չի դառնա ավելի մեծ, քան իր մոտակա հարևանինը:

Վիճակախաղի պլանավորում.

Ալգորիթմը հիմնված է վիճակախաղի տոմսերի բաշխման գործընթացներին՝ տարբեր ռեսուրսների, այդ թվում՝ պրոցեսորի հասանելիության համար: Երբ պլանավորողին անհրաժեշտ է որոշում կայացնել, վիճակախաղի տոմսը ընտրվում է պատահականության սկզբունքով, և դրա սեփականատերը հասանելի է դառնում ռեսուրսին: Պրոցեսորի հասանելիության առումով «վիճակախաղը» կարող է տեղի ունենալ վայրկյանում 50 անգամ, իսկ հաղթողը ստանում է 20 մս պրոցեսորի ժամանակ:

Ավելի կարևոր գործընթացներին կարելի է լրացուցիչ տոմսեր տրամադրել՝ շահելու հավանականությունը մեծացնելու համար։ Եթե ​​ընդամենը 100 տոմս և դրանցից 20-ը մեկ գործընթացում են, ապա այն կստանա պրոցեսորի ժամանակի 20%-ը։ Ի տարբերություն առաջնահերթ պլանավորողի, որտեղ շատ դժվար է գնահատել, թե ինչ է նշանակում, ասենք, առաջնահերթություն 40, վիճակախաղի պլանավորման մեջ ամեն ինչ ակնհայտ է։ Յուրաքանչյուր գործընթաց կստանա ռեսուրսների տոկոս, որը մոտավորապես հավասար է իր ունեցած տոմսերի տոկոսին:

Վիճակախաղի պլանավորումն ունի մի քանի հետաքրքիր հատկություններ. Օրինակ, եթե պրոցեսը ստեղծման ընթացքում մի քանի տոմս է ստանում, ապա հաջորդ վիճակախաղում նրա շահելու հնարավորությունները համաչափ են տոմսերի քանակին։

Փոխազդող գործընթացները կարող են տոմսեր փոխանակել ըստ անհրաժեշտության: Այսպիսով, եթե հաճախորդի գործընթացը հաղորդագրություն է ուղարկում սերվերի գործընթացին, այնուհետև արգելափակում է, այն կարող է իր բոլոր տոմսերը փոխանցել սերվերի գործընթացին՝ սերվերի գործարկման հնարավորությունը մեծացնելու համար: Երբ սերվերի գործընթացը դուրս է գալիս, այն կարող է հետ վերադարձնել բոլոր տոմսերը:

Արդար պլանավորում.

Մինչ այժմ մենք ենթադրում էինք, որ յուրաքանչյուր գործընթաց վերահսկվում է անկախ նրանից, թե ով է շեֆը։ Հետևաբար, եթե օգտվող 1-ը ստեղծում է 9 պրոցես, իսկ օգտվող 2-ը՝ 1 պրոցես, ապա օգտագործելով ցիկլային պլանավորումը կամ հավասար առաջնահերթությունների դեպքում, օգտվող 1-ը կստանա պրոցեսորի 90%-ը, իսկ օգտվող 2-ին՝ ընդամենը 10-ը:

Նման իրավիճակներից խուսափելու համար որոշ համակարգեր նախքան պլանավորումը ուշադրություն են դարձնում գործընթացի սեփականատիրոջը: Այս մոդելում յուրաքանչյուր օգտվող ստանում է պրոցեսորի որոշակի մասնաբաժին, և ժամանակացույցը ընտրում է գործընթացը՝ համաձայն այս փաստի: Եթե ​​մեր օրինակում օգտագործողներից յուրաքանչյուրն ուներ

Պրոցեսորի 50%-ը խոստացված է, հետո պրոցեսորի 50%-ը կստանան՝ անկախ պրոցեսների քանակից։

Ժամանակացույց իրական ժամանակի համակարգերում:

Ժամանակը էական դեր է խաղում իրական ժամանակի համակարգերում: Ամենից հաճախ մեկ կամ մի քանի արտաքին ֆիզիկական սարքեր ստեղծում են մուտքային ազդանշաններ, և համակարգիչը պետք է համապատասխան կերպով արձագանքի դրանց որոշակի ժամանակահատվածում:

Իրական ժամանակի համակարգերը բաժանված են իրական ժամանակի դժվար համակարգեր , ինչը նշանակում է, որ յուրաքանչյուր առաջադրանքի համար կան սեղմ ժամկետներ (դրանք պետք է կատարվեն), և իրական ժամանակի ճկուն համակարգեր որոնցում ժամանակացույցի խախտումներն անցանկալի են, բայց ընդունելի։ Երկու դեպքում էլ ծրագիրը բաժանված է մի քանի գործընթացների, որոնցից յուրաքանչյուրը կանխատեսելի է։ Այս գործընթացները հաճախ կարճ են և ավարտում են իրենց աշխատանքը մեկ վայրկյանում: Երբ արտաքին ազդանշան է հայտնվում, պլանավորողի գործն է ապահովել, որ ժամանակացույցը պահպանվի:

Արտաքին իրադարձությունները, որոնց համակարգը պետք է արձագանքի, կարելի է բաժանել պարբերական(կանոնավոր պարբերականությամբ տեղի է ունենում) և ոչ պարբերական(առաջանում է անկանխատեսելիորեն): Կարող են լինել իրադարձությունների մի քանի պարբերական հոսքեր, որոնք համակարգը պետք է մշակի: Կախված իրադարձություններից յուրաքանչյուրի մշակման վրա ծախսված ժամանակից, համակարգը կարող է չկարողանալ ժամանակին մշակել բոլոր իրադարձությունները:


Նմանատիպ տեղեկատվություն.


Հաճախ մշակողները, հատկապես անփորձները, կորչում են, երբ խնդրում են առաջադրանքների համար ժամկետներ սահմանել: Սակայն պլանավորելու ունակությունը շատ օգտակար և անհրաժեշտ հմտություն է, որն օգնում է ոչ միայն աշխատանքում, այլև կյանքում։ Մենք որոշեցինք փորձագետներին հարցնել, թե ինչպես սովորել ճիշտ պլանավորել և ժամանակին իրականացնել նախագծերը:

Հակիրճ եզրակացությունները կարելի է գտնել հոդվածի վերջում:

Սովորաբար մշակողը պետք է հաշվի առնի միանգամից մի քանի պարամետր՝ առաջադրանքի կատարման ժամանակը գնահատելու համար.

  1. Նման առաջադրանքների կատարման և այս տեխնոլոգիական փաթեթի հետ աշխատելու փորձ: Եթե ​​դուք պետք է սկզբունքորեն նոր բան անեք, ապա պետք է հատկապես զգույշ լինեք գնահատման հարցում:
  2. Փորձ այս հաճախորդի հետ: Իմանալով հաճախորդին, դուք կարող եք մոտավորապես կանխատեսել որոշ լրացուցիչ պահանջներ և խմբագրումների քանակը:
  3. Կոդի որակը, որի հետ աշխատելու համար: Սա ամենաազդեցիկ գործոնն է, որի պատճառով ամեն ինչ կարող է շատ ձգձգվել և ընդհանրապես ընթանալ ոչ ըստ պլանի։ Եթե ​​նախագիծն ունի թեստեր, ամենուր կան միայն բացահայտ կախվածություններ, և ֆունկցիոնալությունը լավ մեկուսացված է, ամեն ինչ այնքան էլ սարսափելի չէ: Շատ ավելի վատ է, եթե գործ ունես ժառանգական կոդի հետ առանց թեստերի կամ անուղղակի կախվածություններով գերհագեցած կոդի հետ: Նման բաները, ինչպիսիք են «կախարդական գործառույթները» (երբ կոդից դժվար է տեսնել զանգերի վերջնական փաթեթը) և կոդերի կրկնօրինակումը (երբ որևէ ֆունկցիոնալությունը փոխելու համար անհրաժեշտ է խմբագրել մի քանի անկախ բաժիններ), կարող են նաև բարդացնել իրավիճակը:

Սովորելու համար, թե ինչպես կարելի է համարժեք գնահատել աշխատանքի ժամանակը, դուք պետք է անընդհատ պարապեք: Աշխատանքիս սկզբում ես հենց սա էի անում. ես գնահատում էի ցանկացած մուտքային առաջադրանք կատարելու ժամանակը, նույնիսկ եթե ոչ ոք դա չէր պահանջում, և հետո ես հետևում էի, թե որքան ճշգրիտ կարողացա մտնել իմ գնահատականի մեջ: Առաջադրանքը կատարելու ընթացքում ես նշեցի, թե որ գործողություններն ավելի շատ ժամանակ են պահանջում։ Եթե ​​ինչ-որ բան խիստ ավելացնում էր ժամկետը, նա հիշում էր այս պահը և հաջորդ գնահատականներում դա հաշվի առնում։

Զուտ աշխատանքի համար պահանջվող ժամանակի օբյեկտիվ գնահատմանը պետք է մի փոքր մարժա ավելացվի ֆորսմաժորային իրավիճակները լուսաբանելու համար: Հաճախ այն գնահատվում է որպես հիմնական առաջադրանքի կատարման տոկոս, բայց բոլորի համար տարբեր է՝ ինչ-որ մեկը ավելացնում է ժամանակի 20%-ը, ինչ-որ մեկը՝ 10%-ը, իսկ ինչ-որ մեկը՝ 50%-ը:

Օգտակար է նաև վերլուծել ժամկետների յուրաքանչյուր խոշոր խախտումից հետո բաց թողնված ժամկետների պատճառները: Եթե ​​բավարար որակավորում չունեք, պետք է աշխատեք ձեր թույլ կողմերի վրա։ Եթե ​​խնդիրը կազմակերպչական էր՝ հասկանալ, թե ինչը խանգարեց բնականոն աշխատանքին։

Նպաստել Ստորին

, «Jet Infosystems» նորարարական տեխնոլոգիաների և լուծումների կենտրոնի տեխնիկական տնօրեն

Մեծ թվով հոդվածներ նվիրված են նախագծի բարդությունը գնահատելու մեթոդներին, ներառյալ աշխատանքի տևողությունը և անհատական ​​առաջադրանքները: Այնուամենայնիվ, մինչ այժմ դա հակասությունների պատճառ է դառնում ինչպես ծրագրի թիմի ներսում, այնպես էլ հաճախորդի հետ շփվելիս:

Գնահատման հիմնական օգնականը փորձն է: Փորձեք ինչ-որ կերպ փոխկապակցել նոր առաջադրանքը արդեն ավարտվածների հետ։ Եթե ​​հաշվետվություն եք պատրաստում, տեսեք, թե որքան ժամանակ է տևել նմանատիպ զեկույցը նախկինում: Եթե ​​ինչ-որ նոր բան եք անում, փորձեք բաժանվել հայտնի մասերի և գնահատել դրանք: Եթե ​​առաջադրանքը բոլորովին նոր է, որոշ ժամանակ հատկացրեք ուսումնասիրությանը (նույնիսկ ավելի լավ՝ համակարգեք այս անգամ առաջադրանքը տվողի հետ):

Ուշադրություն դարձրեք ուղեկցող փուլերին. եթե Ձեզ անհրաժեշտ է ծառայություն մշակել, ապա միավորի թեստավորումը (և գուցե ոչ միայն միավորը) նույնպես պետք է ներառվի գնահատման մեջ, թեստի տվյալների պատրաստումը որոշակի ժամանակ կպահանջի: Մտածեք այլ ծառայությունների հետ ինտեգրման մասին և այլն: Ժամանակ տրամադրեք ինքներդ ձեզ հայտնաբերած սխալները կամ փորձարկողների օգնությամբ շտկելու համար: Շատ ժամանակ կարելի է վատնել «անտեսանելի» առաջադրանքների վրա։ Օրինակ, կա գնահատում զարգացման համար և կա գնահատում թեստավորման համար, բայց փորձարկման համար արտեֆակտի փոխանցումը կարող է կապված լինել ստենդների տեղակայման հետ: Ուստի կարևոր է մտովի պատկերացնել ողջ գործընթացը, որպեսզի ոչինչ բաց չթողնեք։

Աշխատանքի ինտենսիվությունը որոշելուց հետո անհրաժեշտ է օրացույցում ներառել նոր աշխատատեղեր՝ չմոռանալով զուգահեռ ընթացող այլ խնդիրների ու գործունեության մասին։

Եվ մի մոռացեք, որ ծրագրերն անօգուտ են, բայց պլանավորումն անգնահատելի է: Սովորեք ժամանակին կարգավորել պլանները, հետաքրքրել բոլորին և ժամանակին զարգացնել, որպեսզի բաց թողնված վերջնաժամկետները որևէ մեկի համար անակնկալ չմնան:

Նպաստել Ստորին

Հարց, որին հնարավոր չէ պատասխանել կարճ ձևով։ Եթե ​​հեշտ լիներ, ապա ժամկետներ բաց թողնելու խնդիր չէր լինի։

Զարգացման ժամկետներն ավելի կանխատեսելի դարձնելու համար նախ պետք է հասկանալ պատճառները, թե ինչու են ծրագրավորողները անընդհատ սխալվում:

Առաջին պատճառն այն է, որ ծրագրավորողի կատարած առաջադրանքների մեծ մասը այս կամ այն ​​չափով եզակի են: Այսինքն, ամենայն հավանականությամբ, ծրագրավորողն առաջին անգամ կանի նման խնդիր։ Նա լավ չի պատկերացնում, թե որքան կտևի աշխատանքը: Եթե ​​սա ամուր փորձ ունեցող ծրագրավորող է, և նա պետք է կատարեր նմանատիպ առաջադրանք, ապա նրա գնահատականն ավելի մոտ կլինի իրականությանը։

Պարզ անալոգիա օգտագործելու համար, եթե դուք երբեք խրամատներ չեք փորել, չեք կարող հստակ ասել, թե որքան ժամանակ կպահանջվի 30 սմ լայնությամբ, 60 սմ խորությամբ և 20 մետր երկարությամբ խրամատ փորելու համար: Եթե ​​նախկինում փորել եք, ապա աշխատանքային ժամանակի ձեր գնահատականը շատ ավելի մոտ կլինի աշխատանքի իրական տևողությանը:

Երկրորդ պատճառն այն է, որ ծրագրավորողները ի սկզբանե լավատես են: Այսինքն՝ նկատի ունենալով առաջադրանքը, ընտրելով դրա իրականացման տարբերակ, գնահատելով բարելավումները՝ մշակողը ակնկալում է, որ ամեն ինչ կաշխատի այնպես, ինչպես ինքն է ակնկալում։ Եվ նա չի մտածում այն ​​խնդիրների մասին, որոնց հանդիպելու է ճանապարհին։ Հաճախ նա չի կարող կանխատեսել դրանք։ Օրինակ, կա մի խնդիր, որը ծրագրավորողը կարող է կատարել՝ օգտագործելով երրորդ կողմի բաց կոդով ծրագրաշարի գրադարանը: Գնահատման փուլում նա գտել է այն ինտերնետում, կարդացել դրա նկարագրությունը՝ իրեն սազում է։ Եվ նա նույնիսկ ճիշտ է գնահատել այս գրադարանի օգտագործման համար իր աշխատանքի ծավալը: Բայց նա ամենևին չէր կանխատեսում, որ այս գրադարանում գտնվող իր ծրագրային արտադրանքի միջավայրում սխալ տեղի կունենա:

Մշակողը պետք է ոչ միայն ներկառուցի գրադարանի օգտագործումը իր կոդի մեջ, այլև ուղղի սխալը հենց գրադարանում: Եվ հաճախ ծրագրավորողը ժամանակ չի տրամադրում իր սխալներն ուղղելու համար։ Ինչպես ցույց է տալիս վիճակագրությունը, սխալների փորձարկումն ու շտկումը կարող է խլել կոդավորման վրա ծախսված ժամանակի մոտ 50%-ը: Ցուցանիշը կախված է մշակողի որակավորումներից, շրջակա միջավայրից, օգտագործված զարգացման պրակտիկաներից (օրինակ, միավորի թեստերը զգալիորեն նվազեցնում են այս ժամանակը, և զարգացման առաջադրանքի ընդհանուր տևողությունը / աշխատանքի ինտենսիվությունը պարզվում է, որ ավելի քիչ է):

Եթե ​​վերադառնանք էքսկավատորի հետ համեմատությանը, ապա էքսկավատորը չէր սպասում, որ իր բահը կկոտրվի, և նա պետք է երկու ժամ ծախսի նոր կտրվածք փնտրելու համար։

Երրորդ պատճառը չնախատեսված պահանջներն են։ Նյութերի արտադրության ոլորտներից ոչ մեկը, որի հետ հաճախորդները սիրում են համեմատել ծրագրային ապահովման մշակումը, նոր պահանջների նման հոսք չունի: Պատկերացրեք էքսկավատորի անցումը, որը փորել է 20-ից 19 մետրը և հաճախորդից լսել ցանկություն, որ խրամատը ուղիղ գծով չընթանա, այլ օձի նման, որի ուսի երկարությունը 97 սանտիմետր է։

Ինչպե՞ս վարվել այս ամենի հետ և ինչպե՞ս ապրել նման անորոշության պայմաններում։ Անորոշության նվազեցում և ժամանակի պաշարների կուտակում:

Ձեր ակնկալիքներն իրականությանը մոտեցնելու ամենահեշտ ձևը հումորային «Pi» կանոնի օգտագործումն է։ Մշակողից գնահատական ​​ստանալով (ժամանակի կամ աշխատանքի ինտենսիվության առումով), դուք պետք է այն բազմապատկեք Pi թվով (= 3.14159): Որքան ավելի փորձառու է մշակողը գնահատել, այնքան ցածր կարող է լինել այս գործակիցը:

Հրամայական է կիրառել սկզբնական խնդրի տարրալուծումը 4 ժամից ոչ ավելի չափով փոքր խնդիրների: Որքան ավելի մանրամասն լինի տարրալուծումը, այնքան ավելի մեծ են հավանականությունը, որ գնահատումը մոտ կլինի իրական աշխատուժի ներդրմանը / տևողությանը:
Եթե ​​վերադառնանք պահուստի հատկացմանը, ապա այս ժամանակը պետք է հատկացվի ծրագրի ավարտին: Վատ պրակտիկա է ռեզերվ կազմելը և այն ներառել յուրաքանչյուր առաջադրանքի համար: Պարկինսոնի օրենքը «Աշխատանքը լրացնում է իրեն հատկացված ամբողջ ժամանակը» իրականացվում է խստորեն։

Եթե ​​ամփոփում եք կարճ «տոտալ», ապա աշխատանքի ժամկետները ճիշտ որոշելու համար օգտակար կլինեն հետևյալ գործողությունները.

  • կատարել աշխատանքի տարրալուծում, առաջադրանքը բաժանել հնարավորինս մանրամասն քայլերի.
  • նախատիպավորում;
  • սահմանափակել նախկինում չնախատեսված պահանջների կատարումը. Սա չի նշանակում, որ դրանք պետք չէ կատարել, բայց նպատակահարմար է ընդգծել այս պահանջները և հաճախորդի հետ պայմանավորվել դրանց իրականացման ժամկետները և ծախսերը փոխելու վերաբերյալ.
  • հաշվի առնել լուծումը կայունացնելու ժամանակը.
  • օգտագործել պրակտիկա կոդի որակը բարելավելու համար, օրինակ՝ գրել միավորի թեստեր.
  • սահմանել ընդհանուր ռեզերվ.

Դե, և հիշեք, որ եթե փաստը գերազանցում է ձեր գնահատականը 30%-ով, ապա սա շատ լավ արդյունք է:

Նպաստել Ստորին

Առավել ճշգրիտ գնահատման համար անհրաժեշտ է իրական զարգացման փորձ և կոնկրետ ոլորտում: Բայց կան ընդհանուր կանոններ, որոնք կօգնեն խուսափել պլանավորման սխալներից ու խնդիրներից՝ աշխատանքը պատվիրատուին հանձնելիս։ Ես այս կանոնները կնկարագրեի հետևյալ կերպ.

Նախ, դուք պետք է հասկանաք առաջադրանքը: Սա կարծես ակնհայտ է և ուղղակիորեն չի առնչվում ժամանակի գնահատմանը, բայց իրականում դա առանցքային կետ է: Նույնիսկ լուրջ խոշոր նախագծերում ձախողման և ուշացման հիմնական գործոններից մեկը պահանջների սահմանման խնդիրն է։ Սկսնակ ծրագրավորողների համար, ցավոք, սա լուրջ խնդիր է. նրանք չեն կարդում տեխնիկական առաջադրանքը կամ շատ ընտրողաբար կարդում և հասկանում են այն (նրանք անգիր և լրացրեցին տասը կետերից հինգը, իսկ մնացածը հիշեցին, երբ արդյունքը ներկայացվեց): Հասկանալի է, որ սխալ հասկացված առաջադրանքը չի կարող ճիշտ ժամանակին իրականացվել։

Հաջորդը - գնահատեք ինքնին զարգացման ժամանակը: Ծրագրավորման առանձնահատկությունն այն է, որ բացարձակապես նույնական առաջադրանքներ չկան։ Սա մեր աշխատանքն ավելի հետաքրքիր է դարձնում, բայց ժամանակն ավելի դժվար է։ Այստեղ քայքայումը լավ է աշխատում, այսինքն. Բարդ եզակի առաջադրանքը բաժանելով փոքր, ծանոթ ենթաառաջադրանքների հաջորդականության: Եվ դրանցից յուրաքանչյուրն արդեն կարելի է ադեկվատ գնահատել ժամերով։ Մենք գումարում ենք ենթաառաջադրանքների գնահատականները և ստանում ենք ամբողջ խնդրի գնահատականը:

Սովորաբար, այս գնահատումը ներառում է միայն ուղղակի կոդավորման ծախսերը: Սա, անկասկած, զարգացման ամենակարևոր մասն է, բայց հեռու միակից (և հաճախ՝ ոչ ամենածավալուն): Առաջադրանքի ամբողջական իրականացումը ներառում է նաև տեխնիկական բնութագրի ընթերցում և պարզաբանում, հանդիպումներ գործընկերների կամ հաճախորդի հետ, վրիպազերծում և փորձարկում, փաստաթղթերի կազմում, արդյունքի հանձնում (ցուցադրում հաճախորդին և հնարավոր փոփոխությունները նրա մեկնաբանությունների հիման վրա): Թե որքան ժամանակ կպահանջվի այս գործողությունների համար՝ ցույց կտա փորձը։ Սկզբում կարևոր է, համենայն դեպս, չմոռանալ դրանք հաշվի առնել հաշվարկներում, և ժամանակի մոտավոր գնահատական ​​կարելի է խնդրել ավելի փորձառու գործընկերներից:

Այսպիսով, մենք հաշվարկում ենք կոդավորման աշխատանքային ծախսերը, ավելացնում ենք լրացուցիչ աշխատանքի արժեքի նախահաշիվը, և մենք ստանում ենք առաջադրանքն ավարտելու համար անհրաժեշտ ժամանակի գնահատումը: Բայց սա դեռ ամենը չէ: Անհրաժեշտ է նշել առաջադրանքի ծրագրված ավարտի ամսաթիվը: Սխալ կլինի պարզապես վերցնել և բաժանել աշխատանքային ծախսերը (ժամերով) 8 ժամով և ավելացնել ընթացիկ ամսաթվին: Իրական կյանքում ծրագրավորողը երբեք (լավ, գրեթե երբեք) ժամանակի 100%-ով չի աշխատում մեկ կոնկրետ առաջադրանքի վրա: Անպայման ստիպված կլինեք ժամանակ հատկացնել այլ աշխատանքի վրա՝ կարևոր, բայց ուղղակիորեն կապված չէ հիմնականի հետ: Օրինակ՝ օգնել գործընկերներին, վերապատրաստվել, հաշվետվություն ներկայացնել և այլն: Սովորաբար, պլանավորելիս ենթադրվում է, որ աշխատանքային ժամանակի 60-70%-ը ուղղակիորեն ծախսվում է ընթացիկ նախագծի վրա կատարված աշխատանքների վրա: Բացի այդ, դուք պետք է հաշվի առնեք հնարավոր ուշացումները, որոնք կխանգարեն ձեզ շարունակաբար աշխատել առաջադրանքի վրա: Օրինակ, եթե դրա համար անհրաժեշտ է շփվել այլ մարդկանց (գործընկերների, հաճախորդների) հետ, ապա հաշվի առեք նրանց զբաղվածությունը, աշխատանքային գրաֆիկը և այլն:

Ահա հիմնական կանոնները, որոնք, իմ կարծիքով, կօգնեն ծրագրավորողին խուսափել ժամկետների գնահատման և պահպանման հետ կապված խնդիրներից: Բացի այդ, առանցքայինը սեփական փորձի կուտակումն է ինչպես առաջադրանքների կատարման, այնպես էլ գնահատման մեջ։ Օրինակ, շատ օգտակար է առաջադրանքն ավարտելուց հետո ձեր նախնական գնահատականը համեմատել իրական ժամկետի հետ և եզրակացություններ անել ապագայի համար: Եվ, իհարկե, արժե ուսումնասիրել ուրիշի փորձը։ Ես խորհուրդ կտայի Ս. Մաքքոնելի «Ինչքան արժե ծրագրային նախագիծը» և Ս. Արխիպենկովը «Դասախոսություններ ծրագրային ապահովման նախագծերի կառավարման մասին» գրքի վերաբերյալ:

Նպաստել Ստորին

Ժամկետները գնահատելիս և պլանավորելիս անհրաժեշտ է.

  1. Խնդիրը տարրալուծեք փոքր ֆունկցիոնալ կտորների, որպեսզի հստակ պատկերացում կազմեք, թե որքան ժամանակ կպահանջվի յուրաքանչյուր այդպիսի հատվածի մշակման համար:
  2. Քայքայմանը զուգահեռ, անշուշտ կծագեն լրացուցիչ հարցեր ֆունկցիոնալության վերաբերյալ, որոնք նկարագրված չեն խնդրի հայտարարության մեջ: Նման հարցերի պատասխանները պետք է ստանալ, քանի որ դա ուղղակիորեն վերաբերում է աշխատանքի ծավալին և, հետևաբար, ժամանակին:
  3. Վերջնական գնահատմանը ավելացրեք ռիսկերի որոշ տոկոս: Սա որոշվում է էմպիրիկ կերպով: Դուք կարող եք սկսել, օրինակ, 10-15% ռիսկերից:
  4. Հասկացեք, թե օրական քանի ժամ է ծրագրավորողը պատրաստ հատկացնել առաջադրանքի համար:
  5. Վերջնական գնահատականը մենք բաժանում ենք օրական հատկացված ժամերի քանակի վրա և ստանում ենք իրականացման համար անհրաժեշտ օրերի քանակը:
  6. Մենք կենտրոնանում ենք օրացույցի և ավարտելու համար անհրաժեշտ օրերի վրա: Մենք հաշվի ենք առնում հանգստյան օրերը և այլ օրերը, երբ ծրագրավորողը չի կարողանա զբաղվել առաջադրանքով, ինչպես նաև աշխատանքի մեկնարկի ամսաթիվը (մշակողը միշտ չէ, որ պատրաստ է առաջադրանքը տանել աշխատանքի նույն օրը): Այսպիսով, մենք ստանում ենք աշխատանքի մեկնարկի և ավարտի ամսաթիվը:

Նպաստել Ստորին

Մեր ընկերությունում առաջադրանքների պլանավորումը միշտ անցնում է մի քանի փուլով: Բիզնեսի կողմից մենք ձևակերպում ենք տարվա 5-6 ռազմավարական նպատակներ։ Սրանք բարձր մակարդակի առաջադրանքներ են, օրինակ՝ պարամետրը որոշակի տոկոսով մեծացնելու համար: Ավելին, ընկերության տարբեր ստորաբաժանումները բիզնես առաջադրանքներ են կազմում ՏՏ բոլոր թիմերի համար: Այս առաջադրանքների վերջնաժամկետները ստանում են նախնական մոտավոր գնահատական, որը հաճախ ձևավորվում է թիմի բոլոր անդամների կողմից՝ մենեջեր, վերլուծաբան, մշակող և փորձարկող: Ստանալով այս գնահատականը՝ բիզնեսը առաջնահերթություն է տալիս առաջադրանքներին՝ հաշվի առնելով ընկերության ռազմավարական նպատակները։ Դրան օգնում են խաչաձեւ ռազմավարական նպատակները, որոնցով ակնհայտ է դառնում, որ մենք բոլորս աշխատում ենք ինչ-որ ընդհանուր գործի համար, չկա այնպիսի իրավիճակ, երբ ինչ-որ մեկը ձգում է միայն իրենց ուղղությամբ։ Մենք հավաքում ենք սպրինտներ ճշգրիտ գնահատված առաջադրանքներից: Որոշ թիմեր դրանք ունենում են եռամսյակային կտրվածքով, որոշները՝ ամսական: Թիմերը ճշգրիտ գնահատում են մի քանի խնդիրներ, որոնք, ըստ նախնական գնահատականների, ընկնում են հաջորդ սպրինտի մեջ: Խոշոր առաջադրանքները բաժանվում են ավելի ցածր մակարդակի, որոնցից յուրաքանչյուրի համար պատասխանատու է կոնկրետ կատարողը, և հենց նա է տալիս ճշգրիտ գնահատականը:

Այս փուլում կարևոր է չմոռանալ լրացուցիչ ժամանակ ավելացնել սխալները շտկելու համար, քանի որ միայն նրանք, ովքեր ոչինչ չեն անում, չեն սխալվում: Սա լավ հասկանում են և՛ Ապրանքի սեփականատերը, և՛ բիզնես հաճախորդները: Միևնույն ժամանակ, պահանջվող ժամանակի սահմանը պետք է համարժեք լինի. ոչ ոք չի հասկանա ծրագրավորողին, ով պարզ խնդիր է դնում չափազանց երկար ժամկետ, նրան կխնդրեն հիմնավորել որոշումը: Ամենադժվարը բիզնեսին բացատրելն է, թե ինչու է ժամանակ պահանջվում վերամշակման համար: Մենք երախտապարտ ենք մեր ընկերությանը այն փաստի համար, որ ժամանակ առ ժամանակ մենք հաջողության ենք հասնում, քանի որ, ի վերջո, վերամշակումը հանգեցնում է ավելի թեթև ենթակառուցվածքի և կոդում ամեն ինչ կարգի բերելու, ինչը մեծացնում է համակարգի կայունությունը և կարող է զգալիորեն արագացնել նորերի զարգացումը: գործառույթները։

Երբեմն գնահատման սխալներ են տեղի ունենում: Իմ կարծիքով, զարգացած ենթակառուցվածքով խոշոր ընկերությունների զարգացման բաժինը անհնար է ամբողջությամբ խուսափել դրանից։ Այս դեպքում կարևոր է, որ մշակողը ժամանակին տեղեկացնի իր մենեջերին կատարվածի մասին, և նա, իր հերթին, ժամանակ ունենա նախազգուշացնելու բիզնեսին և ինչ-որ բան «գերազանցել» ընկերության գլխավոր ծրագրերում։ Նման ռեժիմում շատ ավելի ճիշտ է աշխատել, քան խելագարորեն փորձել անել այն, ինչ տևում է 5 օր 3 օրվա ընթացքում, իսկ հետո խեղդվել մեծ թվով սխալների մեջ, որոնք առաջացել են նման շտապողականության պատճառով:

Նպաստել Ստորին

Հարցի երկու մասերի ճիշտ պատասխանը [ինչպես սովորել, թե ինչպես ճիշտ պլանավորել և ժամանակին մատուցել նախագիծը. Էդ.] - փորձ: Զենը «ճանաչելու» այլ եղանակներ չկան։ Համաձայն որոշումների կայացման տեսության՝ ցանկացած տեսակի ճշգրիտ եզրակացություն կարելի է կառուցել միայն մի շարք արդեն առկա տվյալների վերլուծության հիման վրա։ Եվ որքան շատ լինեն այս տվյալները, այնքան ավելի ճշգրիտ կլինի վերջնական կանխատեսումն ու գնահատականը։

Հերբերտ Շոուի խոսքերով. «Փորձը մի դպրոց է, որտեղ մարդը սովորում է, թե ինչ հիմար է եղել նախկինում»: Այսպիսով, հետևում է բավականին պարզ եզրակացություն. եթե ծրագրավորողն արդեն ունի փորձ, որը հարաբերակցում է առաջադրանքի հետ, ապա նա կարող է ապավինել դրա վրա, եթե ոչ՝ իր «խանութի գործընկերների» փորձի վրա։

Հաջորդը, դուք պետք է հասկանաք, որ ուղղակի պլանավորումը խնդիր է, որը մարդիկ շատ, շատ վատ են անում, հատկապես զարգացման մեջ: Վճարման ժամկետները գնահատելիս լավ պրակտիկա է սկզբնական գնահատման վրա «ուղղիչ գործոններ» ներմուծելը: Այս չափիչը կարող է տատանվել 1,5-ից 3-ի միջակայքում՝ կախված մշակողի փորձից և նախագծի շրջանակներում լուծված առաջադրանքների անորոշության աստիճանների ամբողջությունից:

Նպաստել Ստորին

Ժամկետը որոշելու համար կարևոր է հաշվի առնել բազմաթիվ գործոններ:

Օրինակ աշխատանքային փորձ. Որքանո՞վ եք հստակ պատկերացնում առաջիկա աշխատանքի շրջանակները։ Դուք նախկինում նման բան արե՞լ եք: Հասկանալի է, որ որքան շատ փորձառություն, այնքան ավելի արագ կկատարվի աշխատանքը։

Ժամկետների որոշման հարցում էական դեր է խաղում լավ գրված տեխնիկական առաջադրանքը։ Այս դեպքում մեր տարածքում գործերը շատ դժվար են: Հաճախ հաճախորդն ինքը չգիտի, թե ինչ է ուզում, ուստի խորհուրդ եմ տալիս լրացուցիչ մեկ-երկու օր անցկացնել, բայց հաճախորդից հստակ պատկերացում կազմել ցանկալի արդյունքի մասին: Կարևոր է, որ այս ներկայացումը փոխադարձ լինի: Եվ միայն դրանից հետո կարող եք սկսել բանակցել գումարի և ժամկետների շուրջ։

Բացի այդ, միշտ ներառեք ռիսկերը: Սկսնակների համար խորհուրդ եմ տալիս բազմապատկել գնահատված ժամկետը երկուսով: Ի վերջո, ավելի լավ է նախագիծը ժամանակից շուտ մատուցել և հաճախորդի աչքում աճել որպես մասնագետ, այլ ոչ թե այն ներկայացնել ավելի ուշ և փչացնել քո հեղինակությունը:

Նպաստել Ստորին

Ընդհանուր առաջարկություն - մշակողը պետք է սովորի, թե ինչպես ճիշտ տարրալուծել առաջադրանքները, միշտ փնտրել հնարավոր որոգայթներ, ապավինել սեփական փորձին և չմոռանալ ժամանակին զգուշացնել հաճախորդներին և գործընկերներին, եթե առաջադրանքը հնարավոր չէ լուծել նշված ժամկետում:

Հստակ պլան կառուցելը շատ ավելի դժվար է, քան կոնկրետ առաջադրանքի համար վերջնաժամկետ սահմանելը: Միևնույն ժամանակ, կարևոր է ոչ միայն նախագիծը ժամանակին մատուցելը, այլև համոզվել, որ ձեր մշակած համակարգը ճիշտ լուծում է բիզնեսի խնդիրները: Այստեղ ՏՏ թիմերին օգնում են ծրագրային ապահովման մշակման տարբեր մեթոդոլոգիաներ՝ RUP-ից և MSF-ից մինչև SCRUM և այլ Agile ձևաչափեր: Գործիքների ընտրությունը շատ ընդարձակ է, և մեր հաճախորդներից շատերը ցանկանում են նախապես հասկանալ, թե ինչպես ենք մենք աշխատելու իրենց հետ նախագծում, ինչ սկզբունքներով ենք հավատարիմ մնալու:

Ի դեպ, Agile թեման այժմ մոտենում է բիզնեսին, և նույնիսկ առանձին նախագծերում հանրային հատվածին, քանի որ այս մեթոդաբանության սկզբունքները թույլ են տալիս շատ արագ իրականացնել նախագծեր՝ կառավարելով հաճախորդի ակնկալիքները յուրաքանչյուր կրկնության ժամանակ: Օրինակ, Agile թիմում հաճախորդի հետ գործնականում երկար քննարկումներ չեն լինում: Մոռացեք տասնյակ էջերը, որոնք նկարագրում են ոչ անհրաժեշտ տեխնիկական մանրամասները, ինչպիսիք են բացվող պատուհանների հայտնվելու արագությունը: Հաճախորդին հնարավորություն տվեք փորձել համակարգի միջանկյալ տարբերակը, այդ դեպքում ձեզ համար շատ ավելի հեշտ կլինի հասկանալ միմյանց։

Արագաշարժ թիմը պլանավորում է ամեն ինչ միասին և որոշում աշխատուժի ծախսերի օպտիմալ մակարդակը, որն անհրաժեշտ կլինի որոշակի խնդրի լուծման համար: Օրինակ, տեխնիկաներից մեկը կոչվում է «Պոկերի պլանավորում», որտեղ յուրաքանչյուր մասնակից անանուն տալիս է որոշակի առաջադրանքի համար անհրաժեշտ ծանրաբեռնվածության իր գնահատականը: Դրանից հետո թիմը որոշում է առաջադրանքի միջին կշիռը պատմվածքի կետերով կամ աշխատաժամանակներով և առաջադրանքները բաշխում է «ով ինչ է սիրում» սկզբունքով։ Միևնույն ժամանակ, թիմը ամեն օր հավաքվում է 15 րոպեանոց հանդիպման համար, երբ բոլորը մի քանի րոպեում խոսում են իրենց ընթացիկ խնդիրների կարգավիճակի մասին, այդ թվում՝ զեկուցելով առաջացած դժվարությունների մասին։ Թիմը արագորեն վերացնում է հայտնաբերված խնդիրը, հետևաբար հաճախորդը հնարավորինս արագ նայում է ծրագրավորողի աշխատանքի հաջորդ փուլին։ Մշակողները չեն հետաձգում առաջադրանքների կատարման վերջնաժամկետները՝ թիմը ևս մեկ անգամ քաշքշելու ցանկության կամ այն ​​ինքնուրույն պարզելու ապարդյուն փորձերի պատճառով՝ սպանելով թանկարժեք ժամանակը: Ի դեպ, նման մինի ստատուսներով ծրագրավորողները ցանկություն ունեն ցույց տալու իրենց լավագույն կողմերը, ցույց տալու, որ դու պատասխանատու ես քո աշխատանքի համար։ Դա իսկապես մոտիվացնում և ինքնակարգավորում է: