أقصر وقت تنفيذ متبقي. كيف تتعلم تحديد المواعيد النهائية لإنجاز العمل بشكل صحيح - إجابة الخبراء عملية حساب الوقت المتبقي لمبلغ شيء ما

(لا يصبح الوقت المنقضي من العمل دعمًا إلا في اللحظة الأولى التي يبدأ فيها التنفيذ على الموارد)؛ التقليل التأخيرأو وقت الاستجابة(يصبح الوقت المنقضي من العمل متضمنًا حتى اكتماله في حالة النشاط الدوري، أو حتى يستجيب النظام ويسلم أول خروج للمستخدم في حالة النشاط التفاعلي)؛ أو التعظيم عدالة(قدر متساوٍ من وقت وحدة المعالجة المركزية لكل عملية، أو الأوقات المقابلة بشكل عام وفقًا للأولوية وعبء العمل لكل عملية). من الناحية العملية، غالبًا ما تكون هذه الأهداف متعارضة (على سبيل المثال، الإنتاجية مقابل زمن الوصول)، لذلك سيقوم المجدول بإجراء المقايضة المناسبة. يتم قياس الأفضلية بأي من الأمور المذكورة أعلاه، حسب احتياجات المستخدم وأهدافه.

OS/360 والخلفاء

إيكس

في الإصدار 4 من AIX، توجد ثلاثة إعدادات محتملة لسياسة جدولة سلسلة المحادثات:

  • أولاً، يخرج أولاً: بمجرد جدولة سلسلة رسائل بهذه السياسة، يتم تشغيلها حتى الاكتمال، ما لم يتم حظرها، أو أنها تتخلى طوعًا عن التحكم في المعالج، أو يصبح سلسلة الرسائل ذات الأولوية الأعلى قابلة للإرسال. فقط سلاسل العمليات ذات الأولوية الثابتة يمكن أن يكون لها سياسة جدولة FIFO.
  • Round Robin: يشبه هذا برنامج جدولة الدائرة AIX الإصدار 3 الذي يعتمد على شرائح زمنية تبلغ 10 مللي ثانية. عندما يتحكم خيط PP في نهاية الفترة الزمنية، فإنه ينتقل إلى ذيل قائمة انتظار سلاسل الرسائل التي لها نفس الأولوية. يمكن فقط لسلاسل العمليات ذات الأولوية الثابتة أن تتمتع بسياسة جدولة Round Robin.
  • أخرى: تم تحديد تنفيذ هذه السياسة بواسطة POSIX1003.4a. في الإصدار 4 من AIX، تم تعريف هذه السياسة على أنها مكافئة لسياسة RR، فيما عدا أنها تنطبق على سلاسل العمليات ذات الأولوية غير الثابتة. إن إعادة حساب قيمة أولوية مؤشر الترابط قيد التشغيل لكل مقاطعة يعني أن مؤشر الترابط يمكن أن يفقد التحكم لأن قيمة أولويته ارتفعت أعلى من مؤشر ترابط آخر. هذا هو سلوك AIX الإصدار 3.

المواضيع هي في المقام الأول ذات أهمية للتطبيقات التي تتكون حاليًا من عمليات متعددة غير متزامنة. يمكن لهذه التطبيقات فرض حمل خفيف على النظام إذا تم تحويلها إلى بنية متعددة الخيوط.

كل ما تم وصفه في الأقسام السابقة العديدة كان موجهًا أكثر نحو مزيد من البحث حول مشكلة الوقت الخاص بالعملية وبدرجة أقل بكثير في التطبيقات العملية. ولملء هذه الفجوة، سنوضح إحدى الطرق لحساب الوقت المناسب لعملية ما بناءً على البيانات الإحصائية حول تطورها.

دعونا نفكر في عملية أحادية البعد، تتميز حالتها بمتغير حقيقي x. لنفترض أن ملاحظات ديناميكيات العملية تتم في زمن فلكي t، بحيث تكون t = t k و x = x k، k =1، ...، n لحظات مراقبة ثابتة والقيم المقابلة لها تنص العملية. هناك عدة مختلفة الأساليب الرياضية، مما يسمح لنا ببناء منحنيات تمر عبر النقاط (t k، Xk) أو "أفضل نهج" لها. الوظائف x = x(t) التي تم الحصول عليها بهذه الطريقة تعطي انطباعًا في أذهاننا بأن العملية قيد النظر تعتمد على الحركة الميكانيكية للأجرام السماوية، وبالتالي يتم التعبير عن حالتها من خلال الزمن الفلكي t. ويمكن أخذ هذا الاستنتاج بعين الاعتبار؛ إذا لم تنشأ صعوبات مستمرة عند محاولة التنبؤ بالمسار الإضافي للعملية. بالنسبة لعدد كبير من العمليات المختلفة التي لا ترتبط مباشرة بالحركات الميكانيكية للأجرام السماوية، فإن التنبؤات النظرية التي تم الحصول عليها باستخدام الدالة x = x(t) خارج فترة المراقبة تبدأ في الانحراف بشكل كبير عن البيانات التجريبية اللاحقة. عادة ما يحاولون شرح سبب التناقض بين النظرية والتجربة بطريقة معالجة مختارة بشكل غير ناجح، لكن هذا قد لا يكون جوهر الأمر.

أي عملية تهمنا تحدث في الكون. إنه بالتأكيد "يشعر" بتأثير حركة الأجرام السماوية. ومع ذلك، قد يتبين أن هذا التأثير "غير جامد"، وغير محدد. قد يتجلى هذا، على وجه الخصوص، في حقيقة أنه في فترات معينة من الزمن الفلكي تظل حالة العملية دون تغيير. وفي هذا الصدد، دعونا نتذكر المثال السابق بغرفة مغلقة فارغة، معزولة عن العالم الخارجي. دعونا ندع شخصًا واحدًا يطير إلى الغرفة. على مدار عدة أيام، ستعتمد التغييرات في حالة نظام "غرفة الطيران" على تحركات الذبابة، حيث لا يمكن توقع حدوث تغييرات في حالة الغرفة. في الوقت نفسه، من الصعب أن نتخيل أن سلوك الذبابة يرتبط بشكل صارم بتدفق الزمن الفلكي.

بعد إجراء مثل هذا الاستطراد الطويل، دعنا ننتقل إلى وصف الخوارزمية لحساب وقت العملية.

في هذه الخوارزمية، يتم اختيار وحدة حساب الحد الأقصى المحلي كمقياس طبيعي للوقت. بالإضافة إلى ذلك، يتم أخذ الأقسام المحتملة للحالة الثابتة للعملية بعين الاعتبار، والتي، كما ذكرنا سابقًا، الوقت الخاص بيتوقف. نظرًا لأنه لا يمكن قول هوية الحالتين إلا في حدود دقة القياس، فإنه يتم استخدام ما يلي رقمًا موجبًا معينًا e - خطأ القياس المسموح به.

لذا، فإن البيانات المدخلة للخوارزمية هي الرقم الطبيعي n، والرقم الموجب 8، والمصفوفات (tk) و(x k)، k = 1، ...، n ولسهولة البرمجة يتم تقديم الخوارزمية في النموذج من أربع وحدات يتم تنفيذها بالتسلسل.

وحدة 1،باستخدام البيانات p، e، t k)، (x k)، النماذج في الحالة العامةصفائف جديدة 7 = (7+ X = (X t) ومصفوفة مصاحبة محددة جدًا P = (؟)، حيث 1 = 1، ...، t، وt<Сп. Основное назначение этого модуля -- выявление в массиве 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، ...، ص.

ويعني هذا الإجراء أنه إذا كان لا يمكن تمييز قيم Xk وXk 1 ضمن الخطأ، فسيتم تقليل جميع النقاط الزمنية التي تبدأ من tk بمقدار tki-tk.

ص = ص. العودة إلى النقطة 4.

تلفزيون = ر ك ; X الخامس:=س ك ; ع = ص v = v+l.، أي. يتم تشكيل عناصر المصفوفات T وX وP ويتم تعيين القيمة التالية v.

  • 10. خذ (t k, ..., t n AND (Xk, - X n) باعتبارها المصفوفات الأصلية للبعد n--k 1 + 1 ثم ارجع إلى الخطوة 2.
  • 11. اطبع m، (T)، (X،) و (P،)، حيث i = l، ...، t.

دعونا نشرح معنى عناصر المصفوفة المصاحبة 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) و (س،) = (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)؛ (X،) = (4، 6، 3، 2، 4، 3، 2،) 4،5،4،3)

ط(د) = (2، 4، 1، 1، 1.3، 2، 1.3، 1، 1)، انظر الشكل. 9، ب.

الوحدة 2.البيانات المدخلة لها هي عدد طبيعي m، وكذلك المصفوفات (7+ (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.إدخال البيانات ml، m2، (TM n)، 1 = 1، ...، ml، (G*)، /2 = 1، ...، gn2.

تم تصميم هذه الوحدة لإنشاء مصفوفة (t(-r) باستخدام الصيغة

أين يوجد التلفاز 6 [TMp, TMn+i]

المتغير t هو الزمن المناسب الناتج عن التغير في المتغير x . مقياسها الطبيعي هو وحدة حساب الحد الأقصى المحلي.

مثال 3. البيانات الأولية لـ T 2) هي نفس قيم ml وm2 ITM وفي المثال 2. . وبعد الحسابات المناسبة نحصل على Н = (0; 0.2; 0.6; 1; 1,33; 1,78; 2).

الوحدة 4.يُنشئ مخرجات النتائج عن طريق إنشاء تطابق بين قيم m والعناصر x من المصفوفة (xk).

المثال 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) من خلال استقراء هذا الخط بعد فترة المراقبة الأولية، يمكنه عمل تنبؤات حول المسار الإضافي للعملية.

ومن المثير للاهتمام أن نذكر تجربة حسابية تهدف إلى تقييم احتمالات استخدام الخوارزمية المقترحة. تم اختيار البيانات المتعلقة بتدفقات الأنهار السنوية كمواد تجريبية. فاخش (طاجيكستان) على مدار الأربعين عامًا الماضية. خلال نفس الفترة الزمنية، تم الحصول على معلومات حول ديناميكيات رقم الذئب - المؤشر المتكامل الأكثر استخدامًا للنشاط الشمسي. وكان الأخير هو الأساس لتطوير التوقيت المناسب لعملية النشاط الشمسي. وبحلول العصر الحديث، تغيرت المعلومات المتعلقة بالنفقات النهرية. فاخش وبعد ذلك، خلال فترة المراقبة، تم تقديم الاعتماد النظري لتدفق المياه كدالة للوقت المناسب للنشاط الشمسي. السمة المميزة للرسم البياني الناتج هي السلوك الدوري تقريبًا للحد الأقصى والحد الأدنى من النفقات. لكن التكاليف لا تبقى ثابتة.

في كثير من الأحيان، يشعر المطورون، وخاصة عديمي الخبرة، بالارتباك عندما يُطلب منهم تحديد مواعيد نهائية لإنجاز المهام. ومع ذلك، فإن القدرة على التخطيط هي مهارة مفيدة وضرورية للغاية ولا تساعد في العمل فحسب، بل في الحياة أيضًا. قررنا أن نسأل الخبراء عن كيفية تعلم كيفية التخطيط بشكل صحيح وتسليم المشاريع في الوقت المحدد.

يمكن العثور على استنتاجات موجزة في نهاية المقال.

يحتاج المطور عادةً إلى مراعاة عدة معلمات مرة واحدة لتقدير الوقت المستغرق لإكمال المهمة:

  1. خبرة في أداء مثل هذه المهام والعمل مع مجموعة التكنولوجيا هذه. إذا كان عليك القيام بشيء جديد بشكل أساسي، فعليك أن تكون حذرًا بشكل خاص في تقييمك.
  2. تجربة العمل مع هذا العميل. بمعرفة العميل، يمكنك التنبؤ تقريبًا ببعض المتطلبات الإضافية ونطاق التغييرات.
  3. جودة الكود الذي ستعمل به. هذا هو العامل الأكثر تأثيرًا، والذي بسببه يمكن أن يستغرق كل شيء وقتًا طويلاً ولا يسير بشكل عام وفقًا للخطة. إذا كان المشروع يحتوي على اختبارات، فلا يوجد سوى تبعيات واضحة في كل مكان وتكون الوظيفة معزولة جيدًا، وكل شيء ليس مخيفًا جدًا. يكون الأمر أسوأ بكثير إذا كنت تتعامل مع تعليمات برمجية قديمة بدون اختبارات أو مع تعليمات برمجية مثقلة بالتبعيات الضمنية. أشياء مثل "الوظائف السحرية" (عندما يكون من الصعب رؤية مكدس الاستدعاءات النهائية من الكود) وتكرار الكود (عندما تحتاج إلى تحرير عدة أقسام مستقلة لتغيير بعض الوظائف) يمكن أن تؤدي أيضًا إلى تعقيد الأمور.

لتتعلم كيفية تقدير المواعيد النهائية للعمل بشكل مناسب، عليك أن تتدرب باستمرار. في بداية عملي، قمت بما يلي بالضبط: قمت بتقدير الوقت اللازم لإكمال أي مهمة واردة، حتى لو لم يطلبها أحد، ثم نظرت إلى مدى دقة تمكني من الوصول إلى تقديري. أثناء إكمال المهمة، لاحظ الإجراءات التي استغرقت وقتًا أطول. إذا زاد شيء ما بشكل كبير الفترة، تذكرت هذه اللحظة وأخذتها في الاعتبار في التقييمات التالية.

ولتقييم موضوعي للوقت اللازم للعمل فقط، ينبغي إضافة هامش صغير لتغطية حالات القوة القاهرة. غالبًا ما يتم تقييمها كنسبة مئوية من إكمال المهمة الرئيسية، لكن الأمر مختلف من شخص لآخر: يضيف البعض 20٪ من الوقت، والبعض - 10٪، والبعض - 50٪.

من المفيد أيضًا تحليل أسباب عدم الالتزام بالمواعيد النهائية بعد كل انتهاك خطير للمواعيد النهائية. إذا كنت تفتقر إلى المؤهلات، فأنت بحاجة إلى العمل على نقاط ضعفك. إذا كانت المشكلة تنظيمية، فافهم ما الذي منعها من العمل بشكل طبيعي.

ترقية التخفيض

, المدير الفني لمركز التقنيات والحلول المبتكرة "Jet Infosystems"

يتم تخصيص عدد كبير من المقالات لطرق تقييم كثافة اليد العاملة للمشروع، بما في ذلك مدة العمل والمهام الفردية. ومع ذلك، لا يزال هذا يسبب صراعات داخل فريق المشروع وعند التواصل مع العميل.

المساعد الرئيسي في التقييم هو الخبرة. حاول بطريقة ما مقارنة المهمة الجديدة بتلك التي تم إنجازها بالفعل. إذا كنت تقوم بإعداد تقرير، فانظر إلى المدة التي استغرقها تقرير مماثل في الماضي. إذا كنت تفعل شيئًا جديدًا، فحاول تقسيمه إلى أجزاء معروفة وتقييمها. إذا كانت المهمة جديدة تمامًا، خصص وقتًا للدراسة (والأفضل من ذلك، قم بالتنسيق هذه المرة مع الشخص الذي يحدد المهمة).

انتبه إلى المراحل المصاحبة - إذا كنت بحاجة إلى تطوير الخدمة، فيجب أن يشمل التقييم أيضًا اختبار الوحدة (وربما ليس فقط اختبار الوحدة)، وسيستغرق إعداد بيانات الاختبار بعض الوقت. يجب أن تفكر في التكامل مع الخدمات الأخرى، وما إلى ذلك. قم بإتاحة الوقت لتصحيح العيوب التي تجدها بنفسك أو بمساعدة المختبرين. يمكن إضاعة الكثير من الوقت في المهام "غير المرئية". على سبيل المثال، هناك تقييم للتطوير وهناك تقييم للاختبار، ولكن نقل قطعة أثرية للاختبار قد يتضمن نشر المدرجات. لذلك، من المهم أن تتخيل العملية برمتها عقليًا حتى لا يفوتك أي شيء.

بعد تحديد التعقيد، من الضروري تضمين عمل جديد في التقويم، دون أن ننسى المهام والأنشطة الأخرى التي تسير بالتوازي.

ولا تنس أن الخطط لا فائدة منها، ولكن التخطيط لا يقدر بثمن. تعلم كيفية تعديل الخطط في الوقت المناسب، وإبقاء جميع المعنيين على اطلاع، والتصعيد في الوقت المناسب حتى لا تكون المواعيد النهائية الفائتة مفاجأة لأي شخص.

ترقية التخفيض

سؤال لا يمكن الإجابة عليه في شكل قصير. لو كان الأمر بسيطا، لما كانت مشكلة تفويت المواعيد النهائية موجودة.

لجعل المواعيد النهائية للتطوير أكثر قابلية للتنبؤ بها، يجب علينا أولاً أن نفهم الأسباب التي تجعل المبرمجين يرتكبون الأخطاء طوال الوقت.

السبب الأول هو أن معظم المهام التي يقوم بها المبرمج تكون فريدة بدرجة أو بأخرى. وهذا يعني على الأرجح أن المبرمج سيقوم بمهمة مماثلة للمرة الأولى. ليس لديه فكرة جيدة عن المدة التي سيستغرقها هذا العمل. إذا كان هذا مبرمجًا يتمتع بخبرة قوية وكان عليه القيام بمهمة مماثلة، فسيكون تقييمه أقرب إلى الواقع.

دعونا نستخدم تشبيهًا بسيطًا - إذا لم تكن قد قمت بحفر الخنادق من قبل، فلا يمكنك تحديد المدة التي ستستغرقها بالضبط لحفر خندق بعرض 30 سم وعمق 60 سم وطول 20 مترًا. إذا قمت بالحفر من قبل، فإن تقديرك لوقت العمل سيكون أقرب بكثير إلى المدة الفعلية للعمل.

السبب الثاني هو أن المبرمجين متفائلون بطبيعتهم. أي أنه عند النظر في مهمة ما، وتحديد خيار التنفيذ لها، وتقييم التحسينات، يتوقع المطور أن كل شيء سوف يعمل كما يتوقع. ولا يفكر في المشاكل التي سيواجهها في طريقه. في كثير من الأحيان لا يستطيع التنبؤ بها. على سبيل المثال، هناك مهمة يمكن للمبرمج تنفيذها باستخدام مكتبة برامج مفتوحة المصدر تابعة لجهة خارجية. في مرحلة التقييم، وجده على الإنترنت، وقرأ وصفه - فهو يناسبه. حتى أنه قام بتقدير حجم العمل الذي سيتعين عليه القيام به بشكل صحيح للاستفادة من هذه المكتبة. لكنه لم يتوقع على الإطلاق حدوث خطأ في هذه المكتبة في بيئة منتجه البرمجي.

لن يتعين على المطور بناء استخدام المكتبة في الكود الخاص به فحسب، بل سيتعين عليه أيضًا إصلاح الخلل في المكتبة نفسها. وفي كثير من الأحيان لا يوفر المطور الوقت لتصحيح أخطائه. تشير الإحصائيات إلى أن اختبار الأخطاء وإصلاحها يمكن أن يستغرق حوالي 50% من الوقت المستغرق في البرمجة. يعتمد الرقم على مؤهلات المطور والبيئة وممارسات التطوير المستخدمة (على سبيل المثال، تقلل اختبارات الوحدة هذا الوقت بشكل كبير وتكون المدة النهائية/كثافة العمالة لمهمة التطوير أقل).

إذا عدنا إلى القياس مع الحفار، لم يتوقع الحفار أن تنكسر مجرفته وسيتعين عليه قضاء ساعتين في البحث عن قطعة جديدة.

السبب الثالث هو المتطلبات غير المتوقعة. لا يوجد مثل هذا التدفق من المتطلبات الجديدة في أي مجال آخر من مجالات إنتاج المواد، والذي يحب العملاء مقارنة تطوير البرمجيات به. تخيل مرور الحفار الذي حفر 19 مترًا من أصل 20 وسمع من العميل رغبة في ألا يسير الخندق في خط مستقيم، بل في ثعبان يبلغ طول ذراعه 97 سم.

كيف نتعامل مع كل هذا وكيف نعيش في ظروف من عدم اليقين هذا؟ الحد من عدم اليقين وبناء احتياطيات الوقت.

أسهل طريقة لجعل توقعاتك أقرب إلى الواقع هي استخدام قاعدة باي المرحة. بعد تلقي تقدير من المطور (من حيث الوقت أو كثافة العمالة)، تحتاج إلى ضربه بـ Pi (= 3.14159). كلما كان المطور أكثر خبرة في التقييم، كلما انخفضت هذه النسبة.

تعتبر ممارسة تحليل المشكلة الأصلية إلى مهام صغيرة لا يزيد حجمها عن 4 ساعات أمرًا إلزاميًا. كلما كان التحليل أكثر تفصيلاً، زادت فرص أن يكون التقدير قريبًا من التعقيد/المدة الفعلية.
وإذا عدنا إلى تخصيص الاحتياطي، فيجب تخصيص هذا الوقت في نهاية المشروع. من الممارسات السيئة إنشاء احتياطي وإدراجه في كل مهمة. يتم اتباع قانون باركنسون "العمل يملأ كل الوقت المخصص له" بدقة.

لتلخيص ذلك لفترة وجيزة، من أجل تحديد المواعيد النهائية لإنجاز العمل بشكل صحيح، ستكون الإجراءات التالية مفيدة:

  • إجراء تحليل للعمل، وتقسيم المهمة إلى خطوات تفصيلية قدر الإمكان؛
  • تنفيذ النماذج الأولية؛
  • الحد من تنفيذ المتطلبات غير المتوقعة سابقًا. وهذا لا يعني عدم الحاجة إلى تنفيذها، ولكن يُنصح بتسليط الضوء على هذه المتطلبات والاتفاق مع العميل على التغييرات في توقيت وتكلفة تنفيذها؛
  • تأخذ في الاعتبار الوقت اللازم لتحقيق الاستقرار في الحل؛
  • استخدام الممارسات لتحسين جودة التعليمات البرمجية، مثل اختبارات وحدة الكتابة؛
  • وضع احتياطي عام.

حسنًا، تذكر أنه إذا تجاوزت الحقيقة تقديرك بنسبة 30%، فهذه نتيجة جيدة جدًا.

ترقية التخفيض

للحصول على التقييم الأكثر دقة، تحتاج إلى خبرة في التطوير الحقيقي، وتحديداً في مجال معين. ولكن هناك أيضًا قواعد عامة ستساعدك على تجنب الأخطاء في التخطيط والمشاكل عند تسليم العمل إلى العميل. أود أن أصف هذه القواعد مثل هذا.

أولا، عليك أن تفهم المشكلة. ويبدو هذا واضحا ولا يرتبط مباشرة بتقديرات التوقيت، لكنه في الحقيقة نقطة أساسية. حتى في المشاريع الكبيرة والخطيرة، فإن أحد العوامل الرئيسية للفشل والتأخير هو مشكلة تحديد المتطلبات. بالنسبة للمطورين المبتدئين، لسوء الحظ، هذه مشكلة خطيرة - فهم لا يقرؤون المواصفات الفنية أو يقرؤون ويفهمون بشكل انتقائي للغاية (من أصل عشر نقاط، تذكروا وأكملوا خمس نقاط، وتذكروا الباقي عند تقديم النتيجة). من الواضح أن المهمة التي أسيء فهمها لا يمكن تنفيذها بشكل صحيح في الوقت المحدد.

التالي هو تقدير وقت التطوير نفسه. تكمن خصوصية البرمجة في عدم وجود مهام متطابقة تمامًا. وهذا يجعل عملنا أكثر إثارة للاهتمام، ولكن تقدير المواعيد النهائية أكثر صعوبة. التحلل يعمل بشكل جيد هنا، أي. تقسيم مشكلة معقدة وفريدة من نوعها إلى سلسلة من المهام الفرعية الصغيرة والمألوفة. ويمكن بالفعل تقييم كل واحد منهم في غضون ساعات بشكل كافٍ. لنجمع تقديرات المهام الفرعية ونحصل على تقدير للمهمة بأكملها.

كقاعدة عامة، يشمل هذا التقدير فقط تكاليف البرمجة نفسها. هذا، بالطبع، هو الجزء الأكثر أهمية في التطوير، ولكنه ليس الجزء الوحيد (وغالبًا ليس الأكثر ضخامة). يتضمن إكمال المهمة أيضًا قراءة المواصفات وتوضيحها، والاجتماعات مع الزملاء أو العميل، وتصحيح الأخطاء والاختبار، وإعداد الوثائق، وتسليم النتيجة (العرض التوضيحي للعميل والتعديلات المحتملة بناءً على تعليقاته). ستخبرك الخبرة فقط بالمدة التي ستستغرقها لإكمال هذه الإجراءات. في البداية، من المهم، على الأقل، ألا تنسى أن تأخذها بعين الاعتبار في الحسابات، ويمكنك أن تطلب من الزملاء الأكثر خبرة تقديرًا تقريبيًا للوقت.

لذلك، فإننا نأخذ تقديرًا لتكاليف العمالة للترميز، ونضيف تقديرًا لتكاليف العمل الإضافي - ونحصل على التقدير المطلوب للوقت اللازم لإكمال المهمة. ولكن هذا ليس كل شيء! تحتاج إلى الإشارة إلى تاريخ الانتهاء المخطط للمهمة. سيكون من الخطأ ببساطة تقسيم تكاليف العمالة (بالساعات) على 8 ساعات وإضافتها إلى التاريخ الحالي. في الممارسة العملية، لا يعمل المطور أبدًا (حسنًا، أبدًا تقريبًا) بنسبة 100% من الوقت في مهمة واحدة محددة. ستقضي بالتأكيد بعض الوقت في عمل آخر - وهو أمر مهم، ولكنه لا يرتبط مباشرة بالعمل الرئيسي. على سبيل المثال، مساعدة الزملاء والتدريب وكتابة التقارير وما إلى ذلك. عادة، عند التخطيط، يعتقد أن 60-70٪ من وقت العمل يتم إنفاقه مباشرة على المشروع الحالي. بالإضافة إلى ذلك، عليك أن تأخذ في الاعتبار التأخيرات المحتملة التي ستمنعك من العمل بشكل مستمر على المهمة. على سبيل المثال، إذا كنت بحاجة إلى التفاعل مع أشخاص آخرين (الزملاء والعملاء)، فأخذ في الاعتبار مدى توفرهم وجدول عملهم وما إلى ذلك.

فيما يلي القواعد الأساسية التي، في رأيي، ستساعد المطور على تجنب المشاكل في التقدير والوفاء بالمواعيد النهائية. بالإضافة إلى ذلك، فإن المفتاح هو تجميع خبرتك الخاصة في تنفيذ المهام وفي التقييم. على سبيل المثال، من المفيد جدًا، بعد إكمال المهمة، مقارنة التقدير الأولي الخاص بك بالمواعيد النهائية الفعلية واستخلاص النتائج للمستقبل. وبالطبع، فإن الأمر يستحق دراسة تجارب الآخرين. أود أن أوصي بالكتب التي تتناول هذا الموضوع من تأليف S. McConnell "كم تكلفة مشروع برمجي" وS. Arkhipenkov "محاضرات حول إدارة مشاريع البرمجيات".

ترقية التخفيض

عند تقدير المواعيد النهائية وتخطيطها، يجب عليك:

  1. قم بتحليل المهمة إلى أجزاء وظيفية صغيرة بحيث يكون هناك فهم واضح للمدة التي سيستغرقها تطوير كل قطعة من هذه الأجزاء.
  2. بالتوازي مع التحليل، ستنشأ بالتأكيد أسئلة إضافية بخصوص الوظيفة التي لم يتم وصفها في بيان المشكلة. من الضروري الحصول على إجابات لمثل هذه الأسئلة، لأن هذا يرتبط بشكل مباشر بنطاق العمل، وبالتالي التوقيت.
  3. إضافة نسبة معينة من المخاطر إلى التقييم النهائي. يتم تحديد هذا تجريبيا. يمكنك البدء، على سبيل المثال، بمخاطر تتراوح بين 10-15%.
  4. افهم عدد الساعات التي يرغب المبرمج في تخصيصها لإنجاز مهمة ما في اليوم.
  5. نقسم التقدير النهائي على عدد الساعات التي نخصصها يوميا ونحصل على عدد الأيام المطلوبة للتنفيذ.
  6. نحن نركز على التقويم وعدد الأيام المطلوبة لإكمالها. نحن نأخذ في الاعتبار عطلات نهاية الأسبوع والأيام الأخرى التي لن يتمكن فيها المبرمج من العمل على المهمة، بالإضافة إلى تاريخ بدء العمل (المطور ليس مستعدًا دائمًا لتولي المهمة في نفس اليوم). وهكذا نحصل على تاريخ بداية العمل وانتهاءه.

ترقية التخفيض

في شركتنا، يمر تخطيط المهام دائمًا بعدة مراحل. على الجانب التجاري، نقوم بصياغة 5-6 أهداف استراتيجية لهذا العام. هذه مهام عالية المستوى، على سبيل المثال، زيادة بعض المعلمات بنسبة كبيرة جدًا. بعد ذلك، تقوم الأقسام المختلفة بالشركة بصياغة مهام العمل لجميع فرق تكنولوجيا المعلومات. تتلقى المواعيد النهائية لهذه المهام تقديرًا تقريبيًا أوليًا، والذي غالبًا ما يتم تشكيله من قبل جميع أعضاء الفريق - المدير والمحلل والمطور والمختبر. بمجرد أن تتلقى الشركة هذا التقييم، فإنها تحدد أولويات المهام بناءً على الأهداف الإستراتيجية للشركة. تساعد الأهداف الإستراتيجية الشاملة في تحقيق ذلك؛ حيث يصبح من الواضح أننا جميعًا نعمل من أجل قضية مشتركة؛ ولا يوجد مثل هذا الموقف عندما يتحرك شخص ما في اتجاهه الخاص فقط. نقوم بجمع سباقات السرعة من المهام المقدرة بدقة من حيث المواعيد النهائية. بالنسبة لبعض الفرق، تكون ربع سنوية، وبالنسبة للفرق الأخرى تكون شهرية. بالنسبة للعديد من المهام التي، وفقًا للتقديرات الأولية، ستقع في السباق التالي، تقدم الفرق تقديرًا دقيقًا. يتم تقسيم المهام الكبيرة إلى مهام ذات مستوى أدنى، ويكون كل منها مسؤولاً عن أداء معين، وهو الذي يعطي تقييمًا دقيقًا.

في هذه المرحلة، من المهم ألا ننسى إضافة احتياطي من الوقت لإصلاح الأخطاء، لأن فقط أولئك الذين لا يفعلون شيئًا لا يخطئون. يفهم كل من مالكي المنتجات والعملاء التجاريين ذلك جيدًا. وفي الوقت نفسه، يجب أن يكون مقدار الوقت المطلوب كافيًا: لن يفهم أحد المطور الذي يحدد موعدًا نهائيًا لمهمة بسيطة طويلة جدًا، سيُطلب منه تبرير القرار. أصعب شيء هو أن تشرح للشركة سبب استغراق عملية إعادة البناء وقتًا. نحن ممتنون لشركتنا لحقيقة أننا ننجح في ذلك من وقت لآخر، لأن إعادة البناء تؤدي في النهاية إلى تبسيط البنية التحتية وترتيب التعليمات البرمجية، مما يزيد من استقرار النظام ويمكن أن يسرع عملية التطوير بشكل كبير من الوظائف الجديدة.

في بعض الأحيان لا تزال هناك أخطاء في التقييم. في رأيي أنه من المستحيل على قسم التطوير في الشركات الكبيرة ذات البنية التحتية المتطورة تجنب ذلك تمامًا. في هذه الحالة، من المهم أن يقوم المطور بإبلاغ مديره على الفور بما يحدث، وهو بدوره قادر على تحذير الشركة و"إعادة تشغيل" شيء ما في الخطط العامة للشركة. يعد العمل في هذا الوضع أكثر صحة بكثير من المحاولة المحمومة للقيام بما يستغرق 5 أيام في 3 أيام، ثم الغرق في عدد كبير من الأخطاء التي نشأت بسبب هذا التسرع.

ترقية التخفيض

الإجابة الصحيحة على جزأين السؤال [كيف تتعلم كيفية التخطيط الصحيح وتسليم المشروع في الوقت المحدد - إد.] - خبرة. لا توجد طرق أخرى "لمعرفة زين". وفقا لنظرية القرار، لا يمكن استخلاص أي استنتاجات دقيقة إلا بناء على تحليل عدد من البيانات المتاحة بالفعل. وكلما زادت البيانات، زادت دقة التوقعات والتقييم النهائي.

وكما قال هربرت شو: "التجربة هي المدرسة التي يتعلم فيها الإنسان كم كان أحمق من قبل". يؤدي هذا إلى نتيجة بسيطة إلى حد ما: إذا كان لدى المبرمج بالفعل خبرة ترتبط بالمهمة التي بين يديه، فيمكنه الاعتماد عليها، وإذا لم يكن الأمر كذلك، فيمكنه الاعتماد على خبرة "زملائه".

بعد ذلك، عليك أن تفهم أن التخطيط المباشر للمواعيد النهائية هو مهمة يتعامل معها الناس بشكل سيء للغاية، خاصة في مجال التنمية. عند تقدير تواريخ الاستحقاق، يعتبر إدخال "عوامل التعديل" على التقدير الأصلي ممارسة جيدة. يمكن أن يتراوح هذا المقياس من 1.5 إلى 3، اعتمادًا على خبرة المطور ومجموع درجات عدم اليقين بشأن المهام التي يتم حلها داخل المشروع.

ترقية التخفيض

من المهم مراعاة العديد من العوامل عند تحديد المواعيد النهائية.

على سبيل المثال، الخبرة في العمل. ما مدى وضوح فهمك لنطاق العمل الذي ينتظرك؟ هل فعلت شيئا مثل هذا من قبل؟ ومن الواضح أنه كلما زادت الخبرة، كلما تم إنجاز العمل بشكل أسرع.

تلعب المواصفات الفنية المكتوبة جيدًا دورًا مهمًا في تحديد المواعيد النهائية. الأمور صعبة للغاية مع هذا في منطقتنا. في كثير من الأحيان العميل نفسه لا يعرف ماذا يريد، لذلك أنصحك بقضاء يوم أو يومين إضافيين، لكن احصل على فكرة واضحة من العميل عن النتيجة المرجوة. ومن المهم أن يكون هذا التفاهم متبادلا. وفقط بعد ذلك يمكنك البدء في التفاوض على المبلغ والشروط.

أيضًا، قم دائمًا بتضمين المخاطر. للمبتدئين، أوصي بضرب الوقت المقدر للانتهاء بمقدار اثنين. بعد كل شيء، من الأفضل تسليم المشروع قبل الموعد المحدد والنمو كمتخصص في نظر العميل، بدلاً من تسليمه لاحقًا وتدمير سمعتك.

ترقية التخفيض

التوصية العامة هي أن المطور يحتاج إلى تعلم كيفية تحليل المهام بشكل صحيح، والبحث دائمًا عن المخاطر المحتملة، والاعتماد على تجربته الخاصة ولا تنس تحذير العملاء والزملاء في الوقت المناسب إذا تعذر حل المهمة خلال الوقت المحدد إطار.

إن بناء خطة واضحة أصعب بكثير من تحديد الموعد النهائي لإنجاز مهمة واحدة. في الوقت نفسه، من المهم ليس فقط تسليم المشروع في الوقت المحدد، ولكن أيضًا التأكد من أن النظام الذي تقوم بتطويره يحل مشاكل العمل بشكل صحيح. هنا، يتم مساعدة فرق تكنولوجيا المعلومات من خلال منهجيات تطوير البرمجيات المختلفة: من RUP وMSF إلى SCRUM وتنسيقات Agile الأخرى. إن اختيار الأدوات واسع النطاق للغاية، ويريد العديد من عملائنا أن يفهموا مسبقًا كيف سنعمل معهم في المشروع، وما هي المبادئ التي نلتزم بها.

بالمناسبة، أصبح موضوع Agile اليوم قريبا من كل من الأعمال التجارية وحتى في المشاريع الفردية للقطاع العام، لأن مبادئ هذه المنهجية تجعل من الممكن تنفيذ المشاريع بسرعة كبيرة، وإدارة توقعات العملاء في كل تكرار. على سبيل المثال، في فريق Agile، لا توجد أي مناقشات مطولة مع العميل. انسَ أمر العشرات من الصفحات التي تصف التفاصيل الفنية غير الضرورية، مثل مدى سرعة ظهور القائمة المنسدلة. امنح العميل الفرصة لتجربة إصدار متوسط ​​من النظام، عندها سيكون من الأسهل عليك فهم بعضكما البعض.

يخطط فريق Agile لكل شيء معًا ويحدد المستوى الأمثل من العمل المطلوب لحل مشكلة معينة. على سبيل المثال، إحدى التقنيات تسمى "تخطيط البوكر"، حيث يقدم كل مشارك دون الكشف عن هويته تقييمه لتكاليف العمالة المطلوبة لمهمة محددة. بعد ذلك يقوم الفريق بتحديد متوسط ​​وزن المهمة بنقاط القصة أو ساعات العمل وتوزيع المهام وفق مبدأ “من يحب ماذا”. في الوقت نفسه، يجتمع الفريق كل يوم في اجتماع مدته 15 دقيقة، حيث يتحدث الجميع في بضع دقائق عن حالة مهامهم الحالية، بما في ذلك الإبلاغ عن أي صعوبات نشأت. يقوم الفريق بإصلاح المشكلة المكتشفة بسرعة، لذلك ينظر العميل إلى المرحلة التالية من عمل المبرمج في أسرع وقت ممكن. لا يؤخر المطورون إنجاز المهام بسبب التردد في إزعاج الفريق مرة أخرى أو المحاولات غير المجدية لحل المشكلة بأنفسهم، مما يؤدي إلى إضاعة الوقت الثمين. بالمناسبة، في مثل هذه الحالات المصغرة، لدى المطورين الرغبة في إظهار أفضل ما لديهم، لإظهار أنك تتعامل مع عملك بمسؤولية. إنه يحفز حقا والانضباط الذاتي.

النسخة المحولة من الخوارزمية السابقة هي أقصر خوارزمية وقت التنفيذ المتبقية. وفقًا لهذه الخوارزمية، يختار المجدول العملية ذات أقصر وقت تنفيذ متبقي في كل مرة. وفي هذه الحالة، من الضروري أيضًا معرفة وقت إنجاز المهمة مسبقًا. عند وصول مهمة جديدة، تتم مقارنة إجمالي وقت تنفيذها مع وقت التنفيذ المتبقي للمهمة الحالية. إذا كان وقت تنفيذ المهمة الجديدة أقصر، فسيتم تعليق العملية الحالية ونقل التحكم إلى المهمة الجديدة. يتيح لك هذا المخطط خدمة الطلبات القصيرة بسرعة.

التخطيط على ثلاثة مستويات

تتيح أنظمة معالجة الدفعات جدولة ثلاثية المستويات، كما هو موضح في الشكل. عند وصول مهام جديدة إلى النظام، يتم وضعها أولاً في قائمة انتظار مخزنة على القرص. مدخل جدولة الوصول يختار مهمة وينقلها إلى النظام. تبقى المهام المتبقية في قائمة الانتظار.

بمجرد دخول المهمة إلى النظام، سيتم إنشاء عملية مقابلة لها، ويمكن أن تبدأ على الفور في التنافس للوصول إلى المعالج. ومع ذلك، من الممكن أن يكون هناك عدد كبير جدًا من العمليات ولا تتناسب جميعها مع الذاكرة، ومن ثم سيتم ترحيل بعضها إلى القرص. يحدد المستوى الثاني من الجدولة العمليات التي يمكن تخزينها في الذاكرة والعمليات التي يمكن تخزينها على القرص. وهذا هو ما يفعله جدولة الذاكرة .

يقوم برنامج جدولة الذاكرة بشكل دوري بفحص العمليات الموجودة على القرص لتحديد العمليات التي سيتم نقلها إلى الذاكرة. ومن بين المعايير التي يستخدمها المجدول ما يلي:

1. كم من الوقت مضى منذ أن تم تبديل العملية إلى القرص أو تحميلها من القرص؟

2. ما المدة التي استغرقتها العملية باستخدام وحدة المعالجة المركزية؟

3. ما هو حجم العملية (العمليات الصغيرة لا تتداخل)؟

4. ما أهمية العملية؟

مستوى الجدولة الثالث مسؤول عن السماح للعمليات في حالة الاستعداد بالوصول إلى المعالج. عندما نتحدث عن "المجدول"، فإننا نعني عادة جدولة وحدة المعالجة المركزية . يستخدم هذا المجدول أي خوارزمية مناسبة للموقف، سواء مع انقطاع أو بدونه. لقد اطلعنا بالفعل على بعض هذه الخوارزميات، وسنتعرف على البعض الآخر لاحقًا.

التخطيط في النظم التفاعلية.

التخطيط الدوري.

واحدة من أقدم وأبسط وأعدل وأكثر استخدامًا هي خوارزمية الجدولة الدورية. يتم منح كل عملية مقدارًا معينًا من وقت المعالج، وهو ما يسمى بالشريحة الزمنية. إذا كانت العملية لا تزال قيد التشغيل في نهاية الشريحة الزمنية، فسيتم إنهاؤها ونقل التحكم إلى عملية أخرى. بالطبع، إذا تم حظر العملية أو إنهاؤها مبكرًا، يحدث انتقال التحكم في هذه المرحلة. تنفيذ جدولة جولة روبن بسيط. يحتاج المجدول فقط إلى الاحتفاظ بقائمة العمليات في حالة الاستعداد. عندما تصل العملية إلى الحد الزمني المحدد لها، يتم إرسالها إلى نهاية القائمة.

الجانب الوحيد المثير للاهتمام في هذه الخوارزمية هو طول الكم. يستغرق التبديل من عملية إلى أخرى بعض الوقت - من الضروري حفظ وتحميل السجلات وخرائط الذاكرة، وتحديث الجداول والقوائم، وحفظ ذاكرة التخزين المؤقت وإعادة تحميلها، وما إلى ذلك. ويمكن صياغة الاستنتاج على النحو التالي: كمية صغيرة جدًا ستؤدي إلى للتبديل المتكرر للعمليات وكفاءة صغيرة، ولكن الكم الكبير جدًا يمكن أن يؤدي إلى استجابة بطيئة للطلبات التفاعلية القصيرة. غالبًا ما تكون القيمة الكمية التي تبلغ حوالي 2 0 -5 0 مللي ثانية بمثابة حل وسط معقول.

تخطيط الأولويات.

تتضمن جدولة جولة روبن افتراضًا مهمًا وهو أن جميع العمليات متساوية. في حالة وجود جهاز كمبيوتر به عدد كبير من المستخدمين، قد لا يكون هذا هو الحال. على سبيل المثال، في الجامعة، يجب خدمة العمداء أولاً، ثم الأساتذة والسكرتيرات وعمال النظافة، وبعد ذلك الطلاب فقط. إن الحاجة إلى مراعاة هذه العوامل الخارجية تؤدي إلى تخطيط الأولويات. الفكرة الأساسية بسيطة: يتم تعيين أولوية لكل عملية، ويتم نقل التحكم إلى العملية الجاهزة ذات الأولوية القصوى.

عدة طوابير.

تم تنفيذ إحدى أدوات جدولة الأولوية الأولى في نظام CTSS (نظام تقاسم الوقت المتوافق). كانت المشكلة الرئيسية في نظام CTSS هي أن تبديل العمليات كان بطيئًا للغاية، نظرًا لأن كمبيوتر IBM 7094 يمكنه الاحتفاظ بعملية واحدة فقط في الذاكرة. يعني كل مفتاح إلغاء تحميل العملية الحالية على القرص

وقراءة العملية الجديدة من القرص. وسرعان ما أدرك مطورو CTSS أن الكفاءة ستكون أكبر إذا تم منح العمليات المحدودة بالمعالج شريحة زمنية أكبر مما لو تم إعطاؤها شرائح زمنية صغيرة، ولكن في كثير من الأحيان. من ناحية، سيؤدي ذلك إلى تقليل عدد عمليات النقل من الذاكرة إلى القرص، ومن ناحية أخرى، سيؤدي إلى تدهور وقت الاستجابة، كما رأينا بالفعل.

ونتيجة لذلك، تم تطوير حل مع فئات الأولوية. تم تخصيص كمية واحدة للعمليات في الفئة ذات الأولوية العليا، وتم تخصيص العمليات في الفئة التالية كميتين، وتم تخصيص العمليات في الفئة التالية أربعة كم، وما إلى ذلك. عندما استخدمت العملية كل الوقت المخصص لها، تم نقلها إلى مستوى أقل فصل.

على سبيل المثال، فكر في عملية تحتاج إلى حساب أكثر من 100 كوانتا. أولاً، سيتم إعطاؤه كمًا واحدًا، ثم سيتم ضخه إلى القرص. في المرة القادمة يحصل على 2 كوانتا، ثم 4، 8،16، 32، 64، على الرغم من أنه يستخدم 37 فقط من أصل 64. في هذه الحالة، ستكون هناك حاجة إلى 7 عمليات نقل فقط (بما في ذلك التحميل الأولي) بدلاً من 100 التي ستكون مطلوبة. اللازمة باستخدام خوارزمية round-robin. بالإضافة إلى ذلك، كلما تعمقت في قائمة انتظار الأولوية، ستبدأ العملية بشكل أقل فأقل، مما يمنح وحدة المعالجة المركزية عمليات أقصر.

"أقصر عملية هي العملية التالية"

نظرًا لأن خوارزمية أقصر مهمة أولاً تقلل من متوسط ​​وقت التنفيذ في أنظمة المعالجة المجمعة، فقد يرغب المرء في استخدامها في الأنظمة التفاعلية أيضًا. إلى حد ما هذا ممكن. تتبع العمليات التفاعلية غالبًا نمط "انتظار أمر، تنفيذ أمر، انتظار أمر، تنفيذ أمر..." إذا تعاملت مع تنفيذ كل أمر كمهمة منفصلة، ​​فيمكنك تقليل متوسط ​​الاستجابة الإجمالية الوقت عن طريق تشغيل أقصر مهمة أولا. المشكلة الوحيدة هي

هو فهم أي من عمليات الانتظار هي الأقصر.

تعتمد إحدى الطرق على تقدير طول العملية بناءً على السلوك السابق للعملية. في هذه الحالة، يتم إطلاق العملية ذات أقصر وقت مقدر. لنفترض أن الوقت المتوقع لتنفيذ الأمر هو 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.

بعد ثلاثة أشواط، سينخفض ​​وزن T 0 في التقدير إلى 1/8.

غالبًا ما تسمى طريقة تقدير القيمة التالية في سلسلة من خلال المتوسط ​​​​المرجح للقيمة السابقة والتقدير السابق بالشيخوخة. تنطبق هذه الطريقة في العديد من المواقف التي يكون فيها التقدير من القيم السابقة ضروريًا. أسهل طريقة لتنفيذ الشيخوخة هي عند = 1/2. في كل خطوة تحتاج فقط

أضف قيمة جديدة إلى التقدير الحالي وقسم المبلغ إلى النصف (بالتحويل إلى اليمين بمقدار 1 بت).

تخطيط مضمون.

يتمثل النهج المختلف جوهريًا في التخطيط في تقديم وعود حقيقية للمستخدمين ثم الوفاء بها. إليك وعدًا واحدًا يسهل قوله ويسهل الوفاء به: إذا قمت بمشاركة المعالج مع n من المستخدمين، فستحصل على 1/n من طاقة المعالج.

وفي نظام يعمل فيه مستخدم واحد وعدد n من المعالجات، سيحصل كل معالج على 1/n من دورات المعالج.

للوفاء بهذا الوعد، يجب على النظام تتبع تخصيص وحدة المعالجة المركزية بين العمليات من لحظة إنشاء كل عملية. يقوم النظام بعد ذلك بحساب مقدار موارد وحدة المعالجة المركزية التي يحق للعملية الحصول عليها، مثل الوقت منذ الإنشاء مقسومًا على n. يمكننا الآن حساب نسبة الوقت الممنوح للعملية إلى الوقت المستحق لها. القيمة الناتجة 0.5 تعني أن العملية تلقت نصف المبلغ المخصص لها فقط، و2.0 تعني أن العملية تلقت ضعف ما كان من المفترض أن تحصل عليه. ثم تبدأ العملية ذات النسبة الأصغر حتى

ولن تصبح أكبر من جارتها الأقرب.

تخطيط اليانصيب.

تعتمد الخوارزمية على توزيع تذاكر اليانصيب على العمليات للوصول إلى الموارد المختلفة، بما في ذلك المعالج. عندما يحتاج المخطط إلى اتخاذ قرار، يتم اختيار تذكرة اليانصيب بشكل عشوائي ويتمكن مالكها من الوصول إلى المورد. فيما يتعلق بالوصول إلى وحدة المعالجة المركزية، يمكن أن يحدث "اليانصيب" 50 مرة في الثانية، حيث يحصل الفائز على 20 مللي ثانية من وقت وحدة المعالجة المركزية.

يمكن منح العمليات الأكثر أهمية تذاكر إضافية لزيادة احتمالية الفوز. إذا كان هناك 100 تذكرة فقط و20 منها في عملية واحدة، فستحصل على 20% من وقت المعالجة. على عكس برنامج جدولة الأولوية، حيث يكون من الصعب جدًا تقييم ما تعنيه الأولوية 40 على سبيل المثال، فإن كل شيء واضح في جدولة اليانصيب. ستتلقى كل عملية نسبة مئوية من الموارد تساوي تقريبًا نسبة التذاكر التي تمتلكها.

تخطيط اليانصيب له العديد من الخصائص المثيرة للاهتمام. على سبيل المثال، إذا تلقت عملية ما عدة تذاكر أثناء الإنشاء، فإن فرص فوزها في اليانصيب التالي تتناسب مع عدد التذاكر.

يمكن لعمليات التواصل تبادل التذاكر إذا لزم الأمر. لذلك، إذا أرسلت عملية عميل رسالة إلى عملية خادم ثم قامت بحظرها، فيمكنها تمرير جميع تذاكرها إلى عملية الخادم لزيادة فرصة بدء الخادم. عند انتهاء عملية الخادم، يمكنه إرجاع جميع التذاكر مرة أخرى.

التخطيط العادل.

لقد افترضنا حتى الآن أن كل عملية يتم التحكم فيها بشكل مستقل عن هوية مالكها. لذلك، إذا قام المستخدم 1 بإنشاء 9 عمليات، والمستخدم 2 - 1 عملية، ثم باستخدام جدولة دائرية أو في حالة تساوي الأولويات، سيحصل المستخدم 1 على 90% من المعالج، والمستخدم 2 على 10 فقط.

ولتجنب مثل هذه المواقف، تقوم بعض الأنظمة بالانتباه إلى صاحب العملية قبل جدولتها. في هذا النموذج، يحصل كل مستخدم على حصة معينة من المعالج، ويقوم المجدول باختيار العملية وفقًا لهذه الحقيقة. إذا كان في مثالنا كل مستخدم لديه

وعدوا بـ 50% من المعالج، ثم سيحصلون على 50% من المعالج، بغض النظر عن عدد العمليات.

التخطيط في أنظمة الوقت الحقيقي.

في أنظمة الوقت الحقيقي، يلعب الوقت دورًا أساسيًا. في أغلب الأحيان، يقوم واحد أو أكثر من الأجهزة المادية الخارجية بتوليد إشارات الإدخال، ويجب أن يستجيب الكمبيوتر لها بشكل مناسب خلال فترة زمنية معينة.

وتنقسم أنظمة الوقت الحقيقي إلى أنظمة الوقت الحقيقي الصعبة مما يعني وجود مواعيد نهائية صارمة لكل مهمة (يجب الوفاء بها)، و أنظمة مرنة في الوقت الحقيقي ، حيث تكون انتهاكات الجدول الزمني غير مرغوب فيها ولكنها مقبولة. وفي كلتا الحالتين، ينقسم البرنامج إلى عدة عمليات، كل منها يمكن التنبؤ بها. غالبًا ما تكون هذه العمليات قصيرة وتكتمل عملها خلال ثانية واحدة. عندما تظهر إشارة خارجية، يجب على المخطط التأكد من الحفاظ على الجدول الزمني.

يمكن تقسيم الأحداث الخارجية التي يجب على النظام الاستجابة لها إلى دورية(تحدث على فترات منتظمة) و غير دورية(يحدث بشكل غير متوقع). قد يكون هناك عدة تدفقات دورية للأحداث التي يجب على النظام معالجتها. اعتمادًا على الوقت الذي تستغرقه معالجة كل حدث، قد لا يتمكن النظام من معالجة كافة الأحداث في الوقت المناسب.


معلومات ذات صله.


مقدمة

الغرض من ورشة العمل حول تنظيم الإنتاج هو توسيع وتعميق المعرفة النظرية، وغرس المهارات اللازمة لحل المشاكل الأكثر شيوعًا في الممارسة العملية فيما يتعلق بتنظيم وتخطيط الإنتاج.

تتضمن الورشة مهام الأقسام الرئيسية للدورة. في بداية كل موضوع، يتم تقديم تعليمات منهجية مختصرة ومعلومات نظرية ومشكلات نموذجية مع حلول ومشكلات للحل المستقل.

يتيح لك وجود تعليمات منهجية ومعلومات نظرية مختصرة في كل موضوع استخدام ورشة العمل هذه للتعلم عن بعد.


حساب مدة دورة الإنتاج

تعد مدة دورة الإنتاج بمثابة مؤشر على كفاءة عملية الإنتاج.

دورة الإنتاج– فترة بقاء عناصر العمل في عملية الإنتاج من لحظة إطلاق المواد الخام حتى لحظة إطلاق المنتجات النهائية.

تتكون دورة الإنتاج من ساعات العمل،خلالها يتم إنفاق العمل، و أوقات الاستراحة. يمكن تقسيم الاستراحات، حسب الأسباب التي أدت إليها، إلى:

1) على طبيعيأو تكنولوجية - يتم تحديدها حسب طبيعة المنتج؛

2) التنظيمية(فواصل بين التحولات).

تتكون مدة دورة الإنتاج من المكونات التالية:

دورة T = رتلك + ريأكل + رآر + رك. ك. + رشهر. + رم.تس.

أين رأولئك- وقت العمليات التكنولوجية؛

لا يأكل -وقت العمليات الطبيعية (التجفيف، التبريد، الخ)؛

ر آر -وقت النقل لأشياء العمل.

ر ك. ك. -وقت مراقبة الجودة؛

ر م.س –وقت الرعاية أثناء العمليات الجراحية؛

ر مولودية. -وقت التخزين في المستودعات بين المتاجر؛

(رثلاثة رك. ك. يمكن دمجها مع رشهر).

يعتمد حساب وقت دورة الإنتاج على نوع الإنتاج. في الإنتاج الضخم، يتم تحديد مدة دورة الإنتاج حسب الوقت الذي يكون فيه المنتج في مرحلة الإنتاج، أي.

دورة T = رفي م،

أين رالخامس– الافراج عن السكتة الدماغية.

م- عدد أماكن العمل.

تحت الافراج عن السكتة الدماغيةمن الضروري فهم الفاصل الزمني بين إصدار منتج مصنع واحد والمنتج التالي.

يتم تحديد حد التحرير بواسطة الصيغة

ر في = تيف /V،

أين تيف– الصندوق الفعال لوقت العامل لفترة الفاتورة (الوردية، اليوم، السنة)؛

في– حجم الإنتاج لنفس الفترة (بالوحدات الطبيعية).

مثال: T سم = 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).

الشكل 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 دقائق، والسابعة - لمدة دقيقتين. تحديد كيفية تغير دورة المعالجة لمجموعة من الأجزاء.

5 يتم إعطاء دفعة من الفراغات مكونة من 5 قطع. تمر الدفعة بأربع عمليات: مدة الأولى 10 دقائق، والثانية 20 دقيقة، والثالثة 10 دقائق، والرابعة 30 دقيقة. تحديد مدة الدورة بالطرق التحليلية والرسومية مع الحركة المتسلسلة.

6 يتم إعطاء دفعة من الفراغات مكونة من أربع قطع. تمر الدفعة بأربع عمليات: مدة الأولى 5 دقائق، الثانية 10 دقائق، الثالثة 5 دقائق، الرابعة 15 دقيقة. تحديد مدة الدورة بالطرق التحليلية والرسومية مع الحركة المتوازية.

7 يتم إعطاء دفعة من الفراغات مكونة من 5 قطع. تمر الدفعة بأربع عمليات: مدة الأولى 10 دقائق، والثانية 20 دقيقة، والثالثة 10 دقائق، والرابعة 30 دقيقة. تحديد مدة الدورة بالطرق التحليلية والرسومية للحركة المتوازية التسلسلية.

8 تحديد مدة الدورة التكنولوجية لمعالجة مجموعة من المنتجات مكونة من 180 قطعة. مع المتغيرات المتوازية والمتسلسلة لحركتها. بناء الرسوم البيانية لعملية المعالجة. حجم دفعة النقل هو 30 قطعة. معايير الوقت وعدد الوظائف في العمليات هي كما يلي.