عملية حساب الوقت المتبقي. أصغر وقت تنفيذ متبقي. المدير الفني لمركز التقنيات والحلول المبتكرة ، Jet Infosystems




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

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

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

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

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

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

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

3. ما هو حجم العملية (العمليات الصغيرة لا تعترض الطريق)؟

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

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

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

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

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

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

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

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

قوائم انتظار متعددة.

تم تنفيذ أحد برامج الجدولة ذات الأولوية الأولى في نظام مشاركة الوقت المتوافق (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 ، نحصل على سلسلة من التقديرات:

T 0، T 0/2 + T 1/2، T 0/4 + T 1/4 + T 2/2، T 0/8 + T 1/8 + T 2/4 + T 3/2.

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

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

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

التخطيط المضمون.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


معلومات مماثلة.


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

OS / 360 والخلفاء

AIX

في الإصدار 4 من AIX ، توجد ثلاث قيم محتملة لسياسة جدولة مؤشر الترابط:

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

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

تنفذ AIX 5 سياسات الجدولة التالية: FIFO و round robin و fair round robin. تتكون سياسة FIFO من ثلاثة تطبيقات مختلفة: FIFO و FIFO2 و FIFO3. تسمى سياسة round robin SCHED_RR على AIX وتسمى سياسة الجولة العادلة SCHED_OTHER.

لينكس

لينكس 2.4

برنامج Brain Fuck Scheduler (BFS) ، الذي أنشأته Kolivas أيضًا ، هو بديل لـ CFS.

فري بي إس دي

يستخدم FreeBSD طابور ملاحظات متعدد المستويات مع أولويات تتراوح من 0-255. 0-63 محجوزة للمقاطعات ، 64-127 للنصف العلوي من النواة ، 128-159 لخيوط المستخدم في الوقت الحقيقي ، 160-223 لسلاسل المستخدم التي تشارك الوقت ، و 224-255 لخيوط المستخدم الخاملة. أيضًا ، مثل Linux ، يستخدم إعداد قائمة انتظار نشط ، ولكنه يحتوي أيضًا على قائمة انتظار خاملة.

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

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

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

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

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

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

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

خفض الترقية

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

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

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

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

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

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

خفض الترقية

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

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

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

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

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

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

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

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

كيف نتعامل مع كل هذا وكيف نعيش في ظروف من عدم اليقين؟ تقليل عدم اليقين وتوفير وقت الفراغ.

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

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

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

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

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

خفض الترقية

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

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

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

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

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

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

خفض الترقية

عند التقييم والجدولة ، من الضروري:

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

خفض الترقية

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

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

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

خفض الترقية

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

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

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

خفض الترقية

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

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

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

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

خفض الترقية

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

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

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

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

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

لننظر إلى عملية أحادية البعد تتميز حالتها بمتغير حقيقي 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،باستخدام البيانات n ، e ، t k) ، (x k) ، في الحالة العامة ، تشكل مصفوفات جديدة 7 = (7+ X = (X t) ومجموعة مصاحبة محددة تمامًا Р = (؟) ، حيث 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 ، ... ، n.

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

ع = ص. ارجع إلى النقطة 4.

تلفزيون = t ك ؛ الخامس عشر: = س ك ؛ p = p 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 ، ... ، أي End.

دعونا نشرح معنى عناصر المصفوفة المصاحبة P. ويترتب على النص السابق أن قيمة pk تساوي عدد عناصر المصفوفة (xk) التي تلي مباشرة وتختلف عن x pi + ... +، + بنسبة أقل من البريد. لاحظ أيضًا أن 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 ، 4 ، 3) ، انظر الشكل. 9 ، أ.

نتيجة لتنفيذ الوحدة 1 ، تم الحصول على م = 11 ،

(د) \ u003d (2 ، 3 ، 4 ، 6 ، 8 ، 11 ، 1-2 ، 15 ، 17 ، 18 ، 19) ؛ (X ،) \ u003d (4 ، 6 ، 3 ، 2 ، 4 ، 3 ، 2، 4، 5، 4، 3)

ش (هـ) = (2، 4، 1، 1، 1،3، 2، 1،3، 1، 1) ، انظر الشكل. 9 ، ب.

الوحدة 2.بيانات الإدخال الخاصة بها هي عدد طبيعي م ، وكذلك المصفوفات (7+ (X L) ، = 1 ، ... ، م. هذه الوحدة في المصفوفة (TJ) تكتشف النقاط الزمنية [TM a] ، 1 = 1 م (مل

مثال 2. تم استعارة القيم m و (Tb) و (X،] من المثال السابق.بعد تنفيذ الوحدة النمطية 2 ، ml = 3 ، m2 = 8 ، (W ،) = (3 ، 8 ، 17) ، (T *) = (3، 4، 6، 8، 11، 12، 15، 17) انظر أيضًا الشكل 9 ب.

الوحدة 3بيانات الإدخال ml، m2، (ТМ n)، 1 = 1، ...، ml، (Г *)، / 2 = 1، ...، r2.

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

أين هو TV 6 [TMP، TMn + i]

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

مثال 3. البيانات الأولية لـ T 2) هي نفس القيم ml و m2 ITM وفي المثال 2.. بعد الحسابات المناسبة ، نحصل على N = (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 ؛ أربعة؛ 3Т 0 2 ؛

وبالتالي ، فإن الخوارزمية المدروسة تجعل من الممكن تطوير مفهوم الوقت المناسب للعملية بناءً على المعلومات المتعلقة بالتغير في حالة العملية المسجلة على مقياس الوقت الفلكي. من الواضح تمامًا أنه يمكن للمرء استخدام خوارزميات أخرى تستند ، على سبيل المثال ، إلى حساب سلسلة من الحدود الدنيا المحلية أو تسلسل مختلط يتكون من الحدود القصوى والصغرى المحلية. عند معالجة البيانات التجريبية ، من المحتمل أن يختبر المرء خيارات مختلفة. إذا اختار المجرب ، لسبب ما ، أحد الأوقات المناسبة المحددة وتلقى المصفوفات (m4 و (xk) ، فيجب عليه في المرحلة التالية استخدام بعض الأساليب الرياضية لتقريب النقاط التجريبية (m * ، x) بعض العالم التقريبي خط العملية x = x (t) من خلال استقراء هذا الخط خارج حدود فترة المراقبة الأولية ، يمكنه إعطاء تنبؤات حول المسار الإضافي للعملية.

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

مقدمة

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

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

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


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

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

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

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

1) في طبيعيأو تكنولوجية - بسبب طبيعة المنتج ؛

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

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

دورة T = رهؤلاء + رأكل + ر tr + رك. + رم. + رم.

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

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

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

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

ر م س -وقت الانتظار البيني

ر م. -الوقت الذي يقضيه في مستودعات intershop ؛

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

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

دورة T = رفي م ،

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

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

تحت السكتة الدماغية العادميجب أن يُفهم على أنه الفترة الزمنية بين إصدار منتج مصنّع واحد والمنتج الذي يليه.

يتم تحديد دورة الإصدار من خلال الصيغة

ر في \ u003d T إف / V ،

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

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

مثال: T cm = 8 ساعات = 480 دقيقة ؛ T حارة = 30 دقيقة ؛ → T إف \ u003d 480 - - 30 \ u003d 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.

تيبخار \ u003d 1 (10 + 20 + 10 + 30) + (5-1) 30 \ u003d 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 قطع. يتم تخطي الدفعة من خلال 4 عمليات: مدة الأولى 10 دقائق ، والثانية 20 دقيقة ، والثالثة 10 دقائق ، والرابعة 30 دقيقة. تحديد مدة الدورة بالطرق التحليلية والرسومية للحركة المتسلسلة.

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

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

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