Lühim järelejäänud täitmisaeg. Algoritm protsessi enda aja arvutamiseks Protsess millegi koguse järelejäänud aja arvutamiseks

Sissejuhatus

Tootmiskorralduse töötoa eesmärk on laiendada ja süvendada teoreetilisi teadmisi, sisendada vajalikke oskusi praktikas enim ettetulevate probleemide lahendamiseks seoses tootmise korraldamise ja planeerimisega.

Töötuba sisaldab ülesandeid kursuse põhiosade jaoks. Iga teema alguses esitatakse lühikesed metoodilised juhised ja teoreetiline teave, tüüpprobleemid koos lahendustega ja ülesanded iseseisvaks lahendamiseks.

Metoodiliste juhiste ja lühikese teoreetilise teabe olemasolu igas teemas võimaldab teil seda töötuba kasutada kirjavahetuse teel koolitust.


Tootmistsükli kestuse arvutamine

Tootmistsükli kestus on tootmisprotsessi efektiivsuse näitaja.

Tootmistsükkel- tööobjektide tootmisprotsessis viibimise periood alates tooraine turule toomise hetkest kuni valmistoodete väljastamise hetkeni.

Tootmistsükkel koosneb tööaeg, mille jooksul kulutatakse tööjõudu ja vaheajad. Pausid, olenevalt põhjustest, mis neid põhjustasid, võib jagada järgmisteks osadeks:

1) sisse loomulik või tehnoloogilised – need on määratud toote olemusega;

2) organisatsiooniline(vaheajad vahetuste vahel).

Tootmistsükli kestus koosneb järgmistest komponentidest:

T tsükkel = t need + t sööb + t tr + t k.k. + t m.o. + t m.ts.

Kus t need– tehnoloogiliste toimingute aeg;

ei söö - looduslike protsesside aeg (kuivamine, jahutamine jne);

t tr – tööobjektide transpordiaeg;

t k.k. – kvaliteedikontrolli aeg;

t m.o - interoperatiivse hoolduse aeg;

t m.c. – hoiuaeg kauplustevahelistes ladudes;

(t kolm t k.k. saab kombineerida t m.o).

Tootmistsükli aja arvutamine sõltub tootmistüübist. Masstootmises määrab tootmistsükli kestuse toote tootmises olemise aeg, s.o.

T tsükkel = t M-s,

Kus t V– vabastuskäik;

M– töökohtade arv.

Under vabastamise insult on vaja mõista ajavahemikku ühe valmistatud toote ja järgmise toote vabastamise vahel.

Vabastuskäik määratakse valemiga

t in = Teff /V,

Kus Tef– arveldusperioodi (vahetus, päev, aasta) efektiivne tööaja fond;

IN– sama perioodi toodangu maht (naturaalsetes ühikutes).

Näide: T cm = 8 tundi = 480 min; T per = 30 min; → Teff = 480 – – 30 = 450 min.

B = 225 tk; → t in = 450/225 = 2 min.

Seeriatootmises, kus töötlemine toimub partiidena, määratakse tehnoloogilise tsükli kestus mitte tooteühiku, vaid kogu partii kohta. Veelgi enam, sõltuvalt partii tootmisse käivitamise meetodist saame erinevad tsükliajad. Tootmises on toodete liigutamiseks kolm võimalust: järjestikune, paralleelne ja segatud (seeria-paralleel).


I. Kell järjestikused Osade liigutamisel algab iga järgmine toiming alles pärast eelmise lõpetamist. Osade järjestikuse liikumise tsükli kestus on võrdne:

Kus n – töödeldava partii osade arv;

t tki- operatsiooni tükimäär;

C i– töökohtade arv ühe kohta i th operatsioon;

m– tehnoloogilise protsessi toimingute arv.

Antakse tootepartii, mis koosneb 5 tükist. Partii juhitakse läbi 4 toimingut; esimese operatsiooni kestus on 10 minutit, teise 20 minutit, kolmanda 10 minutit, neljanda 30 minutit (joonis 1).

Joonis 1

T tsükkel = T viimane = 5·(10+20+10+30) = 350 min.

Liikuvate osade järjestikuse meetodi eeliseks on see, et see tagab seadmete töö ilma seisakuteta. Kuid selle puuduseks on see, et tootmistsükli kestus on sel juhul pikim. Lisaks tekivad tööobjektidel märkimisväärsed varuosad, mis nõuavad täiendavat tootmispinda.

II. Kell paralleelselt Partii teisaldamisel ei peeta üksikuid osi töökohtades kinni, vaid kantakse ükshaaval koheselt üle järgmisele toimingule, ootamata kogu partii töötlemise lõpetamist. Seega toodetakse osade partiide paralleelse liikumisega igal töökohal neid samaaegselt erinevaid operatsiooneüle sama partii erinevate osade.

Toodete paralleelse liikumisega partii töötlemisaeg väheneb järsult:

dl .

Kus n n- osade arv sees ülekande partii(transpordipartii), s.o. üheaegselt ühest toimingust teise üle kantud toodete arv;

Pikkus – pikim töötsükkel.

Tootepartii paralleelsel turule laskmisel töödeldakse kogu partii osi pidevalt ainult neil töökohtadel, kus lühikestele järgneb pikad toimingud. Juhtudel, kui pikkadele järgnevad lühikesed operatsioonid, s.t. kauem (meie näites kolmas operatsioon), tehakse neid toiminguid katkendlikult, s.t. seadmed on tühikäigul. Siin ei saa osade partii kohe ja viivitusteta töödelda, kuna eelmine (pikk) toiming seda ei võimalda.

Meie näites: n= 5, t 1 = 10; t 2 = 20; t 3 = 10; t 4 = 30; Koos= 1.

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

Vaatleme osade paralleelse liikumise diagrammi (joonis 2):

Joonis 2

III. Et kõrvaldada katkestused partii üksikute osade töötlemisel kõigis toimingutes, kasutage paralleelseeria või segatud käivitusmeetod, mille puhul osad (pärast töötlemist) viiakse ükshaaval või “transpordi” partiidena (mitu tükki) järgmisele toimingule selliselt, et toimingute täitmine ei katke üheski töökohas. IN segameetod järjestikusest võetakse töötlemise järjepidevus ja paralleelselt osa üleminek töölt operatsioonile vahetult pärast selle töötlemist. Tootmisse käivitamise segameetodi korral määratakse tsükli kestus valemiga

tuum .

kus on kor. – lühim töötsükkel (iga külgnevate operatsioonide paari kohta);

m-1 kombinatsioonide arv.

Kui järgnev toiming on eelmisest pikem või ajaliselt võrdne, alustatakse seda toimingut individuaalselt, kohe pärast esimese osa töötlemist eelmises toimingus. Kui järgnev operatsioon on vastupidi lühem kui eelmine, siis tekivad siin katkestused tüki teisaldamisel. Nende vältimiseks on vaja koguda sellise mahuga transpordireserv, mis on piisav töö tagamiseks järgneval operatsioonil. Selle punkti graafikul praktiliselt leidmiseks on vaja partii viimane osa üle kanda ja nihutada selle täitmise kestust paremale. Partii kõigi teiste osade töötlemisaeg kantakse graafikule vasakule. Esimese osa töötlemise algus näitab hetke, mil eelmise toimingu veo mahajäämus tuleb sellele toimingule üle kanda.

Kui kõrvuti asetsevad toimingud on kestusega ühesugused, siis loetakse neist ainult ühte lühikeseks või pikaks (joonis 3).

Joonis 3

T viimased paarid = 5·(10+20+10+30)-(5-1)·(10+10+10) = 350-120 = 230 min.

Peamised viisid tootmistsükli aja vähendamiseks on järgmised:

1) Toodete valmistamise töömahukuse vähendamine toodetava disaini valmistatavuse parandamise, arvutite kasutamise ja arenenud tehnoloogiliste protsesside juurutamise kaudu.

2) Ratsionaalne korraldus tööprotsessid, spetsialiseerumisel ja koostööl põhinev töökohtade paigutus ja hooldus, tootmise ulatuslik mehhaniseerimine ja automatiseerimine.

3) Erinevate planeeritud ja planeerimata tööpauside vähendamine lähtuvalt tootmisprotsessi teadusliku korralduse põhimõtete ratsionaalsest kasutamisest.

4) Reaktsioonide kiirenemine rõhu, temperatuuride, pidevale protsessile ülemineku jms tagajärjel.

5) Transpordi-, ladustamis- ja kontrolliprotsesside täiustamine ning nende õigeaegne kombineerimine töötlemis- ja monteerimisprotsessiga.

Tootmistsükli kestuse vähendamine on tootmise korraldamise üks tõsiseid ülesandeid, sest mõjutab käivet käibekapital, tööjõukulude vähendamine, laopinna vähendamine, transpordivajadused jne.

Ülesanded

1 Määrake tootmisprotsessis järjestikuse, paralleelse ja järjestikuse paralleelse liikumisega 50 osa töötlemistsükli kestus. Osade töötlemise protsess koosneb viiest toimingust, mille kestus on vastavalt min: t 1 =2; t 2 =3; t 3 =4; t 4 =1; t 5 = 3. Teine operatsioon tehakse kahel masinal ja kumbki teine ​​ühel. Ülekandepartii suurus on 4 tk.

2 Määrake tootmisprotsessis järjestikuse, paralleelse ja järjestikuse paralleelse liikumisega 50 osa töötlemistsükli kestus. Osade töötlemise protsess koosneb neljast toimingust, mille kestus on vastavalt min: t 1 =1; t 2 =4; t 3 =2; t 4 = 6. Neljas operatsioon tehakse kahel masinal ja kumbki teine ​​ühel. Ülekandepartii suurus on 5 tk.

3 200 tükist osade partii töödeldakse tootmisprotsessi käigus paralleelselt järjestikuse liikumisega. Osade töötlemise protsess koosneb kuuest toimingust, mille kestus on vastavalt min: t 1 =8; t 2 =3; t 3 =27; t 4 =6; t 5 =4; t 6 = 20. Kolmas operatsioon tehakse kolme masinaga, kuues kahega ja kõik ülejäänud toimingud ühel masinal. Määrake, kuidas muutub osade partii töötlemistsükli kestus, kui tootmises toimuva liikumise paralleelselt järjestikune versioon asendatakse paralleelse versiooniga. Ülekandepartii suurus on 20 tk.

4 300 tükist osade partii töödeldakse tootmisprotsessi käigus paralleelselt järjestikuse liikumisega. Osade töötlemise protsess koosneb seitsmest toimingust, mille kestus on vastavalt min: t 1 =4; t 2 =5; t 3 =7; t 4 =3; t 5 =4; t 6 =5; t 7 = 6. Iga toiming tehakse ühel masinal. Transfer partii – 30 tk. Tootmistehnoloogia täiustamise tulemusena vähenes kolmanda toimingu kestus 3 minuti võrra, seitsmenda toimingu kestus 2 minuti võrra. Määrake, kuidas muutub osade partii töötlemistsükkel.

5 Antakse tooriku partii, mis koosneb 5 tükist. Partii läbib 4 toimingut: esimese kestus on 10 minutit, teise 20 minutit, kolmanda 10 minutit, neljanda 30 minutit. Määrake tsükli kestus analüütiliste ja graafiliste meetoditega järjestikuse liikumisega.

6 Antakse neljast tükist koosnev toorikute partii. Partii läbib 4 toimingut: esimese kestus on 5 minutit, teise 10 minutit, kolmanda 5 minutit, neljanda 15 minutit. Määrake tsükli kestus analüütiliste ja graafiliste meetoditega paralleelse liikumisega.

7 Antakse 5 tükist koosnev toorikute partii. Partii läbib 4 toimingut: esimese kestus on 10 minutit, teise 20 minutit, kolmanda 10 minutit, neljanda 30 minutit. Määrake tsükli kestus analüütiliste ja graafiliste meetoditega järjestikuse paralleelse liikumise jaoks.

8 Määrake 180 tükist tootepartii töötlemise tehnoloogilise tsükli kestus. selle liikumise paralleelsete ja järjestikuste variantidega. Töötlemisprotsessi graafikute koostamine. Ülekandepartii suurus on 30 tk. Ajanormid ja tööde arv operatsioonides on järgmised.

Eelmise algoritmi ümberlülitatud versioon on lühim järelejäänud täitmisaja algoritm. Selle algoritmi järgi valib planeerija iga kord kõige lühema järelejäänud täitmisajaga protsessi. Sel juhul on vaja ette teada ka ülesande täitmise aeg. Kui uus ülesanne saabub, võrreldakse selle kogu täitmisaega praeguse ülesande järelejäänud täitmisajaga. Kui uue ülesande täitmise aeg on lühem, siis praegune protsess peatatakse ja juhtimine antakse üle uuele ülesandele. See skeem võimaldab teil kiiresti teenindada lühitaotlusi.

Kolmetasandiline planeerimine

Partiitöötlussüsteemid võimaldavad kolmetasandilist ajastamist, nagu on näidatud joonisel. Kui süsteemi saabuvad uued ülesanded, asetatakse need esmalt kettale salvestatud järjekorda. Sisselaskeava juurdepääsu ajakava valib ülesande ja edastab selle süsteemi. Ülejäänud ülesanded jäävad järjekorda.

Niipea kui töökoht süsteemi siseneb, luuakse sellele vastav protsess ja see võib kohe hakata võistlema protsessorile juurdepääsu pärast. Siiski on võimalik, et protsesse on liiga palju ja need kõik ei mahu mällu, siis lehitakse osa neist kettale. Ajastamise teine ​​tase määrab, milliseid protsesse saab salvestada mällu ja milliseid kettale. Seda ta teeb mälu planeerija .

Mälu planeerija vaatab perioodiliselt kettal olevaid protsesse, et otsustada, millised neist mällu teisaldada. Planeerija kasutatavate kriteeriumide hulgas on järgmised:

1. Kui kaua on möödunud protsessi kettale vahetamisest või kettalt laadimisest?

2. Kui kaua on protsess protsessorit kasutanud?

3. Mis on protsessi suurus (väikesed protsessid ei sega)?

4. Mis on protsessi tähtsus?

Kolmas ajastamise tase vastutab valmisolekus olevate protsesside protsessorile juurdepääsu võimaldamise eest. Kui me räägime ajakavast, peame tavaliselt silmas CPU planeerija . See planeerija kasutab mis tahes olukorrale sobivat algoritmi nii katkestusteta kui ka ilma. Oleme mõnda neist algoritmidest juba vaadanud, teistega tutvume hiljem.

Planeerimine sisse interaktiivsed süsteemid.

Tsükliline planeerimine.

Üks vanimaid, lihtsamaid, õiglasemaid ja sagedamini kasutatavaid on tsükliline ajastamise algoritm. Igale protsessile antakse teatud hulk protsessori aega, nn ajalõik. Kui protsess ajalõigu lõpus veel töötab, siis see lõpetatakse ja juhtimine antakse üle teisele protsessile. Muidugi, kui protsess blokeerub või lõpeb varakult, toimub sellel hetkel kontrolli üleminek. Ümberringi ajakava rakendamine on lihtne. Planeerija peab säilitama ainult valmisolekus olevate protsesside loendi. Kui protsess on jõudnud oma ajapiiranguni, saadetakse see loendi lõppu.

Selle algoritmi ainus huvitav aspekt on kvanti pikkus. Ühelt protsessilt teisele üleminek võtab omajagu aega - vaja on salvestada ja laadida registreid ja mälukaarte, uuendada tabeleid ja loendeid, salvestada ja uuesti laadida mälu vahemälu jne Järelduse võib sõnastada järgmiselt: liiga väike kvant viib protsesside sagedase vahetamise ja väikese kasuteguriga, kuid liiga suur kvantum võib põhjustada aeglase reageerimise lühikestele interaktiivsetele päringutele. Kvantväärtus umbes 20–50 ms on sageli mõistlik kompromiss.

Prioriteetne planeerimine.

Round robin ajakavas on oluline eeldus, et kõik protsessid on võrdsed. Suure kasutajate arvuga arvuti olukorras ei pruugi see nii olla. Näiteks ülikoolis tuleks esmalt teenindada dekaane, seejärel professoreid, sekretäre, koristajaid ja alles siis tudengeid. Vajadus selliste väliste tegurite arvessevõtmiseks toob kaasa prioriteetse planeerimise. Põhiidee on lihtne: igale protsessile määratakse prioriteet ja juhtimine viiakse üle kõrgeima prioriteediga valmis protsessile.

Mitu järjekorda.

Üks esimesi prioriteetseid planeerijaid rakendati CTSS-süsteemis (ühilduv ajajagatud süsteem). CTSS-süsteemi peamine probleem oli protsesside liiga aeglane ümberlülitamine, kuna IBM 7094 arvuti suutis mälus hoida ainult ühte protsessi. Iga lüliti tähendas praeguse protsessi kettale laadimist

ja uue protsessi lugemine kettalt. CTSS-i arendajad mõistsid kiiresti, et protsesside tõhusus oleks suurem puudega protsessor, eraldage suurem ajalõik kui siis, kui pakute neile väikseid ajalõike, kuid sageli. Ühelt poolt vähendab see mälust kettale ülekannete arvu ja teisest küljest põhjustab see reageerimisaja halvenemist, nagu oleme juba näinud.

Selle tulemusena töötati välja prioriteetsete klassidega lahendus. Kõrgeima prioriteediga klassi protsessidele eraldati üks kvant, järgmise klassi protsessidele kaks kvanti, järgmise klassi protsessidele neli kvanti jne. Kui protsess oli kogu talle määratud aja ära kasutanud, viidi see madalamasse. klass.

Vaatleme näiteks protsessi, mis peab arvutama üle 100 kvanti. Esiteks antakse sellele üks kvant, seejärel pumbatakse see kettale. Järgmine kord saab ta 2 kvanti, siis 4, 8,16, 32, 64, kuigi 64-st kasutab ta ainult 37. Sel juhul läheb vaja ainult 7 ülekannet (koos algkoormusega) 100 asemel, mis oleks vaja, kasutades ring-robin algoritmi. Lisaks käivitub protsess järjest harvemini, kui protsess süveneb prioriteetsesse järjekorda, andes protsessorile lühemad protsessid.

"Kõige lühem protsess on järgmine"

Kuna algoritm Shortest Task First minimeerib keskmist tööaega paketttöötlussüsteemides, soovitakse seda kasutada ka interaktiivsetes süsteemides. Teatud määral on see võimalik. Interaktiivsed protsessid järgivad enamasti skeemi "käsu ootamine, käsu täitmine, käsu ootamine, käsu täitmine..." Kui käsitlete iga käsu täitmist eraldi ülesandena, saate üldist keskmist vastust minimeerida. aega, käivitades kõigepealt lühima ülesande. Ainus probleem on

on mõista, milline ooteprotsess on kõige lühem.

Üks meetod põhineb protsessi pikkuse hindamisel protsessi varasema käitumise põhjal. Sel juhul käivitatakse hinnanguliselt lühima ajaga protsess. Oletame, et käsu eeldatav täitmise aeg on T 0 ja eeldatav järgmine täitmisaeg T 1 . Ajahinnangut on võimalik parandada, võttes nende kordade kaalutud summa aT 0 + (1 - a)T 1 . Valides a-le sobiva väärtuse, saame sundida hindamisalgoritmi eelnevad jooksud kiiresti unustama või, vastupidi, neid pikaks ajaks meelde jätta. Võttes a = 1/2, saame rea hinnanguid:

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.

Pärast kolme käitamist väheneb T 0 kaal hinnangus 1/8-ni.

Seeria järgmise väärtuse hindamise meetodit eelmise väärtuse ja eelmise hinnangu kaalutud keskmise põhjal nimetatakse sageli vananemiseks. See meetod on rakendatav paljudes olukordades, kus on vaja eelmiste väärtuste põhjal hinnata. Lihtsaim viis vananemise rakendamiseks on a = 1/2. Igal sammul sa lihtsalt vajad

lisage praegusele hinnangule uus väärtus ja jagage summa pooleks (nihutades 1 biti võrra paremale).

Garanteeritud planeerimine.

Põhimõtteliselt erinev lähenemine planeerimisele on anda kasutajatele tõelisi lubadusi ja seejärel neid täita. Siin on üks lubadus, mida on lihtne öelda ja mida on lihtne täita: kui jagate protsessorit n kasutajaga, antakse teile 1/n protsessori võimsusest.

Ja süsteemis, kus töötab üks kasutaja ja n protsessorit, saavad kumbki 1/n protsessoritsüklit.

Selle lubaduse täitmiseks peab süsteem jälgima protsessori jaotust protsesside vahel alates iga protsessi loomise hetkest. Seejärel arvutab süsteem välja protsessori ressursside hulga, millele protsessil on õigus, näiteks loomisest möödunud aja jagatuna n-ga. Nüüd saame arvutada protsessile antud aja ja sellel õigustatud aja suhte. Saadud väärtus 0,5 tähendab, et protsess sai ainult poole talle eraldatud summast ja 2,0 tähendab, et protsess sai kaks korda rohkem, kui ta pidi saama. Seejärel alustatakse väikseima suhtega protsessi, kuni

see ei muutu lähima naabri omast suuremaks.

Loterii planeerimine.

Algoritm põhineb loteriipiletite jagamisel protsessidele juurdepääsuks erinevatele ressurssidele, sealhulgas protsessorile. Kui planeerijal on vaja teha otsus, loterii pilet ja selle omanik saab juurdepääsu ressursile. Protsessori juurdepääsu osas võib "loterii" toimuda 50 korda sekundis, võitja saab 20 ms CPU aega.

Tähtsamatele protsessidele saab võidutõenäosuse suurendamiseks anda lisapileteid. Kui pileteid on ainult 100 ja neist 20 on ühes protsessis, siis saab see 20% protsessori ajast. Erinevalt prioriteediplaanist, milles on väga raske hinnata, mida näiteks prioriteet 40 tähendab, on loterii ajakavas kõik ilmne. Iga protsess saab ressursside protsendi, mis on ligikaudu võrdne sellel olevate piletite protsendiga.

Loterii planeerimisel on mitmeid huvitavaid omadusi. Näiteks kui loomise käigus saab protsess mitu piletit, siis järgmises loteriis on selle võiduvõimalus võrdeline piletite arvuga.

Suhtlusprotsessid saavad vajadusel pileteid vahetada. Seega, kui klientprotsess saadab serveriprotsessile sõnumi ja seejärel blokeerib, võib see serveri käivitamise tõenäosuse suurendamiseks edastada kõik oma piletid serveriprotsessile. Kui serveriprotsess on lõppenud, saab see kõik piletid tagasi saata.

Aus planeerimine.

Seni oleme eeldanud, et iga protsessi juhitakse sõltumata sellest, kes on selle omanik. Seega, kui kasutaja 1 loob 9 protsessi ja kasutaja 2 - 1 protsessi, siis ümmarguse ajastamise või võrdsete prioriteetide korral saab kasutaja 1 90% protsessorist ja kasutaja 2 ainult 10.

Selliste olukordade vältimiseks pööravad mõned süsteemid enne ajakava koostamist tähelepanu protsessi omanikule. Selles mudelis saab iga kasutaja teatud osa protsessorist ja planeerija valib protsessi vastavalt sellele faktile. Kui meie näites oleks igal kasutajal

lubas 50% protsessorist, siis saavad nad 50% protsessorist, olenemata protsesside arvust.

Planeerimine reaalajas süsteemides.

Reaalajasüsteemides mängib aeg olulist rolli. Kõige sagedamini genereerib sisendsignaale üks või mitu välist füüsilist seadet ja arvuti peab neile teatud aja jooksul adekvaatselt reageerima.

Reaalajasüsteemid jagunevad kõvad reaalajas süsteemid , mis tähendab iga ülesande jaoks rangete tähtaegade olemasolu (neist tuleb kinni pidada) ja paindlikud reaalajas süsteemid , mille puhul ajakava rikkumised on ebasoovitavad, kuid aktsepteeritavad. Mõlemal juhul on programm jagatud mitmeks protsessiks, millest igaüks on prognoositav. Need protsessid on enamasti lühikesed ja lõpetavad oma töö sekundiga. Kui ilmub väline signaal, on ajakava koostaja ülesanne tagada ajakava järgimine.

Välised sündmused, millele süsteem peab reageerima, võib jaotada perioodiline(esinevad korrapäraste ajavahemike järel) ja mitteperioodiline(tekib ettearvamatult). Võib esineda mitu perioodilist sündmuste voogu, mida süsteem peab töötlema. Olenevalt iga sündmuse töötlemiseks kuluvast ajast ei pruugi süsteem kõiki sündmusi õigeaegselt töödelda.


Seotud teave.


Kõik, millest on mitmes juttu olnud eelmised lõigud, keskendus rohkem edasiste uuringute läbiviimisele protsessi enda aja probleemist ja palju vähemal määral praktilisi rakendusi. Selle tühimiku täitmiseks esitame ühe protsessi õige aja arvutamise viisidest, mis põhinevad selle evolutsiooni statistilistel andmetel.

Vaatleme ühemõõtmelist protsessi, mille olekut iseloomustab reaalne muutuja x. Oletame, et protsessi dünaamika vaatlused viiakse läbi astronoomilisel ajal t, nii et t = t k ja x = x k, k =1, ..., n on kindlad vaatlushetked ja vastavad väärtused. protsessis öeldakse. Neid on palju erinevaid matemaatilised meetodid, mis võimaldab koostada kõveraid, mis kas läbivad punkte (t k, Xk) või "parim lähenemine" neile. Sel viisil saadud funktsioonid x = x(t) tekitavad meie meelest mulje, et vaadeldav protsess sõltub taevakehade mehaanilisest liikumisest ja seetõttu väljendub selle olek läbi astronoomilise aja t. Seda järeldust võiks arvesse võtta; kui protsessi edasist kulgu püüdes ei tekkinud pidevaid raskusi. Sest suur hulk erinevatest protsessidest, mis ei ole otseselt seotud taevakehade mehaaniliste liikumistega, hakkavad funktsiooni x = x(t) abil väljaspool vaatlusvahemikku saadud teoreetilised ennustused järgnevatest katseandmetest oluliselt kõrvale kalduma. Tavaliselt püüavad nad seletada teooria ja katse lahknevuse põhjust ebaõnnestunud töötlemismeetodiga, kuid see ei pruugi olla asja olemus.

Kõik meid huvitavad protsessid toimuvad universumis. Ta kindlasti "tunneb" taevakehade liikumise mõju. See mõju võib aga osutuda "mittejäigaks", mittemääravaks. Eelkõige võib see väljenduda selles, et teatud astronoomiliste ajavahemike järel jääb protsessi olek muutumatuks. Sellega seoses meenutagem varasemat näidet suletud tühjast ruumist, mis on välismaailmast isoleeritud. Laseme tuppa lennata vaid ühel elaval. Kärbse liigutustest sõltuvad mitme päeva jooksul muutused “room-fly” süsteemi olekus, kuna ruumi oleku muutusi oodata ei saa. Samas on raske ette kujutada, et kärbse käitumine on rangelt seotud astronoomilise aja kulgemisega.

Olles teinud nii pika kõrvalekaldumise, liigume edasi protsessi enda aja arvutamise algoritmi kirjelduse juurde.

Selles algoritmis valitakse aja loomulikuks mõõduks lokaalsete maksimumide arvutamise ühik. Lisaks võetakse arvesse protsessi statsionaarse oleku võimalikke lõike, mille juures, nagu varem märgitud, õige aeg peatub. Kuna kahe oleku identsust saab öelda ainult mõõtetäpsuse piires, siis edaspidi kasutatakse teatud positiivset arvu e - lubatud mõõtmisviga.

Algoritmi sisendandmeteks on naturaalarv n, positiivne arv 8, massiivid (tk) ja (x k), k = 1, ..., n Programmeerimise hõlbustamiseks esitatakse algoritm kujul neljast järjestikku täidetavast moodulist.

moodul 1, kasutades andmeid p, e, t k), (x k), moodustab üldjuhul uued massiivid 7 = (7+ X = (X t) ja väga spetsiifilise kaasneva massiivi P = (?), kus 1 = 1, ..., t ja t<Сп. Основное назначение этого модуля -- выявление в массиве x k) последовательностей идентичных состояний процесса, сохранение первых элементов в таких последовательностях и удаление всех остальных и, наконец, уменьшение по определенному, правилу исходного интервала наблюдения от t до на сумму тех промежутков времени, в которых процесс протекает стационарно.

1. moodul sisaldab järgmisi protseduure:

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

Aastal lk. Kasutusele võetakse 1, 2 konkreetsete algväärtustega loendurit:

Aastal lk. 3, 4 suurenevad loenduri väärtused 1 võrra.

Kontrolli seisukorda k^n. Kui see on lõpetatud, jätkake 6. sammuga, muul juhul jätkake 11. sammuga.

Kontrollige ebavõrdsust x k --x k = e. Kui see kehtib, siis minge 7. sammu juurde, vastasel juhul jätkake sammuga 9.

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

See protseduur tähendab, et kui Xk ja Xk 1 väärtused on vea piires eristamatud, siis vähendatakse kõiki ajapunkte alates tk summast tki-tk.

r = r. Pöörduge tagasi punkti 4 juurde.

Tv = t k; X v:=x k; p = p v = v+l., s.t. moodustatakse massiivide T, X, P elemendid ja omistatakse järgmine väärtus v.

  • 10. Võtke (t k, ..., t n JA (Xk, - X n) mõõtmete n--k 1 + 1 esialgseteks massiivideks ja pöörduge seejärel tagasi sammu 2 juurde.
  • 11. Trüki m, (T), (X,) ja (P,), kus i = l, ..., t.

Selgitame kaasasoleva massiivi P elementide tähendust. Eelnevast tekstist järeldub, et pk väärtus võrdub massiivi nende elementide arvuga (xk), mis otseselt järgnevad ja erinevad x pi+ ... +, + vähem kui e Märgime ka, et pi+ ... +p m = n.

Näide 1. Antud: n = 20, (/*) = (2, 4, 7, 10, 12, 13, 15, 17, 20, 22, 24, 25,

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

Mooduli 1 täitmise tulemusena saadakse 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), vaata joonist fig. 9, b.

2. moodul. Selle sisendandmeteks on naturaalarv m, samuti massiivid (7+ (X L), = 1, ..., m. See massiivi moodul (TJ identifitseerib ajahetki [TM a], 1 = 1 m (ml

Näide 2. Väärtused m, (Ть) ja (X,] on laenatud eelmisest näitest. Pärast mooduli 2 läbimist saame ml = 3, m2 = 8, (Ш,) = (3, 8, 17 ), (Т*) = (3, 4, 6, 8, 11, 12, 15, 17), vt ka joon. 9, b.

3. moodul. Sisendandmed ml, m2, (TM n), 1 = 1, ..., ml, (G*), /2 = 1, ..., gn2.

See moodul on loodud massiivi (t(-r) konstrueerimiseks valemi abil

Kus on TV 6 [TMp, TMn+i]

Muutuja t on muutuja x muutuse poolt genereeritud õige aeg. Selle loomulik mõõt on kohalike maksimumide arvutamise ühik.

Näide 3. T 2) lähteandmed on samad, mis väärtused ml, m2 ITM ja näites 2. . Pärast vastavaid arvutusi saame Н = (0; 0,2; 0,6; 1; 1,33; 1,78; 2).

4. moodul. Genereerib tulemuste väljundi, luues vastavuse m väärtuste ja massiivi (xk) elementide x vahel.

Näide 4. Näidete 2 ja 3 andmete põhjal saadakse järgmine tulemus, vt joonis fig. 9, in:

t: 0; 0,2; 0,6; 1; 1,33; 1,44;

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

Seega võimaldab vaadeldav algoritm meil astronoomilisel ajaskaalal registreeritud teabe põhjal protsessi oleku muutuste kohta välja töötada protsessi enda aja kontseptsiooni. On täiesti selge, et saate kasutada muid algoritme, mis põhinevad näiteks kohalike miinimumide jada või kohalikest maksimumidest ja miinimumidest koosneva segajada arvutamisel. Katseandmete töötlemisel tuleks ilmselt katsetada erinevaid võimalusi. Kui eksperimenteerija valis mingil põhjusel ühe kindlatest õigetest aegadest ja sai massiivid (t4 ja (xk), siis järgmises etapis peaks ta kasutama mõnda matemaatilist meetodit, et lähendada katsepunkte (t*, x) mingi ligikaudse maailmajoonega. Protsessi x = x(t) ekstrapoleerimisel esialgsest vaatlusperioodist kaugemale saab ta teha prognoose protsessi edasise käigu kohta.

Huvitav on mainida arvutuskatset, mille eesmärk on hinnata pakutud algoritmi kasutamise väljavaateid. Katsematerjaliks valiti andmed jõgede aastavoolude kohta. Vakhsh (Tadžikistan) viimase 40 aasta jooksul. Samal perioodil koguti teavet Hundi numbri dünaamika kohta, mis on kõige sagedamini kasutatav päikese aktiivsuse terviklik indeks. Viimane oli aluseks päikese aktiivsuse protsessi õige aja väljatöötamisel. Tänapäevaks on teave jõgede kulutuste kohta muutunud. Vakhsh ja seejärel vaatlusperioodi jooksul anti veevoolu teoreetiline sõltuvus päikese aktiivsuse õigest ajast. Saadud graafiku iseloomulik tunnus on maksimaalsete ja minimaalsete kulude peaaegu perioodiline käitumine. Kulud aga ei jää muutumatuks.

(tööst kuluv aeg ei muutu toeks enne esimest hetke, kui see ressursse täitma hakkab); minimeerides viivitused või reageerimisaeg(tööaeg arvestatakse perioodilise tegevuse korral selle lõppemiseni või interaktiivse tegevuse korral süsteem reageerib ja annab kasutajale esimese väljapääsu); või maksimeerimine õiglus(iga protsessi jaoks võrdne protsessoriaeg või üldisemalt vastavad ajad vastavalt iga protsessi prioriteedile ja töökoormusele). Praktikas on need eesmärgid sageli vastuolus (näiteks läbilaskevõime versus latentsusaeg), nii et planeerija teeb sobiva kompromissi. Eelistust mõõdetakse ükskõik millise ülalmainitud probleemiga, olenevalt kasutaja vajadustest ja eesmärkidest.

OS/360 ja järglased

AIX

AIX versioonis 4 on lõime ajastamise poliitika jaoks kolm võimalikku sätet.

  • Esiteks, kõigepealt välja: kui selle reegliga lõim on ajastatud, jookseb see lõpuni, välja arvatud juhul, kui see on blokeeritud, loobub vabatahtlikult protsessori juhtimisest või kõrgema prioriteediga lõim muutub lähetatavaks. Ainult fikseeritud prioriteediga lõimedel võib olla FIFO ajastamispoliitika.
  • Round Robin: see sarnaneb AIX versiooni 3 vooluahela planeerijaga, mis töötab 10 ms ajalõikude alusel. Kui PP lõimel on ajapilu lõpus juhtimine, liigub see sama prioriteediga lõimede järjekorra lõppu. Ainult fikseeritud prioriteediga lõimedel võib olla Round Robini ajastamispoliitika.
  • MUU: selle poliitika määratleb POSIX1003.4a. AIX versioonis 4 on see reegel määratletud samaväärsena RR-iga, välja arvatud see, et see kehtib fikseerimata prioriteediga lõimedele. Töötava lõime prioriteedi väärtuse ümberarvutamine iga katkestuse jaoks tähendab, et lõim võib kaotada kontrolli, kuna selle prioriteedi väärtus on tõusnud kõrgemale kui teine ​​lõime. See on AIX versiooni 3 käitumine.

Lõimed pakuvad huvi eelkõige rakendustele, mis koosnevad praegu mitmest asünkroonsest protsessist. Need rakendused võivad mitme keermega struktuuriks konverteerimisel süsteemile kerget koormust avaldada.

Sageli satuvad arendajad, eriti kogenematud, segadusse, kui neil palutakse määrata ülesannete täitmise tähtajad. Planeerimisoskus on aga väga kasulik ja vajalik oskus, mis aitab mitte ainult tööl, vaid ka elus. Otsustasime küsida ekspertidelt, kuidas õppida õigesti planeerima ja õigel ajal projekte teostama.

Lühikesed järeldused leiate artikli lõpust.

Tavaliselt peab arendaja võtma korraga arvesse mitut parameetrit, et hinnata ülesande täitmiseks kuluvat aega.

  1. Kogemus selliste ülesannete täitmisel ja selle tehnoloogiavirnaga töötamisel. Kui peate tegema midagi põhimõtteliselt uut, peate olema oma hinnanguga eriti ettevaatlik.
  2. Selle kliendiga töötamise kogemus. Klienti tundes saab umbkaudu ette näha mõningaid lisanõudeid ja muudatuste ulatust.
  3. Koodi kvaliteet, millega töötate. See on kõige mõjukam tegur, mille tõttu võib kõik venida ja üldiselt ei lähe plaanipäraselt. Kui projektil on testid, on kõikjal ainult selged sõltuvused ja funktsionaalsus on hästi isoleeritud, pole kõik nii hirmutav. See on palju hullem, kui tegelete pärandkoodiga ilma testideta või koodiga, mis on ülekoormatud kaudsete sõltuvustega. Asja võivad keeruliseks muuta ka sellised asjad nagu "maagilised funktsioonid" (kui koodist on raske näha lõplikku kõnepakki) ja koodi dubleerimine (kui peate mõne funktsiooni muutmiseks redigeerima mitut sõltumatut jaotist).

Et õppida, kuidas töötähtaegu adekvaatselt hinnata, tuleb pidevalt harjutada. Töö alguses tegin täpselt nii: hindasin mis tahes sissetuleva ülesande täitmiseks kuluvat aega, isegi kui keegi seda ei nõudnud, ja seejärel vaatasin, kui täpselt mul õnnestus oma hinnangusse sattuda. Ülesande täitmisel märkis ta, millised toimingud võtavad kauem aega. Kui miski perioodi oluliselt suurendas, siis see hetk jäi mulle meelde ja võtsin seda järgmistel hindamistel arvesse.

Puhtalt tööks kuluva aja objektiivsele hindamisele tuleks lisada väike varu vääramatu jõu olukordade katmiseks. Sageli hinnatakse seda protsendina põhiülesande täitmisest, kuid see on igaühe jaoks erinev: mõni lisab ajast 20%, mõni - 10% ja mõni - 50%.

Samuti on kasulik analüüsida iga tõsise tähtaja rikkumise järel tähtaegadest möödarääkimise põhjuseid. Kui teil puudub kvalifikatsioon, peate töötama oma nõrkade külgedega. Kui probleem oli organisatsiooniline, siis mõista, mis takistas sellel normaalselt töötamast.

Reklaami Alanda

, innovaatiliste tehnoloogiate ja lahenduste keskuse "Jet Infosystems" tehniline direktor

Suur hulk artikleid on pühendatud projekti töömahukuse, sealhulgas töö kestuse ja üksikute ülesannete hindamise meetoditele. See aga tekitab endiselt konflikte nii projektimeeskonna sees kui ka kliendiga suheldes.

Peamine abiline hindamisel on kogemus. Proovige uut ülesannet kuidagi võrrelda juba tehtud ülesannetega. Kui koostate aruannet, vaadake, kui kaua sarnane aruanne minevikus aega võttis. Kui teete midagi uut, proovige see teadaolevateks osadeks jagada ja neid hinnata. Kui ülesanne on täiesti uus, varu õppimiseks aega (veelgi parem, kooskõlasta see aeg ülesande tegijaga).

Pöörake tähelepanu kaasnevatele etappidele - kui teil on vaja teenust arendada, siis peab hindamine sisaldama ka ühikutestimist (ja võib-olla mitte ainult ühikutestimist), testiandmete ettevalmistamine võtab aega. Kaaluda tuleks integreerimist teiste teenustega jne. Varuge aega leitud defektide parandamiseks ise või testijate abiga. Palju aega võib raisata "nähtamatute" ülesannete peale. Näiteks on olemas hinnang arendamiseks ja testide hindamine, kuid artefakti katsetamiseks üleandmine võib hõlmata stendide kasutuselevõttu. Seetõttu on oluline kogu protsess vaimselt visualiseerida, et mitte millestki ilma jääda.

Pärast keerukuse määramist on vaja kalendrisse lisada uued tööd, unustamata ka muid paralleelselt käivaid ülesandeid ja tegevusi.

Ja ärge unustage, et plaanid on kasutud, kuid planeerimine on hindamatu. Õppige plaane õigel ajal kohandama, hoidke kõiki asjaosalisi kursis ja eskaleerige õigeaegselt, et tähtaegade vahelejäämine ei tuleks kellelegi üllatusena.

Reklaami Alanda

Küsimus, millele ei saa lühidalt vastata. Kui see oleks lihtne, poleks tähtaegadest möödalaskmise probleemi olemas.

Arendustähtaegade prognoositavamaks muutmiseks peame esmalt mõistma põhjuseid, miks programmeerijad kogu aeg vigu teevad.

Esimene põhjus on see, et enamik programmeerija ülesandeid on ühel või teisel määral ainulaadsed. See tähendab, et tõenäoliselt teeb programmeerija sarnast ülesannet esimest korda. Tal pole head ettekujutust, kui kaua see töö aega võtab. Kui tegemist on kindla kogemusega programmeerijaga ja ta pidi sarnase ülesande täitma, on tema hinnang tegelikkusele lähemal.

Kasutame lihtsat analoogiat – kui te pole kunagi kraave kaevanud, ei oska te täpselt öelda, kui kaua teil kulub 30 cm laiuse, 60 cm sügavuse ja 20 meetri pikkuse kraavi kaevamiseks. Kui olete varem kaevanud, on teie hinnanguline tööaeg palju lähemal töö tegelikule kestusele.

Teine põhjus on see, et programmeerijad on loomult optimistid. See tähendab, et ülesande kaalumisel, selle rakendusvaliku valimisel ja täiustusi hinnates eeldab arendaja, et kõik toimib nii, nagu ta eeldab. Ja ta ei mõtle probleemidele, millega ta teel kokku puutub. Sageli ei oska ta neid ette näha. Näiteks on olemas ülesanne, mida programmeerija saab rakendada kolmanda osapoole avatud lähtekoodiga tarkvarateegi abil. Hindamise etapis leidis ta selle Internetist, luges selle kirjeldust - see sobib talle. Ja ta hindas isegi õigesti, kui palju tööd ta peaks tegema, et selle raamatukogu kasutusele võtta. Kuid ta ei näinud üldse ette, et selles raamatukogus tema tarkvaratoote keskkonnas tekib viga.

Arendaja ei pea mitte ainult teegi kasutamist oma koodi sisse ehitama, vaid parandama ka vea teegis endas. Ja sageli ei anna arendaja oma vigade parandamiseks aega. Statistika näitab, et testimine ja vigade parandamine võivad võtta umbes 50% kodeerimisele kuluvast ajast. Joonis sõltub arendaja kvalifikatsioonist, keskkonnast ja kasutatavatest arenduspraktikatest (näiteks ühikutestid lühendavad seda aega oluliselt ja arendusülesande lõplik kestus/töömahukus on väiksem).

Kui tulla tagasi kaevajaga analoogia juurde, siis kaevaja ei oodanud, et tema labidas katki läheb ja tal tuleb kaks tundi uut lõikekohta otsida.

Kolmas põhjus on ettenägematud nõuded. Üheski teises materjalitootmise valdkonnas, millega klientidele meeldib nii väga tarkvaraarendust võrrelda, pole sellist uute nõuete voogu. Kujutage ette kaevaja läbipääsu, kes kaevas 19 meetrit 20-st ja kuulis tellijalt soovi, et kraav ei läheks sirgjooneliselt, vaid 97-sentimeetrise käepikkusega maos.

Kuidas selle kõigega toime tulla ja kuidas sellise ebakindluse tingimustes elada? Ebakindluse vähendamine ja ajareservide suurendamine.

Lihtsaim viis oma ootusi tegelikkusele lähemale tuua on kasutada mängulist Pi rusikareeglit. Olles saanud arendajalt hinnangu (aja või töömahukuse osas), peate selle korrutama Pi-ga (= 3,14159). Mida kogenum on arendaja hinnangu andnud, seda väiksem võib see suhe olla.

Algse probleemi jaotamine väikesteks ülesanneteks, mis ei ületa 4 tundi, on kohustuslik. Mida üksikasjalikum on jaotus, seda suurem on tõenäosus, et hinnang on lähedane tegelikule keerukusele/kestusele.
Kui pöördume tagasi reservi eraldamise juurde, tuleks see aeg eraldada projekti lõpus. On halb tava teha reservi ja lisada see iga ülesande jaoks. Rangelt järgitakse Parkinsoni seadust "Töö täidab kogu sellele määratud aja".

Lühidalt kokkuvõtteks võib öelda, et töö lõpetamise tähtaegade õigeks määramiseks on kasulikud järgmised toimingud:

  • teostada tööde jaotus, jaotades ülesande võimalikult üksikasjalikeks etappideks;
  • teostada prototüüpide loomist;
  • piirata varem ettenägematute nõuete rakendamist. See ei tähenda, et neid ei peaks tegema, kuid soovitav on need nõuded esile tõsta ja kliendiga kokku leppida muudatused nende rakendamise ajas ja maksumuses;
  • võtma arvesse aega, mis kulub lahuse stabiliseerimiseks;
  • kasutada koodi kvaliteedi parandamiseks tavasid, näiteks ühikutestide kirjutamist;
  • kehtestada üldine reserv.

Pidage meeles, et kui fakt ületab teie hinnangut 30% võrra, on see väga hea tulemus.

Reklaami Alanda

Kõige täpsema hinnangu saamiseks vajate reaalse arenduse kogemust ja seda konkreetselt konkreetses valdkonnas. Kuid on ka üldised reeglid, mis aitavad vältida vigu planeerimisel ja probleeme töö tellijani toimetamisel. Ma kirjeldaksin neid reegleid nii.

Esiteks peate probleemi mõistma. See tundub ilmne ega ole otseselt seotud ajastuse hinnangutega, kuid tegelikult on see võtmepunkt. Isegi tõsiste suurte projektide puhul on üheks peamiseks ebaõnnestumise ja hilinemise teguriks nõuete määratlemise probleem. Algajatele arendajatele on see paraku tõsine probleem - nad ei loe tehnilisi kirjeldusi või loevad ja saavad aru väga valikuliselt (kümnest punktist jäid meelde ja täitsid viis ning ülejäänu jäi tulemuse esitamisel meelde). On selge, et valesti mõistetud ülesannet ei saa õigeaegselt õigesti ellu viia.

Järgmine on arendusaja enda hindamine. Programmeerimise eripära on see, et absoluutselt identseid ülesandeid pole. See muudab meie töö huvitavamaks, kuid tähtaegade prognoosimine on keerulisem. Siin toimib hästi lagunemine, st. keerulise ainulaadse probleemi jagamine väikeste tuttavate alamülesannete jadaks. Ja igaüht neist saab juba tundides üsna adekvaatselt hinnata. Liidame kokku alamülesannete hinnangud ja saame hinnangu kogu ülesande kohta.

Reeglina sisaldab selline hinnang ainult kodeerimise enda kulusid. See on muidugi arenduse kõige olulisem osa, kuid kaugeltki mitte ainus (ja sageli ka mitte kõige mahukam). Ülesande täielik täitmine hõlmab ka spetsifikatsiooni lugemist ja täpsustamist, kohtumisi kolleegide või kliendiga, silumist ja testimist, dokumentatsiooni koostamist, tulemuse kättetoimetamist (tellijale demonstreerimine ja võimalikud muudatused tema kommentaaride põhjal). Ainult kogemus näitab teile täpselt, kui kaua teil nende toimingute tegemiseks kulub. Algul on oluline vähemalt mitte unustada neid arvutustes arvesse võtta ning kogenumatelt kolleegidelt võite küsida ligikaudset ajahinnangut.

Seega võtame kalkulatsiooni kodeerimise tööjõukulude kohta, lisame lisatööde kulude kalkulatsiooni – ja saame vajaliku hinnangu ülesande täitmiseks kuluvatele aegadele. Kuid see pole veel kõik! Peate märkima ülesande kavandatud täitmise kuupäeva. Viga oleks lihtsalt jagada tööjõukulud (tundides) 8 tunniga ja lisada need jooksvale kuupäevale. Tegelikkuses ei tööta arendaja kunagi (okei, peaaegu mitte kunagi) 100% ajast ühe konkreetse ülesande kallal. Kindlasti kulutad aega ka muule tööle – olulisele, aga mitte põhitööga otseselt seotud. Näiteks kolleegide abistamine, koolitus, aruannete kirjutamine jne. Tavaliselt arvatakse planeerimisel, et 60-70% tööajast kulub vahetult jooksva projektiga tegelemisele. Lisaks peate arvestama võimalike viivitustega, mis takistavad teil ülesandega pidevalt töötamast. Näiteks kui selleks on vaja suhelda teiste inimestega (kolleegid, kliendid), siis arvesta nende saadavust, töögraafikut jne.

Siin on põhireeglid, mis minu arvates aitavad arendajal vältida probleeme tähtaegade hindamisel ja järgimisel. Lisaks on võtmeks oma kogemuste kogumine nii ülesannete elluviimisel kui ka hindamisel. Näiteks on väga kasulik pärast ülesande täitmist võrrelda oma esialgset hinnangut tegelike tähtaegadega ja teha järeldusi tulevikuks. Ja loomulikult tasub uurida teiste inimeste kogemusi. Soovitaksin S. McConnelli teemalisi raamatuid “Kui palju maksab tarkvaraprojekt” ja S. Arhipenkovi “Loengud tarkvaraprojektide juhtimisest”.

Reklaami Alanda

Tähtaegade prognoosimisel ja planeerimisel peate:

  1. Jaotage ülesanne väikesteks funktsionaalseteks osadeks nii, et oleks selge arusaam, kui kaua iga sellise tüki väljatöötamine aega võtab.
  2. Paralleelselt dekompositsiooniga tekivad kindlasti lisaküsimused funktsionaalsuse osas, mida probleemipüstituses ei kirjeldatud. Sellistele küsimustele on vaja vastuseid saada, kuna see on otseselt seotud töö ulatuse ja seega ka ajastusega.
  3. Lisage lõpphinnangusse teatud protsent riske. See määratakse empiiriliselt. Alustada võib näiteks 10–15% riskidega.
  4. Saate aru, mitu tundi päevas programmeerija on nõus ülesande täitmisele pühendama.
  5. Jagame lõpliku kalkulatsiooni päevas eraldatud tundide arvuga ja saame rakendamiseks vajaliku päevade arvu.
  6. Keskendume kalendrile ja täitmiseks vajalikule päevade arvule. Arvestame nädalavahetused ja muud päevad, mil programmeerija ei saa ülesande kallal töötada, samuti töö alguskuupäeva (arendaja ei ole alati valmis ülesannet samal päeval vastu võtma). Seega saame töö algus- ja lõppkuupäeva.

Reklaami Alanda

Meie ettevõttes läbib ülesannete planeerimine alati mitu etappi. Ärilise poole pealt sõnastame aastaks 5-6 strateegilist eesmärki. Need on kõrgetasemelised ülesanded, näiteks mõne parameetri suurendamine nii mõnegi protsendi võrra. Järgmiseks sõnastavad ettevõtte erinevad divisjonid äriülesanded kõikidele IT-meeskondadele. Nende ülesannete täitmise tähtajad saavad esialgse ligikaudse hinnangu, mille koostavad sageli kõik meeskonnaliikmed – juht, analüütik, arendaja ja testija. Kui ettevõte on selle hinnangu saanud, seab ta ülesanded prioriteediks, lähtudes ettevõtte strateegilistest eesmärkidest. Läbivad strateegilised eesmärgid aitavad sellega kaasa, ilmneb, et me kõik töötame mingi ühise eesmärgi nimel, sellist olukorda ei ole, kui keegi tõmbab ainult enda suunas. Kogume sprinte ülesannetest, mis on tähtaegade osas täpselt hinnatud. Mõne meeskonna jaoks on need kord kvartalis, teistel kord kuus. Võistkonnad annavad täpse hinnangu mitmele ülesandele, mis esialgse hinnangu kohaselt langevad järgmisesse sprindi. Suured ülesanded jagunevad madalama tasemega ülesanneteks, mille eest vastutab konkreetne täitja, kes annab täpse hinnangu.

Selles etapis on oluline mitte unustada vigade parandamiseks ajareservi lisamist, sest ainult need, kes midagi ei tee, ei eksi. Nii tooteomanikud kui ka ärikliendid mõistavad seda väga hästi. Samas peab nõutav aeg olema adekvaatne: keegi ei mõista arendajat, kes seab liiga pikale lihtsale ülesandele tähtaja, tal palutakse otsust põhjendada. Kõige keerulisem on ettevõttele selgitada, miks ümbertöötamine võtab aega. Oleme oma ettevõttele tänulikud selle eest, et see aeg-ajalt meil õnnestub, sest lõppkokkuvõttes toob ümbertöötamine kaasa infrastruktuuri lihtsustamise ja koodide kordategemise, mis tõstab süsteemi stabiilsust ja võib oluliselt kiirendada arengut. uutest funktsioonidest.

Mõnikord tuleb hindamisvigu ikka ette. Minu arvates on arendusosakonnal arenenud infrastruktuuriga suurettevõtetes võimatu seda täielikult vältida. Sel juhul on oluline, et arendaja teavitaks oma juhti toimuvast viivitamatult ja tal õnnestuks omakorda ettevõtet hoiatada ja midagi ettevõtte üldplaanides “ümber mängida”. Selles režiimis töötamine on palju õigem, kui püüda meeletult 3 päevaga teha seda, mis võtab 5, ja seejärel uppuda suure hulga vigade sisse, mis sellise kiirustamise tõttu tekkisid.

Reklaami Alanda

Õige vastus küsimuse mõlemale osale [kuidas õppida õigesti planeerima ja projekti õigeaegselt ellu viima - Punane.] – kogemus. Zeni tundmiseks pole muid viise. Otsusteooria kohaselt saab täpseid järeldusi teha vaid mitmete juba olemasolevate andmete analüüsi põhjal. Ja mida rohkem andmeid on, seda täpsem on lõplik prognoos ja hinnang.

Herbert Shaw sõnadega: "Kogemus on kool, kus inimene õpib, milline loll ta enne oli." See viib üsna lihtsa järelduseni: kui programmeerijal on juba käsiloleva ülesandega korrelatsioonis kogemus, võib ta sellele tugineda, kui mitte, siis võib ta tugineda oma "kolleegide" kogemustele.

Järgmiseks tuleb aru saada, et tähtaegade vahetu planeerimine on ülesanne, millega inimesed tulevad väga-väga halvasti toime, eriti arenduses. Tähtaegade hindamisel peetakse heaks tavaks lisada esialgsesse hinnangusse “korrigeerimistegurid”. See mõõdik võib olla vahemikus 1,5 kuni 3, olenevalt arendaja kogemusest ja projekti raames lahendatavate ülesannete ebakindlusastmete koguarvust.

Reklaami Alanda

Tähtaegade määramisel on oluline arvestada paljude teguritega.

Näiteks töökogemus. Kui selgelt mõistate eesseisva töö ulatust? Kas olete varem midagi sellist teinud? Selge see, et mida rohkem kogemusi, seda kiiremini töö valmib.

Hästi kirjutatud tehniline kirjeldus mängib tähtaegade määramisel olulist rolli. Sellega on meie piirkonnas asjad väga keerulised. Tihti ei tea klient ise, mida ta tahab, seega soovitan kulutada üks-kaks lisapäeva, kuid saada kliendil selge ettekujutus soovitud tulemusest. On oluline, et see mõistmine oleks vastastikune. Ja alles pärast seda saate alustada läbirääkimisi summa ja tingimuste üle.

Kaasake alati ka riske. Algajatele soovitan eeldatava valmimisaja korrutada kahega. Parem on ju projekt enne tähtaega ellu viia ja kliendi silmis spetsialistiks kasvada, kui seda hiljem tarnida ja oma mainet rikkuda.

Reklaami Alanda

Üldine soovitus on, et arendaja peab õppima ülesandeid õigesti lahti võtma, otsima alati võimalikke lõkse, tuginema oma kogemustele ja ärge unustage kliente ja kolleege õigeaegselt hoiatada, kui ülesannet ei saa määratud aja jooksul lahendada. raami.

Selge plaani koostamine on palju keerulisem kui ühe ülesande täitmise tähtaja määramine. Samal ajal on oluline mitte ainult projekti õigeaegne tarnimine, vaid ka see, et teie väljatöötatav süsteem lahendaks õigesti äriprobleeme. Siin on IT-meeskondadele abiks erinevad tarkvaraarenduse metoodikad: RUP-ist ja MSF-ist kuni SCRUM-i ja teiste Agile-vorminguteni. Tööriistade valik on väga lai ja paljud meie kliendid soovivad juba ette mõista, kuidas me nendega projektis koostööd teeme, millistest põhimõtetest lähtume.

Muide, Agile'i teema on tänapäeval muutumas lähedaseks nii ärile kui ka üksikprojektides avalikule sektorile, kuna selle metoodika põhimõtted võimaldavad projekte väga kiiresti ellu viia, hallates klientide ootusi igal iteratsioonil. Näiteks Agiilses meeskonnas pikaleveninud arutelud kliendiga praktiliselt puuduvad. Unustage ära kümned leheküljed, mis kirjeldavad tarbetuid tehnilisi üksikasju, näiteks ripploendi ilmumise kiirust. Andke kliendile võimalus proovida süsteemi vahepealset versiooni, siis on teil üksteisest palju lihtsam aru saada.

Agile meeskond planeerib kõik koos ja määrab optimaalse tööjõutaseme, mida konkreetse probleemi lahendamiseks vaja läheb. Näiteks üks tehnikatest kannab nime “Pokkeriplaneerimine”, kus iga osaleja annab anonüümselt oma hinnangu konkreetse ülesande jaoks vajalike tööjõukulude kohta. Pärast seda määrab meeskond ülesande keskmise kaalu jutupunktides või töötundides ja jaotab ülesanded põhimõttel “kellele mis meeldib”. Samal ajal koguneb meeskond iga päev 15-minutilisele koosolekule, kus kõik räägivad paari minutiga oma hetkeülesannete seisust, sh annavad teada tekkinud raskustest. Meeskond lahendab tuvastatud probleemi kiiresti, nii et klient vaatab võimalikult kiiresti programmeerija töö järgmise etapi. Arendajad ei viivita ülesannete täitmist soovimatuse tõttu meeskonda veel kord tülitada või asjatute katsete pärast seda ise välja mõelda, tappes väärtuslikku aega. Muide, selliste ministaatuste juures on arendajatel soov näidata oma parimat külge, näidata, et lähenete oma tööle vastutustundlikult. See tõesti motiveerib ja distsiplineerib ennast.

Laadimine...
Üles