प्रक्रिया के अपने समय की गणना के लिए एल्गोरिदम. काम पूरा करने की समय सीमा को सही ढंग से निर्धारित करना कैसे सीखें - विशेषज्ञ उत्तर देते हैं इंटरैक्टिव सिस्टम में योजना बनाना

प्रक्रिया के अपने समय की गणना के लिए एल्गोरिदम. काम पूरा करने की समय सीमा को सही ढंग से निर्धारित करना कैसे सीखें - विशेषज्ञ उत्तर देते हैं इंटरैक्टिव सिस्टम में योजना बनाना

पिछले कई अनुभागों में जो कुछ भी वर्णित किया गया था वह प्रक्रिया के समय की समस्या पर आगे के शोध और व्यावहारिक अनुप्रयोगों पर बहुत कम हद तक उन्मुख था। इस अंतर को भरते हुए, हम किसी प्रक्रिया के विकास पर सांख्यिकीय आंकड़ों के आधार पर उसके उचित समय की गणना करने के तरीकों में से एक की रूपरेखा तैयार करेंगे।

आइए एक आयामी प्रक्रिया पर विचार करें, जिसकी स्थिति एक वास्तविक चर x द्वारा विशेषता है। आइए मान लें कि प्रक्रिया की गतिशीलता का अवलोकन खगोलीय समय t में किया जाता है, ताकि t = t k और x = x k, k =1, ..., n अवलोकन के निश्चित क्षण और संबंधित मान हों प्रक्रिया बताती है. ऐसी कई अलग-अलग गणितीय विधियाँ हैं जो ऐसे वक्र बनाना संभव बनाती हैं जो या तो बिंदुओं (t k, Xk) से होकर गुजरते हैं या उन तक "सर्वोत्तम दृष्टिकोण" रखते हैं। इस प्रकार प्राप्त फलन x = x(t) हमारे मन में यह धारणा उत्पन्न करते हैं कि विचाराधीन प्रक्रिया आकाशीय पिंडों की यांत्रिक गति पर निर्भर करती है और इसलिए, इसकी स्थिति खगोलीय समय t के माध्यम से व्यक्त की जाती है। इस निष्कर्ष को ध्यान में रखा जा सकता है; यदि प्रक्रिया के आगे के पाठ्यक्रम की भविष्यवाणी करने का प्रयास करते समय लगातार कठिनाइयाँ उत्पन्न नहीं होतीं। बड़ी संख्या में विभिन्न प्रक्रियाओं के लिए जो सीधे आकाशीय पिंडों की यांत्रिक गति से संबंधित नहीं हैं, अवलोकन अंतराल के बाहर फ़ंक्शन x = x(t) का उपयोग करके प्राप्त सैद्धांतिक भविष्यवाणियां बाद के प्रयोगात्मक डेटा से महत्वपूर्ण रूप से विचलित होने लगती हैं। वे आमतौर पर असफल रूप से चयनित प्रसंस्करण विधि द्वारा सिद्धांत और प्रयोग के बीच विसंगति का कारण समझाने की कोशिश करते हैं, लेकिन यह मामले का सार नहीं हो सकता है।

कोई भी प्रक्रिया जिसमें हमारी रुचि है वह ब्रह्मांड में घटित होती है। वह निश्चित रूप से आकाशीय पिंडों की गति के प्रभाव को "महसूस" करता है। हालाँकि, यह प्रभाव "गैर-कठोर", गैर-निर्धारणकारी हो सकता है। यह, विशेष रूप से, इस तथ्य में प्रकट हो सकता है कि खगोलीय समय के कुछ निश्चित अंतराल पर प्रक्रिया की स्थिति अपरिवर्तित रहती है। इस संबंध में, आइए हम बाहरी दुनिया से अलग एक बंद खाली कमरे के पिछले उदाहरण को याद करें। चलो बस एक जीवित व्यक्ति को कमरे में उड़ने दें। कई दिनों के दौरान, "रूम-फ्लाई" प्रणाली की स्थिति में परिवर्तन मक्खी की गतिविधियों पर निर्भर करेगा, क्योंकि कमरे की स्थिति में बदलाव की उम्मीद नहीं की जा सकती है। साथ ही, यह कल्पना करना कठिन है कि मक्खी का व्यवहार खगोलीय समय के साथ सख्ती से जुड़ा हुआ है।

इतना लंबा विषयांतर करने के बाद, आइए प्रक्रिया के स्वयं के समय की गणना के लिए एल्गोरिदम का वर्णन करने के लिए आगे बढ़ें।

इस एल्गोरिथ्म में, स्थानीय मैक्सिमा की गणना के लिए इकाई को समय के प्राकृतिक माप के रूप में चुना जाता है। इसके अलावा, प्रक्रिया की स्थिर स्थिति के संभावित वर्गों को ध्यान में रखा जाता है, जिस पर, जैसा कि पहले उल्लेख किया गया है, उचित समय रुक जाता है। चूँकि दो अवस्थाओं की पहचान केवल माप सटीकता की सीमा के भीतर ही कही जा सकती है, निम्नलिखित में एक निश्चित सकारात्मक संख्या ई का उपयोग किया जाता है - अनुमेय माप त्रुटि।

तो, एल्गोरिदम के लिए इनपुट डेटा प्राकृतिक संख्या एन, सकारात्मक संख्या 8, सरणी (टीके) और (एक्स के), के = 1, ..., एन है। प्रोग्रामिंग की आसानी के लिए, एल्गोरिदम फॉर्म में प्रस्तुत किया गया है चार क्रमिक रूप से निष्पादित मॉड्यूल।

मॉड्यूल 1,डेटा p, e, t k), (x k) का उपयोग करते हुए, सामान्य स्थिति में, नई सारणी 7 = (7+ X = (X t) और एक बहुत ही विशिष्ट संगत सरणी P = (?) बनाता है, जहां 1 = 1, ..., टी, और टी<Сп. Основное назначение этого модуля -- выявление в массиве x k) последовательностей идентичных состояний процесса, сохранение первых элементов в таких последовательностях и удаление всех остальных и, наконец, уменьшение по определенному, правилу исходного интервала наблюдения от t до на сумму тех промежутков времени, в которых процесс протекает стационарно.

मॉड्यूल 1 में निम्नलिखित प्रक्रियाएँ शामिल हैं:

पी: = 1, टी: = 0, के: = 1.

पीपी में. विशिष्ट प्रारंभिक मानों वाले 1, 2 काउंटर पेश किए गए हैं:

पीपी में. 3, 4 काउंटर मान 1 से बढ़ जाते हैं।

स्थिति की जाँच करें k^n. यदि यह पूरा हो गया है, तो चरण 6 पर जाएँ, अन्यथा चरण 11 पर जाएँ।

असमानता x k --x k = e की जाँच करें। यदि यह कायम रहती है, तो चरण 7 पर जाएँ, अन्यथा चरण 9 पर जाएँ।

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

इस प्रक्रिया का अर्थ है कि यदि त्रुटि के भीतर Xk और Xk 1 के मान अप्रभेद्य हैं, तो tk से शुरू होने वाले सभी समय बिंदु tki-tk की मात्रा से कम हो जाते हैं।

आर = आर. बिंदु 4 पर लौटें।

टीवी = टी के ; एक्स वी:=एक्स के ; पी = पी वी = वी+एल., यानी. सरणियों T, X, P के तत्व बनते हैं और अगला मान v निर्दिष्ट किया जाता है।

  • 10. (t k, ..., t n AND (Xk, - X n) को आयाम n--k 1 + 1 के मूल सरणियों के रूप में लें और फिर चरण 2 पर लौटें।
  • 11. एम, (टी), (एक्स,) और (पी,) प्रिंट करें, जहां आई = एल, ..., टी। समाप्त।

आइए हम संलग्न सरणी P के तत्वों का अर्थ समझाएं। पिछले पाठ से यह पता चलता है कि pk का मान सरणी (xk) के उन तत्वों की संख्या के बराबर है जो सीधे अनुसरण करते हैं और x pi+ से भिन्न हैं ... +, + e से कम। हम यह भी नोट करते हैं कि pi+ ... +p m = n।

उदाहरण 1. दिया गया है: n = 20, (/*) = (2, 4, 7, 10, 12, 13, 15, 17, 20, 22, 24, 25,

  • 27, 30, 32, 33, 34, 35, 36) और (x,)= (4, 4, 6, 6, 6, 3, 2, 4, 3, 3, 3, 2, 2, 4, 5 , 5,
  • 5, 4, 3), चित्र देखें। 9, ए.

मॉड्यूल 1 को निष्पादित करने के परिणामस्वरूप, m = 11 प्राप्त होता है,

(जी) = (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), चित्र देखें। 9, बी.

मॉड्यूल 2.इसके लिए इनपुट डेटा एक प्राकृतिक संख्या m है, साथ ही सरणियाँ (7+ (X L), = 1, ..., m। सरणी में यह मॉड्यूल (TJ समय के क्षणों की पहचान करता है [TM a], 1 = 1 मी (मिली

उदाहरण 2. मान m, (Ть) और (X,] पिछले उदाहरण से उधार लिए गए हैं। मॉड्यूल 2 को पूरा करने के बाद, हम ml = 3, m2 = 8, (Ш,) = (3, 8, 17) प्राप्त करते हैं ), (Т*) = (3, 4, 6, 8, 11, 12, 15, 17), चित्र 9, बी भी देखें।

मॉड्यूल 3.इनपुट डेटा एमएल, एम2, (टीएम एन), 1 = 1, ..., एमएल, (जी*), /2 = 1, ..., जीएन2।

यह मॉड्यूल सूत्र का उपयोग करके एक सरणी (t(-r) बनाने के लिए डिज़ाइन किया गया है

टीवी 6 कहां है [टीएमपी, टीएमएन+आई]

वेरिएबल t, वेरिएबल x में परिवर्तन से उत्पन्न उचित समय है। इसका प्राकृतिक माप स्थानीय मैक्सिमा की गणना के लिए इकाई है।

उदाहरण 3. टी 2) के लिए प्रारंभिक डेटा एमएल, एम2 आईटीएम और उदाहरण 2 के मूल्यों के समान है। उपयुक्त गणना के बाद, हमें Н = (0; 0.2; 0.6; प्राप्त होता है; 1; 1,33; 1,78; 2).

मॉड्यूल 4.सरणी (xk) से m और तत्व x के मानों के बीच एक पत्राचार स्थापित करके परिणामों का आउटपुट उत्पन्न करता है।

उदाहरण 4. उदाहरण 2 और 3 के आंकड़ों के आधार पर, निम्नलिखित परिणाम प्राप्त होता है, चित्र देखें। 9, में:

टी: 0; 0.2; 0.6; 1; 1.33; 1.44;

एक्स: 6; 3; 2; 4; 3टी 0 2;

इस प्रकार, माना गया एल्गोरिदम हमें खगोलीय समय पैमाने पर दर्ज प्रक्रिया की स्थिति में परिवर्तन के बारे में जानकारी के आधार पर प्रक्रिया के अपने समय की अवधारणा विकसित करने की अनुमति देता है। यह बिल्कुल स्पष्ट है कि आप अन्य एल्गोरिदम का उपयोग कर सकते हैं, उदाहरण के लिए, स्थानीय मिनिमा के अनुक्रम या स्थानीय मैक्सिमा और मिनिमा से युक्त मिश्रित अनुक्रम की गणना पर। प्रायोगिक डेटा संसाधित करते समय, संभवतः विभिन्न विकल्पों का परीक्षण किया जाना चाहिए। यदि किसी कारण से प्रयोगकर्ता ने विशिष्ट उचित समय में से एक को चुना और सरणी (t4 और (xk) प्राप्त की, तो अगले चरण में उसे प्रयोगात्मक बिंदुओं (t*, x) के कुछ अनुमानित विश्व रेखा का अनुमान लगाने के लिए कुछ गणितीय तरीकों का उपयोग करना चाहिए। प्रक्रिया x = x(t)। प्रारंभिक अवलोकन अवधि से परे इस रेखा को एक्सट्रपलेशन करके, वह प्रक्रिया के आगे के पाठ्यक्रम के बारे में भविष्यवाणी कर सकता है।

प्रस्तावित एल्गोरिदम का उपयोग करने की संभावनाओं का मूल्यांकन करने के उद्देश्य से एक कम्प्यूटेशनल प्रयोग का उल्लेख करना दिलचस्प है। वार्षिक नदी प्रवाह पर डेटा को प्रायोगिक सामग्री के रूप में चुना गया था। वख़्श (ताजिकिस्तान) पिछले 40 वर्षों से। इसी अवधि के दौरान, वुल्फ संख्या की गतिशीलता पर जानकारी ली गई - सौर गतिविधि का सबसे अधिक इस्तेमाल किया जाने वाला अभिन्न सूचकांक। उत्तरार्द्ध सौर गतिविधि प्रक्रिया के उचित समय को विकसित करने का आधार था। आधुनिक समय तक, नदी व्यय की जानकारी बदल दी गई है। वख़्श और फिर, अवलोकन अवधि के दौरान, सौर गतिविधि के उचित समय के एक फ़ंक्शन के रूप में जल प्रवाह की सैद्धांतिक निर्भरता दी गई थी। परिणामी ग्राफ की एक विशिष्ट विशेषता अधिकतम और न्यूनतम खर्चों का लगभग आवधिक व्यवहार है। हालाँकि, लागत स्थिर नहीं रहती है।

(आवधिक गतिविधि के मामले में काम पूरा होने तक, या जब तक सिस्टम प्रतिक्रिया नहीं देता और इंटरैक्टिव गतिविधि के मामले में पहले उपयोगकर्ता को बाहर निकलने का समय नहीं देता तब तक काम से समय शामिल हो जाता है); या अधिकतमीकरण न्याय(प्रत्येक प्रक्रिया के लिए समान मात्रा में CPU समय, या प्रत्येक प्रक्रिया की प्राथमिकता और कार्यभार के अनुसार अधिक सामान्यतः संगत समय)। व्यवहार में, ये लक्ष्य अक्सर विरोधाभासी होते हैं (उदाहरण के लिए, थ्रूपुट बनाम विलंबता), इसलिए अनुसूचक एक उचित समझौता करेगा। उपयोगकर्ता की ज़रूरतों और उद्देश्यों के आधार पर, ऊपर उल्लिखित मुद्दों में से किसी एक द्वारा वरीयता को मापा जाता है।

ओएस/360 और उत्तराधिकारी

AIX

AIX संस्करण 4 में, थ्रेड शेड्यूलिंग नीति के लिए तीन संभावित सेटिंग्स हैं:

  • सबसे पहले, पहले बाहर: एक बार इस नीति के साथ एक थ्रेड शेड्यूल हो जाने पर, यह पूरा होने तक चलता है, जब तक कि इसे अवरुद्ध नहीं किया जाता है, यह स्वेच्छा से प्रोसेसर का नियंत्रण छोड़ देता है, या उच्च प्राथमिकता वाला थ्रेड प्रेषण योग्य नहीं हो जाता है। केवल निश्चित प्राथमिकता वाले थ्रेड में ही FIFO शेड्यूलिंग नीति हो सकती है।
  • राउंड रॉबिन: यह AIX संस्करण 3 सर्किट शेड्यूलर के समान है जो 10ms टाइम स्लाइस के आधार पर चक्र करता है। जब एक पीपी थ्रेड का टाइम स्लॉट के अंत में नियंत्रण होता है, तो यह समान प्राथमिकता के साथ थ्रेड की कतार के पीछे चला जाता है। केवल निश्चित प्राथमिकता वाले थ्रेड में ही राउंड रॉबिन शेड्यूलिंग नीति हो सकती है।
  • अन्य: यह नीति POSIX1003.4a द्वारा कार्यान्वयन-परिभाषित है। AIX संस्करण 4 में, इस नीति को RR के समतुल्य के रूप में परिभाषित किया गया है, सिवाय इसके कि यह गैर-निश्चित प्राथमिकता थ्रेड पर लागू होती है। प्रत्येक रुकावट के लिए चल रहे थ्रेड के प्राथमिकता मान की पुनर्गणना करने का मतलब है कि एक थ्रेड नियंत्रण खो सकता है क्योंकि इसका प्राथमिकता मान दूसरे थ्रेड से अधिक बढ़ गया है। यह AIX संस्करण 3 व्यवहार है.

थ्रेड्स मुख्य रूप से उन अनुप्रयोगों के लिए रुचि रखते हैं जिनमें वर्तमान में कई अतुल्यकालिक प्रक्रियाएं शामिल हैं। मल्टी-थ्रेडेड संरचना में परिवर्तित होने पर ये एप्लिकेशन सिस्टम पर हल्का भार डाल सकते हैं।

AIX 5 निम्नलिखित शेड्यूलिंग नीतियों को लागू करता है: FIFO, राउंड-रॉबिन, और फेयर राउंड-रॉबिन। FIFO नीति में तीन अलग-अलग कार्यान्वयन शामिल हैं: FIFO, FIFO2 और FIFO3। रॉबिन की राउंड-रॉबिन नीति को AIX में SCHED_RR कहा जाता है और निष्पक्ष राउंड-रॉबिन नीति को SCHED_OTHER कहा जाता है।

लिनक्स

लिनक्स 2.4

ब्रेन फ़क शेड्यूलर (बीएफएस), जिसे कोलिवास ने भी बनाया है, सीएफएस का एक विकल्प है।

FreeBSD

फ्रीबीएसडी 0-255 की सीमा में प्राथमिकताओं के साथ एक बहु-स्तरीय फीडबैक कतार का उपयोग करता है। 0-63 इंटरप्ट के लिए आरक्षित हैं, 64-127 कर्नेल के ऊपरी आधे हिस्से के लिए, 128-159 वास्तविक समय उपयोगकर्ता थ्रेड के लिए, 160-223 टाइम-शेयरिंग उपयोगकर्ता थ्रेड के लिए, और 224-255 निष्क्रिय उपयोगकर्ता थ्रेड के लिए आरक्षित हैं। इसके अलावा, लिनक्स की तरह, यह एक सक्रिय कतार सेटअप का उपयोग करता है, लेकिन इसमें एक निष्क्रिय कतार भी है।

परिचय

उत्पादन संगठन पर कार्यशाला का उद्देश्य सैद्धांतिक ज्ञान का विस्तार और गहरा करना है, उत्पादन के संगठन और योजना के संबंध में व्यवहार में सबसे अधिक आने वाली समस्याओं को हल करने के लिए आवश्यक कौशल विकसित करना है।

कार्यशाला में पाठ्यक्रम के मुख्य अनुभागों के कार्य शामिल हैं। प्रत्येक विषय की शुरुआत में, संक्षिप्त पद्धति संबंधी निर्देश और सैद्धांतिक जानकारी, समाधान के साथ विशिष्ट समस्याएं और स्वतंत्र समाधान के लिए समस्याएं प्रस्तुत की जाती हैं।

प्रत्येक विषय में पद्धति संबंधी निर्देशों और संक्षिप्त सैद्धांतिक जानकारी की उपस्थिति आपको दूरस्थ शिक्षा के लिए इस कार्यशाला का उपयोग करने की अनुमति देती है।


उत्पादन चक्र अवधि की गणना

उत्पादन चक्र की अवधि उत्पादन प्रक्रिया की दक्षता के संकेतक के रूप में कार्य करती है।

उत्पादन चक्र- कच्चे माल के लॉन्च के क्षण से लेकर तैयार उत्पादों के जारी होने के क्षण तक उत्पादन प्रक्रिया में श्रम की वस्तुओं के रहने की अवधि।

उत्पादन चक्र में शामिल हैं कार्य के घंटे,जिसके दौरान श्रम व्यय होता है, और मध्य विराम. टूटने के कारणों के आधार पर, उन्हें निम्न में विभाजित किया जा सकता है:

1)पर प्राकृतिकया तकनीकी - वे उत्पाद की प्रकृति से निर्धारित होते हैं;

2) संगठनात्मक(पालियों के बीच ब्रेक)।

उत्पादन चक्र की अवधि में निम्नलिखित घटक शामिल हैं:

टी चक्र = टीवो + टी+ खाता है टीटीआर+ टीके.के. + टीएम.ओ. + टीएम.टी.एस.

कहाँ टीवे- तकनीकी संचालन का समय;

वह खाता है -प्राकृतिक प्रक्रियाओं का समय (सूखना, ठंडा करना, आदि);

टी टीआर -श्रम की वस्तुओं का परिवहन समय;

टी के.के. –गुणवत्ता नियंत्रण समय;

टी एम.ओ -अंतरक्रियात्मक देखभाल का समय;

टी एम.सी. –अंतर-दुकान गोदामों में भंडारण का समय;

(टीतीन टीके.के. के साथ जोड़ा जा सकता है टीएम.ओ.).

उत्पादन चक्र समय की गणना उत्पादन के प्रकार पर निर्भर करती है। बड़े पैमाने पर उत्पादन में, उत्पादन चक्र की अवधि उस समय से निर्धारित होती है जब उत्पाद उत्पादन में होता है, अर्थात।

टी चक्र = टीएम में,

कहाँ टीवी- रिलीज स्ट्रोक;

एम- कार्यस्थलों की संख्या.

अंतर्गत रिलीज स्ट्रोकएक निर्मित उत्पाद और अगले उत्पाद के जारी होने के बीच के समय अंतराल को समझना आवश्यक है।

रिलीज़ स्ट्रोक सूत्र द्वारा निर्धारित किया जाता है

टी इन = टेफ /वी,

कहाँ यंत्र- बिलिंग अवधि (शिफ्ट, दिन, वर्ष) के लिए कर्मचारी समय का प्रभावी कोष;

में- समान अवधि के लिए उत्पादन की मात्रा (प्राकृतिक इकाइयों में)।

उदाहरण: टी सेमी = 8 घंटे = 480 मिनट; टी प्रति = 30 मिनट; → टेफ़ = 480 – – 30 = 450 मिनट।

बी = 225 पीसी; → टीमें = 450/225 = 2 मिनट।

धारावाहिक उत्पादन में, जहां प्रसंस्करण बैचों में किया जाता है, तकनीकी चक्र की अवधि उत्पाद की प्रति इकाई नहीं, बल्कि पूरे बैच के लिए निर्धारित की जाती है। इसके अलावा, किसी बैच को उत्पादन में लॉन्च करने की विधि के आधार पर, हमें अलग-अलग चक्र समय मिलते हैं। उत्पादन में उत्पादों को स्थानांतरित करने के तीन तरीके हैं: अनुक्रमिक, समानांतर और मिश्रित (श्रृंखला-समानांतर)।


मैं. पर अनुक्रमिकभागों को स्थानांतरित करते समय, प्रत्येक अगला ऑपरेशन पिछले ऑपरेशन के समाप्त होने के बाद ही शुरू होता है। भागों की क्रमिक गति के लिए चक्र की अवधि बराबर होगी:

कहाँ एन - संसाधित किए जा रहे बैच के हिस्सों की संख्या;

टी पीसीमैं- एक ऑपरेशन के लिए समय की टुकड़ा दर;

सी मैं– नौकरियों की संख्या प्रति मैंवें ऑपरेशन;

एम- तकनीकी प्रक्रिया संचालन की संख्या।

5 टुकड़ों वाले उत्पादों का एक बैच दिया गया है। बैच को क्रमिक रूप से 4 ऑपरेशनों के माध्यम से पारित किया जाता है; पहले ऑपरेशन की अवधि 10 मिनट है, दूसरे की 20 मिनट है, तीसरे की 10 मिनट है, चौथे की 30 मिनट है (चित्र 1)।

चित्र 1

टीचक्र = टीअंतिम = 5·(10+20+10+30) = 350 मिनट।

भागों को स्थानांतरित करने की अनुक्रमिक विधि का लाभ यह है कि यह बिना डाउनटाइम के उपकरण के संचालन को सुनिश्चित करता है। लेकिन इसका नुकसान यह है कि इस मामले में उत्पादन चक्र की अवधि सबसे लंबी होती है। इसके अलावा, कार्य स्थलों पर भागों का महत्वपूर्ण स्टॉक बनाया जाता है, जिसके लिए अतिरिक्त उत्पादन स्थान की आवश्यकता होती है।

द्वितीय. पर समानांतरबैच की आवाजाही के दौरान, अलग-अलग हिस्सों को कार्य स्टेशनों पर नहीं रोका जाता है, बल्कि पूरे बैच के प्रसंस्करण के पूरा होने की प्रतीक्षा किए बिना, तुरंत अगले ऑपरेशन में व्यक्तिगत रूप से स्थानांतरित कर दिया जाता है। इस प्रकार, भागों के एक बैच के समानांतर आंदोलन के साथ, प्रत्येक कार्यस्थल पर एक ही बैच के विभिन्न हिस्सों पर विभिन्न ऑपरेशन एक साथ किए जाते हैं।

उत्पादों की समानांतर आवाजाही वाले बैच का प्रसंस्करण समय तेजी से कम हो जाता है:

डेली .

कहाँ एन एन– भागों की संख्या स्थानांतरण बैच(परिवहन बैच), अर्थात्। एक ऑपरेशन से दूसरे ऑपरेशन में एक साथ स्थानांतरित किए गए उत्पादों की संख्या;

लंबाई - सबसे लंबा परिचालन चक्र।

उत्पादों के एक बैच को समानांतर में लॉन्च करते समय, पूरे बैच के हिस्सों को केवल उन कार्यस्थलों पर लगातार संसाधित किया जाता है, जहां लंबे ऑपरेशन के बाद छोटे ऑपरेशन होते हैं। ऐसे मामलों में जहां छोटे ऑपरेशन के बाद लंबे ऑपरेशन होते हैं, यानी। लंबे समय तक (हमारे उदाहरण में, तीसरा ऑपरेशन), ये ऑपरेशन लगातार किए जाते हैं, यानी। उपकरण निष्क्रिय है. यहां, भागों के एक बैच को बिना किसी देरी के तुरंत संसाधित नहीं किया जा सकता है, क्योंकि पिछला (लंबा) ऑपरेशन इसकी अनुमति नहीं देता है।

हमारे उदाहरण में: एन= 5, टी 1 = 10; टी 2 = 20; टी 3 = 10; टी 4 = 30; साथ= 1.

टीभाप = 1·(10+20+10+30)+(5-1)·30=70+120 = 190 मिनट।

आइए भागों की समानांतर गति के आरेख पर विचार करें (चित्र 2):

चित्र 2

तृतीय. सभी परिचालनों में एक बैच के अलग-अलग हिस्सों के प्रसंस्करण में रुकावटों को खत्म करने के लिए, उपयोग करें समानांतर-क्रमया मिश्रितएक लॉन्च विधि जिसमें भागों (प्रसंस्करण के बाद) को एक-एक करके अगले ऑपरेशन में स्थानांतरित किया जाता है, या "परिवहन" बैचों (कई टुकड़े) के रूप में इस तरह से स्थानांतरित किया जाता है कि किसी भी कार्यस्थल पर संचालन का निष्पादन बाधित नहीं होता है। मिश्रित विधि में, प्रसंस्करण की निरंतरता को अनुक्रमिक विधि से लिया जाता है, और इसके प्रसंस्करण के तुरंत बाद भाग के संचालन से संचालन में संक्रमण को समानांतर विधि से लिया जाता है। उत्पादन में लॉन्च करने की मिश्रित विधि के साथ, चक्र की अवधि सूत्र द्वारा निर्धारित की जाती है

मुख्य .

कोर कहाँ है? - सबसे छोटा परिचालन चक्र (आसन्न परिचालनों की प्रत्येक जोड़ी से);

एम-1संयोजनों की संख्या.

यदि अगला ऑपरेशन पिछले ऑपरेशन से अधिक लंबा या समय के बराबर है, तो यह ऑपरेशन पिछले ऑपरेशन में पहले भाग को संसाधित करने के तुरंत बाद व्यक्तिगत रूप से शुरू किया जाता है। यदि, इसके विपरीत, अगला ऑपरेशन पिछले वाले से छोटा है, तो टुकड़ा स्थानांतरण के दौरान यहां रुकावटें आती हैं। उन्हें रोकने के लिए, इतनी मात्रा का परिवहन रिजर्व जमा करना आवश्यक है जो बाद के ऑपरेशन में काम सुनिश्चित करने के लिए पर्याप्त हो। ग्राफ़ पर इस बिंदु को व्यावहारिक रूप से खोजने के लिए, बैच के अंतिम भाग को स्थानांतरित करना और इसके निष्पादन की अवधि को दाईं ओर ले जाना आवश्यक है। बैच में अन्य सभी भागों के लिए प्रसंस्करण समय ग्राफ़ पर बाईं ओर प्लॉट किया गया है। पहले भाग के प्रसंस्करण की शुरुआत उस क्षण को इंगित करती है जब पिछले ऑपरेशन से परिवहन बैकलॉग को इस ऑपरेशन में स्थानांतरित किया जाना चाहिए।

यदि आसन्न संचालन की अवधि समान है, तो उनमें से केवल एक को छोटा या लंबा माना जाता है (चित्र 3)।

चित्र तीन

टीअंतिम जोड़े = 5·(10+20+10+30)-(5-1)·(10+10+10) = 350-120 = 230 मिनट।

उत्पादन चक्र समय को कम करने के मुख्य तरीके हैं:

1) निर्मित डिजाइन की विनिर्माण क्षमता में सुधार, कंप्यूटर का उपयोग और उन्नत तकनीकी प्रक्रियाओं को शुरू करके विनिर्माण उत्पादों की श्रम तीव्रता को कम करना।

2) श्रम प्रक्रियाओं का तर्कसंगत संगठन, विशेषज्ञता और सहयोग, व्यापक मशीनीकरण और उत्पादन के स्वचालन के आधार पर कार्यस्थलों की व्यवस्था और रखरखाव।

3) उत्पादन प्रक्रिया के वैज्ञानिक संगठन के सिद्धांतों के तर्कसंगत उपयोग के आधार पर काम पर विभिन्न नियोजित और अनियोजित रुकावटों को कम करना।

4) बढ़ते दबाव, तापमान, एक सतत प्रक्रिया में संक्रमण आदि के परिणामस्वरूप प्रतिक्रियाओं का त्वरण।

5) परिवहन, भंडारण और नियंत्रण की प्रक्रियाओं में सुधार करना और उन्हें प्रसंस्करण और संयोजन प्रक्रिया के साथ समय पर संयोजित करना।

उत्पादन चक्र की अवधि कम करना उत्पादन को व्यवस्थित करने के गंभीर कार्यों में से एक है, क्योंकि कार्यशील पूंजी के कारोबार, श्रम लागत को कम करने, भंडारण स्थान को कम करने, परिवहन की आवश्यकता आदि को प्रभावित करता है।

कार्य

1 उत्पादन प्रक्रिया में अनुक्रमिक, समानांतर और धारावाहिक-समानांतर प्रकार के आंदोलन के साथ 50 भागों के प्रसंस्करण चक्र की अवधि निर्धारित करें। भागों के प्रसंस्करण की प्रक्रिया में पाँच ऑपरेशन होते हैं, जिनकी अवधि क्रमशः न्यूनतम होती है: टी 1 =2; टी 2 =3; टी 3 =4; टी 4 =1; टी 5=3. दूसरा ऑपरेशन दो मशीनों पर किया जाता है, और बाकी सभी एक पर। ट्रांसफर लॉट का आकार 4 टुकड़े है।

2 उत्पादन प्रक्रिया में अनुक्रमिक, समानांतर और धारावाहिक-समानांतर प्रकार के आंदोलन के साथ 50 भागों के प्रसंस्करण चक्र की अवधि निर्धारित करें। भागों के प्रसंस्करण की प्रक्रिया में चार ऑपरेशन होते हैं, जिनकी अवधि क्रमशः न्यूनतम होती है: टी 1 =1; टी 2 =4; टी 3 =2; टी 4=6. चौथा ऑपरेशन दो मशीनों पर किया जाता है, और बाकी सभी एक पर। ट्रांसफर लॉट का आकार 5 टुकड़े है।

3. उत्पादन प्रक्रिया के दौरान 200 टुकड़ों के हिस्सों के एक बैच को समानांतर-अनुक्रमिक गति से संसाधित किया जाता है। भागों के प्रसंस्करण की प्रक्रिया में छह ऑपरेशन होते हैं, जिनकी अवधि क्रमशः न्यूनतम होती है: टी 1 =8; टी 2 =3; टी 3 =27; टी 4 =6; टी 5 =4; टी 6 =20. तीसरा ऑपरेशन तीन मशीनों पर, छठा दो पर और शेष प्रत्येक ऑपरेशन एक मशीन पर किया जाता है। निर्धारित करें कि यदि उत्पादन में आंदोलन के समानांतर-अनुक्रमिक संस्करण को समानांतर संस्करण से बदल दिया जाए तो भागों के एक बैच के लिए प्रसंस्करण चक्र की अवधि कैसे बदल जाएगी। ट्रांसफर लॉट का आकार 20 टुकड़े है।

4 उत्पादन प्रक्रिया के दौरान 300 टुकड़ों के हिस्सों के एक बैच को समानांतर-अनुक्रमिक गति से संसाधित किया जाता है। भागों के प्रसंस्करण की प्रक्रिया में सात ऑपरेशन होते हैं, जिनकी अवधि क्रमशः न्यूनतम होती है: टी 1 =4; टी 2 =5; टी 3 =7; टी 4 =3; टी 5 =4; टी 6 =5; टी 7=6. प्रत्येक ऑपरेशन एक मशीन पर किया जाता है। स्थानांतरण लॉट - 30 टुकड़े। उत्पादन तकनीक में सुधार के परिणामस्वरूप, तीसरे ऑपरेशन की अवधि 3 मिनट, सातवें - 2 मिनट कम कर दी गई। निर्धारित करें कि भागों के एक बैच का प्रसंस्करण चक्र कैसे बदलता है।

5 रिक्त स्थानों का एक बैच दिया गया है जिसमें 5 टुकड़े हैं। बैच 4 ऑपरेशन से गुजरता है: पहले की अवधि 10 मिनट है, दूसरे की 20 मिनट है, तीसरे की 10 मिनट है, चौथे की 30 मिनट है। अनुक्रमिक गति के साथ विश्लेषणात्मक और चित्रमय तरीकों से चक्र की अवधि निर्धारित करें।

6 चार टुकड़ों से युक्त रिक्त स्थान का एक बैच दिया गया है। बैच 4 ऑपरेशन से गुजरता है: पहले की अवधि 5 मिनट है, दूसरे की 10 मिनट है, तीसरे की 5 मिनट है, चौथे की 15 मिनट है। समानांतर गति के साथ विश्लेषणात्मक और ग्राफिकल तरीकों से चक्र की अवधि निर्धारित करें।

7 रिक्त स्थान का एक बैच दिया गया है जिसमें 5 टुकड़े हैं। बैच 4 ऑपरेशन से गुजरता है: पहले की अवधि 10 मिनट है, दूसरे की 20 मिनट है, तीसरे की 10 मिनट है, चौथे की 30 मिनट है। क्रमिक-समानांतर गति के लिए विश्लेषणात्मक और ग्राफिकल तरीकों से चक्र की अवधि निर्धारित करें।

8 180 टुकड़ों के उत्पादों के एक बैच के प्रसंस्करण के लिए तकनीकी चक्र की अवधि निर्धारित करें। इसके आंदोलन के समानांतर और अनुक्रमिक वेरिएंट के साथ। प्रसंस्करण प्रक्रिया ग्राफ़ बनाएं। ट्रांसफर लॉट का आकार 30 पीसी है। संचालन में समय मानक और नौकरियों की संख्या इस प्रकार है।

पिछले एल्गोरिदम का एक स्विच किया गया संस्करण सबसे कम शेष निष्पादन समय एल्गोरिदम है। इस एल्गोरिदम के अनुसार, शेड्यूलर हर बार सबसे कम शेष निष्पादन समय वाली प्रक्रिया का चयन करता है। ऐसे में कार्य पूरा होने का समय पहले से पता होना भी जरूरी है। जब कोई नया कार्य आता है, तो उसके कुल निष्पादन समय की तुलना वर्तमान कार्य के शेष निष्पादन समय से की जाती है। यदि नए कार्य का निष्पादन समय कम है, तो वर्तमान प्रक्रिया निलंबित कर दी जाती है और नियंत्रण नए कार्य पर स्थानांतरित कर दिया जाता है। यह योजना आपको छोटे अनुरोधों को शीघ्र पूरा करने की अनुमति देती है।

त्रिस्तरीय योजना

बैच प्रोसेसिंग सिस्टम तीन-स्तरीय शेड्यूलिंग की अनुमति देता है, जैसा कि चित्र में दिखाया गया है। जैसे ही नए कार्य सिस्टम में आते हैं, उन्हें पहले डिस्क पर संग्रहीत कतार में रखा जाता है। प्रवेश एक्सेस अनुसूचक किसी कार्य का चयन करता है और उसे सिस्टम में स्थानांतरित करता है। शेष कार्य कतार में हैं।

जैसे ही कोई कार्य सिस्टम में प्रवेश करता है, उसके लिए एक संबंधित प्रक्रिया बनाई जाएगी, और वह तुरंत प्रोसेसर तक पहुंच के लिए प्रतिस्पर्धा करना शुरू कर सकता है। हालाँकि, यह संभव है कि बहुत सारी प्रक्रियाएँ हों और वे सभी मेमोरी में फ़िट न हों, तो उनमें से कुछ को डिस्क पर पेज आउट कर दिया जाएगा। शेड्यूलिंग का दूसरा स्तर यह निर्धारित करता है कि कौन सी प्रक्रियाएँ मेमोरी में संग्रहीत की जा सकती हैं और कौन सी प्रक्रियाएँ डिस्क पर संग्रहीत की जा सकती हैं। वह यही करता है मेमोरी अनुसूचक .

मेमोरी शेड्यूलर समय-समय पर डिस्क पर प्रक्रियाओं को देखता है ताकि यह तय किया जा सके कि किन प्रक्रियाओं को मेमोरी में स्थानांतरित किया जाए। अनुसूचक द्वारा प्रयुक्त मानदंड निम्नलिखित हैं:

1. इस प्रक्रिया को डिस्क में स्वैप किए हुए या डिस्क से लोड किए हुए कितना समय हो गया है?

2. सीपीयू का उपयोग करने की प्रक्रिया कितने समय से चल रही है?

3. प्रक्रिया का आकार क्या है (छोटी प्रक्रियाएं हस्तक्षेप नहीं करती हैं)?

4. प्रक्रिया का महत्व क्या है?

तीसरा शेड्यूलिंग स्तर तैयार अवस्था में प्रक्रियाओं को प्रोसेसर तक पहुंचने की अनुमति देने के लिए जिम्मेदार है। जब हम "अनुसूचक" के बारे में बात करते हैं, तो हमारा आमतौर पर मतलब होता है सीपीयू अनुसूचक . यह शेड्यूलर स्थिति के लिए उपयुक्त किसी भी एल्गोरिदम का उपयोग करता है, बिना किसी रुकावट के। हम इनमें से कुछ एल्गोरिदम को पहले ही देख चुके हैं, और हम बाद में दूसरों से परिचित होंगे।

इंटरैक्टिव सिस्टम में योजना बनाना.

चक्रीय योजना.

सबसे पुराना, सरल, निष्पक्ष और सबसे अधिक उपयोग किया जाने वाला चक्रीय शेड्यूलिंग एल्गोरिदम है। प्रत्येक प्रक्रिया को एक निश्चित मात्रा में प्रोसेसर समय दिया जाता है, जिसे टाइम स्लाइस कहा जाता है। यदि प्रक्रिया समय स्लाइस के अंत में भी चल रही है, तो इसे समाप्त कर दिया जाता है और नियंत्रण किसी अन्य प्रक्रिया में स्थानांतरित कर दिया जाता है। बेशक, यदि प्रक्रिया समय से पहले अवरुद्ध या समाप्त हो जाती है, तो इस बिंदु पर एक नियंत्रण संक्रमण होता है। राउंड-रॉबिन शेड्यूलिंग का कार्यान्वयन सरल है। शेड्यूलर को केवल तैयार अवस्था में प्रक्रियाओं की एक सूची बनाए रखने की आवश्यकता है। जब कोई प्रक्रिया अपनी समय सीमा तक पहुँच जाती है, तो उसे सूची के अंत में भेज दिया जाता है।

इस एल्गोरिथम का एकमात्र दिलचस्प पहलू क्वांटम की लंबाई है। एक प्रक्रिया से दूसरी प्रक्रिया में स्विच करने में कुछ समय लगता है - रजिस्टरों और मेमोरी मैप्स को सहेजना और लोड करना, तालिकाओं और सूचियों को अपडेट करना, मेमोरी कैश को सहेजना और पुनः लोड करना आदि आवश्यक है। निष्कर्ष निम्नानुसार तैयार किया जा सकता है: बहुत छोटी मात्रा का नेतृत्व होगा प्रक्रियाओं के बार-बार स्विचिंग और छोटी दक्षता, लेकिन बहुत बड़ी मात्रा के परिणामस्वरूप छोटे इंटरैक्टिव अनुरोधों पर धीमी प्रतिक्रिया हो सकती है। लगभग 2 0 -5 0 एमएस का क्वांटम मान अक्सर एक उचित समझौता होता है।

प्राथमिकता योजना.

राउंड रॉबिन शेड्यूलिंग की एक महत्वपूर्ण धारणा है कि सभी प्रक्रियाएं समान हैं। बड़ी संख्या में उपयोगकर्ताओं वाले कंप्यूटर की स्थिति में, ऐसा नहीं हो सकता है। उदाहरण के लिए, किसी विश्वविद्यालय में पहले डीन को, फिर प्रोफेसरों, सचिवों, सफाईकर्मियों को और उसके बाद ही छात्रों को सेवा दी जानी चाहिए। ऐसे बाहरी कारकों को ध्यान में रखने की आवश्यकता प्राथमिकता योजना की ओर ले जाती है। मूल विचार सरल है: प्रत्येक प्रक्रिया को प्राथमिकता दी जाती है, और नियंत्रण को सर्वोच्च प्राथमिकता के साथ तैयार प्रक्रिया में स्थानांतरित कर दिया जाता है।

कई कतारें.

पहली प्राथमिकता अनुसूचियों में से एक को CTSS प्रणाली (संगत समय-साझा प्रणाली) में लागू किया गया था। CTSS प्रणाली के साथ मुख्य समस्या यह थी कि प्रक्रिया स्विचिंग बहुत धीमी थी, क्योंकि IBM 7094 कंप्यूटर केवल एक प्रक्रिया को मेमोरी में रख सकता था। प्रत्येक स्विच का मतलब वर्तमान प्रक्रिया को डिस्क पर लोड करना है

और डिस्क से नई प्रक्रिया को पढ़ना। CTSS के डेवलपर्स को तुरंत एहसास हुआ कि यदि प्रोसेसर-सीमित प्रक्रियाओं को छोटे समय के स्लाइस दिए जाते हैं, लेकिन अक्सर की तुलना में बड़ा समय स्लाइस दिया जाता है, तो दक्षता अधिक होगी। एक ओर, इससे मेमोरी से डिस्क पर स्थानांतरण की संख्या कम हो जाएगी, और दूसरी ओर, इससे प्रतिक्रिया समय में गिरावट आएगी, जैसा कि हम पहले ही देख चुके हैं।

परिणामस्वरूप, प्राथमिकता वर्गों वाला एक समाधान विकसित किया गया। सर्वोच्च प्राथमिकता वर्ग में प्रक्रियाओं को एक क्वांटम आवंटित किया गया था, अगले वर्ग में प्रक्रियाओं को दो क्वांटम आवंटित किया गया था, अगले वर्ग में प्रक्रियाओं को चार क्वांटम आवंटित किया गया था, आदि। जब एक प्रक्रिया ने अपने सभी आवंटित समय का उपयोग कर लिया था, तो इसे निचले स्तर पर ले जाया गया था कक्षा।

उदाहरण के तौर पर, एक ऐसी प्रक्रिया पर विचार करें जिसमें 100 से अधिक क्वांटा की गणना करने की आवश्यकता है। सबसे पहले, इसे एक क्वांटम दिया जाएगा, फिर इसे डिस्क पर पंप किया जाएगा। अगली बार जब उसे 2 क्वांटा मिलते हैं, तो 4, 8,16, 32, 64, हालाँकि 64 में से वह केवल 37 का उपयोग करता है। इस मामले में, 100 के बजाय केवल 7 स्थानांतरण (प्रारंभिक भार सहित) की आवश्यकता होगी। राउंड-रॉबिन एल्गोरिथम का उपयोग करने की आवश्यकता है। इसके अलावा, जैसे-जैसे यह प्राथमिकता कतार में गहरा होता जाएगा, प्रक्रिया कम और कम बार शुरू होगी, जिससे सीपीयू को छोटी प्रक्रियाओं का मौका मिलेगा।

"सबसे छोटी प्रक्रिया अगली है"

चूंकि शॉर्टेस्ट टास्क फर्स्ट एल्गोरिदम बैच प्रोसेसिंग सिस्टम में औसत टर्नअराउंड समय को कम करता है, इसलिए कोई इसे इंटरैक्टिव सिस्टम में भी उपयोग करना चाहेगा। कुछ हद तक ये संभव है. इंटरैक्टिव प्रक्रियाएं अक्सर "कमांड की प्रतीक्षा करना, कमांड निष्पादित करना, कमांड की प्रतीक्षा करना, कमांड निष्पादित करना ..." के पैटर्न का पालन करती हैं यदि आप प्रत्येक कमांड के निष्पादन को एक अलग कार्य के रूप में मानते हैं, तो आप समग्र औसत प्रतिक्रिया को कम कर सकते हैं सबसे छोटे कार्य को पहले चलाकर समय। एकमात्र समस्या यह है

यह समझना है कि प्रतीक्षा की कौन सी प्रक्रिया सबसे छोटी है।

एक विधि प्रक्रिया के पिछले व्यवहार के आधार पर प्रक्रिया की लंबाई का अनुमान लगाने पर आधारित है। इस मामले में, सबसे कम अनुमानित समय वाली प्रक्रिया शुरू की जाती है। आइए मान लें कि कमांड का अपेक्षित निष्पादन समय T 0 है और अपेक्षित अगला निष्पादन समय T 1 है। इन समयों का भारित योग AT 0 + (1 - a)T 1 लेकर समय अनुमान में सुधार करना संभव है। ए के लिए उचित मूल्य चुनकर, हम अनुमान एल्गोरिदम को पिछले रनों के बारे में जल्दी से भूल सकते हैं या, इसके विपरीत, उन्हें लंबे समय तक याद रख सकते हैं। a = 1/2 लेने पर, हमें अनुमानों की एक श्रृंखला मिलती है:

टी 0, टी 0/2 + टी 1/2, टी 0/4 + टी 1/4 + टी 2/2, टी 0/8 + टी 1/8 + टी 2/4 + टी 3/2।

तीन रन के बाद अनुमान में टी 0 का वजन घटकर 1/8 रह जाएगा।

पिछले मूल्य और पिछले अनुमान के भारित औसत के माध्यम से किसी श्रृंखला में अगले मूल्य का अनुमान लगाने की विधि को अक्सर उम्र बढ़ना कहा जाता है। यह विधि कई स्थितियों में लागू होती है जहां पिछले मूल्यों से अनुमान लगाना आवश्यक होता है। उम्र बढ़ने को लागू करने का सबसे आसान तरीका a = 1/2 है। हर कदम पर बस आपकी जरूरत है

वर्तमान अनुमान में एक नया मान जोड़ें और योग को आधे में विभाजित करें (1 बिट से दाईं ओर स्थानांतरण)।

गारंटीशुदा योजना.

योजना बनाने का एक मौलिक रूप से अलग दृष्टिकोण उपयोगकर्ताओं से वास्तविक वादे करना और फिर उन्हें पूरा करना है। यहां एक वादा है जिसे कहना आसान है और निभाना भी आसान है: यदि आप n उपयोगकर्ताओं के साथ एक प्रोसेसर साझा करते हैं, तो आपको प्रोसेसर की 1/n शक्ति दी जाएगी।

और एक उपयोगकर्ता और n प्रोसेसर वाले सिस्टम में, प्रत्येक को 1/n प्रोसेसर चक्र मिलेगा।

इस वादे को पूरा करने के लिए, सिस्टम को प्रत्येक प्रक्रिया के निर्माण के क्षण से ही प्रक्रियाओं के बीच सीपीयू आवंटन का ट्रैक रखना होगा। सिस्टम तब सीपीयू संसाधनों की मात्रा की गणना करता है जिसके लिए प्रक्रिया हकदार है, जैसे कि निर्माण के बाद से समय को एन से विभाजित किया गया है। अब हम प्रक्रिया को दिए गए समय और उस समय के अनुपात की गणना कर सकते हैं जिसके लिए वह हकदार है। 0.5 के परिणामी मूल्य का अर्थ है कि प्रक्रिया को उसकी आवंटित राशि का केवल आधा प्राप्त हुआ, और 2.0 का अर्थ है कि प्रक्रिया को उसकी अपेक्षा से दोगुना प्राप्त हुआ। तब तक सबसे छोटे अनुपात के साथ प्रक्रिया शुरू की जाती है

यह अपने निकटतम पड़ोसी से बड़ा नहीं होगा।

लॉटरी योजना.

एल्गोरिथ्म प्रोसेसर सहित विभिन्न संसाधनों तक पहुंच के लिए प्रक्रियाओं को लॉटरी टिकट वितरित करने पर आधारित है। जब योजनाकार को निर्णय लेने की आवश्यकता होती है, तो लॉटरी टिकट को यादृच्छिक रूप से चुना जाता है और उसके मालिक को संसाधन तक पहुंच मिलती है। सीपीयू एक्सेस के संदर्भ में, "लॉटरी" प्रति सेकंड 50 बार हो सकती है, जिसमें विजेता को 20 एमएस सीपीयू समय मिलता है।

जीतने की संभावना बढ़ाने के लिए अधिक महत्वपूर्ण प्रक्रियाओं को अतिरिक्त टिकट दिए जा सकते हैं। यदि केवल 100 टिकट हैं और उनमें से 20 एक प्रक्रिया में हैं, तो इसे प्रोसेसर समय का 20% मिलेगा। प्राथमिकता अनुसूचक के विपरीत, जिसमें यह मूल्यांकन करना बहुत मुश्किल है कि प्राथमिकता 40 का क्या मतलब है, लॉटरी समय-निर्धारण में सब कुछ स्पष्ट है। प्रत्येक प्रक्रिया को संसाधनों का एक प्रतिशत प्राप्त होगा जो उसके पास मौजूद टिकटों के प्रतिशत के लगभग बराबर होगा।

लॉटरी योजना में कई दिलचस्प गुण हैं। उदाहरण के लिए, यदि निर्माण के दौरान किसी प्रक्रिया को कई टिकट प्राप्त होते हैं, तो अगली लॉटरी में उसके जीतने की संभावना टिकटों की संख्या के समानुपाती होती है।

यदि आवश्यक हो तो संचार प्रक्रियाएं टिकटों का आदान-प्रदान कर सकती हैं। इसलिए, यदि कोई क्लाइंट प्रक्रिया सर्वर प्रक्रिया को एक संदेश भेजती है और फिर ब्लॉक कर देती है, तो यह सर्वर शुरू होने की संभावना बढ़ाने के लिए अपने सभी टिकट सर्वर प्रक्रिया को दे सकता है। जब सर्वर प्रक्रिया समाप्त हो जाती है, तो यह सभी टिकट वापस लौटा सकता है।

उचित योजना.

अब तक हमने यह माना है कि प्रत्येक प्रक्रिया स्वतंत्र रूप से नियंत्रित होती है, भले ही उसका स्वामी कौन हो। इसलिए, यदि उपयोगकर्ता 1 9 प्रक्रियाएँ बनाता है, और उपयोगकर्ता 2 - 1 प्रक्रिया बनाता है, तो राउंड-रॉबिन शेड्यूलिंग का उपयोग करके या समान प्राथमिकताओं के मामले में, उपयोगकर्ता 1 को 90% प्रोसेसर मिलेगा, और उपयोगकर्ता 2 को केवल 10।

ऐसी स्थितियों से बचने के लिए, कुछ सिस्टम शेड्यूल करने से पहले प्रक्रिया के मालिक पर ध्यान देते हैं। इस मॉडल में, प्रत्येक उपयोगकर्ता को प्रोसेसर का एक निश्चित हिस्सा मिलता है, और शेड्यूलर इस तथ्य के अनुसार एक प्रक्रिया का चयन करता है। यदि हमारे उदाहरण में प्रत्येक उपयोगकर्ता के पास था

प्रोसेसर का 50% देने का वादा किया है, तो प्रक्रियाओं की संख्या की परवाह किए बिना, उन्हें 50% प्रोसेसर मिलेगा।

वास्तविक समय प्रणालियों में योजना बनाना।

वास्तविक समय प्रणालियों में, समय एक आवश्यक भूमिका निभाता है। अक्सर, एक या अधिक बाहरी भौतिक उपकरण इनपुट सिग्नल उत्पन्न करते हैं, और कंप्यूटर को एक निश्चित समय के भीतर उन पर पर्याप्त प्रतिक्रिया देनी चाहिए।

वास्तविक समय प्रणालियों को विभाजित किया गया है कठिन वास्तविक समय प्रणाली , जिसका अर्थ है प्रत्येक कार्य के लिए सख्त समय सीमा की उपस्थिति (उन्हें पूरा किया जाना चाहिए), और लचीली वास्तविक समय प्रणालियाँ , जिसमें समय-सारिणी का उल्लंघन अवांछनीय है, लेकिन स्वीकार्य है। दोनों ही मामलों में, प्रोग्राम को कई प्रक्रियाओं में विभाजित किया गया है, जिनमें से प्रत्येक का पूर्वानुमान लगाया जा सकता है। ये प्रक्रियाएँ अक्सर छोटी होती हैं और एक सेकंड के भीतर अपना काम पूरा कर लेती हैं। जब कोई बाहरी सिग्नल दिखाई देता है, तो यह योजनाकार होता है जिसे यह सुनिश्चित करना होगा कि शेड्यूल बनाए रखा गया है।

बाहरी घटनाएँ जिन पर सिस्टम को प्रतिक्रिया देनी चाहिए, उन्हें विभाजित किया जा सकता है आवधिक(नियमित अंतराल पर घटित होता है) और गैर आवधिक(अप्रत्याशित रूप से घटित हो रहा है)। घटनाओं की कई आवधिक धाराएँ हो सकती हैं जिन्हें सिस्टम को संसाधित करना होगा। प्रत्येक ईवेंट को संसाधित करने में लगने वाले समय के आधार पर, सिस्टम सभी ईवेंट को समय पर संसाधित करने में सक्षम नहीं हो सकता है।


सम्बंधित जानकारी।


अक्सर, डेवलपर्स, विशेष रूप से अनुभवहीन लोग, कार्यों को पूरा करने के लिए समय सीमा निर्धारित करने के बारे में पूछे जाने पर भ्रमित हो जाते हैं। हालाँकि, योजना बनाने की क्षमता एक बहुत ही उपयोगी और आवश्यक कौशल है जो न केवल काम में, बल्कि जीवन में भी मदद करती है। हमने विशेषज्ञों से यह पूछने का निर्णय लिया कि कैसे सही ढंग से योजना बनाना और समय पर परियोजनाओं को वितरित करना सीखें।

संक्षिप्त निष्कर्ष लेख के अंत में पाया जा सकता है।

किसी कार्य को पूरा करने में लगने वाले समय का अनुमान लगाने के लिए डेवलपर को आमतौर पर एक साथ कई मापदंडों को ध्यान में रखना पड़ता है:

  1. ऐसे कार्यों को करने और इस प्रौद्योगिकी स्टैक के साथ काम करने का अनुभव। यदि आपको मौलिक रूप से कुछ नया करना है, तो आपको अपने मूल्यांकन में विशेष रूप से सावधान रहने की आवश्यकता है।
  2. इस ग्राहक के साथ काम करने का अनुभव। ग्राहक को जानकर, आप मोटे तौर पर कुछ अतिरिक्त आवश्यकताओं और परिवर्तनों की गुंजाइश का अनुमान लगा सकते हैं।
  3. आप जिस कोड के साथ काम करेंगे उसकी गुणवत्ता। यह सबसे प्रभावशाली कारक है, जिसके कारण हर चीज़ में लंबा समय लग सकता है और आम तौर पर योजना के अनुसार नहीं चल पाता है। यदि परियोजना में परीक्षण हैं, तो हर जगह केवल स्पष्ट निर्भरताएँ हैं और कार्यक्षमता अच्छी तरह से अलग है, सब कुछ इतना डरावना नहीं है। यदि आप परीक्षण के बिना लीगेसी कोड के साथ काम कर रहे हैं या अंतर्निहित निर्भरता के साथ अतिभारित कोड के साथ काम कर रहे हैं तो यह बहुत बुरा है। "मैजिक फ़ंक्शंस" (जब कोड से अंतिम कॉल स्टैक को देखना कठिन होता है) और कोड डुप्लिकेशन (जब आपको कुछ कार्यक्षमता को बदलने के लिए कई स्वतंत्र अनुभागों को संपादित करने की आवश्यकता होती है) जैसी चीज़ें भी मामलों को जटिल बना सकती हैं।

कार्य की समय-सीमा का पर्याप्त रूप से अनुमान लगाने का तरीका जानने के लिए, आपको लगातार अभ्यास करने की आवश्यकता है। अपने काम की शुरुआत में, मैंने ठीक यही किया: मैंने किसी भी आने वाले कार्य को पूरा करने के लिए समय का अनुमान लगाया, भले ही किसी को इसकी आवश्यकता न हो, और फिर देखा कि मैं अपने अनुमान को कितनी सटीकता से लगाने में कामयाब रहा। कार्य पूरा करते समय, उन्होंने नोट किया कि किन कार्यों में अधिक समय लगा। यदि किसी चीज़ ने अवधि में उल्लेखनीय वृद्धि की, तो मैंने इस क्षण को याद किया और अगले आकलन में इसे ध्यान में रखा।

काम के लिए पूरी तरह से आवश्यक समय के वस्तुनिष्ठ मूल्यांकन में, अप्रत्याशित घटना की स्थितियों को कवर करने के लिए एक छोटा सा मार्जिन जोड़ा जाना चाहिए। इसका मूल्यांकन अक्सर मुख्य कार्य के पूरा होने के प्रतिशत के रूप में किया जाता है, लेकिन यह सभी के लिए अलग-अलग होता है: कुछ समय का 20% जोड़ते हैं, कुछ - 10%, और कुछ - 50%।

प्रत्येक गंभीर समय सीमा उल्लंघन के बाद छूटी हुई समय सीमा के कारणों का विश्लेषण करना भी उपयोगी है। यदि आपमें योग्यता की कमी है, तो आपको अपने कमजोर बिंदुओं पर काम करने की जरूरत है। यदि समस्या संगठनात्मक थी, तो समझें कि किस चीज़ ने इसे सामान्य रूप से काम करने से रोका।

प्रमोट करें पदावनत करें

, नवीन प्रौद्योगिकियों और समाधानों के लिए केंद्र "जेट इन्फोसिस्टम्स" के तकनीकी निदेशक

बड़ी संख्या में लेख किसी परियोजना की श्रम तीव्रता का आकलन करने के तरीकों के लिए समर्पित हैं, जिसमें काम की अवधि और व्यक्तिगत कार्य शामिल हैं। हालाँकि, यह अभी भी प्रोजेक्ट टीम के भीतर और ग्राहक के साथ संचार करते समय टकराव का कारण बनता है।

मूल्यांकन में मुख्य सहायक अनुभव है। किसी भी तरह नए कार्य की तुलना पहले से किए गए कार्यों से करने का प्रयास करें। यदि आप कोई रिपोर्ट कर रहे हैं, तो देखें कि अतीत में इसी तरह की रिपोर्ट में कितना समय लगा था। यदि आप कुछ नया कर रहे हैं, तो इसे ज्ञात भागों में विभाजित करने और उनका मूल्यांकन करने का प्रयास करें। यदि कार्य पूरी तरह से नया है, तो अध्ययन के लिए समय निर्धारित करें (और भी बेहतर, इस समय को कार्य निर्धारित करने वाले व्यक्ति के साथ समन्वयित करें)।

साथ के चरणों पर ध्यान दें - यदि आपको कोई सेवा विकसित करने की आवश्यकता है, तो मूल्यांकन में इकाई परीक्षण (और शायद केवल इकाई परीक्षण ही नहीं) भी शामिल होना चाहिए, परीक्षण डेटा तैयार करने में कुछ समय लगेगा। आपको अन्य सेवाओं आदि के साथ एकीकरण पर विचार करना चाहिए। जो दोष आप पाते हैं उन्हें स्वयं या परीक्षकों की सहायता से ठीक करने के लिए समय दें। "अदृश्य" कार्यों पर बहुत सारा समय बर्बाद हो सकता है। उदाहरण के लिए, विकास के लिए एक मूल्यांकन होता है और परीक्षण के लिए एक मूल्यांकन होता है, लेकिन परीक्षण के लिए किसी कलाकृति के हस्तांतरण में स्टैंड की तैनाती शामिल हो सकती है। इसलिए, पूरी प्रक्रिया की मानसिक रूप से कल्पना करना महत्वपूर्ण है ताकि कुछ भी छूट न जाए।

जटिलता का निर्धारण करने के बाद, समानांतर में चलने वाले अन्य कार्यों और गतिविधियों के बारे में न भूलकर, कैलेंडर में नए कार्य को शामिल करना आवश्यक है।

और यह मत भूलो कि योजनाएँ बेकार हैं, लेकिन योजना अमूल्य है। योजनाओं को समयबद्ध तरीके से समायोजित करना सीखें, इसमें शामिल सभी लोगों को सूचित रखें, और समयबद्ध तरीके से आगे बढ़ें ताकि छूटी हुई समय सीमा किसी के लिए आश्चर्य की बात न हो।

प्रमोट करें पदावनत करें

एक ऐसा प्रश्न जिसका उत्तर संक्षिप्त रूप में नहीं दिया जा सकता। यदि यह सरल होता, तो समय-सीमा चूकने की समस्या मौजूद नहीं होती।

विकास की समय-सीमा को और अधिक पूर्वानुमानित बनाने के लिए, हमें पहले उन कारणों को समझना होगा कि प्रोग्रामर हर समय गलतियाँ क्यों करते हैं।

पहला कारण यह है कि एक प्रोग्रामर द्वारा किए जाने वाले अधिकांश कार्य किसी न किसी स्तर पर अद्वितीय होते हैं। यानी, सबसे अधिक संभावना है, प्रोग्रामर पहली बार इसी तरह का कार्य करेगा। इस काम में कितना समय लगेगा इसका उन्हें ठीक से अंदाज़ा नहीं है. यदि यह ठोस अनुभव वाला एक प्रोग्रामर है और उसे एक समान कार्य करना है, तो उसका मूल्यांकन वास्तविकता के करीब होगा।

आइए एक सरल सादृश्य का उपयोग करें - यदि आपने कभी खाई नहीं खोदी है, तो आप यह नहीं कह सकते कि 30 सेमी चौड़ी, 60 सेमी गहरी और 20 मीटर लंबी खाई खोदने में आपको कितना समय लगेगा। यदि आपने पहले खुदाई की है, तो कार्य समय का आपका अनुमान कार्य की वास्तविक अवधि के बहुत करीब होगा।

दूसरा कारण यह है कि प्रोग्रामर स्वभाव से आशावादी होते हैं। अर्थात्, किसी कार्य पर विचार करते समय, उसके लिए कार्यान्वयन विकल्प का चयन करते समय, और सुधारों का मूल्यांकन करते समय, डेवलपर अपेक्षा करता है कि सब कुछ उसकी अपेक्षा के अनुरूप काम करेगा। और वह रास्ते में आने वाली समस्याओं के बारे में नहीं सोचता। अक्सर वह उनका पूर्वाभास नहीं कर पाता। उदाहरण के लिए, एक कार्य है जिसे एक प्रोग्रामर तृतीय-पक्ष ओपन-सोर्स सॉफ़्टवेयर लाइब्रेरी का उपयोग करके कार्यान्वित कर सकता है। मूल्यांकन चरण में, उन्होंने इसे इंटरनेट पर पाया, इसका विवरण पढ़ा - यह उनके लिए उपयुक्त है। और उन्होंने यह भी सही अनुमान लगाया कि इस पुस्तकालय के उपयोग के लिए उन्हें कितना काम करना होगा। लेकिन उन्हें बिल्कुल भी अंदाज़ा नहीं था कि उनके सॉफ़्टवेयर उत्पाद के वातावरण में इस लाइब्रेरी में कोई त्रुटि उत्पन्न होगी।

डेवलपर को न केवल लाइब्रेरी के उपयोग को अपने कोड में बनाना होगा, बल्कि लाइब्रेरी में एक बग को भी ठीक करना होगा। और अक्सर डेवलपर अपनी गलतियों को सुधारने के लिए समय नहीं देता है। आंकड़े बताते हैं कि परीक्षण और त्रुटियों को ठीक करने में कोडिंग पर खर्च होने वाला लगभग 50% समय लग सकता है। यह आंकड़ा डेवलपर की योग्यता, पर्यावरण और उपयोग की जाने वाली विकास प्रथाओं पर निर्भर करता है (उदाहरण के लिए, यूनिट परीक्षण इस समय को काफी कम कर देते हैं और विकास कार्य की अंतिम अवधि/श्रम तीव्रता कम होती है)।

यदि हम खुदाई करने वाले के साथ सादृश्य पर लौटते हैं, तो खुदाई करने वाले को उम्मीद नहीं थी कि उसका फावड़ा टूट जाएगा और उसे नई कटाई की तलाश में दो घंटे बिताने होंगे।

तीसरा कारण अप्रत्याशित आवश्यकताएं हैं। सामग्री उत्पादन के किसी अन्य क्षेत्र में, जिसके साथ ग्राहक सॉफ़्टवेयर विकास की तुलना करने के इतने शौकीन हैं, नई आवश्यकताओं का इतना प्रवाह नहीं है। एक खोदने वाले के मार्ग की कल्पना करें, जिसने 20 में से 19 मीटर खोदा और ग्राहक से यह इच्छा सुनी कि खाई सीधी रेखा में नहीं, बल्कि 97 सेंटीमीटर की लंबाई वाले सांप में जानी चाहिए।

इन सब से कैसे निपटें और ऐसी अनिश्चितता की स्थिति में कैसे रहें? अनिश्चितता को कम करना और समय के भंडार का निर्माण करना।

अपनी अपेक्षाओं को वास्तविकता के करीब लाने का सबसे आसान तरीका चंचल पाई नियम का उपयोग करना है। डेवलपर से एक अनुमान प्राप्त करने के बाद (समय या श्रम तीव्रता के संदर्भ में), आपको इसे पाई (= 3.14159) से गुणा करना होगा। डेवलपर ने जितना अधिक अनुभवी मूल्यांकन किया है, यह अनुपात उतना ही कम हो सकता है।

मूल समस्या को 4 घंटे से अधिक के छोटे कार्यों में विघटित करने का अभ्यास अनिवार्य है। अपघटन जितना अधिक विस्तृत होगा, संभावना उतनी ही अधिक होगी कि अनुमान वास्तविक जटिलता/अवधि के करीब होगा।
यदि हम आरक्षित आवंटन पर लौटते हैं, तो इस समय को परियोजना के अंत में आवंटित किया जाना चाहिए। प्रत्येक कार्य के लिए रिज़र्व बनाना और उसे शामिल करना एक ख़राब प्रथा है। पार्किंसंस का नियम "काम उसे आवंटित सभी समय भरता है" का सख्ती से पालन किया जाता है।

संक्षेप में कहें तो, कार्य पूरा करने की समय सीमा को सही ढंग से निर्धारित करने के लिए, निम्नलिखित क्रियाएं उपयोगी होंगी:

  • कार्य को यथासंभव विस्तृत चरणों में तोड़कर कार्य विघटित करना;
  • प्रोटोटाइपिंग करना;
  • पहले से अप्रत्याशित आवश्यकताओं के कार्यान्वयन को सीमित करें। इसका मतलब यह नहीं है कि उन्हें करने की आवश्यकता नहीं है, लेकिन इन आवश्यकताओं को उजागर करना और उनके कार्यान्वयन के लिए समय और लागत में बदलाव पर ग्राहक के साथ सहमत होना उचित है;
  • समाधान को स्थिर करने में लगने वाले समय को ध्यान में रखें;
  • कोड गुणवत्ता में सुधार के लिए प्रथाओं का उपयोग करें, जैसे यूनिट परीक्षण लिखना;
  • एक सामान्य रिजर्व रखना.

खैर, याद रखें कि यदि कोई तथ्य आपके अनुमान से 30% अधिक है, तो यह एक बहुत अच्छा परिणाम है।

प्रमोट करें पदावनत करें

सबसे सटीक मूल्यांकन के लिए, आपको वास्तविक विकास और विशेष रूप से एक विशिष्ट क्षेत्र में अनुभव की आवश्यकता है। लेकिन ऐसे सामान्य नियम भी हैं जो आपको योजना बनाने में गलतियों और ग्राहक को काम वितरित करते समय समस्याओं से बचने में मदद करेंगे। मैं इन नियमों का वर्णन इस प्रकार करूंगा।

सबसे पहले, आपको समस्या को समझने की आवश्यकता है। यह स्पष्ट प्रतीत होता है और सीधे तौर पर समय के अनुमान से संबंधित नहीं है, लेकिन वास्तव में यह एक महत्वपूर्ण बिंदु है। गंभीर बड़ी परियोजनाओं में भी, विफलता और देरी का एक मुख्य कारक आवश्यकताओं को परिभाषित करने में समस्या है। शुरुआती डेवलपर्स के लिए, दुर्भाग्य से, यह एक गंभीर समस्या है - वे तकनीकी विशिष्टताओं को नहीं पढ़ते हैं या वे बहुत चुनिंदा तरीके से पढ़ते और समझते हैं (दस बिंदुओं में से, उन्होंने पांच को याद किया और पूरा किया, और परिणाम सबमिट करते समय बाकी को याद किया)। स्पष्ट है कि गलत समझे गये कार्य को समय पर सही ढंग से क्रियान्वित नहीं किया जा सकता।

अगला विकास समय का अनुमान लगाना है। प्रोग्रामिंग की ख़ासियत यह है कि इसमें बिल्कुल समान कार्य नहीं होते हैं। यह हमारे काम को और अधिक रोचक बनाता है, लेकिन समय सीमा का अनुमान लगाना अधिक कठिन है। अपघटन यहाँ अच्छा काम करता है, अर्थात्। एक जटिल, अनोखी समस्या को छोटे, परिचित उपकार्यों के अनुक्रम में विभाजित करना। और उनमें से प्रत्येक का पहले से ही घंटों में पर्याप्त रूप से मूल्यांकन किया जा सकता है। आइए उप-कार्यों के अनुमानों को जोड़ें और संपूर्ण कार्य के लिए एक अनुमान प्राप्त करें।

एक नियम के रूप में, ऐसे अनुमान में केवल कोडिंग की लागत ही शामिल होती है। बेशक, यह विकास का सबसे महत्वपूर्ण हिस्सा है, लेकिन एकमात्र (और अक्सर सबसे बड़ा नहीं) से बहुत दूर है। कार्य के पूर्ण समापन में विनिर्देश को पढ़ना और स्पष्ट करना, सहकर्मियों या ग्राहक के साथ बैठकें, डिबगिंग और परीक्षण, दस्तावेज तैयार करना, परिणाम की डिलीवरी (ग्राहक को प्रदर्शन और उसकी टिप्पणियों के आधार पर संभावित संशोधन) शामिल हैं। केवल अनुभव ही आपको बताएगा कि इन कार्यों को पूरा करने में आपको कितना समय लगेगा। सबसे पहले, कम से कम, यह महत्वपूर्ण है कि गणना में उन्हें ध्यान में रखना न भूलें, और आप समय के अनुमानित अनुमान के लिए अधिक अनुभवी सहयोगियों से पूछ सकते हैं।

इसलिए, हम कोडिंग के लिए श्रम लागत का अनुमान लेते हैं, अतिरिक्त कार्य की लागत का अनुमान जोड़ते हैं - और हमें कार्य पूरा करने के लिए आवश्यक समय का अनुमान मिलता है। लेकिन वह सब नहीं है! आपको कार्य की नियोजित पूर्णता तिथि बतानी होगी। श्रम लागत (घंटों में) को केवल 8 घंटे से विभाजित करना और उन्हें वर्तमान तिथि में जोड़ना एक गलती होगी। वास्तविक व्यवहार में, एक डेवलपर कभी भी (ठीक है, लगभग कभी नहीं) एक विशिष्ट कार्य पर 100% समय काम करता है। आप निश्चित रूप से अन्य कार्यों पर समय व्यतीत करेंगे - महत्वपूर्ण, लेकिन सीधे तौर पर मुख्य कार्य से संबंधित नहीं। उदाहरण के लिए, सहकर्मियों की मदद करना, प्रशिक्षण देना, रिपोर्ट लिखना आदि। आमतौर पर, योजना बनाते समय, यह माना जाता है कि कार्य समय का 60-70% सीधे वर्तमान परियोजना पर काम करने में व्यतीत होता है। इसके अतिरिक्त, आपको संभावित देरी को भी ध्यान में रखना होगा जो आपको कार्य पर लगातार काम करने से रोकेगी। उदाहरण के लिए, यदि इसके लिए आपको अन्य लोगों (सहकर्मियों, ग्राहकों) के साथ बातचीत करने की आवश्यकता है, तो उनकी उपलब्धता, कार्यसूची आदि को ध्यान में रखें।

यहां बुनियादी नियम हैं, जो मेरी राय में, डेवलपर को अनुमान लगाने और समय सीमा को पूरा करने में समस्याओं से बचने में मदद करेंगे। इसके अलावा, कार्यों को लागू करने और मूल्यांकन दोनों में अपना अनुभव जमा करना महत्वपूर्ण है। उदाहरण के लिए, किसी कार्य को पूरा करने के बाद अपने प्रारंभिक अनुमान की वास्तविक समय-सीमा से तुलना करना और भविष्य के लिए निष्कर्ष निकालना बहुत उपयोगी होता है। और, निःसंदेह, यह अन्य लोगों के अनुभवों का अध्ययन करने लायक है। मैं इस विषय पर एस. मैक्कोनेल की पुस्तकों की अनुशंसा करूंगा "एक सॉफ्टवेयर परियोजना की लागत कितनी है" और एस. आर्किपेंकोव की "सॉफ्टवेयर परियोजना प्रबंधन पर व्याख्यान।"

प्रमोट करें पदावनत करें

समय सीमा का अनुमान और योजना बनाते समय, आपको यह करना होगा:

  1. कार्य को छोटे कार्यात्मक टुकड़ों में इस तरह विघटित करें कि यह स्पष्ट समझ हो कि ऐसे प्रत्येक टुकड़े को विकसित करने में कितना समय लगेगा।
  2. अपघटन के समानांतर, कार्यक्षमता के संबंध में अतिरिक्त प्रश्न निश्चित रूप से उठेंगे जिनका समस्या विवरण में वर्णन नहीं किया गया था। ऐसे प्रश्नों के उत्तर प्राप्त करना आवश्यक है, क्योंकि इसका सीधा संबंध कार्य के दायरे और इसलिए समय से है।
  3. अंतिम मूल्यांकन में जोखिमों का एक निश्चित प्रतिशत जोड़ें। यह अनुभवजन्य रूप से निर्धारित होता है। उदाहरण के लिए, आप 10-15% के जोखिम के साथ शुरुआत कर सकते हैं।
  4. समझें कि एक प्रोग्रामर किसी कार्य को पूरा करने के लिए प्रतिदिन कितने घंटे समर्पित करने को तैयार है।
  5. हम अंतिम अनुमान को प्रति दिन आवंटित घंटों की संख्या से विभाजित करते हैं और कार्यान्वयन के लिए आवश्यक दिनों की संख्या प्राप्त करते हैं।
  6. हम कैलेंडर और पूरा करने के लिए आवश्यक दिनों की संख्या पर ध्यान केंद्रित करते हैं। हम सप्ताहांत और अन्य दिनों को ध्यान में रखते हैं जब प्रोग्रामर कार्य पर काम करने में सक्षम नहीं होगा, साथ ही काम की शुरुआत की तारीख (डेवलपर हमेशा उसी दिन कार्य करने के लिए तैयार नहीं होता है)। इस प्रकार, हमें कार्य की आरंभ और समाप्ति तिथि प्राप्त होती है।

प्रमोट करें पदावनत करें

हमारी कंपनी में, कार्य योजना हमेशा कई चरणों से गुजरती है। व्यावसायिक पक्ष पर, हम वर्ष के लिए 5-6 रणनीतिक लक्ष्य बनाते हैं। ये उच्च-स्तरीय कार्य हैं, उदाहरण के लिए, किसी पैरामीटर को इतने प्रतिशत तक बढ़ाना। इसके बाद, कंपनी के विभिन्न प्रभाग सभी आईटी टीमों के लिए व्यावसायिक कार्य तैयार करते हैं। इन कार्यों की समय सीमा का एक प्रारंभिक मोटा अनुमान प्राप्त होता है, जो अक्सर टीम के सभी सदस्यों - प्रबंधक, विश्लेषक, डेवलपर और परीक्षक द्वारा बनाया जाता है। एक बार जब व्यवसाय को यह मूल्यांकन प्राप्त हो जाता है, तो वह कंपनी के रणनीतिक लक्ष्यों के आधार पर कार्यों को प्राथमिकता देता है। क्रॉस-कटिंग रणनीतिक लक्ष्य इसमें मदद करते हैं; उनके साथ, यह स्पष्ट हो जाता है कि हम सभी किसी सामान्य कारण के लिए काम कर रहे हैं; ऐसी कोई स्थिति नहीं है जब कोई केवल अपनी दिशा में खींच रहा हो। हम समय सीमा के संदर्भ में सटीक रूप से अनुमानित कार्यों से स्प्रिंट एकत्र करते हैं। कुछ टीमों के लिए वे त्रैमासिक हैं, अन्य के लिए वे मासिक हैं। कई कार्यों के लिए, जो प्रारंभिक अनुमानों के अनुसार, अगले स्प्रिंट में आएंगे, टीमें सटीक अनुमान देती हैं। बड़े कार्यों को निचले स्तर के कार्यों में विभाजित किया जाता है, जिनमें से प्रत्येक के लिए एक विशिष्ट कलाकार जिम्मेदार होता है, और वह ही सटीक मूल्यांकन देता है।

इस स्तर पर, बग्स को ठीक करने के लिए समय का रिजर्व जोड़ना न भूलना महत्वपूर्ण है, क्योंकि केवल वे ही जो कुछ नहीं करते हैं, कोई गलती नहीं करते हैं। उत्पाद स्वामी और व्यावसायिक ग्राहक दोनों ही इसे अच्छी तरह समझते हैं। साथ ही, आवश्यक समय की मात्रा पर्याप्त होनी चाहिए: कोई भी ऐसे डेवलपर को नहीं समझेगा जो एक साधारण कार्य के लिए बहुत लंबी समय सीमा निर्धारित करता है; उसे निर्णय को उचित ठहराने के लिए कहा जाएगा। सबसे कठिन काम व्यवसाय को यह समझाना है कि रीफैक्टर करने में समय क्यों लगता है। हम इस तथ्य के लिए अपनी कंपनी के आभारी हैं कि समय-समय पर हम इसमें सफल होते हैं, क्योंकि अंततः, रीफैक्टरिंग से बुनियादी ढांचे का सरलीकरण होता है और कोड को क्रम में रखा जाता है, जिससे सिस्टम की स्थिरता बढ़ जाती है और विकास में काफी तेजी आ सकती है। नये कार्यों का.

कभी-कभी मूल्यांकन में त्रुटियाँ अभी भी होती हैं। मेरी राय में, विकसित बुनियादी ढांचे वाली बड़ी कंपनियों में विकास विभाग के लिए इससे पूरी तरह बचना असंभव है। इस मामले में, यह महत्वपूर्ण है कि डेवलपर तुरंत अपने प्रबंधक को सूचित करे कि क्या हो रहा है, और वह बदले में, व्यवसाय को चेतावनी देने और कंपनी की सामान्य योजनाओं में कुछ "दोहराने" का प्रबंधन करता है। इस मोड में काम करना 5 दिनों में लगने वाले काम को 3 दिनों में करने की बेतहाशा कोशिश करने और फिर इस तरह की जल्दबाजी के कारण होने वाली बड़ी संख्या में त्रुटियों में डूबने से कहीं अधिक सही है।

प्रमोट करें पदावनत करें

प्रश्न के दोनों भागों का सही उत्तर [सही ढंग से योजना बनाना और किसी प्रोजेक्ट को समय पर वितरित करना कैसे सीखें - लाल।] - अनुभव। "ज़ेन को जानने" का कोई अन्य तरीका नहीं है। निर्णय सिद्धांत के अनुसार, कोई भी सटीक निष्कर्ष पहले से उपलब्ध कई आंकड़ों के विश्लेषण के आधार पर ही निकाला जा सकता है। और जितना अधिक डेटा होगा, अंतिम पूर्वानुमान और आकलन उतना ही सटीक होगा।

हर्बर्ट शॉ के शब्दों में: "अनुभव वह विद्यालय है जिसमें एक व्यक्ति सीखता है कि वह पहले कितना मूर्ख था।" इससे एक काफी सरल निष्कर्ष निकलता है: यदि किसी प्रोग्रामर के पास पहले से ही कार्य से संबंधित अनुभव है, तो वह उस पर भरोसा कर सकता है; यदि नहीं, तो वह अपने "सहयोगियों" के अनुभव पर भरोसा कर सकता है।

इसके बाद, आपको यह समझने की आवश्यकता है कि समय सीमा की प्रत्यक्ष योजना एक ऐसा कार्य है जिसे लोग बहुत, बहुत खराब तरीके से सामना करते हैं, खासकर विकास में। नियत तिथियों का अनुमान लगाते समय, मूल अनुमान में "समायोजन कारकों" को शामिल करना अच्छा अभ्यास माना जाता है। डेवलपर के अनुभव और परियोजना के भीतर हल किए जा रहे कार्यों की अनिश्चितता की डिग्री की समग्रता के आधार पर, यह मीट्रिक 1.5 से 3 तक हो सकती है।

प्रमोट करें पदावनत करें

समय सीमा निर्धारित करते समय कई कारकों पर विचार करना महत्वपूर्ण है।

उदाहरण के लिए, कार्य अनुभव. आप आगे के कार्य के दायरे को कितनी स्पष्टता से समझते हैं? क्या आपने पहले भी ऐसा कुछ किया है? मतलब साफ है कि जितना ज्यादा अनुभव, काम उतनी ही तेजी से पूरा होगा.

एक अच्छी तरह से लिखित तकनीकी विनिर्देश समय सीमा निर्धारित करने में महत्वपूर्ण भूमिका निभाता है। हमारे क्षेत्र में इसे लेकर चीजें बहुत कठिन हैं। अक्सर ग्राहक स्वयं नहीं जानता कि वह क्या चाहता है, इसलिए मैं आपको सलाह देता हूं कि आप एक या दो अतिरिक्त दिन बिताएं, लेकिन वांछित परिणाम के बारे में ग्राहक से स्पष्ट विचार प्राप्त करें। यह महत्वपूर्ण है कि यह समझ परस्पर हो। और इसके बाद ही आप राशि और शर्तों पर बातचीत शुरू कर सकते हैं।

इसके अलावा, हमेशा जोखिम भी शामिल करें। शुरुआती लोगों के लिए, मैं अनुमानित समापन समय को दो से गुणा करने की सलाह देता हूं। आख़िरकार, किसी प्रोजेक्ट को समय से पहले वितरित करना और ग्राहक की नज़र में एक विशेषज्ञ के रूप में विकसित होना बेहतर है, बजाय इसके कि इसे बाद में वितरित करें और अपनी प्रतिष्ठा बर्बाद करें।

प्रमोट करें पदावनत करें

एक सामान्य अनुशंसा यह है कि डेवलपर को यह सीखना होगा कि कार्यों को सही ढंग से कैसे विघटित किया जाए, हमेशा संभावित नुकसान की तलाश करें, अपने स्वयं के अनुभव पर भरोसा करें और यदि कार्य निर्दिष्ट समय के भीतर हल नहीं किया जा सकता है तो ग्राहकों और सहकर्मियों को समय पर चेतावनी देना न भूलें। चौखटा।

किसी एक कार्य को पूरा करने की समय सीमा निर्धारित करने की तुलना में एक स्पष्ट योजना बनाना कहीं अधिक कठिन है। साथ ही, न केवल परियोजना को समय पर वितरित करना महत्वपूर्ण है, बल्कि यह सुनिश्चित करना भी महत्वपूर्ण है कि आपके द्वारा विकसित प्रणाली व्यावसायिक समस्याओं को सही ढंग से हल करती है। यहां, आईटी टीमों को विभिन्न सॉफ्टवेयर विकास पद्धतियों द्वारा मदद की जाती है: आरयूपी और एमएसएफ से लेकर एससीआरयूएम और अन्य एजाइल प्रारूपों तक। टूल का चुनाव बहुत व्यापक है, और हमारे कई ग्राहक पहले से यह समझना चाहते हैं कि हम प्रोजेक्ट में उनके साथ कैसे काम करेंगे, हम किन सिद्धांतों का पालन करेंगे।

वैसे, एजाइल का विषय आज व्यवसाय और यहां तक ​​कि सार्वजनिक क्षेत्र की व्यक्तिगत परियोजनाओं दोनों के करीब होता जा रहा है, क्योंकि इस पद्धति के सिद्धांत प्रत्येक पुनरावृत्ति पर ग्राहकों की अपेक्षाओं को प्रबंधित करते हुए, परियोजनाओं को बहुत तेज़ी से लागू करना संभव बनाते हैं। उदाहरण के लिए, एजाइल टीम में ग्राहक के साथ व्यावहारिक रूप से कोई लंबी चर्चा नहीं होती है। अनावश्यक तकनीकी विवरणों का वर्णन करने वाले दर्जनों पृष्ठों को भूल जाइए, जैसे कि ड्रॉप-डाउन सूची कितनी जल्दी दिखाई देती है। ग्राहक को सिस्टम के मध्यवर्ती संस्करण को आज़माने का अवसर दें, फिर आपके लिए एक-दूसरे को समझना बहुत आसान हो जाएगा।

एजाइल टीम सब कुछ एक साथ योजना बनाती है और श्रम का इष्टतम स्तर निर्धारित करती है जो किसी विशेष समस्या को हल करने के लिए आवश्यक होगा। उदाहरण के लिए, तकनीकों में से एक को "पोकर प्लानिंग" कहा जाता है, जहां प्रत्येक प्रतिभागी गुमनाम रूप से किसी विशिष्ट कार्य के लिए आवश्यक श्रम लागत का अपना आकलन देता है। इसके बाद, टीम कहानी बिंदुओं या मानव-घंटे में कार्य का औसत वजन निर्धारित करती है और "किसे क्या पसंद है" के सिद्धांत के अनुसार कार्यों को वितरित करती है। साथ ही, हर दिन टीम 15 मिनट की बैठक के लिए एकत्रित होती है, जब हर कोई कुछ मिनटों में अपने वर्तमान कार्यों की स्थिति के बारे में बात करता है, जिसमें आने वाली कठिनाइयों की रिपोर्ट करना भी शामिल है। टीम पहचानी गई समस्या को तुरंत ठीक कर देती है, ताकि ग्राहक प्रोग्रामर के काम के अगले चरण को जल्द से जल्द देख सके। डेवलपर्स टीम को एक बार फिर से परेशान करने की अनिच्छा या अपने दम पर इसका पता लगाने के निरर्थक प्रयासों के कारण कार्यों को पूरा करने में देरी नहीं करते हैं, जिससे कीमती समय बर्बाद होता है। वैसे, ऐसे मिनी-स्टेटस पर, डेवलपर्स को अपना सर्वश्रेष्ठ पक्ष दिखाने की इच्छा होती है, यह दिखाने के लिए कि आप अपने काम को जिम्मेदारी से करते हैं। यह वास्तव में प्रेरित करता है और आत्म-अनुशासन देता है।

 

 

यह दिलचस्प है: