Koha më e shkurtër e mbetur e ekzekutimit. Algoritmi për llogaritjen e kohës së vetë procesit Procesi i llogaritjes së kohës së mbetur të një sasie të diçkaje

Prezantimi

Qëllimi i punëtorisë për organizimin e prodhimit është zgjerimi dhe thellimi i njohurive teorike, futja e aftësive të nevojshme për zgjidhjen e problemeve që hasen më shpesh në praktikë në lidhje me organizimin dhe planifikimin e prodhimit.

Punëtoria përfshin detyra për seksionet kryesore të kursit. Në fillim të çdo teme janë paraqitur udhëzime të shkurtra metodologjike dhe informacione teorike, probleme tipike me zgjidhje dhe probleme për zgjidhje të pavarur.

Prania e udhëzimeve metodologjike dhe informacioni i shkurtër teorik në secilën temë ju lejon të përdorni këtë punëtori me korrespondencë trajnimi.


Llogaritja e kohëzgjatjes së ciklit të prodhimit

Kohëzgjatja e ciklit të prodhimit shërben si tregues i efikasitetit të procesit të prodhimit.

Cikli i prodhimit- periudha e qëndrimit të objekteve të punës në procesin e prodhimit nga momenti i hedhjes në treg të lëndëve të para deri në momentin e lëshimit të produkteve të gatshme.

Cikli i prodhimit përbëhet nga orë pune, gjatë së cilës shpenzohet puna dhe kohët e pushimit. Pushimet, në varësi të arsyeve që i shkaktuan ato, mund të ndahen në:

1) në natyrore ose teknologjike - ato përcaktohen nga natyra e produktit;

2) organizative(ndërprerjet ndërmjet turneve).

Kohëzgjatja e ciklit të prodhimit përbëhet nga komponentët e mëposhtëm:

Cikli T = t ato + t ha + t tr + t k.k. + t m.o. + t m.ts.

Ku t ato– koha e operacioneve teknologjike;

nuk ha - koha e proceseve natyrore (tharje, ftohje, etj.);

t tr - koha e transportit të objekteve të punës;

t k.k. - koha e kontrollit të cilësisë;

t m.o - koha e kujdesit ndëroperativ;

t m.c. - koha e ruajtjes në magazina ndër-dyqane;

(t tre t k.k. mund të kombinohet me t m.o).

Llogaritja e kohës së ciklit të prodhimit varet nga lloji i prodhimit. Në prodhimin masiv, kohëzgjatja e ciklit të prodhimit përcaktohet nga koha kur produkti është në prodhim, d.m.th.

Cikli T = t në m,

Ku t V– çlirimi i goditjes;

M- numri i vendeve të punës.

Nën lëshimi i goditjesështë e nevojshme të kuptohet intervali kohor ndërmjet lëshimit të një produkti të prodhuar dhe produktit tjetër.

Goditja e lëshimit përcaktohet nga formula

t in = Teff /V,

Ku Tef– fondi efektiv i kohës së punëtorëve për periudhën e faturimit (ndërrimi, dita, viti);

– vëllimi i prodhimit për të njëjtën periudhë (në njësi natyrore).

Shembull: T cm = 8 orë = 480 min; T për = 30 min; → Teff = 480 – – 30 = 450 min.

B = 225 copë; → t në = 450/225 = 2 min.

Në prodhimin serik, ku përpunimi kryhet në tufa, kohëzgjatja e ciklit teknologjik përcaktohet jo për njësi produkti, por për të gjithë grupin. Për më tepër, në varësi të metodës së lëshimit të një grupi në prodhim, marrim kohë të ndryshme cikli. Ekzistojnë tre mënyra të lëvizjes së produkteve në prodhim: sekuenciale, paralele dhe të përziera (seri-paralele).


I. Në vijues Kur lëvizni pjesët, çdo veprim i mëpasshëm fillon vetëm pasi të ketë përfunduar ai i mëparshmi. Kohëzgjatja e ciklit për lëvizjen sekuenciale të pjesëve do të jetë e barabartë me:

Ku n – numri i pjesëve të grupit që përpunohet;

t copëi- përqindja e kohës për një operacion;

C i– numri i vendeve të punës për i operacioni;

m– numri i operacioneve të procesit teknologjik.

Jepet një grup produktesh të përbërë nga 5 copë. Grupi kalon në mënyrë sekuenciale përmes 4 operacioneve; kohëzgjatja e operacionit të parë është 10 minuta, e dyta është 20 minuta, e treta është 10 minuta, e katërta është 30 minuta (Fig. 1).

Foto 1

T cikël = T fundit = 5·(10+20+10+30) = 350 min.

Metoda sekuenciale e pjesëve lëvizëse ka përparësinë që siguron funksionimin e pajisjes pa ndërprerje. Por disavantazhi i tij është se kohëzgjatja e ciklit të prodhimit në këtë rast është më e gjata. Përveç kësaj, në vendet e punës krijohen rezerva të konsiderueshme pjesësh, gjë që kërkon hapësirë ​​​​shtesë të prodhimit.

II. Në paralele Gjatë lëvizjes së grupit, pjesët individuale nuk mbahen në stacionet e punës, por transferohen individualisht në operacionin tjetër menjëherë, pa pritur që të përfundojë përpunimi i të gjithë grupit. Kështu, me lëvizjen paralele të tufave të pjesëve në çdo vend pune, ato prodhohen njëkohësisht operacione të ndryshme mbi pjesë të ndryshme të së njëjtës grumbull.

Koha e përpunimit të një grupi me lëvizje paralele të produkteve zvogëlohet ndjeshëm:

dl .

Ku n n- numri i pjesëve në grumbull transferimi(batch transporti), d.m.th. numri i produkteve të transferuara njëkohësisht nga një operacion në tjetrin;

Gjatësia - cikli më i gjatë i funksionimit.

Kur lëshohet paralelisht një grup produktesh, pjesët e të gjithë grupit përpunohen vazhdimisht vetëm në ato vende pune ku operacionet e gjata pasojnë ato të shkurtra. Në rastet kur operacionet e shkurtra pasojnë ato të gjata, d.m.th. më gjatë (në shembullin tonë, operacioni i tretë), këto operacione kryhen në mënyrë të ndërprerë, d.m.th. pajisja është e papunë. Këtu, një grup pjesësh nuk mund të përpunohet menjëherë, pa vonesa, pasi operacioni i mëparshëm (i gjatë) nuk e lejon këtë.

Në shembullin tonë: n= 5, t 1 = 10; t 2 = 20; t 3 = 10; t 4 = 30; Me= 1.

T avull = 1·(10+20+10+30)+(5-1)·30=70+120 = 190 min.

Le të shqyrtojmë diagramin e lëvizjes paralele të pjesëve (Fig. 2):

Figura 2

III. Për të eliminuar ndërprerjet në përpunimin e pjesëve individuale të një grupi në të gjitha operacionet, përdorni paralel-serial ose të përziera një metodë lëshimi në të cilën pjesët (pas përpunimit) transferohen në operacionin tjetër një nga një, ose në formën e tufave "transporti" (disa pjesë) në mënyrë të tillë që ekzekutimi i operacioneve të mos ndërpritet në asnjë vend pune. NË metodë e përzier nga sekuenciale merret vazhdimësia e përpunimit dhe nga paralele kalimi i një pjese nga funksionimi në funksionim menjëherë pas përpunimit të saj. Me një metodë të përzier të lëshimit në prodhim, kohëzgjatja e ciklit përcaktohet nga formula

bërthamë .

ku është kor. – ciklin më të shkurtër të funksionimit (nga çdo palë operacionesh ngjitur);

m-1 numri i kombinimeve.

Nëse operacioni i mëpasshëm është më i gjatë se ai i mëparshmi ose i barabartë në kohë, atëherë ky operacion fillon individualisht, menjëherë pas përpunimit të pjesës së parë në operacionin e mëparshëm. Nëse, përkundrazi, operacioni i mëpasshëm është më i shkurtër se ai i mëparshmi, atëherë këtu ndodhin ndërprerje gjatë transferimit të pjesëve. Për t'i parandaluar ato, është e nevojshme të grumbullohet një rezervë transporti e një vëllimi të tillë që është i mjaftueshëm për të siguruar punë në funksionimin e mëvonshëm. Për të gjetur praktikisht këtë pikë në grafik, është e nevojshme të transferoni pjesën e fundit të grupit dhe të zhvendosni kohëzgjatjen e ekzekutimit të saj në të djathtë. Koha e përpunimit për të gjitha pjesët e tjera në grup është paraqitur në të majtë në grafik. Fillimi i përpunimit të pjesës së parë tregon momentin kur ngarkesat e mbetura të transportit nga operacioni i mëparshëm duhet të transferohen në këtë operacion.

Nëse operacionet ngjitur janë të njëjta në kohëzgjatje, atëherë vetëm njëri prej tyre konsiderohet i shkurtër ose i gjatë (Fig. 3).

Figura 3

Tçiftet e fundit = 5·(10+20+10+30)-(5-1)·(10+10+10) = 350-120 = 230 min.

Mënyrat kryesore për të zvogëluar kohën e ciklit të prodhimit janë:

1) Reduktimi i intensitetit të punës së produkteve të prodhimit duke përmirësuar aftësinë e prodhimit të dizajnit të prodhuar, duke përdorur kompjuterë dhe duke futur procese të avancuara teknologjike.

2) Organizimi racional proceset e punës, rregullimi dhe mirëmbajtja e vendeve të punës bazuar në specializimin dhe bashkëpunimin, mekanizimin e gjerë dhe automatizimin e prodhimit.

3) Reduktimi i pushimeve të ndryshme të planifikuara dhe të paplanifikuara në punë bazuar në përdorimin racional të parimeve të organizimit shkencor të procesit të prodhimit.

4) Përshpejtimi i reaksioneve si rezultat i rritjes së presionit, temperaturave, kalimit në një proces të vazhdueshëm etj.

5) Përmirësimi i proceseve të transportit, ruajtjes dhe kontrollit dhe kombinimi i tyre në kohë me procesin e përpunimit dhe montimit.

Zvogëlimi i kohëzgjatjes së ciklit të prodhimit është një nga detyrat serioze të organizimit të prodhimit, sepse ndikon në qarkullim kapital qarkullues, duke ulur kostot e punës, duke reduktuar hapësirën e magazinimit, nevojat e transportit, etj.

Detyrat

1 Përcaktoni kohëzgjatjen e ciklit të përpunimit të 50 pjesëve me lloje lëvizjesh sekuenciale, paralele dhe serike-paralele në procesin e prodhimit. Procesi i përpunimit të pjesëve përbëhet nga pesë operacione, kohëzgjatja e të cilave është, përkatësisht, min: t 1 =2; t 2 =3; t 3 =4; t 4 =1; t 5 = 3. Operacioni i dytë kryhet në dy makina, dhe secila nga të tjerat në një. Madhësia e lotit të transferimit është 4 copë.

2 Përcaktoni kohëzgjatjen e ciklit të përpunimit të 50 pjesëve me lloje lëvizjesh sekuenciale, paralele dhe serike-paralele në procesin e prodhimit. Procesi i përpunimit të pjesëve përbëhet nga katër operacione, kohëzgjatja e të cilave është, përkatësisht, min: t 1 =1; t 2 =4; t 3 =2; t 4 = 6. Operacioni i katërt kryhet në dy makina, dhe secila nga të tjerat në një. Madhësia e lotit të transferimit është 5 copë.

3 Një grup pjesësh prej 200 copësh përpunohet me lëvizje paralele-sekuenciale gjatë procesit të prodhimit. Procesi i përpunimit të pjesëve përbëhet nga gjashtë operacione, kohëzgjatja e të cilave është, përkatësisht, min: t 1 =8; t 2 =3; t 3 =27; t 4 =6; t 5 =4; t 6 = 20. Operacioni i tretë kryhet në tre makina, i gjashti në dy dhe secili nga operacionet e mbetura në një makinë. Përcaktoni se si do të ndryshojë kohëzgjatja e ciklit të përpunimit për një grup pjesësh nëse versioni paralel-sekuencial i lëvizjes në prodhim zëvendësohet nga një paralel. Madhësia e lotit të transferimit është 20 copë.

4 Një grup pjesësh prej 300 copësh përpunohet me lëvizje paralele-sekuenciale gjatë procesit të prodhimit. Procesi i përpunimit të pjesëve përbëhet nga shtatë operacione, kohëzgjatja e të cilave është, përkatësisht, min: t 1 =4; t 2 =5; t 3 =7; t 4 =3; t 5 =4; t 6 =5; t 7 = 6. Çdo operacion kryhet në një makinë. Pjesa e transferimit - 30 copë. Si rezultat i përmirësimit të teknologjisë së prodhimit, kohëzgjatja e operacionit të tretë u zvogëlua me 3 minuta, e shtatë - me 2 minuta. Përcaktoni se si ndryshon cikli i përpunimit të një grupi pjesësh.

5 Jepet një grup boshllëqesh të përbërë nga 5 pjesë. Grupi kalon në 4 operacione: kohëzgjatja e të parit është 10 minuta, e dyta është 20 minuta, e treta është 10 minuta, e katërta është 30 minuta. Përcaktoni kohëzgjatjen e ciklit me metoda analitike dhe grafike me lëvizje sekuenciale.

6 Jepet një grup boshllëqesh të përbërë nga katër pjesë. Grupi kalon në 4 operacione: kohëzgjatja e të parit është 5 minuta, e dyta është 10 minuta, e treta është 5 minuta, e katërta është 15 minuta. Përcaktoni kohëzgjatjen e ciklit me metoda analitike dhe grafike me lëvizje paralele.

7 Jepet një grup boshllëqesh të përbërë nga 5 pjesë. Grupi kalon në 4 operacione: kohëzgjatja e të parit është 10 minuta, e dyta është 20 minuta, e treta është 10 minuta, e katërta është 30 minuta. Përcaktoni kohëzgjatjen e ciklit me metoda analitike dhe grafike për lëvizjen serike-paralele.

8 Përcaktoni kohëzgjatjen e ciklit teknologjik për përpunimin e një grupi produktesh prej 180 copë. me variante paralele dhe sekuenciale të lëvizjes së tij. Ndërtoni grafikët e procesit të përpunimit. Madhësia e lotit të transferimit është 30 copë. Standardet kohore dhe numri i vendeve të punës në operacione janë si më poshtë.

Një version i ndërruar i algoritmit të mëparshëm është algoritmi më i shkurtër i mbetur i kohës së ekzekutimit. Sipas këtij algoritmi, planifikuesi zgjedh çdo herë procesin me kohën më të shkurtër të mbetur të ekzekutimit. Në këtë rast, është gjithashtu e nevojshme të dihet paraprakisht koha e përfundimit të detyrës. Kur vjen një detyrë e re, koha totale e ekzekutimit të saj krahasohet me kohën e mbetur të ekzekutimit të detyrës aktuale. Nëse koha e ekzekutimit të detyrës së re është më e shkurtër, procesi aktual pezullohet dhe kontrolli transferohet në detyrën e re. Kjo skemë ju lejon të shërbeni shpejt kërkesat e shkurtra.

Planifikimi me tre nivele

Sistemet e përpunimit të grupeve lejojnë planifikimin në tre nivele, siç tregohet në figurë. Ndërsa detyrat e reja mbërrijnë në sistem, ato fillimisht vendosen në një radhë të ruajtur në disk. Hyrja programuesi i aksesit zgjedh një detyrë dhe e transferon atë në sistem. Detyrat e mbetura mbeten në radhë.

Sapo një punë të hyjë në sistem, do të krijohet një proces përkatës për të dhe ai menjëherë mund të fillojë të konkurrojë për qasje në procesor. Sidoqoftë, është e mundur që të ketë shumë procese dhe të gjitha të mos përshtaten në memorie, atëherë disa prej tyre do të shfaqen në disk. Niveli i dytë i planifikimit përcakton se cilat procese mund të ruhen në memorie dhe cilat mund të ruhen në disk. Kjo është ajo që ai bën programuesi i memories .

Planifikuesi i memories shikon periodikisht proceset në disk për të vendosur se cilat të zhvendosen në memorie. Ndër kriteret e përdorura nga planifikuesi janë këto:

1. Sa kohë ka kaluar që kur procesi është ndërruar në disk ose është ngarkuar nga disku?

2. Sa kohë ka që procesi përdor CPU-në?

3. Sa është madhësia e procesit (proceset e vogla nuk ndërhyjnë)?

4. Cila është rëndësia e procesit?

Niveli i tretë i planifikimit është përgjegjës për lejimin e proceseve në gjendje gatishmërie për të hyrë në procesor. Kur flasim për një "planifikues", zakonisht nënkuptojmë Programuesi i CPU-së . Ky planifikues përdor çdo algoritëm të përshtatshëm për situatën, me dhe pa ndërprerje. Ne kemi parë tashmë disa nga këto algoritme dhe do të njihemi më vonë me të tjerët.

Planifikimi në sistemet interaktive.

Planifikimi ciklik.

Një nga më të vjetrat, më të thjeshtët, më të drejtët dhe më të përdorurit është algoritmi ciklik i planifikimit. Çdo procesi i jepet një sasi e caktuar e kohës së procesorit, e ashtuquajtura pjesë kohore. Nëse procesi është ende duke u ekzekutuar në fund të pjesës kohore, ai përfundon dhe kontrolli transferohet në një proces tjetër. Natyrisht, nëse procesi bllokohet ose përfundon herët, një tranzicion kontrolli ndodh në këtë pikë. Zbatimi i planifikimit të rrumbullakët është i thjeshtë. Planifikuesi duhet vetëm të mbajë një listë të proceseve në një gjendje gatishmërie. Kur një proces ka arritur kufirin e tij kohor, ai dërgohet në fund të listës.

I vetmi aspekt interesant i këtij algoritmi është gjatësia e kuantit. Kalimi nga një proces në tjetrin kërkon pak kohë - është e nevojshme të ruhen dhe të ngarkohen regjistrat dhe hartat e memories, të përditësohen tabelat dhe listat, të ruhet dhe të ringarkohet memoria e memories, etj. Përfundimi mund të formulohet si më poshtë: një kuant shumë i vogël do të çojë ndaj ndërrimit të shpeshtë të proceseve dhe një efikasitet i vogël, por një kuant shumë i madh mund të rezultojë në përgjigje të ngadaltë ndaj kërkesave të shkurtra interaktive. Një vlerë kuantike prej rreth 2 0 -5 0 ms është shpesh një kompromis i arsyeshëm.

Planifikimi me prioritet.

Planifikimi i rrumbullakët ka një supozim të rëndësishëm se të gjitha proceset janë të barabarta. Në situatën e një kompjuteri me një numër të madh përdoruesish, kjo mund të mos jetë kështu. Për shembull, në një universitet duhet të shërbehen fillimisht dekanët, pastaj profesorët, sekretarët, pastruesit dhe vetëm më pas studentët. Nevoja për të marrë parasysh faktorë të tillë të jashtëm çon në planifikimin prioritar. Ideja bazë është e thjeshtë: çdo procesi i caktohet një prioritet dhe kontrolli transferohet në procesin e gatshëm me përparësinë më të lartë.

Disa radhë.

Një nga programuesit e parë me përparësi u implementua në sistemin CTSS (sistemi i përputhshëm me kohë të përbashkët Problemi kryesor me sistemin CTSS ishte se ndërrimi i procesit ishte shumë i ngadaltë, pasi kompjuteri IBM 7094 mund të mbante vetëm një proces në memorie). Çdo ndërprerës nënkuptonte shkarkimin e procesit aktual në disk

dhe leximi i procesit të ri nga disku. Zhvilluesit e CTSS e kuptuan shpejt se efikasiteti do të ishte më i madh nëse proceset me aftësi të kufizuara procesor, ndani një pjesë më të madhe kohore sesa nëse u siguroni pjesë të vogla kohore, por shpesh. Nga njëra anë, kjo do të zvogëlojë numrin e transferimeve nga memorja në disk, dhe nga ana tjetër, do të çojë në një përkeqësim të kohës së përgjigjes, siç e kemi parë tashmë.

Si rezultat, u zhvillua një zgjidhje me klasa prioritare. Proceseve në klasën e prioritetit më të lartë iu nda një kuantike, proceseve në klasën tjetër u ndanë dy kuantike, proceseve në klasën tjetër u ndanë katër kuantike, etj. Kur një proces kishte përdorur të gjithë kohën e caktuar, ai u zhvendos në një më të ulët klasës.

Si shembull, merrni parasysh një proces që duhet të llogaritë mbi 100 kuanta. Së pari, do t'i jepet një kuant, pastaj do të pompohet në disk. Herën tjetër ai merr 2 kuanta, pastaj 4, 8,16, 32, 64, megjithëse nga 64 ai përdor vetëm 37. Në këtë rast, do të nevojiten vetëm 7 transferime (përfshirë ngarkesën fillestare) në vend të 100 që do të ishte nevojiten duke përdorur algoritmin e rrumbullakët. Përveç kësaj, ndërsa futet më thellë në radhën e përparësisë, procesi do të fillojë gjithnjë e më rrallë, duke i dhënë CPU-së proceseve më të shkurtra.

“Procesi më i shkurtër është ai i radhës”

Meqenëse algoritmi Shortest Task First minimizon kohën mesatare të kthimit në sistemet e përpunimit të grupeve, dikush do të donte ta përdorte atë edhe në sistemet interaktive. Në një farë mase kjo është e mundur. Proceset ndërvepruese më së shpeshti ndjekin modelin e "pritjes së një komande, ekzekutimit të një komande, pritjes së një komande, ekzekutimit të një komande..." Nëse e trajtoni ekzekutimin e çdo komande si një detyrë të veçantë, mund të minimizoni përgjigjen mesatare të përgjithshme koha duke ekzekutuar fillimisht detyrën më të shkurtër. Problemi i vetëm është

është të kuptojmë se cili nga proceset e pritjes është më i shkurtër.

Një metodë bazohet në vlerësimin e gjatësisë së procesit bazuar në sjelljen e mëparshme të procesit. Në këtë rast, fillon procesi me kohën më të shkurtër të parashikuar. Le të supozojmë se koha e pritshme e ekzekutimit të komandës është T 0 dhe koha e pritur e ardhshme e ekzekutimit është T 1 . Është e mundur të përmirësohet vlerësimi i kohës duke marrë shumën e ponderuar të këtyre kohëve në T 0 + (1 - a)T 1 . Duke zgjedhur vlerën e duhur për a, ne mund të bëjmë që algoritmi i vlerësimit të harrojë shpejt ekzekutimet e mëparshme ose, anasjelltas, t'i mbajë mend ato për një kohë të gjatë. Duke marrë a = 1/2, marrim një seri vlerësimesh:

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.

Pas tre vrapimeve, pesha e T 0 në vlerësim do të ulet në 1/8.

Metoda e vlerësimit të vlerës së ardhshme në një seri përmes një mesatareje të ponderuar të vlerës së mëparshme dhe vlerësimit të mëparshëm shpesh quhet plakje. Kjo metodë është e zbatueshme në shumë situata ku është i nevojshëm vlerësimi nga vlerat e mëparshme. Mënyra më e lehtë për të zbatuar plakjen është në një = 1/2. Në çdo hap ju duhet vetëm

shtoni një vlerë të re në vlerësimin aktual dhe ndani shumën në gjysmë (duke u zhvendosur djathtas me 1 bit).

Planifikimi i garantuar.

Një qasje thelbësisht e ndryshme ndaj planifikimit është t'u bësh premtime reale përdoruesve dhe më pas t'i zbatosh ato. Këtu është një premtim që është i lehtë për t'u thënë dhe i lehtë për t'u mbajtur: nëse ndani një procesor me n përdorues, do t'ju jepet 1/n e fuqisë së procesorit.

Dhe në një sistem me një përdorues dhe n procesorë në punë, secili do të marrë 1/n cikle procesori.

Për të përmbushur këtë premtim, sistemi duhet të mbajë gjurmët e alokimit të CPU-së ndërmjet proceseve që nga momenti i krijimit të secilit proces. Sistemi më pas llogarit sasinë e burimeve të CPU-së që i takon procesit, si p.sh. koha që nga krijimi, pjesëtuar me n. Tani mund të llogarisim raportin e kohës që i është dhënë procesit me kohën në të cilën ai ka të drejtë. Vlera rezultuese prej 0.5 do të thotë që procesi ka marrë vetëm gjysmën e shumës së tij të caktuar, dhe 2.0 do të thotë se procesi ka marrë dy herë më shumë se sa është menduar. Më pas fillon procesi me raportin më të vogël, derisa

nuk do të bëhet më i madh se ai i fqinjit më të afërt.

Planifikimi i lotarisë.

Algoritmi bazohet në shpërndarjen e biletave të lotarisë në procese për qasje në burime të ndryshme, duke përfshirë procesorin. Kur planifikuesi duhet të marrë një vendim, biletë lotarie, dhe pronari i tij fiton akses në burim. Për sa i përket aksesit në CPU, "llotaria" mund të ndodhë 50 herë në sekondë, me fituesin që merr 20 ms kohë CPU.

Proceseve më të rëndësishme mund të jepen bileta shtesë për të rritur gjasat për të fituar. Nëse ka vetëm 100 bileta dhe 20 prej tyre janë në një proces, atëherë do të marrë 20% të kohës së procesorit. Ndryshe nga planifikuesi i prioriteteve, në të cilin është shumë e vështirë të vlerësohet se çfarë do të thotë, le të themi, prioriteti 40, në planifikimin e lotarisë gjithçka është e qartë. Çdo proces do të marrë një përqindje burimesh afërsisht të barabartë me përqindjen e biletave që ka.

Planifikimi i lotarisë ka disa karakteristika interesante. Për shembull, nëse gjatë krijimit një proces merr disa bileta, atëherë në shortin e ardhshëm shanset e tij për të fituar janë proporcionale me numrin e biletave.

Proceset e komunikimit mund të shkëmbejnë bileta nëse është e nevojshme. Pra, nëse një proces klienti dërgon një mesazh në një proces serveri dhe më pas bllokon, ai mund t'i kalojë të gjitha biletat e tij në procesin e serverit për të rritur mundësinë e fillimit të serverit. Kur procesi i serverit përfundon, ai mund t'i kthejë të gjitha biletat.

Planifikimi i drejtë.

Deri më tani kemi supozuar se çdo proces kontrollohet pavarësisht se kush është pronari i tij. Prandaj, nëse përdoruesi 1 krijon 9 procese, dhe përdoruesi 2 - 1 proces, atëherë duke përdorur planifikimin e rrumbullakët ose në rastin e prioriteteve të barabarta, përdoruesi 1 do të marrë 90% të procesorit, dhe përdoruesi 2 vetëm 10.

Për të shmangur situata të tilla, disa sisteme i kushtojnë vëmendje pronarit të procesit përpara se të planifikojnë. Në këtë model, çdo përdorues merr një pjesë të caktuar të procesorit, dhe planifikuesi zgjedh një proces sipas këtij fakti. Nëse në shembullin tonë çdo përdorues kishte

premtoi 50% të procesorit, atëherë ata do të marrin 50% të procesorit, pavarësisht nga numri i proceseve.

Planifikimi në sisteme në kohë reale.

Në sistemet në kohë reale, koha luan një rol thelbësor. Më shpesh, një ose më shumë pajisje fizike të jashtme gjenerojnë sinjale hyrëse dhe kompjuteri duhet t'u përgjigjet në mënyrë adekuate atyre brenda një periudhe të caktuar kohore.

Sistemet në kohë reale ndahen në sisteme të vështira në kohë reale , që nënkupton praninë e afateve strikte për çdo detyrë (ato duhet të respektohen), dhe sisteme fleksibël në kohë reale , në të cilat shkeljet e orarit janë të padëshirueshme, por të pranueshme. Në të dyja rastet, programi ndahet në disa procese, secili prej të cilave është i parashikueshëm. Këto procese janë më shpesh të shkurtra dhe përfundojnë punën e tyre brenda një sekonde. Kur shfaqet një sinjal i jashtëm, është planifikuesi ai që duhet të sigurojë që orari të mbahet.

Ngjarjet e jashtme ndaj të cilave sistemi duhet të reagojë mund të ndahen në periodike(ndodhin në intervale të rregullta) dhe jo periodike(ndodh në mënyrë të paparashikueshme). Mund të ketë disa rrjedha periodike të ngjarjeve që sistemi duhet të përpunojë. Në varësi të kohës që duhet për të përpunuar çdo ngjarje, sistemi mund të mos jetë në gjendje të përpunojë të gjitha ngjarjet në kohën e duhur.


Informacione të lidhura.


Gjithçka që është diskutuar në disa seksionet e mëparshme, ishte më e fokusuar në kryerjen e kërkimeve të mëtejshme mbi problemin e kohës së vetë procesit dhe në një masë shumë më të vogël në aplikime praktike. Duke plotësuar këtë boshllëk, ne do të përshkruajmë një nga mënyrat për të llogaritur kohën e duhur të një procesi bazuar në të dhënat statistikore mbi evoluimin e tij.

Le të shqyrtojmë një proces njëdimensional, gjendja e të cilit karakterizohet nga një ndryshore reale x. Le të supozojmë se vëzhgimet e dinamikës së procesit kryhen në kohën astronomike t, në mënyrë që t = t k dhe x = x k, k =1, ..., n janë momente fikse të vëzhgimit dhe vlerat përkatëse të thuhet në proces. Ka shumë të ndryshme metodat matematikore, duke na lejuar të ndërtojmë kthesa që ose kalojnë nëpër pikat (t k, Xk) ose "qasja më e mirë" ndaj tyre. Funksionet x = x(t) të përftuara në këtë mënyrë krijojnë në mendjen tonë përshtypjen se procesi në shqyrtim varet nga lëvizja mekanike e trupave qiellorë dhe, për rrjedhojë, gjendja e tij shprehet përmes kohës astronomike t. Ky përfundim mund të merret parasysh; nëse nuk do të shfaqeshin vështirësi të vazhdueshme gjatë përpjekjes për të parashikuar ecurinë e mëtejshme të procesit. Për numer i madh të proceseve të ndryshme që nuk lidhen drejtpërdrejt me lëvizjet mekanike të trupave qiellorë, parashikimet teorike të marra duke përdorur funksionin x = x(t) jashtë intervalit të vëzhgimit fillojnë të devijojnë ndjeshëm nga të dhënat eksperimentale të mëvonshme. Ata zakonisht përpiqen të shpjegojnë arsyen e mospërputhjes midis teorisë dhe eksperimentit me një metodë përpunimi të zgjedhur pa sukses, por ky mund të mos jetë thelbi i çështjes.

Çdo proces që na intereson ndodh në Univers. Ai sigurisht "ndjen" ndikimin e lëvizjes së trupave qiellorë. Megjithatë, ky ndikim mund të rezultojë të jetë "jo i ngurtë", jo përcaktues. Kjo, në veçanti, mund të shfaqet në faktin se në intervale të caktuara të kohës astronomike gjendja e procesit mbetet e pandryshuar. Në këtë drejtim, le të kujtojmë shembullin e mëparshëm me një dhomë të mbyllur bosh, të izoluar nga bota e jashtme. Le të lejojmë vetëm një të gjallë të fluturojë në dhomë. Gjatë disa ditëve, ndryshimet në gjendjen e sistemit "dhomë-fly" do të varen nga lëvizjet e mizës, pasi ndryshimet në gjendjen e dhomës nuk mund të priten. Në të njëjtën kohë, është e vështirë të imagjinohet se sjellja e një mize është e lidhur rreptësisht me rrjedhën e kohës astronomike.

Pasi kemi bërë një digresion kaq të gjatë, le të kalojmë në përshkrimin e algoritmit për llogaritjen e kohës së vetë procesit.

Në këtë algoritëm, njësia për llogaritjen e maksimumeve lokale zgjidhet si matës natyror i kohës. Përveç kësaj, merren parasysh seksionet e mundshme të gjendjes së palëvizshme të procesit, në të cilat, siç u përmend më herët, ndalon koha e duhur. Meqenëse identiteti i dy gjendjeve mund të thuhet vetëm brenda kufijve të saktësisë së matjes, në atë që vijon përdoret një numër i caktuar pozitiv e - gabimi i lejueshëm i matjes.

Pra, të dhënat hyrëse për algoritmin janë numri natyror n, numri pozitiv 8, vargjet (tk) dhe (x k), k = 1, ..., n Për lehtësinë e programimit, algoritmi është paraqitur në formë prej katër moduleve të ekzekutuara në mënyrë sekuenciale.

Moduli 1, duke përdorur të dhënat p, e, t k), (x k), në rastin e përgjithshëm, formon vargje të reja 7 = (7+ X = (X t) dhe një grup shoqërues shumë specifik P = (?), ku 1 = 1, ..., t, dhe t<Сп. Основное назначение этого модуля -- выявление в массиве x k) последовательностей идентичных состояний процесса, сохранение первых элементов в таких последовательностях и удаление всех остальных и, наконец, уменьшение по определенному, правилу исходного интервала наблюдения от t до на сумму тех промежутков времени, в которых процесс протекает стационарно.

Moduli 1 përfshin procedurat e mëposhtme:

p: = 1, t: = 0, k: = 1.

Në fq. Prezantohen 1, 2 numërues me vlera fillestare specifike:

Në fq. 3, 4 vlerat e numëruesit rriten me 1.

Kontrollo gjendjen k^n. Nëse është përfunduar, atëherë shkoni në hapin 6, përndryshe shkoni në hapin 11.

Kontrolloni pabarazinë x k --x k = e nëse qëndron, atëherë shkoni në hapin 7, përndryshe shkoni në hapin 9.

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

Kjo procedurë do të thotë që nëse vlerat e Xk dhe Xk 1 janë të padallueshme brenda gabimit, atëherë të gjitha kohët duke filluar nga tk zvogëlohen me shumën tki-tk.

r = r. Kthehuni në pikën 4.

Tv = t k; X v:=x k ; p = p v = v+l., d.m.th. formohen elementet e vargjeve T, X, P dhe caktohet vlera e radhës v.

  • 10. Merrni (t k, ..., t n AND (Xk, - X n) si vargje origjinale të dimensionit n--k 1 + 1 dhe më pas kthehuni në hapin 2.
  • 11. Shtypni m, (T), (X,) dhe (P,), ku i = l, ..., t.

Le të shpjegojmë kuptimin e elementeve të grupit shoqërues P. Nga teksti i mëparshëm rezulton se vlera e pk është e barabartë me numrin e atyre elementeve të grupit (xk) që ndjekin drejtpërdrejt dhe ndryshojnë nga x pi+ ... +, + me më pak se e Vëmë re gjithashtu se pi+ ... +p m = n.

Shembulli 1. Jepet: n = 20, (/*) = (2, 4, 7, 10, 12, 13, 15, 17, 20, 22, 24, 25,

  • 27, 30, 32, 33, 34, 35, 36) dhe (x,)= (4, 4, 6, 6, 6, 3, 2, 4, 3, 3, 3, 2, 2, 4, 5 , 5,
  • 5, 4, 3), shih fig. 9, a.

Si rezultat i ekzekutimit të modulit 1, fitohet m = 11,

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

i(d.) = (2, 4, 1, 1, 1.3, 2, 1.3, 1, 1), shih fig. 9, b.

Moduli 2. Të dhënat hyrëse për të janë një numër natyror m, si dhe vargje (7+ (X L), = 1, ..., m. Ky modul në grup (TJ identifikon momentet e kohës [TM a], 1 = 1 m (ml

Shembulli 2. Vlerat m, (Ть) dhe (X,] janë huazuar nga shembulli i mëparshëm. Pas përfundimit të modulit 2, marrim ml = 3, m2 = 8, (Ш,) = (3, 8, 17 ), (Т*) = (3, 4, 6, 8, 11, 12, 15, 17), shih gjithashtu Fig. 9, b.

Moduli 3. Të dhënat hyrëse ml, m2, (TM n), 1 = 1, ..., ml, (G*), /2 = 1, ..., gn2.

Ky modul është krijuar për të ndërtuar një grup (t(-r) duke përdorur formulën

Ku është TV 6 [TMp, TMn+i]

Ndryshorja t është koha e duhur e gjeneruar nga ndryshimi në ndryshoren x. Masa e tij natyrore është njësia për llogaritjen e maksimumeve lokale.

Shembulli 3. Të dhënat fillestare për T 2) janë të njëjta me vlerat e ml, m2 ITM, dhe në shembullin 2. . Pas llogaritjeve të duhura, marrim Н = (0; 0.2; 0.6; 1; 1,33; 1,78; 2).

Moduli 4. Gjeneron daljen e rezultateve duke vendosur një korrespondencë midis vlerave të m dhe elementeve x nga grupi (xk).

Shembulli 4. Bazuar në të dhënat nga shembujt 2 dhe 3, rezulton rezultati i mëposhtëm, shih fig. 9, në:

t: 0; 0.2; 0.6; 1; 1,33; 1,44;

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

Kështu, algoritmi i konsideruar na lejon të zhvillojmë konceptin e kohës së vetë procesit bazuar në informacionin rreth ndryshimeve në gjendjen e procesit të regjistruar në shkallën kohore astronomike. Është mjaft e qartë se mund të përdorni algoritme të tjera, të bazuara, për shembull, në llogaritjen e një sekuence minimale lokale ose një sekuence të përzier që përbëhet nga maksimumi dhe minimumi lokal. Gjatë përpunimit të të dhënave eksperimentale, ndoshta duhet të testohen opsione të ndryshme. Nëse për ndonjë arsye eksperimentuesi zgjodhi një nga kohët specifike të duhura dhe mori vargje (t4 dhe (xk), atëherë në fazën tjetër ai duhet të përdorë disa metoda matematikore për të përafruar pikat eksperimentale (t*, x) me një vijë të përafërt botërore. i procesit x = x(t) Duke e ekstrapoluar këtë linjë përtej periudhës fillestare të vëzhgimit, ai mund të bëjë parashikime për ecurinë e mëtejshme të procesit.

Është interesante të përmendet një eksperiment llogaritës që synon të vlerësojë perspektivat e përdorimit të algoritmit të propozuar. Si material eksperimental u zgjodhën të dhënat për prurjet vjetore të lumenjve. Vakhsh (Taxhikistan) për 40 vitet e mëparshme. Gjatë të njëjtës periudhë kohore, u mor informacion mbi dinamikën e numrit të Ujkut - indeksi integral më i përdorur i aktivitetit diellor. Kjo e fundit ishte baza për zhvillimin e kohës së duhur të procesit të aktivitetit diellor. Në kohët moderne, informacioni mbi shpenzimet e lumenjve është transformuar. Vakhsh dhe më pas, gjatë periudhës së vëzhgimit, u dha një varësi teorike e rrjedhës së ujit në funksion të kohës së duhur të aktivitetit diellor. Një tipar karakteristik i grafikut që rezulton është sjellja pothuajse periodike e shpenzimeve maksimale dhe minimale. Megjithatë, kostot nuk mbeten konstante.

(koha nga puna nuk bëhet mbështetje deri në momentin e parë që fillon të ekzekutohet në burime); duke minimizuar vonesat ose koha e përgjigjes(koha nga puna përfshihet derisa të përfundojë në rastin e aktivitetit periodik, ose derisa sistemi të përgjigjet dhe të dorëzojë daljen e parë të përdoruesit në rastin e aktivitetit ndërveprues); ose maksimizimi drejtësisë(një sasi e barabartë e kohës së CPU-së për secilin proces, ose në përgjithësi herë korresponduese sipas prioritetit dhe ngarkesës së secilit proces). Në praktikë, këto qëllime janë shpesh në konflikt (p.sh., xhiros kundrejt vonesës), kështu që planifikuesi do të bëjë një kompensim të duhur. Preferenca matet me ndonjë nga çështjet e përmendura më sipër, në varësi të nevojave dhe objektivave të përdoruesit.

OS/360 dhe pasuesit

AIX

Në AIX Version 4, ekzistojnë tre cilësime të mundshme për politikën e planifikimit të fillesave:

  • Së pari, fillimisht: Pasi të planifikohet një bashkëbisedim me këtë politikë, ai funksionon deri në përfundim, nëse nuk bllokohet, ai heq dorë vullnetarisht nga kontrolli i procesorit ose një fill me prioritet më të lartë bëhet i dërgueshëm. Vetëm fijet me përparësi fikse mund të kenë një politikë planifikimi FIFO.
  • Round Robin: Ky është i ngjashëm me planifikuesin e qarkut AIX Version 3 që ciklohet bazuar në feta kohore 10ms. Kur një thread PP ka kontroll në fund të një slot kohor, ai lëviz në fundin e radhës së thread-eve me të njëjtin prioritet. Vetëm temat me përparësi fikse mund të kenë një politikë planifikimi Round Robin.
  • TË TJERA: Kjo politikë është e përcaktuar me zbatim nga POSIX1003.4a. Në versionin 4 të AIX, kjo politikë përkufizohet si ekuivalente me RR, me përjashtim të faktit që zbatohet për fijet me përparësi jo fikse. Rillogaritja e vlerës së përparësisë së një thread në ekzekutim për çdo ndërprerje do të thotë që një thread mund të humbasë kontrollin sepse vlera e tij e përparësisë është rritur më e lartë se një thread tjetër. Kjo është sjellje AIX Version 3.

Thread-et janë kryesisht me interes për aplikacionet që aktualisht përbëhen nga procese të shumta asinkrone. Këto aplikacione mund të imponojnë një ngarkesë të lehtë në sistem nëse konvertohen në një strukturë me shumë fije.

Shpesh, zhvilluesit, veçanërisht ata të papërvojë, ngatërrohen kur u kërkohet të caktojnë afate për përfundimin e detyrave. Megjithatë, aftësia për të planifikuar është një aftësi shumë e dobishme dhe e nevojshme që ndihmon jo vetëm në punë, por edhe në jetë. Ne vendosëm të pyesim ekspertët se si të mësojmë se si të planifikojmë saktë dhe të dorëzojmë projektet në kohë.

Përfundime të shkurtra mund të gjenden në fund të artikullit.

Një zhvillues zakonisht duhet të marrë parasysh disa parametra njëherësh për të vlerësuar kohën që duhet për të përfunduar një detyrë:

  1. Përvojë në kryerjen e detyrave të tilla dhe punës me këtë grumbull teknologjie. Nëse duhet të bëni diçka thelbësisht të re, duhet të jeni veçanërisht të kujdesshëm me vlerësimin tuaj.
  2. Përvojë pune me këtë klient. Duke njohur klientin, mund të parashikoni përafërsisht disa kërkesa shtesë dhe shtrirjen e ndryshimeve.
  3. Cilësia e kodit me të cilin do të punoni. Ky është faktori më me ndikim, për shkak të të cilit gjithçka mund të zgjasë shumë dhe në përgjithësi të mos shkojë sipas planit. Nëse projekti ka teste, ka vetëm varësi të qarta kudo dhe funksionaliteti është i izoluar mirë, gjithçka nuk është aq e frikshme. Është shumë më keq nëse keni të bëni me kod të trashëguar pa teste ose me kod të mbingarkuar me varësi të nënkuptuara. Gjëra të tilla si "funksionet magjike" (kur është e vështirë të shikosh grupin përfundimtar të thirrjes nga kodi) dhe dyfishimi i kodit (kur duhet të modifikosh disa seksione të pavarura për të ndryshuar disa funksionalitete) gjithashtu mund t'i komplikojnë gjërat.

Për të mësuar se si të vlerësoni në mënyrë adekuate afatet e punës, duhet të praktikoni vazhdimisht. Në fillim të punës sime, bëra pikërisht këtë: vlerësova kohën për të përfunduar çdo detyrë hyrëse, edhe nëse askush nuk e kërkonte atë, dhe më pas shikoja se sa saktë arrita të hyja në vlerësimin tim. Gjatë përfundimit të detyrës, ai vuri në dukje se cilat veprime zgjatën më shumë. Nëse diçka e rriti ndjeshëm periudhën, e kujtova këtë moment dhe e mora parasysh në vlerësimet e radhës.

Për një vlerësim objektiv të kohës së nevojshme thjesht për punë, duhet t'i shtohet një diferencë e vogël për të mbuluar situatat e forcës madhore. Shpesh vlerësohet si përqindje e përfundimit të detyrës kryesore, por është e ndryshme për të gjithë: disa shtojnë 20% të kohës, disa - 10%, dhe disa - 50%.

Është gjithashtu e dobishme të analizohen arsyet e afateve të humbura pas çdo shkeljeje serioze të afatit. Nëse ju mungojnë kualifikimet, duhet të punoni në pikat tuaja të dobëta. Nëse problemi ishte organizativ, kuptoni se çfarë e pengoi atë të funksiononte normalisht.

Promovoni Demote

, drejtor teknik i qendrës për teknologji dhe zgjidhje inovative "Jet Infosystems"

Një numër i madh artikujsh i kushtohen metodave për vlerësimin e intensitetit të punës së një projekti, duke përfshirë kohëzgjatjen e punës dhe detyrat individuale. Megjithatë, kjo ende shkakton konflikte si brenda ekipit të projektit ashtu edhe gjatë komunikimit me klientin.

Asistenti kryesor në vlerësim është përvoja. Mundohuni të krahasoni disi detyrën e re me ato të kryera tashmë. Nëse jeni duke bërë një raport, shikoni sa kohë ka marrë një raport i ngjashëm në të kaluarën. Nëse jeni duke bërë diçka të re, provoni ta zbërtheni në pjesë të njohura dhe t'i vlerësoni ato. Nëse detyra është krejtësisht e re, lini kohë për të studiuar (edhe më mirë, koordinojeni këtë kohë me personin që vendos detyrën).

Kushtojini vëmendje fazave shoqëruese - nëse keni nevojë të zhvilloni një shërbim, atëherë vlerësimi duhet të përfshijë gjithashtu testimin e njësisë (dhe ndoshta jo vetëm testimin e njësisë), përgatitja e të dhënave të testit do të marrë pak kohë. Duhet të konsideroni integrimin me shërbime të tjera, etj. Lejoni kohë për korrigjimin e defekteve që gjeni vetë ose me ndihmën e testuesve. Mund të humbet shumë kohë në detyra "të padukshme". Për shembull, ekziston një vlerësim për zhvillimin dhe ka një vlerësim për testim, por transferimi i një objekti për testim mund të përfshijë vendosjen e stendave. Prandaj, është e rëndësishme të vizualizoni mendërisht të gjithë procesin në mënyrë që të mos humbisni asgjë.

Pas përcaktimit të kompleksitetit, është e nevojshme të përfshihen punë të reja në kalendar, duke mos harruar detyrat dhe aktivitetet e tjera që shkojnë paralelisht.

Dhe mos harroni se planet janë të padobishme, por planifikimi është i paçmuar. Mësoni të rregulloni planet në kohën e duhur, mbani të gjithë të përfshirë të informuar dhe përshkallëzoni në kohën e duhur, në mënyrë që afatet e humbura të mos jenë surprizë për askënd.

Promovoni Demote

Një pyetje që nuk mund të përgjigjet në një formë të shkurtër. Nëse do të ishte e thjeshtë, atëherë problemi i mungesës së afateve nuk do të ekzistonte.

Për t'i bërë afatet e zhvillimit më të parashikueshëm, së pari duhet të kuptojmë arsyet pse programuesit bëjnë gabime gjatë gjithë kohës.

Arsyeja e parë është se shumica e detyrave që bën një programues janë unike në një shkallë ose në një tjetër. Kjo do të thotë, ka shumë të ngjarë, programuesi do të bëjë një detyrë të ngjashme për herë të parë. Ai nuk e ka idenë e mirë se sa do të zgjasë kjo punë. Nëse ky është një programues me përvojë solide dhe duhet të kryejë një detyrë të ngjashme, vlerësimi i tij do të jetë më afër realitetit.

Le të përdorim një analogji të thjeshtë - nëse nuk keni hapur kurrë kanale, nuk mund të thoni saktësisht se sa kohë do t'ju duhet për të gërmuar një kanal 30 cm të gjerë, 60 cm të thellë dhe 20 metra të gjatë. Nëse keni gërmuar më parë, vlerësimi juaj i kohës së punës do të jetë shumë më afër kohëzgjatjes aktuale të punës.

Arsyeja e dytë është se programuesit janë optimistë nga natyra. Kjo do të thotë, kur shqyrton një detyrë, zgjedh një opsion zbatimi për të dhe vlerëson përmirësimet, zhvilluesi pret që gjithçka të funksionojë siç pret ai. Dhe ai nuk mendon për problemet që do të hasë gjatë rrugës. Shpesh ai nuk mund t'i parashikojë ato. Për shembull, ekziston një detyrë që një programues mund ta zbatojë duke përdorur një bibliotekë softuerësh me burim të hapur të palëve të treta. Në fazën e vlerësimit, ai e gjeti atë në internet, lexoi përshkrimin e tij - i përshtatet atij. Madje ai vlerësoi saktë sasinë e punës që do të duhej të bënte për të ndërtuar në shfrytëzimin e kësaj biblioteke. Por ai nuk e parashikoi aspak që në këtë bibliotekë do të lindte një gabim në mjedisin e produktit të tij softuer.

Zhvilluesi do të duhet jo vetëm të ndërtojë përdorimin e bibliotekës në kodin e tij, por edhe të rregullojë një gabim në vetë bibliotekën. Dhe shpesh zhvilluesi nuk jep kohë për korrigjimin e gabimeve të tij. Statistikat tregojnë se testimi dhe rregullimi i gabimeve mund të marrin rreth 50% të kohës së shpenzuar për kodim. Shifra varet nga kualifikimet e zhvilluesit, mjedisi dhe praktikat e zhvillimit të përdorura (për shembull, testet e njësisë e reduktojnë ndjeshëm këtë kohë dhe kohëzgjatja përfundimtare/intensiteti i punës së detyrës së zhvillimit është më i vogël).

Nëse i kthehemi analogjisë me fadromin, fadroma nuk e priste që t'i thyhej lopata dhe do t'i duhej të kalonte dy orë në kërkim të një prerje të re.

Arsyeja e tretë janë kërkesat e paparashikuara. Në asnjë fushë tjetër të prodhimit të materialit, me të cilën klientët janë aq të dashur për të krahasuar zhvillimin e softuerit, nuk ka një rrjedhë të tillë kërkesash të reja. Imagjinoni kalimin e një fadromi që gërmoi 19 metra nga 20 dhe dëgjoi nga klienti një dëshirë që hendek të mos shkonte në vijë të drejtë, por në një gjarpër me gjatësi krahu 97 centimetra.

Si të përballeni me gjithë këtë dhe si të jetoni në kushte të tilla pasigurie? Ulja e pasigurisë dhe krijimi i rezervave kohore.

Mënyra më e lehtë për t'i afruar pritshmëritë tuaja realitetit është të përdorni rregullin e gjallë Pi. Pasi të keni marrë një vlerësim nga zhvilluesi (për sa i përket kohës ose intensitetit të punës), duhet ta shumëzoni atë me Pi (= 3.14159). Sa më me përvojë zhvilluesi të ketë bërë vlerësimin, aq më i ulët mund të jetë ky raport.

Praktika e zbërthimit të problemit origjinal në detyra të vogla me madhësi jo më shumë se 4 orë është e detyrueshme. Sa më i detajuar të jetë dekompozimi, aq më të larta janë shanset që vlerësimi të jetë afër kompleksitetit/kohëzgjatjes aktuale.
Nëse i kthehemi ndarjes së rezervës, kjo kohë duhet të ndahet në fund të projektit. Është një praktikë e keqe të bësh një rezervë dhe ta përfshish atë për çdo detyrë. Ligji i Parkinsonit "Puna mbush gjithë kohën e caktuar për të" zbatohet në mënyrë rigoroze.

Për ta përmbledhur shkurtimisht, për të përcaktuar saktë afatet për përfundimin e punës, veprimet e mëposhtme do të jenë të dobishme:

  • kryeni një dekompozim pune, duke e zbërthyer detyrën në hapa sa më të detajuar;
  • të kryejë prototipimin;
  • kufizojnë zbatimin e kërkesave të paparashikuara më parë. Kjo nuk do të thotë se ato nuk kanë nevojë të bëhen, por këshillohet që të theksohen këto kërkesa dhe të bihet dakord me klientin për ndryshimet në kohën dhe koston për zbatimin e tyre;
  • të marrë parasysh kohën e nevojshme për të stabilizuar zgjidhjen;
  • përdorni praktika për të përmirësuar cilësinë e kodit, të tilla si shkrimi i testeve të njësive;
  • vendos një rezervë të përgjithshme.

Epo, mbani mend se nëse një fakt e tejkalon vlerësimin tuaj me 30%, atëherë ky është një rezultat shumë i mirë.

Promovoni Demote

Për vlerësimin më të saktë, ju duhet përvojë në zhvillim real, dhe veçanërisht në një fushë specifike. Por ka edhe rregulla të përgjithshme që do t'ju ndihmojnë të shmangni gabimet në planifikim dhe problemet gjatë dorëzimit të punës tek klienti. Unë do t'i përshkruaj këto rregulla në këtë mënyrë.

Së pari ju duhet të kuptoni problemin. Kjo duket e qartë dhe nuk lidhet drejtpërdrejt me vlerësimet e kohës, por në fakt është një pikë kyçe. Edhe në projektet serioze të mëdha, një nga faktorët kryesorë të dështimit dhe vonesës është problemi në përcaktimin e kërkesave. Për zhvilluesit fillestarë, për fat të keq, ky është një problem serioz - ata nuk lexojnë specifikimet teknike ose lexojnë dhe kuptojnë në mënyrë shumë selektive (nga dhjetë pika, ata kujtuan dhe plotësuan pesë, dhe kujtuan pjesën tjetër kur paraqisnin rezultatin). Është e qartë se një detyrë e keqkuptuar nuk mund të zbatohet saktë në kohë.

Tjetra është të vlerësohet vetë koha e zhvillimit. E veçanta e programimit është se nuk ka detyra absolutisht identike. Kjo e bën punën tonë më interesante, por vlerësimi i afateve është më i vështirë. Dekompozimi funksionon mirë këtu, d.m.th. ndarja e një problemi kompleks, unik në një sekuencë nën-detyrash të vogla, të njohura. Dhe secila prej tyre tashmë mund të vlerësohet në orë mjaftueshëm. Le të mbledhim vlerësimet e nëndetyrave dhe të marrim një vlerësim për të gjithë detyrën.

Si rregull, një vlerësim i tillë përfshin vetëm kostot e vetë kodimit. Kjo është, sigurisht, pjesa më e rëndësishme e zhvillimit, por larg nga e vetmja (dhe shpesh jo më voluminoze). Përfundimi i plotë i detyrës përfshin gjithashtu leximin dhe sqarimin e specifikimeve, takime me kolegët ose klientin, korrigjimin dhe testimin, hartimin e dokumentacionit, dorëzimin e rezultatit (demonstrimi tek klienti dhe modifikimet e mundshme bazuar në komentet e tij). Vetëm përvoja do t'ju tregojë saktësisht se sa kohë do t'ju duhet për të përfunduar këto veprime. Në fillim, është e rëndësishme, së paku, të mos harroni t'i merrni parasysh ato në llogaritjet dhe mund të kërkoni nga kolegët më me përvojë për një vlerësim të përafërt të kohës.

Pra, ne marrim një vlerësim të kostove të punës për kodim, shtojmë një vlerësim të kostove të punës shtesë - dhe marrim vlerësimin e kërkuar të kohës për të përfunduar detyrën. Por kjo nuk është e gjitha! Ju duhet të tregoni datën e planifikuar të përfundimit të detyrës. Do të ishte gabim thjesht të ndani kostot e punës (në orë) me 8 orë dhe t'i shtoni ato në datën aktuale. Në praktikën reale, një zhvillues nuk punon kurrë (në rregull, pothuajse kurrë) 100% të kohës në një detyrë specifike. Ju patjetër do të kaloni kohë në punë të tjera - të rëndësishme, por jo të lidhura drejtpërdrejt me atë kryesore. Për shembull, ndihma e kolegëve, trajnimi, shkrimi i raporteve, etj. Në mënyrë tipike, gjatë planifikimit, besohet se 60-70% e kohës së punës shpenzohet drejtpërdrejt duke punuar në projektin aktual. Për më tepër, duhet të merrni parasysh vonesat e mundshme që do t'ju pengojnë të punoni vazhdimisht në detyrë. Për shembull, nëse për këtë ju duhet të ndërveproni me njerëz të tjerë (kolegë, klientë), atëherë merrni parasysh disponueshmërinë e tyre, orarin e punës, etj.

Këtu janë rregullat themelore që, për mendimin tim, do të ndihmojnë zhvilluesin të shmangë problemet në vlerësimin dhe përmbushjen e afateve. Për më tepër, çelësi është të grumbulloni përvojën tuaj si në zbatimin e detyrave ashtu edhe në vlerësim. Për shembull, është shumë e dobishme pasi të keni përfunduar një detyrë të krahasoni vlerësimin tuaj fillestar me afatet aktuale dhe të nxirrni përfundime për të ardhmen. Dhe, natyrisht, ia vlen të studiohen përvojat e njerëzve të tjerë. Unë do t'i rekomandoja librat mbi temën e S. McConnell "Sa kushton një projekt softuerësh" dhe S. Arkhipenkov "Leksione mbi menaxhimin e projekteve softuerike".

Promovoni Demote

Kur vlerësoni dhe planifikoni afatet, duhet:

  1. Zbërthejeni detyrën në pjesë të vogla funksionale në mënyrë të tillë që të ketë një kuptim të qartë se sa kohë do të duhet për të zhvilluar secilën pjesë të tillë.
  2. Paralelisht me zbërthimin, sigurisht që do të lindin pyetje shtesë në lidhje me funksionalitetin që nuk u përshkrua në deklaratën e problemit. Është e nevojshme të merren përgjigje për pyetje të tilla, pasi kjo lidhet drejtpërdrejt me fushën e punës dhe, rrjedhimisht, kohën.
  3. Shto një përqindje të caktuar të rreziqeve në vlerësimin përfundimtar. Kjo përcaktohet në mënyrë empirike. Ju mund të filloni, për shembull, me rreziqe 10-15%.
  4. Kuptoni sa orë në ditë një programues është i gatshëm t'i kushtojë për të përfunduar një detyrë.
  5. Ne e ndajmë vlerësimin përfundimtar me numrin e orëve që ndajmë në ditë dhe marrim numrin e ditëve të nevojshme për zbatim.
  6. Ne fokusohemi në kalendarin dhe numrin e kërkuar të ditëve për të përfunduar. Ne marrim parasysh fundjavat dhe ditët e tjera kur programuesi nuk do të jetë në gjendje të punojë me detyrën, si dhe datën e fillimit të punës (zhvilluesi nuk është gjithmonë i gatshëm të marrë detyrën në të njëjtën ditë). Kështu, marrim datën e fillimit dhe të përfundimit të punës.

Promovoni Demote

Në kompaninë tonë, planifikimi i detyrave kalon gjithmonë nëpër disa faza. Nga ana e biznesit, ne formulojmë 5-6 synime strategjike për vitin. Këto janë detyra të nivelit të lartë, për shembull, rritja e disa parametrave me kaq shumë përqind. Më pas, divizione të ndryshme të kompanisë formulojnë detyra biznesi për të gjitha ekipet e IT. Afatet për këto detyra marrin një vlerësim fillestar të përafërt, i cili shpesh formohet nga të gjithë anëtarët e ekipit - menaxher, analist, zhvillues dhe testues. Pasi biznesi merr këtë vlerësim, ai i jep prioritet detyrave bazuar në qëllimet strategjike të kompanisë. Qëllimet e ndërlidhura strategjike ndihmojnë me këtë, bëhet e qartë se ne të gjithë po punojmë për ndonjë kauzë të përbashkët, kur dikush po tërhiqet vetëm në drejtimin e tij. Ne mbledhim sprinte nga detyrat e vlerësuara me saktësi në terma të afateve. Për disa ekipe ato janë tremujore, për të tjera janë mujore. Për disa detyra që, sipas vlerësimeve paraprake, do të bien në sprintin e radhës, skuadrat japin një vlerësim të saktë. Detyrat e mëdha ndahen në ato të nivelit më të ulët, për secilën prej të cilave një interpretues specifik është përgjegjës, dhe është ai që jep një vlerësim të saktë.

Në këtë fazë, është e rëndësishme të mos harroni të shtoni një rezervë kohe për të rregulluar defektet, sepse vetëm ata që nuk bëjnë asgjë nuk bëjnë gabime. Si pronarët e produkteve ashtu edhe klientët e biznesit e kuptojnë këtë shumë mirë. Në të njëjtën kohë, koha e nevojshme duhet të jetë e mjaftueshme: askush nuk do ta kuptojë një zhvillues që cakton një afat për një detyrë të thjeshtë që është shumë e gjatë, atij do t'i kërkohet të arsyetojë vendimin. Gjëja më e vështirë është t'i shpjegosh biznesit pse duhet kohë për të rifabrikuar. Ne i jemi mirënjohës kompanisë sonë për faktin që herë pas here ia dalim me sukses, sepse në fund të fundit, rifaktorimi çon në thjeshtimin e infrastrukturës dhe vendosjen e kodit në rregull, gjë që rrit stabilitetin e sistemit dhe mund të përshpejtojë ndjeshëm zhvillimin. të funksioneve të reja.

Ndonjëherë gabimet në vlerësim ende ndodhin. Për mendimin tim, është e pamundur që departamenti i zhvillimit në kompanitë e mëdha me infrastrukturë të zhvilluar ta shmangë plotësisht këtë. Në këtë rast, është e rëndësishme që zhvilluesi të informojë menjëherë menaxherin e tij për atë që po ndodh, dhe ai, nga ana tjetër, arrin të paralajmërojë biznesin dhe të "riprodhojë" diçka në planet e përgjithshme të kompanisë. Të punosh në këtë mënyrë është shumë më korrekte sesa të përpiqesh furishëm të bësh në 3 ditë atë që kërkon 5, dhe më pas të mbytesh në një numër të madh gabimesh që lindën për shkak të një nxitimi të tillë.

Promovoni Demote

Përgjigja e saktë për të dy pjesët e pyetjes [si të mësoni se si të planifikoni saktë dhe të dorëzoni një projekt në kohë - Ed.] - përvojë. Nuk ka mënyra të tjera për të "njohur Zenin". Sipas teorisë së vendimeve, çdo përfundim i saktë mund të nxirret vetëm në bazë të analizës së një numri të dhënash tashmë të disponueshme. Dhe sa më shumë të dhëna të ketë, aq më i saktë është parashikimi dhe vlerësimi përfundimtar.

Sipas fjalëve të Herbert Shaw: "Përvoja është shkolla në të cilën një njeri mëson se çfarë budallai ishte më parë." Kjo çon në një përfundim mjaft të thjeshtë: nëse një programues tashmë ka përvojë që lidhet me detyrën në fjalë, ai mund të mbështetet në të nëse jo, ai mund të mbështetet në përvojën e "kolegëve".

Më pas, duhet të kuptoni se planifikimi i drejtpërdrejtë i afateve është një detyrë me të cilën njerëzit e përballojnë shumë, shumë keq, veçanërisht në zhvillim. Gjatë vlerësimit të datave të afatit, konsiderohet praktikë e mirë futja e "faktorëve të rregullimit" në vlerësimin origjinal. Kjo metrikë mund të variojë nga 1.5 në 3, në varësi të përvojës së zhvilluesit dhe tërësisë së shkallëve të pasigurisë së detyrave që zgjidhen brenda projektit.

Promovoni Demote

Është e rëndësishme të merren parasysh shumë faktorë gjatë përcaktimit të afateve.

Për shembull, përvojë pune. Sa qartë e kuptoni qëllimin e punës përpara? A keni bërë diçka të tillë më parë? Është e qartë se sa më shumë përvojë, aq më shpejt do të përfundojë puna.

Një specifikim teknik i shkruar mirë luan një rol të rëndësishëm në përcaktimin e afateve. Gjërat janë shumë të vështira me këtë në zonën tonë. Shpesh vetë klienti nuk e di se çfarë dëshiron, kështu që unë këshilloj të kaloni një ose dy ditë shtesë, por ta bëni klientin të ketë një ide të qartë për rezultatin e dëshiruar. Është e rëndësishme që ky mirëkuptim të jetë i ndërsjellë. Dhe vetëm pas kësaj mund të filloni të negocioni shumën dhe kushtet.

Gjithashtu, përfshini gjithmonë rreziqe. Për fillestarët, unë rekomandoj të shumëzoni kohën e parashikuar të përfundimit me dy. Në fund të fundit, është më mirë të dorëzoni një projekt përpara afatit dhe të rriteni si specialist në sytë e klientit, në vend që ta dorëzoni më vonë dhe të prishni reputacionin tuaj.

Promovoni Demote

Një rekomandim i përgjithshëm është që zhvilluesi duhet të mësojë se si të zbërthejë saktë detyrat, të kërkojë gjithmonë kurthe të mundshme, të mbështetet në përvojën e tij dhe të mos harrojë të paralajmërojë klientët dhe kolegët në kohën e duhur nëse detyra nuk mund të zgjidhet brenda kohës së caktuar kornizë.

Ndërtimi i një plani të qartë është shumë më i vështirë sesa përcaktimi i afatit për përfundimin e një detyre të vetme. Në të njëjtën kohë, është e rëndësishme jo vetëm të dorëzoni projektin në kohë, por edhe të siguroheni që sistemi që zhvilloni të zgjidhë saktë problemet e biznesit. Këtu, ekipet e TI-së ndihmohen nga metodologji të ndryshme të zhvillimit të softuerit: nga RUP dhe MSF tek SCRUM dhe formate të tjera Agile. Zgjedhja e mjeteve është shumë e gjerë, dhe shumë nga klientët tanë duan të kuptojnë paraprakisht se si do të punojmë me ta në projekt, cilat parime i përmbahemi.

Meqë ra fjala, tema e Agile sot po bëhet e afërt si për biznesin, ashtu edhe për projektet individuale me sektorin publik, pasi parimet e kësaj metodologjie bëjnë të mundur zbatimin shumë të shpejtë të projekteve, duke menaxhuar pritshmëritë e klientëve në çdo përsëritje. Për shembull, në një ekip Agile praktikisht nuk ka diskutime të zgjatura me klientin. Harrojeni rreth dhjetëra faqe që përshkruajnë detaje teknike të panevojshme, si p.sh. sa shpejt shfaqet një listë rënëse. Jepini klientit mundësinë për të provuar një version të ndërmjetëm të sistemit, atëherë do të bëhet shumë më e lehtë për ju të kuptoni njëri-tjetrin.

Ekipi Agile planifikon gjithçka së bashku dhe përcakton nivelin optimal të punës që do të nevojitet për të zgjidhur një problem të caktuar. Për shembull, një nga teknikat quhet "Planifikimi i Pokerit", ku secili pjesëmarrës jep në mënyrë anonime vlerësimin e tij për kostot e kërkuara të punës për një detyrë specifike. Pas kësaj, ekipi përcakton peshën mesatare të detyrës në pikat e tregimit ose në orë pune dhe shpërndan detyrat sipas parimit "kush pëlqen çfarë". Në të njëjtën kohë, çdo ditë ekipi mblidhet për një takim 15-minutësh, kur të gjithë flasin për statusin e detyrave të tyre aktuale në disa minuta, duke përfshirë raportimin e çdo vështirësie që ka lindur. Ekipi rregullon shpejt problemin e zbuluar, kështu që klienti shikon në fazën tjetër të punës së programuesit sa më shpejt të jetë e mundur. Zhvilluesit nuk e vonojnë përfundimin e detyrave për shkak të ngurimit për të shqetësuar ekipin edhe një herë ose përpjekjeve të kota për ta kuptuar atë vetë, duke vrarë kohën e çmuar. Nga rruga, në mini-statuse të tilla, zhvilluesit kanë dëshirë të tregojnë anën e tyre më të mirë, për të treguar se i qaseni punës tuaj me përgjegjësi. Me të vërtetë motivon dhe vetëdisiplinon.

Po ngarkohet...
Top