Algorithm para sa pagkalkula ng tamang oras ng proseso. Pag-iskedyul (computing) Teknikal na Direktor ng Center para sa mga makabagong Teknolohiya at Solusyon na "Jet Infosystems"


Panimula

Ang layunin ng pagawaan sa samahan ng produksyon ay upang palawakin at palalimin ang teoretikal na kaalaman, upang maitanim ang mga kinakailangang kasanayan upang malutas ang pinakakaraniwang mga problema sa pagsasanay sa samahan at pagpaplano ng produksyon.

Kasama sa pagawaan ang mga gawain para sa pangunahing mga seksyon ng kurso. Sa simula ng bawat paksa, ipinakita ang mga maikling tagubiling pamamaraan at teoretikal na impormasyon, mga tipikal na gawain na may mga solusyon at gawain para sa malayang solusyon.

Ang pagkakaroon ng mga tagubiling metodolohikal at maikling impormasyon ng teoretikal sa bawat paksa ay ginagawang posible na gamitin ang workshop na ito sa mga kurso sa pagsusulatan.


Pagkalkula ng tagal siklo ng produksyon

Bilang isang tagapagpahiwatig ng kahusayan proseso ng produksyon ay ang tagal ng ikot ng produksyon.

Siklo ng produksyon- ang panahon ng pananatili ng mga bagay ng paggawa sa proseso ng produksyon mula sa sandaling ang mga hilaw na materyales ay inilunsad hanggang sa sandaling ang natapos na produkto ay pinakawalan.

Ang ikot ng produksyon ay binubuo ng oras ng pagtatrabaho, kung saan ginugol ang paggawa, at break time... Ang mga break, depende sa mga dahilan na sanhi nito, ay maaaring hatiin:

1) sa natural o teknolohikal - ang mga ito ay dahil sa likas na katangian ng produkto;

2) pang-organisasyon(pumutok sa pagitan ng paglilipat).

Ang tagal ng ikot ng produksyon ay binubuo ng mga sumusunod na bahagi:

Siklo T = t mga + t kumakain + t tr + t k.k. + t m. o + t m.ts.

kung saan t mga yan- oras ng pagpapatakbo ng teknolohikal;

kumakain - oras ng natural na proseso (pagpapatayo, paglamig, atbp.);

t tr - oras ng transportasyon ng mga bagay ng paggawa;

t c.c. - oras ng kontrol sa kalidad;

t m.o - interoperative na oras ng kama;

t m.ts. - oras na ginugol sa mga interdepartamento na warehouse;

(t tatlo t k.k. maaaring isama sa t m.o).

Ang pagkalkula ng tagal ng ikot ng produksyon ay nakasalalay sa uri ng paggawa. Sa produksyon ng masa, ang tagal ng ikot ng produksyon ay natutukoy ng oras na ang produkto ay nasa daloy, ibig sabihin

Siklo T = t sa M,

kung saan t v- siklo ng paglabas;

M- bilang ng mga lugar ng trabaho.

Sa ilalim ni pakawalan ng taktika dapat itong maunawaan ang agwat ng oras sa pagitan ng paglabas ng isang produktong gawa at ng susunod na produkto.

Ang siklo ng paglabas ay natutukoy ng formula

t sa = Teff / V,

kung saan Teff- ang mabisang pondo ng oras ng manggagawa para sa panahon ng pagsingil (shift, araw, taon);

V- ang dami ng produksyon para sa parehong panahon (sa natural na mga yunit).

Halimbawa: T cm = 8 oras = 480 min; T lane = 30 min; → Teff = 480 - - 30 = 450 min.

B = 225 mga PC; → t h = 450/225 = 2 min.

V serial production kung saan ang pagpoproseso ay isinasagawa sa mga batch, ang tagal ng teknolohikal na pag-ikot ay natutukoy hindi bawat yunit ng produksyon, ngunit para sa buong batch. Bukod dito, depende sa pamamaraan ng paglulunsad ng isang batch sa produksyon, nakakakuha kami ng iba't ibang mga oras ng pag-ikot. Mayroong tatlong paraan upang ilipat ang mga produkto sa produksyon: sunud-sunod, parallel at halo-halong (serial-parallel).


Ako... Sa pare-pareho paglipat ng mga bahagi, ang bawat kasunod na operasyon ay nagsisimula lamang matapos ang nakaraang isang natapos. Ang oras ng pag-ikot para sa sunud-sunod na paggalaw ng mga bahagi ay magiging katumbas ng:

kung saan n - ang bilang ng mga bahagi ng batch na pinoproseso;

t pcsako- rate ng oras ng piraso para sa operasyon;

C i- ang bilang ng mga trabaho bawat ako ika ng operasyon;

m- ang bilang ng mga pagpapatakbo ng teknolohikal na proseso.

Isang pangkat ng 5 piraso ang ibinigay. Ang batch ay naipasa nang sunud-sunod sa pamamagitan ng 4 na operasyon; ang tagal ng unang operasyon - 10 minuto, ang pangalawa - 20 minuto, ang pangatlo - 10 minuto, ang ikaapat - 30 minuto (Larawan 1).

Larawan 1

T ikot = T huling = 5 (10 + 20 + 10 + 30) = 350 min.

Ang sunud-sunod na paraan ng paglipat ng mga bahagi ay may kalamangan na pinapayagan nitong gumana ang kagamitan nang walang downtime. Ngunit ang kawalan nito ay ang tagal ng ikot ng produksyon sa kasong ito ang pinakamalaki. Bilang karagdagan, ang mga makabuluhang stock ng mga bahagi ay nilikha sa mga lugar ng trabaho, na nangangailangan ng karagdagang puwang sa produksyon.

II... Sa kahilera ang paggalaw ng batch, ang mga indibidwal na bahagi ay hindi naantala sa mga lugar ng trabaho, ngunit indibidwal na agad na inilipat sa susunod na operasyon, nang hindi hinihintay ang proseso ng buong batch. Kaya, sa parallel na paggalaw ng isang batch ng mga bahagi sa bawat lugar ng trabaho, ang iba't ibang mga operasyon ay sabay na ginaganap sa iba't ibang bahagi ng parehong batch.

Ang tagal ng pagproseso ng batch na may parallel na paggalaw ng mga produkto ay mahigpit na nabawasan:

dl .

kung saan n n- ang bilang ng mga bahagi sa transfer batch(transport consignment), ibig sabihin ang bilang ng mga produkto nang sabay-sabay inilipat mula sa isang operasyon patungo sa isa pa;

Dl - ang pinakamahabang cycle ng pagpapatakbo.

Sa isang parallel na paglulunsad ng isang pangkat ng mga produkto, ang pagpoproseso ng mga bahagi ng buong batch ay patuloy na isinasagawa lamang sa mga lugar ng trabaho na kung saan sinusunod ng mahabang operasyon ang mga maikli. Sa mga kaso kung saan sumusunod ang mga maiikling operasyon, ibig sabihin mas mahaba (sa aming halimbawa - ang pangatlong operasyon), ang pagpapatupad ng mga operasyong ito ay ginagawa nang paulit-ulit, ibig sabihin kagamitan na walang ginagawa. Dito, isang pangkat ng mga bahagi ay hindi maipoproseso kaagad, nang walang pagkaantala, dahil hindi pinapayagan ng nakaraang (mahaba) na operasyon.

Sa aming halimbawa: n= 5, t 1 = 10; t 2 = 20; t 3 = 10; t 4 = 30; kasama si= 1.

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

Isaalang-alang ang pamamaraan ng parallel na paggalaw ng mga bahagi (Larawan 2):

Larawan 2

III... Upang maalis ang mga pagkagambala sa pagproseso ng mga indibidwal na bahagi ng batch sa lahat ng mga operasyon, mag-apply parallel-serial o magkakahalo isang paraan ng pagsisimula, kung saan ang mga bahagi (pagkatapos ng kanilang pagproseso) ay inililipat sa susunod na operasyon nang paisa-isa, o sa anyo ng mga "backlog" na backlog (maraming piraso bawat isa) sa paraang hindi maantala ang pagpapatupad ng mga operasyon sa anumang lugar ng trabaho. Sa halo-halong pamamaraan, ang pagpapatuloy ng pagproseso ay kinuha mula sa sunud-sunod na pamamaraan, at mula sa parallel na pamamaraan, ang paglipat ng bahagi mula sa pagpapatakbo hanggang sa pagpapatakbo kaagad pagkatapos ng pagproseso nito. Sa isang magkahalong pamamaraan ng paglulunsad sa produksyon, ang oras ng pag-ikot ay natutukoy ng formula

cor .

kung saan cor. - ang pinakamaikling ikot ng pagpapatakbo (mula sa bawat pares ng mga katabing operasyon);

m-1 bilang ng mga pagkakahanay.

Kung ang kasunod na operasyon ay mas mahaba kaysa sa nakaraang isa, o katumbas nito sa oras, pagkatapos ay ang operasyon na ito ay isa-isang nagsisimula, kaagad pagkatapos maproseso ang unang bahagi sa nakaraang operasyon. Kung, sa kabaligtaran, ang kasunod na operasyon ay mas maikli kaysa sa nakaraang isa, pagkatapos ay may mga puwang sa paglilipat ng piraso. Upang maiwasan ang mga ito, kinakailangan upang makaipon ng isang reserba ng transportasyon ng naturang dami, na sapat upang matiyak ang trabaho sa kasunod na operasyon. Upang praktikal na makita ang puntong ito sa grap, kinakailangan upang ilipat ang huling detalye ng batch at ipagpaliban ang tagal ng pagpapatupad nito sa kanan. Ang oras ng pagproseso para sa lahat ng iba pang mga bahagi ng batch ay naka-plot sa kaliwa sa graph. Ang simula ng pagproseso ng unang bahagi ay nagpapakita ng sandali kung kailan ang reserba ng transport mula sa nakaraang operasyon ay dapat ilipat sa operasyong ito.

Kung ang mga katabing operasyon ay magkapareho ng tagal, pagkatapos isa lamang sa mga ito ang tinatanggap bilang maikli o mahaba (Larawan 3).

Larawan 3

T huling-singaw = 5 (10 + 20 + 10 + 30) - (5-1) (10 + 10 + 10) = 350-120 = 230 min.

Ang mga pangunahing paraan upang mabawasan ang tagal ng ikot ng produksyon ay:

1) Pagbawas ng lakas ng paggawa ng mga produkto ng pagmamanupaktura sa pamamagitan ng pagpapabuti ng kakayahang gumawa ng gawa na istraktura, ang paggamit ng mga computer, ang pagpapakilala ng mga advanced na teknolohikal na proseso.

2) Rational na samahan proseso ng paggawa, pag-aayos at pagpapanatili ng mga lugar ng trabaho batay sa pagdadalubhasa at kooperasyon, malawak na mekanisasyon at awtomatiko ng produksyon.

3) Pagbawas ng iba`t ibang mga nakaplanong at hindi planong pagkagambala sa trabaho batay sa makatuwirang paggamit ng mga prinsipyo organisasyong pang-agham proseso ng produksyon.

4) Pagpabilis ng kurso ng mga reaksyon bilang isang resulta ng pagtaas ng presyon, temperatura, paglipat sa isang tuluy-tuloy na proseso, atbp.

5) Pagpapabuti ng mga proseso ng transportasyon, warehousing at kontrol at ang kanilang pagkakahanay ng oras sa proseso ng pagpoproseso at pagpupulong.

Ang pagbawas ng tagal ng ikot ng produksyon ay isa sa mga seryosong gawain ng pag-aayos ng produksyon, dahil nakakaapekto sa turnover nagtatrabaho kabisera, binabawasan ang mga gastos sa paggawa, binabawasan ang lugar ng pag-iimbak, ang pangangailangan para sa transportasyon, atbp.

Mga Gawain

1 Tukuyin ang tagal ng siklo ng pagproseso ng 50 bahagi sa sunud-sunod, parallel at sunud-sunod na mga uri ng paggalaw sa proseso ng produksyon. Ang pagproseso ng mga bahagi ay binubuo ng limang operasyon, ang tagal nito ay, ayon sa pagkakabanggit, min: t 1 =2; t 2 =3; t 3 =4; t 4 =1; t 5 = 3. Ang ikalawang operasyon ay ginaganap sa dalawang machine, at bawat isa sa iba pa. Ang laki ng transfer batch ay 4 na piraso.

2 Tukuyin ang tagal ng siklo ng pagproseso ng 50 bahagi na may sunud-sunod, magkakasunod at sunud-sunod na mga uri ng paggalaw sa proseso ng produksyon. Ang pagproseso ng mga bahagi ay binubuo ng apat na operasyon, ang tagal nito ay, ayon sa pagkakabanggit, min: t 1 =1; t 2 =4; t 3 =2; t 4 = 6. Ang pang-apat na operasyon ay ginaganap sa dalawang machine, at bawat isa sa iba pa. Ang laki ng transfer batch ay 5 piraso.

3 Ang isang pangkat ng mga bahagi ng 200 piraso ay naproseso na may parallel-sequential na kilusan nito sa proseso ng produksyon. Ang pagproseso ng mga bahagi ay binubuo ng anim na operasyon, ang tagal nito ay, ayon sa pagkakabanggit, min: t 1 =8; t 2 =3; t 3 =27; t 4 =6; t 5 =4; t 6 = 20. Ang pangatlong operasyon ay ginaganap sa tatlong machine, ang pang-anim sa dalawa, at bawat isa sa iba pang mga operasyon sa isang machine. Tukuyin kung paano magbabago ang oras ng pag-ikot ng pagproseso para sa isang pangkat ng mga bahagi kung ang parallel-sunud-sunod na pagkakaiba-iba ng paggalaw sa produksyon ay pinalitan ng isang parallel. Ang laki ng transfer batch ay 20 piraso.

4 Isang pangkat ng 300 na piraso ang naproseso sa parallel-sunud-sunod na kilusan sa panahon ng proseso ng produksyon. Ang pagproseso ng mga bahagi ay binubuo ng pitong operasyon, ang tagal nito ay, ayon sa pagkakabanggit, min: t 1 =4; t 2 =5; t 3 =7; t 4 =3; t 5 =4; t 6 =5; t 7 = 6. Ang bawat operasyon ay ginaganap sa isang makina. Paglipat ng batch - 30 piraso. Bilang isang resulta ng pinabuting teknolohiya ng produksyon, ang tagal ng pangatlong operasyon ay nabawasan ng 3 minuto, ang ikapito - ng 2 minuto. Tukuyin kung paano nagbabago ang siklo ng siklo.

5 Isang pangkat ng mga blangko ang ibinibigay, na binubuo ng 5 piraso. Ang batch ay naipasa sa 4 na operasyon: ang tagal ng una ay 10 minuto, ang pangalawa ay 20 minuto, ang pangatlo ay 10 minuto, at ang ikaapat ay 30 minuto. Tukuyin ang tagal ng pag-ikot gamit ang mga pamamaraang analitikal at grapiko na may sunud-sunod na paggalaw.

6 Isang pangkat ng mga blangko ang ibinibigay, na binubuo ng apat na piraso. Ang batch ay naipasa sa 4 na operasyon: ang tagal ng una ay 5 minuto, ang pangalawa ay 10 minuto, ang pangatlo ay 5 minuto, at ang ikaapat ay 15 minuto. Tukuyin ang tagal ng pag-ikot ng masuri at grapiko na may parallel na paggalaw.

7 Isang pangkat ng mga blangko ang ibinibigay, na binubuo ng 5 piraso. Ang batch ay naipasa sa 4 na operasyon: ang tagal ng una ay 10 minuto, ang pangalawa ay 20 minuto, ang pangatlo ay 10 minuto, at ang ikaapat ay 30 minuto. Tukuyin ang tagal ng pag-ikot gamit ang mga pamamaraang analitikal at grapiko para sa sunud-sunod na paggalaw.

8 Tukuyin ang tagal ng teknolohikal na pag-ikot ng pagproseso ng isang batch ng 180 piraso. na may mga parallel at sunud-sunod na bersyon ng paggalaw nito. Bumuo ng mga graph ng pagproseso. Ang laki ng batch ng paglilipat - 30 mga PC. Ang mga pamantayan ng oras at ang bilang ng mga trabaho sa pagpapatakbo ay ang mga sumusunod.

Ang lahat ng nailarawan sa nakaraang maraming mga seksyon ay higit na nakatuon sa pagsasagawa ng karagdagang pagsasaliksik sa problema ng oras ng proseso ng intrinsik at, sa mas kaunting lawak, sa mga praktikal na aplikasyon. Upang mapunan ang puwang na ito, balangkasin natin ang isa sa mga paraan upang makalkula ang tamang oras ng isang proseso batay sa data ng istatistika sa ebolusyon nito.

Isaalang-alang ang isang isang-dimensional na proseso, ang estado kung saan ay nailalarawan sa pamamagitan ng isang tunay na variable x. Ipagpalagay na ang mga obserbasyon ng dynamics ng proseso ay ginaganap sa astronomical na oras t, upang ang t = tk at x = xk, k = 1, ..., n ay naayos na mga sandali ng pagmamasid at ang mga kaukulang halaga ng mga estado ng proseso Mayroong maraming iba't ibang mga pamamaraan sa matematika na ginagawang posible na bumuo ng mga curve na dumaan sa mga puntos (t k, Xk), o lapitan sila sa "pinakamahusay na paraan". Ang mga nagresultang pag-andar x = x (t) ay nagbibigay ng, sa aming mga isip, sa impression na ang proseso na isinasaalang-alang ay nakasalalay sa paggalaw ng makina ng mga celestial na katawan at, samakatuwid, ang estado nito ay ipinahayag sa pamamagitan ng oras ng astronomiya t. Ang nasabing konklusyon ay maaaring isaalang-alang; kung walang palaging paghihirap sa pagsubok na mahulaan ang karagdagang kurso ng proseso. Para sa isang malaking bilang ng mga iba't ibang mga proseso na hindi direktang nauugnay sa mga galaw ng makina ng mga celestial na katawan, ang mga hula ng teoretikal na nakuha gamit ang pagpapaandar x = x (t) sa labas ng agwat ng pagmamasid ay nagsisimulang lumihis nang malaki mula sa kasunod na data ng pang-eksperimentong. Ang dahilan para sa pagkakaiba sa pagitan ng teorya at eksperimento ay karaniwang sinubukan na ipaliwanag ng isang hindi matagumpay na napiling pamamaraan sa pagpoproseso, ngunit ang kakanyahan ng bagay ay maaaring wala rito.

Anumang proseso ng interes sa amin ay nagaganap sa Uniberso. Siya, syempre, "nararamdaman" ang epekto ng paggalaw ng mga celestial na katawan sa kanyang sarili. Gayunpaman, ang epekto na ito ay maaaring maging "hindi matibay", hindi matukoy. Sa partikular, maaari itong maipakita sa katunayan na sa ilang mga agwat ng daloy ng oras ng astronomiya, ang estado ng proseso ay mananatiling hindi nagbabago. Alalahanin natin sa koneksyon na ito ang halimbawang ibinigay kanina na may saradong walang laman na silid na nakahiwalay mula sa labas ng mundo. Hayaan lamang natin ang isang live na lumipad sa silid. Sa loob ng ilang araw, ang mga pagbabago sa estado ng system ng house-fly ay nakasalalay sa paggalaw ng mabilis, dahil ang mga pagbabago sa estado ng bahay ay hindi inaasahan. Sa parehong oras, mahirap isipin na ang pag-uugali ng langaw ay mahigpit na konektado sa kurso ng oras ng astronomiya.

Ang pagkakaroon ng isang mahabang pagdumi, magpatuloy tayo sa paglalarawan ng algorithm para sa pagkalkula ng tamang oras ng proseso.

Sa algorithm na ito, ang yunit ng pagkalkula ng lokal na maxima ay napili bilang isang likas na sukat ng oras. Bilang karagdagan, ang mga posibleng seksyon ng hindi nakatigil na estado ng proseso ay isinasaalang-alang, kung saan, tulad ng nabanggit nang mas maaga, ang tamang oras ay tumitigil. Dahil maaari naming pag-usapan ang pagkakakilanlan ng dalawang estado sa loob lamang ng mga limitasyon ng kawastuhan ng pagsukat, kung gayon ang ilang positibong numero e ay ginagamit sa hinaharap - ang pinapayagan na error sa pagsukat.

Kaya, ang data ng pag-input para sa algorithm ay isang natural na numero n, isang positibong numero 8, mga array (tk) at (xk), k = 1, ..., n. Para sa kaginhawaan ng pagprograma, ipinakita ang algorithm sa anyo ng apat na sunud-sunod na naisakatuparan na mga module.

Modyul 1, gamit ang data n, e, tk), (xk), sa pangkalahatang kaso ay bumubuo ng mga bagong arrays 7 = (7+ X = (X t) at isang napaka-tukoy na kasamang array P = (?), kung saan 1 = 1,. .., t, at t<Сп. Основное назначение этого модуля -- выявление в массиве x k) последовательностей идентичных состояний процесса, сохранение первых элементов в таких последовательностях и удаление всех остальных и, наконец, уменьшение по определенному, правилу исходного интервала наблюдения от t до на сумму тех промежутков времени, в которых процесс протекает стационарно.

Kasama sa Modyul 1 ang mga sumusunod na pamamaraan:

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

Sa p.p. Ang 1, 2, mga counter na may tukoy na mga paunang halaga ay ipinakilala:

Sa p.p. 3, 4, tataas ang mga halaga ng counter ng 1.

Suriin ang kundisyon k ^ n. Kung nasiyahan ito, pagkatapos ay pumunta sa item 6, kung hindi man pumunta sa item 11.

Suriin ang hindi pagkakapantay-pantay x k --x k = e. Kung mayroong ito, pagkatapos ay pumunta sa item 7, kung hindi man pumunta sa item 9.

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

Nangangahulugan ang pamamaraang ito na kung ang mga halaga ng Xk at Xk 1 ay hindi makikilala sa loob ng error, kung gayon sa lahat ng oras, simula sa tk, bawasan ng tki-tk.

p = p. Bumalik sa item 4.

TV = t k; X v: = x k; p = p v = v + l., ibig sabihin ang mga elemento ng arrays na T, X, P ay nabuo at ang susunod na halaga v ay itinalaga.

  • 10. Kunin ang (t k, ..., t n AND (Xk, - X n) bilang paunang mga arrays ng dimensyon n - k 1 + 1 at pagkatapos ay bumalik sa item 2.
  • 11. I-print m, (T), (X,) at (P,), kung saan i = l, ..., m. Wakas.

Ipaliwanag natin ang kahulugan ng mga elemento ng kasamang array P. Mula sa naunang teksto sumusunod na ang halaga ng pk ay katumbas ng bilang ng mga elemento ng array (xk) na agad na sumusunod, at naiiba mula sa x pi +. .. +, +, ng mas mababa sa e. Tandaan din, ang pi + ... + pm = n.

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

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

Bilang resulta ng module 1, nakakakuha kami ng m = 11,

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

at (d.) = (2, 4, 1, 1, 1.3, 2, 1.3, 1, 1), tingnan ang fig. 9, b.

Modyul 2. Ang data ng pag-input para dito ay isang natural na numero m, pati na rin ang mga array (7+ (XL), = 1, ..., t. Ang modyul na ito sa array (ibinubunyag ng TJ ang mga sandali ng oras [TM a], 1 = 1 m (ml

Halimbawa 2. Ang mga halagang m, (T b) at (X,] ay hiniram mula sa naunang halimbawa. Matapos ipatupad ang module 2, makakakuha kami ng ml = 3, m2 = 8, (U,) = (3, 8, 17), (T *) = (3, 4, 6, 8, 11, 12, 15, 17), tingnan din ang Larawan 9, b.

Modyul 3. Input data ml, m2, (TM n), 1 = 1, ..., ml, (T *), / 2 = 1, ..., rn2.

Ang modyul na ito ay idinisenyo upang bumuo ng isang array (m (-g) sa pamamagitan ng formula

Kung saan ang TV 6 [TMp, TMn + i]

Ang variable m ay sariling oras na nabuo ng pagbabago sa variable x. Ang likas na panukalang ito ay ang lokal na maximum na yunit.

Halimbawa 3. Ang paunang data para sa 2) ay kapareho ng mga halagang ml, m2 ITM, at sa halimbawa 2 .. Matapos ang naaangkop na mga kalkulasyon, nakukuha namin ang N = (0; 0.2; 0.6; 1; 1,33; 1,78; 2).

Modyul 4. Hinahubog ang output ng mga resulta sa pamamagitan ng pagtataguyod ng isang sulat sa pagitan ng mga halaga ng m at mga elemento ng x mula sa array (xk).

Halimbawa 4. Batay sa data ng mga halimbawa 2 at 3, ang sumusunod na resulta ay ginawa, tingnan ang fig. 9, sa:

t: 0; 0.2; 0.6; 1; 1.33; 1.44;

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

Kaya, ang isinasaalang-alang na algorithm ay ginagawang posible upang paunlarin ang konsepto ng tamang oras ng proseso batay sa impormasyon sa pagbabago ng estado ng proseso na naitala sa iskala ng oras ng astronomiya. Ito ay lubos na malinaw na maaari mong gamitin ang iba pang mga algorithm batay, halimbawa, sa pagkalkula ng isang pagkakasunud-sunod ng lokal na minima o isang halo-halong pagkakasunud-sunod na binubuo ng lokal na maxima at minima. Kapag pinoproseso ang pang-eksperimentong data, marahil ay dapat mong subukan ang iba't ibang mga pagpipilian. Kung sa ilang kadahilanan ang eksperimento ay pumili ng isa sa mga tukoy na tamang oras at natanggap ang mga array (m4 at (xk) nang sabay, kung gayon sa susunod na yugto dapat siyang gumamit ng ilang mga pamamaraan sa matematika upang tantyahin ang mga pang-eksperimentong puntos (m *, x ) ilang tinatayang linya ng mundo ng proseso x = x (t). Extrapolating ang linyang ito na lampas sa paunang agwat ng pagmamasid, maaari siyang magbigay ng mga pagtataya tungkol sa karagdagang kurso ng proseso.

Nakatutuwang banggitin ang isang eksperimento sa computational na idinisenyo upang masuri ang mga prospect ng paggamit ng ipinanukalang algorithm. Ang data sa taunang runoffs ng ilog ay napili bilang pang-eksperimentong materyal. Vakhsh (Tajikistan) para sa 40 nakaraang mga taon. Para sa parehong tagal ng panahon, ang impormasyon ay nakuha sa mga dynamics ng numero ng Wolf - ang pinakakaraniwang ginagamit na integral index ng solar na aktibidad. Ang huli ay ang batayan para sa pagbuo ng tamang oras ng proseso ng aktibidad ng solar. Sa bagong oras, ang impormasyon tungkol sa mga gastos sa ilog ay nabago. Vakhsh at pagkatapos, sa panahon ng pagmamasid, ang teoretikal na pag-asa ng rate ng daloy ng tubig ay ibinigay bilang isang pagpapaandar ng tamang oras ng aktibidad ng solar. Ang isang tampok na tampok ng nagresultang iskedyul ay ang halos pana-panahong pag-uugali ng maximum at minimum na mga gastos. Gayunpaman, ang mga gastos ay hindi mananatiling pare-pareho.

(ang oras mula sa trabaho ay naging pinagana hanggang sa makumpleto ito sa kaso ng pana-panahong aktibidad, o hanggang sa tumugon ang system gamit ang mga kamay ng unang paglabas ng gumagamit sa kaso ng interactive na aktibidad); o pag-maximize hustisya(pantay na halaga ng oras ng processor para sa bawat proseso, o higit sa pangkalahatan, mga kaukulang puntos sa oras ayon sa priyoridad at pagkarga ng trabaho ng bawat proseso). Sa pagsasagawa, ang mga layuning ito ay madalas na magkasalungat (hal. Throughput kumpara sa latency), kaya ang tagapag-iskedyul ay gagawa ng isang naaangkop na tradeoff. Ang kagustuhan ay sinusukat ng alinman sa mga problema na nabanggit sa itaas, depende sa mga pangangailangan at gawain ng gumagamit.

OS / 360 at mga kahalili

Aix

Sa AIX Bersyon 4, mayroong tatlong posibleng kahulugan para sa isang patakaran sa pag-iiskedyul ng thread:

  • Una, ang una ay lumabas: Matapos ang isang thread na may patakarang ito ay naka-iskedyul, naisakatuparan ito hanggang sa makumpleto, kung hindi ito naka-block, kusang-loob nitong tinatanggal ang kontrol sa processor, o ang pagpapadala ay naging isang mas mataas na priyoridad ng thread. Sa pamamagitan lamang ng naayos na mga prayoridad na stream na maaaring magkaroon ng isang patakaran sa pag-iiskedyul ng FIFO.
  • Round Robin: Ito ay katulad ng iskedyul ng iskema ng AIX Bersyon 3 sa isang bilog na fashion batay sa mga hiwa ng 10ms na oras. Kapag ang isang thread ng PP ay may kontrol sa pagtatapos ng isang puwang ng oras, lumilipat ito sa buntot ng pila ng thread na may parehong priyoridad. Ang mga thread lamang na may nakapirming priyoridad ay maaaring magkaroon ng patakaran sa pag-iiskedyul ng Round Robin.
  • IBA: Ang patakarang ito ay tinukoy ng POSIX1003.4a sa pagpapatupad. Sa AIX Bersyon 4, ang patakarang ito ay tinukoy bilang katumbas ng RR, maliban na nalalapat ito sa hindi naayos na mga prioridad na thread. Ang muling pagkalkula ng halaga ng priyoridad ng isang tumatakbo na thread bawat nakagambala ay nangangahulugang ang isang thread ay maaaring mawalan ng kontrol dahil ang priyoridad na halaga ay tumaas nang mas mataas kaysa sa isa pang thread. Ito ang pag-uugali ng AIX Bersyon 3.

Ang mga thread ay pangunahin ng interes para sa mga application na kasalukuyang binubuo ng maraming mga asynchronous na proseso. Ang mga application na ito ay maaaring magpataw ng isang magaan na pag-load sa system kung na-convert sa isang multi-threaded na istraktura.

Ipinatutupad ng AIX 5 ang mga sumusunod na patakaran sa pag-iiskedyul: FIFO, pivot, at patas na pivot. Ang patakaran ng FIFO ay binubuo ng tatlong magkakaibang pagpapatupad: FIFO, FIFO2, at FIFO3. Ang patakaran sa pag-ikot robin ay tinawag na SCHED_RR sa AIX at ang patas na bilog na robin ay tinawag na SCHED_OTHER.

Linux

Linux 2.4

Ang Brain Fuck scheduler (BFS), nilikha din ng Colivas, ay isang kahalili sa CFS.

FreeBSD

Gumagamit ang FreeBSD ng isang tiered na pila ng feedback na may mga priyoridad mula sa 0-255. Ang 0-63 ay nakalaan para sa mga nakakagambala, 64-127 para sa itaas na kalahati ng kernel, 128-159 para sa mga real-time na thread ng gumagamit, 160-223 para sa pagbabahagi ng oras para sa mga thread ng gumagamit, at 224-255 para sa mga idle na thread ng gumagamit. Gayundin, tulad ng Linux, gumagamit ito ng isang aktibong pag-setup ng pila, ngunit mayroon din itong isang idle na pila.

Ang bersyon ng switch ng nakaraang algorithm ay ang pinakamaliit na natitirang algorithm. Alinsunod sa algorithm na ito, pipiliin ng tagapag-iskedyul ang proseso na may pinakamaliit na natitirang oras ng pagpapatupad sa bawat oras. Sa kasong ito, kinakailangan ding malaman nang maaga ang oras ng pagpapatupad ng mga gawain. Kapag dumating ang isang bagong gawain, ang kabuuang oras ng pagpapatupad nito ay inihambing sa natitirang oras ng pagpapatupad ng kasalukuyang gawain. Kung ang oras ng pagpapatupad ng bagong gawain ay mas maikli, ang kasalukuyang proseso ay nasuspinde at ang kontrol ay inililipat sa bagong gawain. Pinapayagan ka ng scheme na ito na mabilis na maghatid ng mga maiikling kahilingan.

Pagpaplano ng three-tier

Pinapayagan ka ng mga system ng batch na magpatupad ng three-tier planning, tulad ng ipinakita sa figure. Habang papasok ang mga bagong gawain sa system, inilalagay muna sila sa isang pila na nakaimbak sa disk. Ipasok access planner pipili ng trabaho at ilipat ito sa system. Ang natitirang mga gawain ay mananatili sa pila.

Sa lalong madaling pagpasok ng isang gawain sa system, isang kaukulang proseso ang lilikha para dito, at agad itong makakapasok sa isang pakikibaka para sa pag-access sa processor. Gayunpaman, posible ang isang sitwasyon kapag maraming proseso at lahat sila ay hindi umaangkop sa memorya, kung gayon ang ilan sa kanila ay mai-disk sa disk. Tinutukoy ng pangalawang antas ng pag-iiskedyul kung aling mga proseso ang maaaring maiimbak sa memorya at alin ang maaaring maimbak sa disk. Tapos na ito tagapag-iskedyul ng memorya .

Pana-panahong ang iskedyul ng memorya ay tumitingin sa mga proseso sa disk upang magpasya kung alin ang lilipat sa memorya. Kabilang sa mga pamantayan na ginamit ng tagapag-iskedyul ay ang mga sumusunod:

1. Gaano katagal mula nang mai-flush ang proseso sa disk o mai-load mula sa disk?

2. Gaano katagal ang proseso ng paggamit ng processor?

3. Ano ang laki ng proseso (ang mga maliliit na proseso ay hindi makagambala)?

4. Ano ang kahalagahan ng proseso?

Ang pangatlong antas ng pag-iiskedyul ay responsable para sa pag-access sa processor para sa mga proseso na nasa isang handa na estado. Kapag may usapan tungkol sa isang "tagaplano", karaniwan ito tagapag-iskedyul ng processor ... Gumagamit ang tagapag-iskedyul na ito ng anumang algorithm na naaangkop sa sitwasyon, mayroon o walang pagkakagambala. Isinaalang-alang na namin ang ilan sa mga algorithm na ito, at makikilala namin ang iba.

Pagpaplano sa mga interactive na system.

Pagpaplano ng paikot.

Ang isa sa pinakaluma, pinakasimpleng, pinakatas at pinakakaraniwang ginagamit na mga algorithm ay ang pag-iiskedyul ng algorithm ng pag-iiskedyul ng round-robin. Ang bawat proseso ay binibigyan ng isang tiyak na agwat ng oras ng processor, ang tinaguriang slice ng oras. Kung ang proseso ay tumatakbo pa rin sa pagtatapos ng hiwa ng oras, ito ay pinalaglag at ang kontrol ay inililipat sa isa pang proseso. Siyempre, kung ang proseso ay naharang o lumabas nang maaga, ang paglipat ng kontrol ay nangyayari sa sandaling iyon. Ang pagpapatupad ng pag-iiskedyul ng round-robin ay prangka. Kailangan lamang panatilihin ng tagapag-iskedyul ang listahan ng mga proseso na handa. Kapag naabot ng isang proseso ang limitasyon ng oras nito, ipinapadala ito sa dulo ng listahan.

Ang tanging kagiliw-giliw na punto ng algorithm na ito ay ang haba ng kabuuan. Ang paglipat mula sa isang proseso patungo sa isa pa ay tumatagal ng ilang oras - kailangan mong i-save at i-load ang mga rehistro at memory card, i-update ang mga talahanayan at listahan, i-save at i-reload ang cache ng memorya, atbp kahusayan, ngunit masyadong malaki ang isang kabuuan ay maaaring magresulta sa mabagal na tugon sa maikling interactive mga query Ang halagang dami sa paligid ng 2 0 -5 0 ms ay madalas na isang makatuwirang kompromiso.

Pagpaplano ng priyoridad.

Sa isang cyclical scheduling algorithm, mayroong isang mahalagang palagay na ang lahat ng mga proseso ay pantay. Sa isang sitwasyon sa computer na may isang malaking bilang ng mga gumagamit, maaaring hindi ito ang kaso. Halimbawa, sa unibersidad, una sa lahat, ang mga dekano ay dapat paglingkuran, pagkatapos ang mga propesor, kalihim, paglilinis, at pagkatapos lamang ng mga mag-aaral. Ang pangangailangang isaalang-alang ang gayong mga panlabas na kadahilanan ay humahantong sa pagpaplano ng priyoridad. Ang pangunahing ideya ay simple: ang bawat proseso ay naitalaga ng isang priyoridad, at ang kontrol ay inililipat sa handa na na tumakbo na proseso na may pinakamataas na priyoridad.

Maraming pila.

Ang isa sa mga unang naka-iskedyul ng priyoridad ay ipinatupad sa katugmang system na nakabahaging oras (CTSS). Ang pangunahing problema sa sistema ng CTSS ay masyadong mabagal na proseso ng paglipat, dahil maaaring magkaroon lamang ng isang proseso sa memorya ng computer ng IBM 7094. Ang bawat switch ay nangangahulugang pagtapon ng kasalukuyang proseso sa disk

at pagbabasa ng isang bagong proseso mula sa disk. Mabilis na napagtanto ng mga developer ng CTSS na ang kahusayan ay magiging mas mataas kung ang mga proseso, na limitado ng processor, ay inilalaan ng isang mas malaking slice ng oras kaysa sa bigyan sila ng maliliit na hiwa, ngunit madalas. Sa isang banda, babawasan nito ang bilang ng mga swap mula sa memorya hanggang sa disk, at sa kabilang banda, hahantong ito sa isang pagkasira sa oras ng pagtugon, tulad ng nakita na natin.

Bilang isang resulta, isang solusyon na may mga priyoridad na klase ay nabuo. Ang mga proseso ng klase na may pinakamataas na priyoridad ay inilalaan ng isang dami, ang mga proseso ng susunod na klase - dalawang quanta, ang susunod - apat na quanta, at iba pa. Nang maubos ang proseso sa lahat ng oras na inilaan dito, lumipat ito sa mababang klase.

Bilang isang halimbawa, isaalang-alang ang isang proseso na kailangang magsagawa ng mga kalkulasyon para sa 100 quanta. Una, bibigyan ito ng isang dami, pagkatapos ay ibabomba ito sa disk. Sa susunod ay makakakuha siya ng 2 quanta, pagkatapos ay 4, 8,16, 32, 64, bagaman gumagamit lamang siya ng 37 sa labas ng 64. Sa kasong ito, kakailanganin lamang niya ng 7 paglilipat (kasama ang paunang pag-download) sa halip na 100, na kung saan ay kinakailangan gamit ang isang cyclic algorithm. Bilang karagdagan, habang sumisid ka sa linya ng priyoridad, magsisimula ang proseso nang mas kaunti at mas madalas, naiwan ang processor sa mas maiikling proseso.

"Ang pinakamaikling proseso ay ang susunod"

Dahil ang Pinakamabilis na Gawain ng unang algorithm na binabawasan ang average na oras ng pag-ikot sa mga system ng pagproseso ng batch, nais naming gamitin din ito sa mga interactive na system. Sa isang tiyak na lawak, posible ito. Ang mga interactive na proseso ay madalas na sundin ang pattern ng "paghihintay para sa isang utos, pagpapatupad ng isang utos, paghihintay para sa isang utos, pagpapatupad ng isang utos ..." Kung isasaalang-alang mo ang pagpapatupad ng bawat utos bilang isang hiwalay na gawain, maaari mong i-minimize ang pangkalahatang average na tugon oras sa pamamagitan ng pagsisimula muna ng pinakamaikling gawain. Ang problema lang

sa pag-alam kung alin sa mga nakabinbing proseso ang pinakamaikling.

Ang isa sa mga pamamaraan ay batay sa pagtantya sa haba ng proseso batay sa dating pag-uugali ng proseso. Sinisimulan nito ang proseso sa pinakamaikling tinatayang oras. Ipagpalagay natin na ang tinatayang oras ng pagpapatupad ng utos ay T 0 at ang tinatayang oras ng susunod na paglunsad ay T 1. Maaari mong pagbutihin ang pagtatantya ng oras sa pamamagitan ng pagkuha ng timbang na kabuuan ng mga oras na ito aT 0 + (1 - a) T 1. Sa pamamagitan ng pagpili ng naaangkop na halaga para sa a, maaari naming gawin ang estimation algorithm na mabilis na makalimutan ang tungkol sa mga nakaraang paglulunsad o, sa kabaligtaran, alalahanin sila sa mahabang panahon. Pagkuha ng isang = 1/2, nakakakuha kami ng isang serye ng mga pagtatantya:

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.

Matapos ang tatlong paglulunsad, ang bigat ng T 0 sa pagtantya ay bababa sa 1/8.

Ang pamamaraan ng pagtantya sa susunod na halaga sa isang serye sa pamamagitan ng isang timbang na average ng nakaraang halaga at ang dating pagtatantya ay madalas na tinutukoy bilang pagtanda. Nalalapat ang pamamaraang ito sa maraming mga sitwasyon kung saan kinakailangan ang isang pagtatantya mula sa mga nakaraang halaga. Ang pinakamadaling paraan upang mapagtanto ang pagtanda ay sa a = 1/2. Sa bawat hakbang na kailangan mo lamang

magdagdag ng isang bagong halaga sa kasalukuyang pagtatantya at hatiin ang kabuuan (sa pamamagitan ng paglilipat ng 1 bit sa kanan).

Garantisadong pagpaplano.

Ang isang panimulang pagkakaibang diskarte sa pag-iiskedyul ay upang gumawa ng totoong mga pangako sa mga gumagamit at pagkatapos ay matupad ang mga ito. Narito ang isang pangako na madaling magawa at madaling matupad: kung ang mga gumagamit ay nagbabahagi ng isang processor sa iyo, bibigyan ka ng 1 / n na lakas ng processor.

At sa isang system na may isang gumagamit at n tumatakbo na mga processor, ang bawat isa ay makakakuha ng 1 / n na mga cycle ng processor.

Upang matupad ang pangakong ito, dapat subaybayan ng system ang paglalaan ng CPU sa pagitan ng mga proseso mula sa oras na nilikha ang bawat proseso. Kinakalkula ng system ang halaga ng mga mapagkukunan ng processor na may karapatan ang proseso, tulad ng oras mula noong nilikha ang paghati sa n. Ngayon ay maaari mong kalkulahin ang ratio ng oras na ibinigay sa proseso sa oras kung saan ito ay may karapatan. Ang nagresultang halaga ng 0.5 ay nangangahulugang ang proseso ay inilalaan lamang sa kalahati ng kung ano ito dapat, at 2.0 ay nangangahulugan na ang proseso ay nakakuha ng dalawang beses nang dapat. Pagkatapos ang proseso ay nagsimula sa pinakamaliit na ratio hanggang

hindi ito magiging mas malaki kaysa sa pinakamalapit nitong kapit-bahay.

Pagpaplano ng lottery.

Ang algorithm ay batay sa pamamahagi ng mga tiket sa lotto sa mga proseso para sa pag-access sa iba't ibang mga mapagkukunan, kabilang ang processor. Kapag kailangang magpasya ang tagaplano, isang tiket sa lotto ang napili nang sapalaran, at ang may-ari nito ay nakakakuha ng access sa mapagkukunan. Sa mga tuntunin ng pag-access sa CPU, ang "loterya" ay maaaring mangyari 50 beses bawat segundo at ang nagwagi ay makakakuha ng 20ms ng oras ng CPU.

Ang mas mahahalagang proseso ay maaaring mabigyan ng karagdagang mga tiket upang madagdagan ang posibilidad na manalo. Kung 100 lamang ang mga tiket at 20 sa mga ito ay nasa isang proseso, makakakuha ito ng 20% ​​ng oras ng processor. Hindi tulad ng tagaplano ng priyoridad, kung saan napakahirap tantyahin kung ano, sasabihin, nangangahulugang 40 na nangangahulugang, sa pagpaplano ng loterya lahat ay halata. Ang bawat proseso ay makakatanggap ng isang porsyento ng mga mapagkukunan na halos katumbas ng porsyento ng mga tiket na mayroon ito.

Ang pagpaplano ng lottery ay may maraming mga kagiliw-giliw na katangian. Halimbawa, kung ang isang proseso ay nakakakuha ng maraming mga tiket habang nilikha, pagkatapos sa susunod na loterya ang mga pagkakataong manalo ay proporsyonal sa bilang ng mga tiket.

Ang mga proseso ng pakikipag-ugnay ay maaaring makipagpalitan ng mga tiket kung kinakailangan. Kaya, kung ang isang proseso ng client ay nagpapadala ng isang mensahe sa isang proseso ng server at pagkatapos ay i-block, maaari nitong ipasa ang lahat ng mga tiket nito sa proseso ng server upang madagdagan ang pagkakataon na simulan ang server. Kapag lumabas ang proseso ng server, maibabalik nito ang lahat ng mga tiket.

Makatarungang pagpaplano.

Sa ngayon, ipinapalagay namin na ang bawat proseso ay kinokontrol anuman ang boss. Samakatuwid, kung ang gumagamit 1 ay lumilikha ng 9 na proseso, at ang gumagamit 2 ay lumilikha ng 1 proseso, pagkatapos ay gumagamit ng pag-iskedyul ng paikot o sa kaso ng pantay na priyoridad, ang gumagamit 1 ay makakakuha ng 90% ng processor, at ang gumagamit 2 lamang 10.

Upang maiwasan ang mga ganitong sitwasyon, binibigyang pansin ng ilang mga system ang may-ari ng proseso bago mag-iskedyul. Sa modelong ito, nakakakuha ang bawat gumagamit ng ilang bahagi ng processor, at pipiliin ng tagapag-iskedyul ang proseso alinsunod sa katotohanang ito. Kung sa aming halimbawa, ang bawat isa sa mga gumagamit ay mayroon

50% ng processor ang ipinangako, pagkatapos makakakuha sila ng 50% ng processor, hindi alintana ang bilang ng mga proseso.

Pag-iskedyul sa mga real time system.

Sa mga real-time na system, mahalagang papel ang ginampanan ng oras. Kadalasan, ang isa o higit pang mga panlabas na pisikal na aparato ay lumilikha ng mga signal ng pag-input, at ang computer ay dapat na sapat na tumugon sa kanila sa loob ng isang naibigay na tagal ng panahon.

Ang mga system ng real-time ay nahahati sa mahirap na mga real-time na system , na nangangahulugang mayroong masikip na mga deadline para sa bawat gawain (dapat silang matugunan), at may kakayahang umangkop na mga real-time na system kung saan ang mga paglabag sa iskedyul ng oras ay hindi kanais-nais, ngunit katanggap-tanggap. Sa parehong mga kaso, ang programa ay nahahati sa maraming mga proseso, na ang bawat isa ay mahuhulaan. Ang mga prosesong ito ay madalas na maikli at kumpletuhin ang kanilang gawain sa loob ng isang segundo. Kapag lumitaw ang isang panlabas na signal, nasa sa tagaplano ang pagtiyak na natutugunan ang iskedyul.

Ang mga panlabas na kaganapan kung saan dapat tumugon ang system ay maaaring hatiin sa pana-panahon(nagaganap sa regular na agwat) at hindi pana-panahon(nagmumula nang hindi mahuhulaan). Maaaring may maraming mga pana-panahong stream ng mga kaganapan na dapat iproseso ng system. Nakasalalay sa oras na ginugol sa pagproseso ng bawat kaganapan, maaaring hindi maproseso ng system ang lahat ng mga kaganapan sa isang napapanahong paraan.


Katulad na impormasyon.


Kadalasan, ang mga developer, lalo na ang mga walang karanasan, naliligaw kapag tinanong na magtakda ng mga deadline para sa pagkumpleto ng mga gawain. Gayunpaman, ang kakayahang magplano ay isang napaka kapaki-pakinabang at kinakailangang kasanayan na makakatulong hindi lamang sa trabaho, kundi pati na rin sa buhay. Nagpasya kaming tanungin ang mga eksperto kung paano matutunan kung paano maayos na planuhin at maghatid ng mga proyekto sa tamang oras.

Ang mga maikling konklusyon ay matatagpuan sa pagtatapos ng artikulo.

Karaniwang kailangang isaalang-alang ng developer ang maraming mga parameter nang sabay-sabay upang matantya ang oras ng pagpapatupad ng gawain:

  1. Karanasan sa pagsasagawa ng mga naturang gawain at pagtatrabaho sa stack ng teknolohiya. Kung kailangan mong gumawa ng bago nang bago, kailangan mong maging maingat lalo na sa pagtatasa.
  2. Karanasan kasama ang client na ito. Alam ang customer, halos mahuhulaan mo ang ilang karagdagang mga kinakailangan at ang dami ng mga pag-edit.
  3. Ang kalidad ng code upang gumana. Ito ang pinaka-maimpluwensyang kadahilanan, dahil kung saan ang lahat ay maaaring maging masyadong naantala at sa pangkalahatan ay hindi naaayon sa plano. Kung may mga pagsubok sa proyekto, saanman may mga malinaw lamang na pagtitiwala at ang pag-andar ay mahusay na nakahiwalay, ang lahat ay hindi gaanong nakakatakot. Ito ay higit na mas masahol kung nakikipag-ugnay ka sa legacy code nang walang mga pagsubok o sa sobrang pagkarga ng code na may mga implicit dependency. Ang mga bagay tulad ng mga pag-andar ng mahika (kung mahirap makita ang pangwakas na stack ng tawag mula sa code) at pagkopya ng code (kung kailangan mong mag-edit ng maraming mga independiyenteng seksyon upang baguhin ang anumang pagpapaandar) ay maaari ding kumplikado ng mga bagay.

Upang malaman kung paano masuri nang tama ang oras ng trabaho, kailangan mong patuloy na magsanay. Sa simula ng aking trabaho, eksaktong ginawa ko ito: Tinantiya ko ang oras upang makumpleto ang anumang papasok na gawain, kahit na walang nangangailangan nito, at pagkatapos ay pinanood ko kung gaano katumpak na napunta ako sa aking pagtantya. Sa proseso ng pagkumpleto ng gawain, nabanggit ko kung aling mga pagkilos ang tumatagal ng mas maraming oras. Kung may isang bagay na lubos na nadagdagan ang term, naalala niya ang sandaling ito at isinasaalang-alang ito sa susunod na mga pagtatasa.

Sa isang layunin na pagtatasa ng oras na kinakailangan pulos para sa trabaho, isang maliit na margin ay dapat idagdag upang masakop ang mga sitwasyon ng puwersa majeure. Ito ay madalas na tinantya bilang isang porsyento ng pagkumpleto ng pangunahing gawain, ngunit ito ay naiiba para sa lahat: ang isang tao ay nagdaragdag ng 20% ​​ng oras, isang tao - 10%, at isang tao - 50%.

Kapaki-pakinabang din upang pag-aralan ang mga dahilan para sa mga napalampas na deadline pagkatapos ng bawat pangunahing paglabag sa deadline. Kung wala kang sapat na mga kwalipikasyon, kailangan mong magtrabaho sa iyong mahinang mga puntos. Kung ang problema ay pang-organisasyon - upang maunawaan kung ano ang pumipigil sa normal na trabaho.

Itaguyod ang Mas Mababang

, Teknikal na Direktor ng Center para sa makabagong Teknolohiya at Mga Solusyon na "Jet Infosystems"

Ang isang malaking bilang ng mga artikulo ay nakatuon sa mga pamamaraan para sa pagtatasa ng pagiging kumplikado ng isang proyekto, kabilang ang tagal ng trabaho at mga indibidwal na gawain. Gayunpaman, hanggang ngayon, ito ang sanhi ng mga salungatan pareho sa loob ng pangkat ng proyekto at kapag nakikipag-usap sa customer.

Ang pangunahing katulong sa pagtatasa ay karanasan. Subukan na kahit papaano ay maiugnay ang bagong gawain sa mga nakumpleto na. Kung gumagawa ka ng isang ulat, tingnan kung gaano katagal ang nagawa ng katulad na ulat sa nakaraan. Kung gumagawa ka ng bago, subukang paghiwalayin ang mga kilalang piraso at pahalagahan ang mga ito. Kung ang gawain ay ganap na bago, maglaan ng kaunting oras upang mag-aral (kahit na mas mahusay - iugnay ang oras na ito sa taong magtatakda ng gawain).

Magbayad ng pansin sa mga kasamang yugto - kung kailangan mong bumuo ng isang serbisyo, pagkatapos ang pagsubok ng yunit (at marahil ay hindi lamang isang yunit) ay dapat ding isama sa pagtatasa, ang paghahanda ng data ng pagsubok ay tatagal ng isang tiyak na dami ng oras. Isaalang-alang ang pagsasama sa iba pang mga serbisyo, at iba pa. Maglaan ng oras upang ayusin ang mga bug na nahanap mo ang iyong sarili o sa tulong ng mga sumusubok. Maraming oras ang maaaring masayang sa mga "hindi nakikita" na gawain. Halimbawa, mayroong isang pagtatasa para sa pag-unlad at mayroong isang pagtatasa para sa pagsubok, ngunit ang paglipat ng isang artifact para sa pagsubok ay maaaring maiugnay sa pag-deploy ng mga stand. Samakatuwid, mahalagang isiping isipin ang buong proseso upang hindi makaligtaan ang anumang bagay.

Matapos matukoy ang lakas ng paggawa, kinakailangang isama ang mga bagong trabaho sa kalendaryo, na hindi nakakalimutan ang tungkol sa iba pang mga gawain at aktibidad na nangyayari sa parallel.

At huwag kalimutan na ang mga plano ay walang silbi, ngunit ang pagpaplano ay hindi mabibili ng salapi. Alamin na ayusin ang mga plano sa oras, panatilihing interesado ang lahat at lumaki sa isang napapanahong paraan upang ang mga hindi nasagot na deadline ay hindi sorpresa sa sinuman.

Itaguyod ang Mas Mababang

Isang tanong na hindi masasagot sa isang maikling form. Kung ito ay simple, pagkatapos ay walang problema ng nawawalang mga deadline.

Upang mas mahulaan ang mga deadline sa pag-unlad, dapat mo munang maunawaan ang mga dahilan kung bakit patuloy na nagkakamali ang mga programmer.

Ang unang dahilan ay ang karamihan sa mga gawain na ginagawa ng isang programmer ay natatangi sa isang degree o iba pa. Iyon ay, malamang, gagawin ng programmer ang naturang gawain sa unang pagkakataon. Wala siyang magandang ideya kung gaano katagal ang tatagal ng trabaho. Kung ito ay isang programmer na may solidong karanasan at kailangan niyang gampanan ang isang katulad na gawain, ang kanyang pagtatasa ay magiging malapit sa katotohanan.

Upang magamit ang isang simpleng pagkakatulad, kung hindi ka pa nakakakuha ng mga kanal, hindi mo masasabi nang eksakto kung gaano ka katagal maghukay ka ng isang trinsera na 30 cm ang lapad, 60 cm ang lalim at 20 metro ang haba. Kung naghuhukay ka pa dati, ang iyong pagtantya sa oras ng pagtatrabaho ay mas malapit sa aktwal na tagal ng trabaho.

Ang pangalawang dahilan ay ang mga programmer na likas na maasahin sa mabuti. Iyon ay, isinasaalang-alang ang gawain, pagpili ng isang pagpipilian ng pagpapatupad para dito, suriin ang mga pagpapabuti, inaasahan ng developer na gagana ang lahat ayon sa inaasahan niya. At hindi niya iniisip ang mga problemang makakaharap niya sa daan. Kadalasan, hindi niya mawari ang mga ito. Halimbawa, may isang gawain na maaaring magawa ng isang programmer gamit ang isang third-party na open-source software library. Sa yugto ng pagsusuri, nahanap niya ito sa Internet, basahin ang paglalarawan nito - nababagay sa kanya. At tama rin niyang na-estima ang saklaw ng kanyang trabaho upang maitayo sa paggamit ng silid-aklatan na ito. Ngunit hindi man niya nakita na may magaganap na pagkakamali sa kapaligiran ng kanyang produktong software sa library na ito.

Ang developer ay hindi lamang dapat buuin ang paggamit ng library sa kanilang code, ngunit ayusin din ang error sa mismong library. At madalas ang developer ay hindi nagbibigay ng oras upang ayusin ang kanyang mga pagkakamali. Tulad ng ipinapakita ng mga istatistika, ang mga pagsubok at pag-aayos ng mga error ay maaaring tumagal ng halos 50% ng oras na ginugol sa pag-coding. Ang pigura ay nakasalalay sa mga kwalipikasyon ng nag-develop, ang kapaligiran, ang mga kasanayan sa pag-unlad na ginamit (halimbawa, ang mga pagsubok sa yunit ay makabuluhang bawasan ang oras na ito at ang kabuuang tagal / lakas ng paggawa ng gawain sa pag-unlad ay magiging mas mababa).

Kung babalik tayo sa pagkakatulad sa maghuhukay, kung gayon hindi naghihintay ang maghuhukay na masisira ang kanyang pala at gugugolin niya ng dalawang oras ang paghahanap ng isang bagong paggupit.

Ang pangatlong dahilan ay ang hindi inaasahang mga kinakailangan. Wala sa mga lugar ng pagmamanupaktura ng materyal na gusto ng mga customer na ihambing ang pagpapaunlad ng software na mayroong tulad ng isang stream ng mga bagong kinakailangan. Isipin ang daanan ng isang maghuhukay na naghukay ng 19 metro sa labas ng 20 at narinig mula sa customer ang hangarin na ang kanal ay hindi dapat pumunta sa isang tuwid na linya, ngunit tulad ng isang ahas na may haba na balikat na 97 sent sentimo.

Paano haharapin ang lahat ng ito at kung paano mamuhay sa mga kundisyon ng gayong kawalan ng katiyakan? Pagbawas ng kawalan ng katiyakan at paglalagay ng isang reserbang oras.

Ang pinakamadaling paraan upang mailapit ang iyong mga inaasahan sa katotohanan ay ang paggamit ng nakakatawang patakaran ng hinlalaki na "Pi". Nakatanggap ng isang pagtatantya mula sa developer (sa mga tuntunin ng oras o lakas ng paggawa), kailangan mong i-multiply ito sa bilang na Pi (= 3.14159). Ang mas karanasan sa developer ay gumawa ng pagtatantya, mas mababa ang coefficient na ito ay maaaring.

Kailangang magsanay na mabulok ang orihinal na problema sa maliliit na problema na hindi hihigit sa 4 na oras ang laki. Ang mas detalyadong agnas ay, mas mataas ang mga pagkakataon na ang tantya ay malapit sa aktwal na input / tagal ng paggawa.
Kung babalik ka sa paglalaan ng reserba - sa oras na ito ay dapat na ilaan sa pagtatapos ng proyekto. Hindi magandang kasanayan ang gumawa ng isang reserba at isama ito para sa bawat gawain. Batas ni Parkinson na "Ang trabaho ay pumupuno sa lahat ng oras na inilaan para dito" ay mahigpit na isinasagawa.

Kung buod mo ang isang maikling "kabuuang", kung gayon upang matukoy nang tama ang tiyempo ng trabaho, magiging kapaki-pakinabang ang mga sumusunod na aksyon:

  • magsagawa ng agnas ng trabaho, basagin ang gawain sa detalyadong mga hakbang hangga't maaari;
  • prototyping;
  • limitahan ang pagpapatupad ng dati nang hindi inaasahang mga kinakailangan. Hindi ito nangangahulugan na hindi nila kailangang gawin, ngunit ipinapayong i-highlight ang mga kinakailangang ito at sumang-ayon sa customer na baguhin ang tiyempo at gastos para sa kanilang pagpapatupad;
  • isaalang-alang ang oras upang patatagin ang solusyon;
  • gumamit ng mga kasanayan upang mapabuti ang kalidad ng code, halimbawa, sumulat ng mga pagsubok sa yunit;
  • ilatag ang isang pangkalahatang reserba.

Kaya, at tandaan na kung ang isang katotohanan ay lumampas sa iyong pagtantya ng 30%, kung gayon ito ay isang napakahusay na resulta.

Itaguyod ang Mas Mababang

Para sa pinaka-tumpak na pagtatasa, kailangan mo ng karanasan sa totoong pag-unlad, bukod dito, sa isang tukoy na lugar. Ngunit may mga pangkalahatang tuntunin na makakatulong upang maiwasan ang mga pagkakamali sa pagpaplano at mga problema kapag iniabot ang trabaho sa customer. Inilalarawan ko ang mga patakarang ito tulad ng sumusunod.

Una, kailangan mong maunawaan ang gawain. Mukhang halata ito at hindi direktang nauugnay sa pagtatasa ng tiyempo, ngunit sa katunayan ito ay isang pangunahing punto. Kahit na sa mga seryosong malalaking proyekto, ang isa sa mga pangunahing kadahilanan ng pagkabigo at pag-antala ng mga deadline ay ang problema sa pagtukoy ng mga kinakailangan. Para sa mga nag-develop ng baguhan, sa kasamaang palad, ito ay isang seryosong problema - hindi nila binabasa ang TOR o binasa at naiintindihan ito nang pili-pili (kabisado nila at nakumpleto ang lima sa sampung puntos, at naalala nila ang natitira nang maisumite ang resulta). Malinaw na ang isang hindi naunawaan na gawain ay hindi maaaring ipatupad nang maayos sa oras.

Susunod - tantyahin ang oras para sa pag-unlad mismo. Ang kakaibang uri ng programa ay walang ganap na magkaparehong mga gawain. Ginagawa nitong mas kawili-wili ang aming trabaho, ngunit mas mahirap ang tiyempo. Ang pagkabulok ay gumagana nang maayos dito, ibig sabihin paghahati ng isang kumplikado, natatanging gawain sa isang pagkakasunud-sunod ng maliit, pamilyar na mga sub-gawain. At ang bawat isa sa kanila ay maaaring matantya nang sapat sa mga oras. Dinagdag namin ang mga pagtatantya ng mga subtask - at nakukuha namin ang pagtatantya ng buong problema.

Karaniwan, ang pagtantya na ito ay nagsasama lamang ng mga direktang gastos sa pag-coding. Ito ay walang alinlangan na pinakamahalagang bahagi ng pag-unlad, ngunit malayo sa nag-iisa (at madalas - hindi ang pinaka-malaki). Kasama rin sa kumpletong pagpapatupad ng gawain ang pagbabasa at paglilinaw ng panteknikal na detalye, mga pagpupulong sa mga kasamahan o kostumer, pag-debug at pagsubok, pagguhit ng dokumentasyon, pagbibigay ng resulta (pagpapakita sa customer at mga posibleng pagbabago batay sa kanyang mga komento). Gaano karaming oras ang aabutin ka para sa mga pagkilos na ito, karanasan lamang ang magsasabi. Sa una, mahalaga, kahit papaano, huwag kalimutan na isaalang-alang ang mga ito sa mga kalkulasyon, at isang humigit-kumulang na pagtatantya ng oras ay maaaring tanungin mula sa mas maraming karanasan na mga kasamahan.

Kaya, kumukuha kami ng isang pagtatantya ng pag-coding ng mga gastos sa paggawa, pagdaragdag ng isang pagtatantya ng gastos ng karagdagang trabaho - at nakukuha namin ang ninanais na pagtantya ng oras upang makumpleto ang gawain. Ngunit hindi lang iyon! Kinakailangan na ipahiwatig ang nakaplanong petsa ng pagtatapos ng gawain. Pagkakamali lamang na kunin at hatiin ang mga gastos sa paggawa (sa oras) ng 8 oras at idagdag ito sa kasalukuyang petsa. Sa totoong buhay, ang isang developer ay hindi kailanman (mabuti, halos hindi kailanman) gumana ng 100% ng oras sa isang tiyak na gawain. Tiyak na gugugol ka ng oras sa iba pang trabaho - mahalaga, ngunit hindi direktang nauugnay sa pangunahing gawain. Halimbawa, pagtulong sa mga kasamahan, pagsasanay, pag-uulat, atbp. Karaniwan, kapag nagpaplano, pinaniniwalaan na 60-70% ng oras ng pagtatrabaho ay ginugol nang direkta sa gawain sa kasalukuyang proyekto. Bilang karagdagan, kailangan mong isaalang-alang ang mga posibleng pagkaantala na pipigilan ka mula sa patuloy na pagtatrabaho sa gawain. Halimbawa, kung para dito kailangan mong makipag-ugnay sa ibang mga tao (mga kasamahan, customer), pagkatapos ay isinasaalang-alang ang kanilang trabaho, iskedyul ng trabaho, atbp.

Narito ang mga patakaran sa lupa na, sa palagay ko, ay makakatulong sa developer na maiwasan ang mga problema sa pagtantya at pagtugon sa mga deadline. Bilang karagdagan, ang susi ay ang akumulasyon ng kanilang sariling karanasan kapwa sa pagpapatupad ng mga gawain at sa pagtatasa. Halimbawa, kapaki-pakinabang, pagkatapos makumpleto ang isang gawain, upang ihambing ang iyong paunang pagtatantya sa aktwal na timeframe at kumuha ng mga konklusyon para sa hinaharap. At, syempre, sulit na pag-aralan ang karanasan ng iba. Inirerekumenda ko ang paksa ng libro ni S. McConnell na "Magkano ang gastos sa isang proyekto sa software" at S. Arkhipenkov "Mga Lecture sa pamamahala ng proyekto sa software".

Itaguyod ang Mas Mababang

Kapag tinatasa at pinaplano ang mga deadline, kinakailangan:

  1. Nabulok ang gawain sa maliliit na mga chunks sa pag-andar upang mayroong isang malinaw na pag-unawa sa kung gaano katagal aabutin upang mabuo ang bawat nasabing tipak.
  2. Kahanay ng agnas, ang mga karagdagang tanong tungkol sa pagpapaandar na hindi inilarawan sa pahayag ng problema ay tiyak na babangon. Kinakailangan upang makakuha ng mga sagot sa mga naturang katanungan, dahil direktang nauugnay ito sa saklaw ng trabaho at, dahil dito, ang tiyempo.
  3. Magdagdag ng ilang porsyento ng mga panganib sa huling pagtatasa. Natutukoy ito nang empirically. Maaari kang magsimula, halimbawa, sa mga panganib na 10-15%.
  4. Maunawaan kung gaano karaming oras sa isang araw ang isang programmer na nais na maglaan para sa isang gawain.
  5. Hinahati namin ang pangwakas na pagtatantya sa bilang ng mga oras na inilalaan namin bawat araw, at nakukuha namin ang bilang ng mga araw na kinakailangan para sa pagpapatupad.
  6. Nakatuon kami sa kalendaryo at sa kinakailangang bilang ng mga araw upang makumpleto. Isinasaalang-alang namin ang mga pagtatapos ng linggo at iba pang mga araw kung kailan hindi makitungo ang programmer sa gawain, pati na rin ang petsa ng pagsisimula ng trabaho (ang developer ay hindi laging handa na gawin ang gawain upang gumana sa parehong araw). Sa gayon, nakukuha natin ang petsa ng pagsisimula at pagtatapos ng trabaho.

Itaguyod ang Mas Mababang

Sa aming kumpanya, ang pagpaplano ng gawain ay laging dumadaan sa maraming mga yugto. Sa panig ng negosyo, bumubuo kami ng 5-6 na madiskarteng mga layunin para sa taon. Ito ang mga mataas na antas na gawain, halimbawa, upang madagdagan ang isang parameter ng isang tiyak na porsyento. Dagdag dito, iba't ibang mga dibisyon ng kumpanya ang bumubuo ng mga gawain sa negosyo para sa lahat ng mga IT team. Ang mga deadline para sa mga gawaing ito ay nakakatanggap ng paunang magaspang na pagtatantya, na madalas na nabuo ng lahat ng mga kasapi ng koponan - manager, analyst, developer, at tester. Natanggap ang pagtatasa na ito, inuuna ng negosyo ang mga gawain, isinasaalang-alang ang mga madiskarteng layunin ng kumpanya. Tumutulong ang mga layunin sa madiskarteng pag-cut ng cross sa ito, sa kanila magiging malinaw na lahat tayo ay nagtatrabaho para sa ilang karaniwang kadahilanan, walang ganoong sitwasyon kapag ang isang tao ay kumukuha lamang sa kanilang sariling direksyon. Kinokolekta namin ang mga sprint mula sa tumpak na tinatayang mga gawain. Ang ilang mga koponan ay mayroon sa kanila sa isang buwan, at ang ilan ay may buwanang. Maraming mga gawain na pansamantalang niraranggo sa susunod na sprint ay tumpak na masusuri ng mga koponan. Ang mga malalaking gawain ay pinaghiwalay sa mga mas mababang antas, para sa bawat isa sa isang partikular na tagaganap ay responsable, siya ang nagbibigay ng tumpak na pagtatasa.

Sa yugtong ito, mahalaga na huwag kalimutan na magdagdag ng dagdag na oras upang ayusin ang mga bug, dahil lamang sa mga walang ginagawa ang hindi nagkakamali. Maunawaan ito ng kapwa may-ari ng Produkto at mga customer sa negosyo. Sa parehong oras, ang kinakailangang margin ng oras ay dapat sapat: walang makakaintindi sa isang developer na nagtatakda ng isang simpleng gawain na masyadong mahaba ang isang deadline, hihilingin sa kanya na bigyang katwiran ang desisyon. Ang pinakamahirap na bahagi ay ang pagpapaliwanag sa negosyo kung bakit nangangailangan ng oras upang refactor. Nagpapasalamat kami sa aming kumpanya para sa katotohanang paminsan-minsan ay nagtatagumpay tayo, sapagkat sa huli ang pag-refactore ay humahantong sa isang mas magaan na imprastraktura at paglalagay ng mga bagay sa pagkakasunud-sunod sa code, na nagdaragdag ng katatagan ng system at maaaring makabuluhang mapabilis ang pag-unlad ng bago pagpapaandar

Minsan nagaganap ang mga pagkakamali sa pagtatasa. Sa palagay ko, imposible para sa departamento ng pag-unlad sa malalaking kumpanya na may binuo imprastraktura na ganap na maiwasan ito. Sa kasong ito, mahalagang ipagbigay-alam ng developer sa kanyang manager tungkol sa kung ano ang nangyayari sa oras, at siya naman, ay may oras na babalaan ang negosyo at "ilabas" ang isang bagay sa mga pangkalahatang plano ng kumpanya. Sa mode na ito, mas tama ang magtrabaho kaysa sa mabilis na pagsisikap na gawin ang tumatagal ng 5 araw sa loob ng 3 araw, at pagkatapos ay malunod sa isang malaking bilang ng mga pagkakamali na lumitaw dahil sa naturang pagmamadali.

Itaguyod ang Mas Mababang

Ang tamang sagot sa magkabilang bahagi ng tanong [kung paano malaman kung paano maayos na magplano at maghatid ng isang proyekto sa tamang oras - Ed.] - isang karanasan. Walang ibang mga paraan ng "pag-alam kay Zen". Ayon sa teorya ng paggawa ng desisyon, ang anumang uri ng tumpak na mga hinuha ay maitatayo lamang sa batayan ng isang pagtatasa ng isang bilang ng magagamit na data. At mas maraming data na ito, mas tumpak ang pangwakas na pagtataya at pagtatasa.

Sa mga salita ni Herbert Shaw: "Ang karanasan ay isang paaralan kung saan natututunan ng isang tao kung anong tanga siya noon." Samakatuwid, isang medyo simpleng konklusyon ang sumusunod: kung ang isang programmer ay mayroon nang karanasan na nauugnay sa gawain na nasa kamay, maaari siyang umasa dito, kung hindi, sa karanasan ng kanyang "mga kasamahan sa shop".

Susunod, kailangan mong maunawaan na ang direktang pag-iiskedyul ay isang gawain na ginagawa ng mga tao, napakahirap, lalo na sa pag-unlad. Mahusay na kasanayan kapag tinatantya ang mga takdang petsa upang ipakilala ang "mga kadahilanan sa pagwawasto" sa orihinal na pagtatantya. Ang sukatan na ito ay maaaring magbagu-bago sa saklaw mula 1.5 hanggang 3, depende sa karanasan ng nag-develop at ang kabuuan ng mga antas ng kawalang-katiyakan ng mga gawaing nalutas sa loob ng proyekto.

Itaguyod ang Mas Mababang

Mahalagang isaalang-alang ang maraming mga kadahilanan sa pagtukoy ng tiyempo.

Halimbawa karanasan sa trabaho. Gaano kalinaw na naiisip mo ang saklaw ng paparating na trabaho? Nagawa mo ba ang ganito dati? Malinaw na mas maraming karanasan, mas mabilis ang trabaho.

Ang isang mahusay na nakasulat na pagtatalaga ng teknikal ay may mahalagang papel sa pagtukoy ng mga deadline. Sa ito sa aming lugar, napakahirap ng mga bagay. Kadalasan ang kliyente mismo ay hindi alam kung ano ang gusto niya, kaya pinapayo ko sa iyo na gumastos ng dagdag na araw o dalawa, ngunit kumuha mula sa kliyente ng isang malinaw na ideya ng nais na resulta. Mahalaga na ang pananaw na ito ay kapalit. At pagkatapos lamang nito maaari mong simulan ang pakikipag-ayos sa halaga at mga tuntunin.

Gayundin, laging isama ang mga panganib. Para sa mga nagsisimula, inirerekumenda kong i-multiply ang tinantyang oras ng pagkumpleto ng dalawa. Pagkatapos ng lahat, mas mahusay na maihatid ang proyekto nang maaga at lumago bilang isang dalubhasa sa paningin ng customer, kaysa isumite ito sa paglaon at masira ang iyong reputasyon.

Itaguyod ang Mas Mababang

Ang pangkalahatang rekomendasyon ay kailangang malaman ng developer kung paano wastong mabulok ang mga gawain, laging maghanap ng mga posibleng hadlang, umasa sa kanyang sariling karanasan at tandaan na bigyan ng babala ang mga customer at kasamahan sa oras kung hindi malulutas ang gawain sa loob ng tinukoy na time frame.

Ang pagbuo ng isang malinaw na plano ay mas mahirap kaysa sa pagtatakda ng isang deadline para sa isang partikular na gawain. Sa parehong oras, mahalaga hindi lamang upang maihatid ang proyekto sa tamang oras, ngunit din upang matiyak na malutas ng sistemang nabuo mo nang tama ang mga problema sa negosyo. Dito, ang mga koponan ng IT ay tinutulungan ng iba't ibang mga pamamaraan ng pag-unlad ng software: mula sa RUP at MSF hanggang SCRUM at iba pang mga Agile format. Ang pagpili ng mga tool ay napakalawak, at marami sa aming mga customer ang nais na maunawaan nang maaga kung paano kami gagana sa kanila sa proyekto, kung anong mga prinsipyo ang sinusunod namin.

Sa pamamagitan ng paraan, ang paksang Agile ngayon ay nagiging malapit sa negosyo, at kahit sa mga indibidwal na proyekto sa sektor ng publiko, dahil ang mga prinsipyo ng pamamaraang ito ay ginagawang posible upang ipatupad ang mga proyekto nang napakabilis, pamamahala sa mga inaasahan ng customer sa bawat pag-ulit. Halimbawa, sa isang kopong Agile, halos walang mahabang talakayan sa isang customer. Kalimutan ang dose-dosenang mga pahina na naglalarawan ng hindi kinakailangang mga teknikal na detalye, tulad ng bilis ng paglitaw ng mga dropdown. Bigyan ang customer ng pagkakataon na subukan ang isang intermediate na bersyon ng system, kung gayon mas magiging madali para sa iyo na maunawaan ang bawat isa.

Pinagsama-sama ng koponan ng Agile ang lahat at tumutukoy sa pinakamainam na antas ng mga gastos sa paggawa na kakailanganin upang malutas ang isang partikular na problema. Halimbawa, ang isa sa mga diskarte ay tinatawag na "Pagpaplano ng Poker", kung saan ang bawat kalahok ay hindi nagpapakilala ay nagbibigay ng kanyang pagtatantya ng kinakailangang pagkarga para sa isang tiyak na gawain. Pagkatapos nito, tinutukoy ng koponan ang average na bigat ng gawain sa mga puntos ng kwento o man-oras at namamahagi ng mga gawain alinsunod sa prinsipyong "kung sino ang may gusto". Sa parehong oras, araw-araw ang koponan ay nagtitipon para sa isang 15 minutong pagpupulong, kapag ang lahat ay nag-uusap sa loob ng ilang minuto tungkol sa katayuan ng kanilang kasalukuyang mga gawain, kabilang ang pag-uulat ng mga paghihirap na lumitaw. Mabilis na tinanggal ng koponan ang napansin na problema, samakatuwid ang customer ay tumingin sa susunod na yugto ng trabaho ng programmer nang mabilis hangga't maaari. Hindi ipinagpaliban ng mga developer ang mga deadline para sa pagkumpleto ng mga gawain dahil sa ayaw na hilahin muli ang koponan o walang kabuluhang pagtatangka upang malaman ito sa kanilang sarili, pumatay ng mahalagang oras. Sa pamamagitan ng paraan, sa mga naturang mini-status, ang mga developer ay may pagnanais na patunayan ang kanilang sarili mula sa pinakamagandang panig, upang ipakita na mayroon kang isang responsableng diskarte upang gumana. Ito ay talagang nag-uudyok at disiplina sa sarili.