เวลาดำเนินการที่เหลือน้อยที่สุด วิธีเรียนรู้วิธีกำหนดเวลาของงานอย่างถูกต้อง - ผู้เชี่ยวชาญตอบขั้นตอนการคำนวณเวลาที่เหลือ

ทุกสิ่งที่ได้อธิบายไว้ในหลายส่วนก่อนหน้านี้มุ่งเน้นไปที่การทำวิจัยเพิ่มเติมเกี่ยวกับปัญหาของเวลาในกระบวนการที่แท้จริงและในระดับที่น้อยกว่ามากในการใช้งานจริง เพื่อเติมเต็มช่องว่างนี้ให้เราร่างวิธีหนึ่งในการคำนวณเวลาที่เหมาะสมของกระบวนการโดยอาศัยข้อมูลทางสถิติเกี่ยวกับวิวัฒนาการของมัน

พิจารณากระบวนการมิติเดียวซึ่งมีลักษณะเป็นตัวแปรจริง x สมมติว่าการสังเกตพลวัตของกระบวนการดำเนินการในเวลาทางดาราศาสตร์ t ดังนั้น t \u003d t k และ x \u003d x k, k \u003d 1, ... , n เป็นช่วงเวลาการสังเกตคงที่และค่าที่สอดคล้องกันของสถานะของกระบวนการ มีวิธีการทางคณิตศาสตร์หลายวิธีที่ทำให้สามารถสร้างเส้นโค้งที่ผ่านจุด (t k, Xk) หรือเข้าใกล้ด้วยวิธีที่ดีที่สุด ฟังก์ชันที่เป็นผลลัพธ์ x \u003d x (t) ทำให้ในใจเรารู้สึกว่ากระบวนการที่พิจารณาขึ้นอยู่กับการเคลื่อนที่เชิงกลของวัตถุท้องฟ้าดังนั้นสถานะของมันจึงแสดงผ่านเวลาทางดาราศาสตร์ t ข้อสรุปดังกล่าวสามารถนำมาพิจารณาด้วย; หากไม่มีปัญหาใด ๆ เกิดขึ้นอย่างต่อเนื่องเมื่อพยายามคาดเดาแนวทางต่อไปของกระบวนการ สำหรับกระบวนการต่างๆจำนวนมากที่ไม่เกี่ยวข้องโดยตรงกับการเคลื่อนที่เชิงกลของวัตถุท้องฟ้าการคาดการณ์ทางทฤษฎีที่ได้รับโดยใช้ฟังก์ชัน x \u003d x (t) นอกช่วงการสังเกตจะเริ่มเบี่ยงเบนอย่างมีนัยสำคัญจากข้อมูลการทดลองที่ตามมา พวกเขามักจะพยายามอธิบายเหตุผลของความแตกต่างระหว่างทฤษฎีและการทดลองโดยวิธีการประมวลผลที่เลือกไม่สำเร็จ แต่สาระสำคัญของเรื่องอาจไม่อยู่ในนี้

กระบวนการที่น่าสนใจสำหรับเราเกิดขึ้นในจักรวาล แน่นอนเขา "รู้สึก" ถึงผลกระทบของการเคลื่อนไหวของร่างกายสวรรค์ อย่างไรก็ตามผลกระทบนี้อาจกลายเป็น "ไม่เข้มงวด" ไม่ใช่ปัจจัยกำหนด โดยเฉพาะอย่างยิ่งสิ่งนี้สามารถแสดงให้เห็นได้ในความจริงที่ว่าในบางช่วงของการไหลของเวลาทางดาราศาสตร์สถานะของกระบวนการจะไม่เปลี่ยนแปลง ขอให้เราระลึกถึงตัวอย่างที่ให้ไว้ก่อนหน้านี้ด้วยห้องว่างที่ปิดสนิทซึ่งแยกออกจากโลกภายนอก ให้เราปล่อยให้ไลฟ์บินเข้าไปในห้องเพียงคนเดียว ภายในสองสามวันการเปลี่ยนแปลงสถานะของระบบบินในห้องจะขึ้นอยู่กับการเคลื่อนที่ของแมลงวันเนื่องจากไม่สามารถคาดหวังการเปลี่ยนแปลงในสถานะของห้องได้ ในขณะเดียวกันก็ยากที่จะจินตนาการได้ว่าพฤติกรรมของแมลงวันนั้นเชื่อมโยงกับเวลาทางดาราศาสตร์อย่างแน่นหนา

เมื่อพูดนอกเรื่องไปนานแล้วเรามาดูคำอธิบายของอัลกอริทึมเพื่อคำนวณเวลาที่เหมาะสมของกระบวนการ

ในอัลกอริทึมนี้หน่วยของการคำนวณค่าสูงสุดในท้องถิ่นจะถูกเลือกเป็นหน่วยวัดเวลาตามธรรมชาติ นอกจากนี้ยังมีการพิจารณาส่วนที่เป็นไปได้ของสถานะนิ่งของกระบวนการซึ่งตามที่ระบุไว้ก่อนหน้านี้เวลาที่เหมาะสมจะหยุดลง เนื่องจากตัวตนของทั้งสองสถานะสามารถพูดได้เฉพาะภายในขีด จำกัด ของความแม่นยำในการวัดดังนั้นจึงมีการใช้จำนวนบวก e ในอนาคตซึ่งเป็นข้อผิดพลาดในการวัดที่อนุญาต

ดังนั้นข้อมูลอินพุตสำหรับอัลกอริทึมจึงเป็นจำนวนธรรมชาติ n, จำนวนบวก 8, อาร์เรย์ (tk) และ (x k), k \u003d 1, ... , n เพื่อความสะดวกในการเขียนโปรแกรมอัลกอริทึมจะแสดงในรูปแบบของโมดูลที่ดำเนินการตามลำดับสี่โมดูล

โมดูล 1โดยใช้ข้อมูล n, e, tk), (xk) ในกรณีทั่วไปจะสร้างอาร์เรย์ใหม่ 7 \u003d (7+ X \u003d (X t) และอาร์เรย์ประกอบที่เฉพาะเจาะจงมาก P \u003d (?) โดยที่ 1 \u003d 1, ... , t และ t<Сп. Основное назначение этого модуля -- выявление в массиве x k) последовательностей идентичных состояний процесса, сохранение первых элементов в таких последовательностях и удаление всех остальных и, наконец, уменьшение по определенному, правилу исходного интервала наблюдения от t до на сумму тех промежутков времени, в которых процесс протекает стационарно.

โมดูล 1 ประกอบด้วยขั้นตอนต่อไปนี้:

p: \u003d 1, m: \u003d 0, k: \u003d 1

ใน p.p. 1, 2, ตัวนับที่มีค่าเริ่มต้นเฉพาะถูกนำมาใช้:

ใน p.p. 3, 4 ค่าตัวนับเพิ่มขึ้น 1

ตรวจสอบเงื่อนไข k ^ n ถ้าพอใจก็ไปข้อ 6 หรือไปข้อ 11

ตรวจสอบอสมการ x k --x k \u003d e หากมีอยู่ให้ไปที่ข้อ 7 มิฉะนั้นไปที่ข้อ 9

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

ขั้นตอนนี้หมายความว่าหากค่าของ Xk และ Xk 1 ไม่สามารถแยกออกได้ภายในข้อผิดพลาดเวลาทั้งหมดเริ่มจาก tk ลดลงตามจำนวน tki-tk

p \u003d พี กลับไปที่ข้อ 4

ทีวี \u003d t k; X v: \u003d x k; p \u003d p v \u003d 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 \u003d l, ... , m. End.

ให้เราอธิบายความหมายขององค์ประกอบของอาร์เรย์ที่ประกอบ P จากข้อความก่อนหน้านี้ค่าของ pk จะเท่ากับจำนวนขององค์ประกอบเหล่านั้นของอาร์เรย์ (xk) ที่ตามมาทันทีและแตกต่างจาก x pi + ... +, + โดยน้อยกว่า e โปรดทราบด้วยว่า นั่น pi + ... + pm \u003d n

ตัวอย่าง 1. ให้: n \u003d 20, (/ *) \u003d (2, 4, 7, 10, 12, 13, 15, 17, 20, 22, 24, 25,

  • 27, 30, 32, 33, 34, 35, 36) และ (x,) \u003d (4, 4, 6, 6, 6, 3, 2, 4, 3, 3, 3, 2, 2, 4, 5 , 5,
  • 5, 4, 3) ดูรูปที่ 9, ก.

จากโมดูล 1 เราได้ m \u003d 11

(G) \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)

และ (d.) \u003d (2, 4, 1, 1, 1.3, 2, 1.3, 1, 1) ดูรูปที่ 9, ข.

หน่วยที่ 2.ข้อมูลอินพุตเป็นจำนวนธรรมชาติ m เช่นเดียวกับอาร์เรย์ (7+ (X L) \u003d 1, ... , t โมดูลนี้ในอาร์เรย์ (TJ แสดงช่วงเวลา [TM a], 1 \u003d 1 ม. (มล.

ตัวอย่างที่ 2 ค่า m, (T b) และ (X,] ถูกยืมมาจากตัวอย่างก่อนหน้านี้หลังจากเรียกใช้โมดูล 2 เราจะได้ ml \u003d 3, m2 \u003d 8, (U,) \u003d (3, 8, 17), (T *) \u003d (3, 4, 6, 8, 11, 12, 15, 17) ดูรูปที่ 9 ข.

โมดูล 3.ป้อนข้อมูล ml, m2, (TM n), 1 \u003d 1, ... , ml, (T *), / 2 \u003d 1, ... , rn2

โมดูลนี้ออกแบบมาเพื่อสร้างอาร์เรย์ (m (-g) ตามสูตร

โดยที่ TV 6 [TMp, TMn + i]

ตัวแปร m คือเวลาของตัวเองที่สร้างขึ้นโดยการเปลี่ยนแปลงในตัวแปร x การวัดตามธรรมชาติคือหน่วยสูงสุดในท้องถิ่น

ตัวอย่างที่ 3. ข้อมูลเริ่มต้นสำหรับ T 2) เหมือนกับค่า ml, m2 ITM และในตัวอย่าง 2 .. หลังจากการคำนวณที่เหมาะสมเราจะได้ N \u003d (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.33; 1.44;

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

ดังนั้นอัลกอริทึมที่ได้รับการพิจารณาทำให้สามารถพัฒนาแนวคิดของเวลาที่เหมาะสมของกระบวนการโดยอาศัยข้อมูลเกี่ยวกับการเปลี่ยนแปลงสถานะของกระบวนการที่บันทึกไว้ในมาตราส่วนเวลาทางดาราศาสตร์ ค่อนข้างชัดเจนว่าคุณสามารถใช้อัลกอริทึมอื่น ๆ ตามตัวอย่างเช่นในการคำนวณลำดับของ minima ในเครื่องหรือลำดับผสมที่ประกอบด้วย maxima และ minima ในเครื่อง เมื่อประมวลผลข้อมูลการทดลองคุณควรลองใช้ตัวเลือกต่างๆ หากด้วยเหตุผลบางประการผู้ทดลองเลือกใช้เวลาที่เหมาะสมอย่างใดอย่างหนึ่งและได้รับอาร์เรย์ (m4 และ (xk) ในเวลาเดียวกันในขั้นต่อไปเขาควรใช้วิธีการทางคณิตศาสตร์เพื่อประมาณคะแนนการทดลอง (m *, x) เส้นโลกโดยประมาณของกระบวนการ x \u003d x (t) การคาดการณ์เส้นนี้เกินช่วงสังเกตเบื้องต้นเขาสามารถคาดการณ์เกี่ยวกับขั้นตอนต่อไปของกระบวนการได้

เป็นเรื่องที่น่าสนใจที่จะกล่าวถึงการทดลองเชิงคำนวณที่มีวัตถุประสงค์เพื่อประเมินโอกาสในการใช้อัลกอริทึมที่เสนอ ข้อมูลเกี่ยวกับการไหลของแม่น้ำในแต่ละปีได้รับการคัดเลือกเป็นวัสดุทดลอง Vakhsh (ทาจิกิสถาน) เมื่อ 40 ปีก่อน ในช่วงเวลาเดียวกันข้อมูลถูกนำมาใช้เกี่ยวกับพลวัตของ Wolf number ซึ่งเป็นดัชนีอินทิกรัลที่ใช้บ่อยที่สุดของกิจกรรมแสงอาทิตย์ หลังเป็นพื้นฐานสำหรับการพัฒนาเวลาที่เหมาะสมของกระบวนการกิจกรรมแสงอาทิตย์ เมื่อถึงเวลาใหม่ข้อมูลเกี่ยวกับต้นทุนของแม่น้ำถูกเปลี่ยน Vakhsh จากนั้นในช่วงการสังเกตการณ์จะมีการให้การพึ่งพาทางทฤษฎีของอัตราการไหลของน้ำตามฟังก์ชันของเวลาที่เหมาะสมของกิจกรรมแสงอาทิตย์ คุณลักษณะเฉพาะของกำหนดการที่เกิดขึ้นคือพฤติกรรมเกือบเป็นระยะของต้นทุนสูงสุดและต่ำสุด อย่างไรก็ตามต้นทุนไม่คงที่

อัลกอริทึมรุ่นก่อนของสวิตช์เป็นอัลกอริทึมที่เหลือเวลาน้อยที่สุด ตามอัลกอริทึมนี้ตัวกำหนดตารางเวลาจะเลือกกระบวนการที่มีเวลาดำเนินการเหลือน้อยที่สุดในแต่ละครั้ง ในกรณีนี้จำเป็นต้องทราบเวลาดำเนินงานล่วงหน้าด้วย เมื่องานใหม่มาถึงเวลาดำเนินการทั้งหมดจะถูกเปรียบเทียบกับเวลาดำเนินการที่เหลืออยู่ของงานปัจจุบัน ถ้าเวลาดำเนินการของงานใหม่สั้นลงกระบวนการปัจจุบันจะถูกระงับและการควบคุมจะถูกโอนไปยังงานใหม่ โครงร่างนี้ช่วยให้คุณตอบสนองคำขอสั้น ๆ ได้อย่างรวดเร็ว

การวางแผนสามชั้น

ระบบแบทช์ช่วยให้คุณสามารถใช้การวางแผนสามชั้นได้ดังแสดงในรูป เมื่องานใหม่เข้าสู่ระบบงานเหล่านั้นจะถูกวางไว้ในคิวที่จัดเก็บไว้ในดิสก์ก่อน ทางเข้า ผู้วางแผนการเข้าถึง เลือกงานและโอนไปยังระบบ งานที่เหลือยังคงอยู่ในคิว

ทันทีที่งานเข้าสู่ระบบกระบวนการที่เกี่ยวข้องจะถูกสร้างขึ้นและสามารถเข้าสู่การต่อสู้เพื่อเข้าถึงโปรเซสเซอร์ได้ทันที อย่างไรก็ตามสถานการณ์เป็นไปได้เมื่อมีกระบวนการมากเกินไปและทั้งหมดไม่พอดีกับหน่วยความจำดังนั้นบางส่วนจะถูกเพจออกไปยังดิสก์ ระดับที่สองของการจัดกำหนดการเป็นตัวกำหนดว่ากระบวนการใดที่สามารถเก็บไว้ในหน่วยความจำและสามารถจัดเก็บไว้ในดิสก์ เท่านี้ก็เสร็จแล้ว ตัวกำหนดตารางเวลาหน่วยความจำ .

ตัวกำหนดตารางเวลาหน่วยความจำจะดูกระบวนการบนดิสก์เป็นระยะเพื่อตัดสินใจว่าจะย้ายไปยังหน่วยความจำใด เกณฑ์ที่ตัวกำหนดตารางเวลาใช้มีดังต่อไปนี้:

1. นานแค่ไหนแล้วที่กระบวนการล้างลงดิสก์หรือโหลดจากดิสก์?

2. กระบวนการนี้ใช้โปรเซสเซอร์นานแค่ไหน?

3. ขนาดของกระบวนการคืออะไร (กระบวนการขนาดเล็กไม่รบกวน)?

4. กระบวนการมีความสำคัญอย่างไร?

ระดับที่สามของการจัดกำหนดการมีหน้าที่ในการเข้าถึงกระบวนการที่พร้อมใช้งานไปยังโปรเซสเซอร์ เมื่อมีการพูดถึง "นักวางแผน" ก็มักจะ ตัวกำหนดตารางเวลาโปรเซสเซอร์ ... ตัวกำหนดตารางเวลานี้ใช้อัลกอริทึมใด ๆ ที่เหมาะสมกับสถานการณ์โดยมีหรือไม่มีการหยุดชะงัก เราได้พิจารณาอัลกอริทึมเหล่านี้บางส่วนแล้วและเราจะทำความคุ้นเคยกับคนอื่น ๆ

การวางแผนในระบบโต้ตอบ

การวางแผนวงจร

หนึ่งในอัลกอริทึมที่เก่าแก่ที่สุดง่ายที่สุดยุติธรรมที่สุดและใช้บ่อยที่สุดคืออัลกอริทึมการตั้งเวลาแบบวนรอบ แต่ละกระบวนการจะกำหนดช่วงเวลาของโปรเซสเซอร์ที่กำหนดซึ่งเรียกว่าไทม์สไลซ์ หากกระบวนการยังคงทำงานอยู่เมื่อสิ้นสุดส่วนเวลากระบวนการจะถูกขัดจังหวะและการควบคุมจะถูกโอนไปยังกระบวนการอื่น แน่นอนว่าหากกระบวนการปิดกั้นหรือออกก่อนเวลาการเปลี่ยนการควบคุมจะเกิดขึ้นในขณะนั้น การใช้การจัดตารางเวลาแบบ Round-Robin นั้นตรงไปตรงมา ตัวกำหนดตารางเวลาต้องการเพียงเพื่อให้รายการของกระบวนการพร้อมใช้งาน เมื่อกระบวนการหมดเวลาที่ จำกัด กระบวนการจะถูกส่งไปยังจุดสิ้นสุดของรายการ

จุดเดียวที่น่าสนใจของอัลกอริทึมนี้คือความยาวควอนตัม การเปลี่ยนจากกระบวนการหนึ่งไปสู่อีกกระบวนการหนึ่งต้องใช้เวลาพอสมควร - คุณต้องบันทึกและโหลดรีจิสเตอร์และการ์ดหน่วยความจำอัปเดตตารางและรายการบันทึกและโหลดแคชหน่วยความจำใหม่เป็นต้นสรุปได้ดังนี้ควอนตัมที่เล็กเกินไปจะนำไปสู่การสลับกระบวนการบ่อยครั้ง ประสิทธิภาพ แต่ควอนตัมที่มีขนาดใหญ่เกินไปอาจส่งผลให้ตอบสนองต่อข้อความโต้ตอบสั้น ๆ ได้ช้า ค่าควอนตัมประมาณ 2 0-5 0 มิลลิวินาทีมักเป็นการประนีประนอมที่สมเหตุสมผล

การวางแผนลำดับความสำคัญ

อัลกอริธึมการจัดตารางเวลาแบบวัฏจักรมีสมมติฐานที่สำคัญว่ากระบวนการทั้งหมดมีค่าเท่ากัน ในสถานการณ์คอมพิวเตอร์ที่มีผู้ใช้จำนวนมากอาจไม่เป็นเช่นนั้น ตัวอย่างเช่นที่มหาวิทยาลัยอันดับแรกควรรับใช้คณบดีจากนั้นเป็นศาสตราจารย์เลขานุการพนักงานทำความสะอาดและเฉพาะนักศึกษาเท่านั้น ความจำเป็นในการคำนึงถึงปัจจัยภายนอกดังกล่าวนำไปสู่การวางแผนลำดับความสำคัญ แนวคิดพื้นฐานนั้นง่ายมาก: แต่ละกระบวนการจะถูกกำหนดลำดับความสำคัญและการควบคุมจะถูกโอนไปยังกระบวนการพร้อมรันที่มีลำดับความสำคัญสูงสุด

หลายคิว

ตัวกำหนดตารางเวลาลำดับความสำคัญลำดับแรกถูกนำไปใช้ในระบบแบ่งเวลาที่เข้ากันได้ (CTSS) ปัญหาหลักของระบบ CTSS คือการสลับกระบวนการช้าเกินไปเนื่องจากมีเพียงกระบวนการเดียวในหน่วยความจำของ IBM 7094 สวิตช์แต่ละตัวหมายถึงการทิ้งกระบวนการปัจจุบันไปยังดิสก์

และอ่านกระบวนการใหม่จากดิสก์ นักพัฒนา CTSS ตระหนักได้อย่างรวดเร็วว่าประสิทธิภาพจะสูงขึ้นหากกระบวนการที่ถูก จำกัด โดยโปรเซสเซอร์ได้รับการจัดสรรเวลาที่มากขึ้นกว่าการให้ชิ้นเล็ก ๆ แต่บ่อยครั้ง ในแง่หนึ่งสิ่งนี้จะลดจำนวนการแลกเปลี่ยนจากหน่วยความจำไปยังดิสก์และในอีกด้านหนึ่งจะทำให้เวลาตอบสนองลดลงอย่างที่เราได้เห็นไปแล้ว

ด้วยเหตุนี้จึงมีการพัฒนาโซลูชันที่มีคลาสลำดับความสำคัญ กระบวนการของคลาสที่มีลำดับความสำคัญสูงสุดได้รับการจัดสรรหนึ่งควอนตัมกระบวนการของคลาสถัดไป - ควอนต้าสองควอนตาถัดไป - ควอนต้าสี่ตัวและอื่น ๆ เมื่อกระบวนการใช้เวลาทั้งหมดที่กำหนดไว้มันจะย้ายไปที่คลาสล่าง

ตัวอย่างเช่นพิจารณากระบวนการที่ต้องทำการคำนวณสำหรับ 100 ควอนต้า ขั้นแรกมันจะได้รับหนึ่งควอนตัมจากนั้นจะถูกสูบไปที่ดิสก์ ครั้งต่อไปเขาจะได้รับ 2 ควอนต้าจากนั้นเป็น 4, 8,16, 32, 64 แม้ว่าเขาจะใช้เพียง 37 จาก 64 ในกรณีนี้เขาจะต้องการการถ่ายโอนเพียง 7 ครั้ง (รวมถึงการโหลดครั้งแรก) แทนที่จะเป็น 100 ซึ่งจำเป็นหากใช้อัลกอริทึมแบบวนรอบ นอกจากนี้เมื่อคุณดำดิ่งลงในคิวลำดับความสำคัญกระบวนการจะเริ่มน้อยลงและบ่อยครั้งน้อยลงทำให้โปรเซสเซอร์เหลือกระบวนการที่สั้นลง

"กระบวนการที่สั้นที่สุดคือขั้นตอนต่อไป"

เนื่องจากอัลกอริทึมงานแรกที่สั้นที่สุดช่วยลดเวลาตอบสนองโดยเฉลี่ยในระบบประมวลผลแบบแบตช์เราจึงต้องการใช้ในระบบโต้ตอบเช่นกัน ในระดับหนึ่งสิ่งนี้เป็นไปได้ กระบวนการโต้ตอบส่วนใหญ่มักเป็นไปตามรูปแบบ "กำลังรอคำสั่งเรียกใช้คำสั่งรอคำสั่งเรียกใช้คำสั่ง ... " เมื่อพิจารณาการดำเนินการของแต่ละคำสั่งเป็นงานแยกกันคุณสามารถลดเวลาตอบสนองโดยรวมโดยเฉลี่ยให้เหลือน้อยที่สุดโดยเริ่มงานที่สั้นที่สุดก่อน ปัญหาเดียวคือ

ในการหาว่ากระบวนการใดที่รอดำเนินการสั้นที่สุด

วิธีการหนึ่งขึ้นอยู่กับการประมาณความยาวของกระบวนการตามพฤติกรรมก่อนหน้าของกระบวนการ ขั้นตอนนี้เริ่มต้นด้วยเวลาโดยประมาณที่สั้นที่สุด สมมติว่าเวลาโดยประมาณของการดำเนินการคำสั่งคือ T 0 และเวลาโดยประมาณของการเรียกใช้งานครั้งต่อไปคือ T 1 คุณสามารถปรับปรุงเวลาโดยประมาณได้โดยการหาผลรวมถ่วงน้ำหนักของคูณเหล่านี้ aT 0 + (1 - a) T 1 ด้วยการเลือกค่าที่เหมาะสมสำหรับ a เราสามารถทำให้อัลกอริทึมการประมาณค่าลืมไปได้อย่างรวดเร็วเกี่ยวกับการเปิดตัวก่อนหน้านี้หรือในทางกลับกันจำได้เป็นเวลานาน รับ a \u003d 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

วิธีการประมาณค่าถัดไปในอนุกรมโดยใช้ค่าเฉลี่ยถ่วงน้ำหนักของค่าก่อนหน้าและการประมาณก่อนหน้ามักเรียกว่าอายุ วิธีนี้ใช้ได้ในหลาย ๆ สถานการณ์ที่จำเป็นต้องมีการประเมินจากค่าก่อนหน้า วิธีที่ง่ายที่สุดในการตระหนักถึงความชราคือ a \u003d 1/2 ในทุกขั้นตอนที่คุณต้องการ

เพิ่มค่าใหม่ให้กับค่าประมาณปัจจุบันและลดผลรวมลงครึ่งหนึ่ง (โดยเลื่อนไปทางขวา 1 บิต)

รับประกันการวางแผน

วิธีการที่แตกต่างกันโดยพื้นฐานในการวางแผนคือการให้คำมั่นสัญญาที่แท้จริงกับผู้ใช้แล้วทำให้บรรลุผล นี่คือคำสัญญาหนึ่งที่ทำง่ายและง่ายต่อการปฏิบัติ: หากผู้ใช้ n ใช้โปรเซสเซอร์ร่วมกับคุณคุณจะได้รับพลังโปรเซสเซอร์ 1 / n

และบนระบบที่มีผู้ใช้หนึ่งคนและโปรเซสเซอร์ที่รัน n แต่ละตัวจะได้รับ 1 / n รอบตัวประมวลผล

ในการส่งมอบตามสัญญานี้ระบบจะต้องติดตามการจัดสรร CPU ระหว่างกระบวนการนับจากเวลาที่แต่ละกระบวนการถูกสร้างขึ้น จากนั้นระบบจะคำนวณจำนวนทรัพยากรตัวประมวลผลที่กระบวนการมีสิทธิ์เช่นเวลานับตั้งแต่สร้างหารด้วย n ตอนนี้คุณสามารถคำนวณอัตราส่วนของเวลาที่กำหนดให้กับกระบวนการกับเวลาที่ได้รับสิทธิ์ ค่าผลลัพธ์ 0.5 หมายความว่ามีเพียงครึ่งหนึ่งของสิ่งที่ควรได้รับการจัดสรรให้กับกระบวนการและ 2.0 หมายความว่ากระบวนการได้รับสองเท่าเท่าที่ควร จากนั้นกระบวนการจะเริ่มต้นด้วยอัตราส่วนที่น้อยที่สุดจนถึง

มันจะไม่ใหญ่ไปกว่าเพื่อนบ้านที่ใกล้ที่สุด

การวางแผนลอตเตอรี่

อัลกอริทึมจะขึ้นอยู่กับการแจกจ่ายตั๋วลอตเตอรีไปยังกระบวนการเข้าถึงทรัพยากรต่างๆรวมถึงโปรเซสเซอร์ เมื่อผู้วางแผนจำเป็นต้องตัดสินใจตั๋วลอตเตอรีจะถูกเลือกแบบสุ่มและผู้ถือบัตรจะสามารถเข้าถึงทรัพยากรได้ ในแง่ของการเข้าถึง CPU "ลอตเตอรี" สามารถเกิดขึ้นได้ 50 ครั้งต่อวินาทีและผู้ชนะจะได้รับเวลา CPU 20ms

กระบวนการที่สำคัญกว่าสามารถได้รับตั๋วเพิ่มเติมเพื่อเพิ่มโอกาสในการชนะ หากมีเพียง 100 ใบและ 20 ใบในกระบวนการเดียวจะได้รับ 20% ของเวลาประมวลผล ซึ่งแตกต่างจากผู้วางแผนลำดับความสำคัญซึ่งเป็นเรื่องยากมากที่จะประมาณว่าอะไรคือลำดับความสำคัญ 40 หมายถึงในการวางแผนลอตเตอรีทุกอย่างชัดเจน แต่ละกระบวนการจะได้รับเปอร์เซ็นต์ของทรัพยากรโดยประมาณเท่ากับเปอร์เซ็นต์ของตั๋วที่มี

การตั้งเวลาลอตเตอรี่มีคุณสมบัติที่น่าสนใจหลายประการ ตัวอย่างเช่นหากกระบวนการได้รับตั๋วหลายใบระหว่างการสร้างดังนั้นในการจับสลากครั้งต่อไปโอกาสในการชนะจะแปรผันตามจำนวนตั๋ว

กระบวนการโต้ตอบสามารถแลกเปลี่ยนตั๋วได้ตามต้องการ ตัวอย่างเช่นหากกระบวนการไคลเอ็นต์ส่งข้อความไปยังกระบวนการเซิร์ฟเวอร์แล้วบล็อกก็สามารถส่งตั๋วทั้งหมดไปยังกระบวนการเซิร์ฟเวอร์เพื่อเพิ่มโอกาสในการเริ่มต้นเซิร์ฟเวอร์ เมื่อออกจากกระบวนการเซิร์ฟเวอร์ก็สามารถคืนตั๋วทั้งหมดกลับได้

การวางแผนอย่างยุติธรรม

จนถึงตอนนี้เราได้สันนิษฐานว่าแต่ละกระบวนการถูกควบคุมโดยไม่คำนึงว่าใครจะเป็นหัวหน้า ดังนั้นหากผู้ใช้ 1 สร้าง 9 โปรเซสและผู้ใช้ 2 สร้าง 1 โปรเซสจากนั้นใช้การตั้งเวลาแบบวนรอบหรือในกรณีที่มีลำดับความสำคัญเท่ากันผู้ใช้ 1 จะได้รับ 90% ของโปรเซสเซอร์และผู้ใช้ 2 เท่านั้น 10

เพื่อหลีกเลี่ยงสถานการณ์ดังกล่าวระบบบางระบบให้ความสนใจกับเจ้าของกระบวนการก่อนกำหนดเวลา ในรูปแบบดังกล่าวผู้ใช้แต่ละคนจะได้รับส่วนแบ่งของโปรเซสเซอร์และตัวกำหนดตารางเวลาจะเลือกกระบวนการตามข้อเท็จจริงนี้ หากในตัวอย่างของเราผู้ใช้แต่ละคนมี

สัญญา 50% ของโปรเซสเซอร์จะได้รับ 50% ของโปรเซสเซอร์โดยไม่คำนึงถึงจำนวนกระบวนการ

การตั้งเวลาในระบบเรียลไทม์

เวลามีบทบาทสำคัญในระบบเรียลไทม์ บ่อยครั้งที่อุปกรณ์ทางกายภาพภายนอกหนึ่งตัวหรือมากกว่านั้นสร้างสัญญาณอินพุตและคอมพิวเตอร์จะต้องตอบสนองต่ออุปกรณ์เหล่านั้นอย่างเพียงพอภายในระยะเวลาที่กำหนด

ระบบเรียลไทม์แบ่งออกเป็น ระบบเรียลไทม์อย่างหนัก ซึ่งหมายความว่ามีกำหนดเวลาที่แน่นอนสำหรับแต่ละงาน (ต้องปฏิบัติตาม) และ ระบบเรียลไทม์ที่ยืดหยุ่น ซึ่งการละเมิดตารางเวลาเป็นสิ่งที่ไม่พึงปรารถนา แต่ยอมรับได้ ในทั้งสองกรณีโปรแกรมจะแบ่งออกเป็นหลายกระบวนการซึ่งแต่ละกระบวนการสามารถคาดเดาได้ กระบวนการเหล่านี้ส่วนใหญ่มักสั้นและเสร็จสิ้นภายในหนึ่งวินาที เมื่อสัญญาณภายนอกปรากฏขึ้นผู้วางแผนจะต้องแน่ใจว่าเป็นไปตามกำหนดเวลา

เหตุการณ์ภายนอกที่ระบบต้องตอบสนองสามารถแบ่งออกเป็น เป็นระยะ(เกิดขึ้นในช่วงเวลาปกติ) และ ไม่เป็นระยะ(เกิดขึ้นอย่างคาดเดาไม่ได้) อาจมีเหตุการณ์หลายช่วงเวลาที่ระบบต้องดำเนินการ ขึ้นอยู่กับเวลาที่ใช้ในการประมวลผลแต่ละเหตุการณ์ระบบอาจไม่สามารถประมวลผลเหตุการณ์ทั้งหมดได้อย่างทันท่วงที


ข้อมูลที่คล้ายกัน


บทนำ

วัตถุประสงค์ของการประชุมเชิงปฏิบัติการเกี่ยวกับองค์กรการผลิตคือการขยายและเพิ่มพูนความรู้เชิงทฤษฎีเพื่อปลูกฝังทักษะที่จำเป็นในการแก้ปัญหาที่พบบ่อยที่สุดในทางปฏิบัติเกี่ยวกับองค์กรและการวางแผนการผลิต

การประชุมเชิงปฏิบัติการประกอบด้วยงานสำหรับส่วนหลักของหลักสูตร ในตอนต้นของแต่ละหัวข้อจะมีการนำเสนอคำแนะนำเกี่ยวกับระเบียบวิธีและข้อมูลเชิงทฤษฎีโดยย่องานทั่วไปพร้อมโซลูชันและงานสำหรับโซลูชันอิสระจะถูกนำเสนอ

การมีอยู่ในแต่ละหัวข้อของแนวทางและข้อมูลเชิงทฤษฎีโดยย่อช่วยให้คุณสามารถใช้เวิร์กชอปนี้ในหลักสูตรการติดต่อได้


การคำนวณระยะเวลาของรอบการผลิต

ระยะเวลาของวงจรการผลิตทำหน้าที่เป็นตัวบ่งชี้ประสิทธิภาพของกระบวนการผลิต

วงจรการผลิต - ระยะเวลาการอยู่ของวัตถุที่ใช้แรงงานในกระบวนการผลิตตั้งแต่ช่วงเปิดตัววัตถุดิบจนถึงการเปิดตัวผลิตภัณฑ์สำเร็จรูป

วงจรการผลิตประกอบด้วย เวลาทำงาน, ในระหว่างที่ใช้แรงงานและ เวลาพัก... การแบ่งขึ้นอยู่กับสาเหตุที่ทำให้เกิดสามารถแบ่งได้:

1) บน ธรรมชาติ หรือเทคโนโลยี - เนื่องจากลักษณะของผลิตภัณฑ์

2) องค์กร (แบ่งระหว่างกะ)

ระยะเวลาของวงจรการผลิตประกอบด้วยส่วนประกอบต่อไปนี้:

วงจร T \u003d t เหล่านั้น + t การกิน + t tr + t k.k. + t ม. + t m.ts.

ที่ไหน t เหล่านั้น - เวลาของการดำเนินการทางเทคโนโลยี

t กิน -เวลาของกระบวนการทางธรรมชาติ (การทำให้แห้งการทำให้เย็น ฯลฯ );

เสื้อ tr -เวลาขนส่งสิ่งของแรงงาน

t c.c. -เวลาควบคุมคุณภาพ

เสื้อ m.o -เวลานอนระหว่างผ่าตัด

เสื้อ m.ts. -เวลาที่ใช้ในคลังสินค้าระหว่างแผนก

(t สาม t k.k. สามารถใช้ร่วมกับ t ม. โอ).

การคำนวณระยะเวลาของรอบการผลิตขึ้นอยู่กับประเภทของการผลิต ในการผลิตจำนวนมากระยะเวลาของรอบการผลิตจะพิจารณาจากเวลาที่ผลิตภัณฑ์อยู่ในสตรีมเช่น

วงจร T \u003d t ใน M,

ที่ไหน t ใน - รอบการเปิดตัว;

- จำนวนสถานที่ทำงาน

ภายใต้ ชั้นเชิงในการปลดปล่อย ควรเข้าใจช่วงเวลาระหว่างการเปิดตัวผลิตภัณฑ์ที่ผลิตหนึ่งและผลิตภัณฑ์ถัดไป

รอบการปลดปล่อยถูกกำหนดโดยสูตร

เสื้อใน \u003d Teff / V,

ที่ไหน Teff- เงินที่มีผลบังคับใช้ของเวลาของคนงานสำหรับช่วงเวลาการเรียกเก็บเงิน (กะวันปี)

ใน - ปริมาณการผลิตในช่วงเวลาเดียวกัน (ในหน่วยธรรมชาติ)

ตัวอย่าง: T cm \u003d 8 ชั่วโมง \u003d 480 นาที; T เลน \u003d 30 นาที → Teff \u003d 480 - - 30 \u003d 450 นาที

B \u003d 225 ชิ้น; → t h \u003d 450/225 \u003d 2 นาที

ในการผลิตแบบเป็นกลุ่มซึ่งมีการประมวลผลเป็นแบตช์ระยะเวลาของวงจรเทคโนโลยีจะไม่ได้กำหนดตามหน่วยการผลิต แต่สำหรับทั้งชุด ยิ่งไปกว่านั้นขึ้นอยู่กับวิธีการเปิดตัวชุดงานในการผลิตเราจะได้รับรอบเวลาที่แตกต่างกัน มีสามวิธีในการเคลื่อนย้ายผลิตภัณฑ์ในการผลิต: ลำดับขนานและผสม (อนุกรมขนาน)


ผม... เมื่อไหร่ สม่ำเสมอ ชิ้นส่วนที่เคลื่อนไหวแต่ละการดำเนินการที่ตามมาจะเริ่มขึ้นหลังจากส่วนก่อนหน้านี้สิ้นสุดลงเท่านั้น รอบเวลาสำหรับการเคลื่อนที่ตามลำดับของชิ้นส่วนจะเท่ากับ

ที่ไหน n - จำนวนชิ้นส่วนของชุดงานที่กำลังดำเนินการ

ทีชิ้น ผม - อัตราชิ้นเวลาสำหรับการดำเนินการ

- จำนวนงานต่อ ผมการดำเนินการ;

- จำนวนการดำเนินการของกระบวนการทางเทคโนโลยี

ชุดผลิตภัณฑ์ประกอบด้วย 5 ชิ้น แบตช์จะถูกส่งต่อตามลำดับผ่าน 4 การดำเนินการ ระยะเวลาของการดำเนินการครั้งแรก - 10 นาทีครั้งที่สอง - 20 นาทีครั้งที่สาม - 10 นาทีที่สี่ - 30 นาที (รูปที่ 1)

ภาพที่ 1

ที รอบ \u003d ที สุดท้าย \u003d 5 (10 + 20 + 10 + 30) \u003d 350 นาที

การเคลื่อนที่ตามลำดับของชิ้นส่วนมีข้อดีคือช่วยให้อุปกรณ์ทำงานได้โดยไม่ต้องหยุดทำงาน แต่ข้อเสียคือระยะเวลาของวงจรการผลิตในกรณีนี้จะยิ่งใหญ่ที่สุด นอกจากนี้ยังมีการสร้างสต็อกชิ้นส่วนจำนวนมากในสถานที่ทำงานซึ่งต้องใช้พื้นที่การผลิตเพิ่มเติม

II... เมื่อไหร่ ขนาน การเคลื่อนย้ายชุดงานแต่ละชิ้นส่วนจะไม่เกิดความล่าช้าในสถานที่ทำงาน แต่จะโอนทีละชิ้นไปยังการดำเนินการถัดไปทันทีโดยไม่ต้องรอให้การประมวลผลชุดงานทั้งหมดเสร็จ ดังนั้นด้วยการเคลื่อนที่แบบขนานของชุดชิ้นส่วนในแต่ละสถานที่ทำงานการดำเนินการต่างๆจะดำเนินการพร้อมกันในส่วนต่างๆของชุดงานเดียวกัน

ระยะเวลาของการประมวลผลชุดงานที่มีการเคลื่อนไหวแบบขนานของผลิตภัณฑ์ลดลงอย่างมาก:

ดล .

ที่ไหน n - จำนวนชิ้นส่วนใน ชุดโอน (ชุดการขนส่ง) เช่น จำนวนผลิตภัณฑ์พร้อมกันที่ถ่ายโอนจากการดำเนินการหนึ่งไปยังอีก

Dl - วงจรการทำงานที่ยาวที่สุด

ด้วยการเปิดตัวชุดผลิตภัณฑ์แบบคู่ขนานการประมวลผลชิ้นส่วนของชุดงานทั้งหมดจะดำเนินการอย่างต่อเนื่องเฉพาะในสถานที่ทำงานเหล่านั้นที่มีการดำเนินงานที่ยาวนานตามด้วยชิ้นส่วนสั้น ๆ ในกรณีที่การดำเนินการสั้น ๆ ตามยาวเช่น อีกต่อไป (ในตัวอย่างของเราการดำเนินการที่สาม) การดำเนินการเหล่านี้จะดำเนินการเป็นระยะ ๆ เช่น อุปกรณ์ที่ไม่ได้ใช้งาน ในที่นี้ไม่สามารถประมวลผลชุดชิ้นส่วนได้ทันทีโดยไม่มีความล่าช้าเนื่องจากการดำเนินการก่อนหน้านี้ (ยาว) ไม่อนุญาตให้ทำเช่นนี้

ในตัวอย่างของเรา: n= 5, t 1 = 10; t 2 = 20; t 3 = 10; t 4 = 30; จาก= 1.

ที ไอน้ำ \u003d 1 (10 + 20 + 10 + 30) + (5-1) 30 \u003d 70 + 120 \u003d 190 นาที

พิจารณาโครงร่างของการเคลื่อนที่แบบขนานของชิ้นส่วน (รูปที่ 2):

รูปที่ 2

สาม... หากต้องการกำจัดการหยุดชะงักในการประมวลผลของแต่ละส่วนของชุดงานในการดำเนินการทั้งหมดให้ใช้ ขนานอนุกรมหรือ ผสมวิธีการเริ่มต้นซึ่งชิ้นส่วน (หลังการประมวลผล) จะถูกโอนไปยังการดำเนินการถัดไปทีละชิ้นหรือในรูปแบบของงานค้าง "การขนส่ง" (ชิ้นละหลายชิ้น) เพื่อให้การดำเนินการดำเนินการไม่ถูกขัดจังหวะในที่ทำงานใด ๆ ในวิธีผสมความต่อเนื่องของการประมวลผลจะถูกนำมาจากวิธีการตามลำดับและจากวิธีการแบบขนานการเปลี่ยนชิ้นส่วนจากการดำเนินการไปเป็นการดำเนินการทันทีหลังจากการประมวลผล ด้วยวิธีผสมในการเปิดตัวสู่การผลิตรอบเวลาจะถูกกำหนดโดยสูตร

คร .

ที่ไหนคร. - รอบการทำงานที่สั้นที่สุด (จากการดำเนินการที่อยู่ติดกันแต่ละคู่)

-1 จำนวนการจัดตำแหน่ง

หากการดำเนินการที่ตามมายาวกว่าการดำเนินการก่อนหน้านี้หรือเท่ากับการดำเนินการตามเวลาการดำเนินการนี้จะเริ่มต้นทีละรายการทันทีหลังจากประมวลผลส่วนแรกในการดำเนินการก่อนหน้านี้ หากในทางตรงกันข้ามการดำเนินการที่ตามมาสั้นกว่าการทำงานก่อนหน้านี้แสดงว่ามีช่องว่างในการส่งชิ้นส่วน เพื่อป้องกันไม่ให้มีความจำเป็นต้องสะสมปริมาณสำรองในการขนส่งซึ่งเพียงพอที่จะมั่นใจได้ว่าจะมีการทำงานในการดำเนินการในภายหลัง ในการหาจุดนี้บนกราฟในทางปฏิบัติจำเป็นต้องถ่ายโอนรายละเอียดสุดท้ายของแบทช์และเลื่อนระยะเวลาของการดำเนินการไปทางขวา เวลาในการประมวลผลสำหรับส่วนอื่น ๆ ทั้งหมดของชุดงานจะแสดงไว้ทางด้านซ้าย จุดเริ่มต้นของการประมวลผลส่วนแรกจะแสดงช่วงเวลาที่ควรโอนย้ายการสำรองจากการดำเนินการก่อนหน้านี้

หากการดำเนินการที่อยู่ติดกันมีระยะเวลาเท่ากันจะมีเพียงหนึ่งการดำเนินการที่สั้นหรือยาว (รูปที่ 3)

รูปที่ 3

ที คู่สุดท้าย \u003d 5 (10 + 20 + 10 + 30) - (5-1) (10 + 10 + 10) \u003d 350-120 \u003d 230 นาที

วิธีหลักในการลดระยะเวลาของวงจรการผลิตคือ:

1) การลดความเข้มของแรงงานในการผลิตผลิตภัณฑ์โดยการปรับปรุงความสามารถในการผลิตของโครงสร้างที่ผลิตโดยใช้คอมพิวเตอร์แนะนำกระบวนการทางเทคโนโลยีขั้นสูง

2) การจัดระเบียบกระบวนการแรงงานอย่างมีเหตุผลการจัดเตรียมและการบำรุงรักษาสถานที่ทำงานบนพื้นฐานของความเชี่ยวชาญและความร่วมมือการใช้เครื่องจักรกลและระบบอัตโนมัติในการผลิต

3) การลดการหยุดพักตามแผนและไม่ได้วางแผนต่างๆในการทำงานโดยอาศัยการใช้หลักการขององค์กรทางวิทยาศาสตร์ของกระบวนการผลิตอย่างมีเหตุผล

4) การเร่งความเร็วของปฏิกิริยาอันเป็นผลมาจากการเพิ่มความดันอุณหภูมิการเปลี่ยนไปใช้กระบวนการต่อเนื่อง ฯลฯ

5) การปรับปรุงกระบวนการขนส่งคลังสินค้าและการควบคุมและการจัดเวลาให้สอดคล้องกับกระบวนการแปรรูปและการประกอบ

การลดระยะเวลาของวงจรการผลิตเป็นหนึ่งในงานที่จริงจังในการจัดระเบียบการผลิตเนื่องจาก ส่งผลต่อการหมุนเวียนของสินทรัพย์หมุนเวียนลดต้นทุนแรงงานลดพื้นที่จัดเก็บความจำเป็นในการขนส่ง ฯลฯ

งาน

1 กำหนดระยะเวลาของรอบการประมวลผลของ 50 ส่วนในประเภทการเคลื่อนที่ตามลำดับขนานและขนานตามลำดับในกระบวนการผลิต การประมวลผลชิ้นส่วนประกอบด้วยการดำเนินการห้าครั้งซึ่งระยะเวลาคือขั้นต่ำตามลำดับ: t 1 =2; t 2 =3; t 3 =4; t 4 =1; t 5 \u003d 3. การดำเนินการที่สองดำเนินการกับเครื่องสองเครื่องและเครื่องอื่น ๆ ในเครื่องเดียว ขนาดของชุดโอนคือ 4 ชิ้น

2 กำหนดระยะเวลาของวงจรการประมวลผลของ 50 ส่วนด้วยประเภทการเคลื่อนที่แบบลำดับขนานและแบบขนานในกระบวนการผลิต การประมวลผลชิ้นส่วนประกอบด้วยการดำเนินการสี่อย่างซึ่งระยะเวลาคือขั้นต่ำตามลำดับ: t 1 =1; t 2 =4; t 3 =2; t 4 \u003d 6. การดำเนินการที่สี่ดำเนินการกับเครื่องสองเครื่องและเครื่องอื่น ๆ ในเครื่องเดียว ขนาดของชุดโอนคือ 5 ชิ้น

3 ชุดชิ้นส่วนจำนวน 200 ชิ้นได้รับการประมวลผลด้วยการเคลื่อนที่ตามลำดับแบบขนานในกระบวนการผลิต การประมวลผลชิ้นส่วนประกอบด้วยการดำเนินการหกครั้งซึ่งระยะเวลาคือขั้นต่ำตามลำดับ: t 1 =8; t 2 =3; t 3 =27; t 4 =6; t 5 =4; t 6 \u003d 20. การดำเนินการที่สามจะดำเนินการในเครื่องสามเครื่องเครื่องที่หกในเครื่องสองเครื่องและการดำเนินการอื่น ๆ ในเครื่องเดียว กำหนดว่ารอบการประมวลผลสำหรับชุดชิ้นส่วนจะเปลี่ยนไปอย่างไรหากตัวแปรการเคลื่อนที่ตามลำดับขนานในการผลิตถูกแทนที่ด้วยแบบขนาน ขนาดของชุดโอนคือ 20 ชิ้น

4 ชุดของ 300 ชิ้นได้รับการประมวลผลในการเคลื่อนที่ตามลำดับแบบขนานในระหว่างกระบวนการผลิต การประมวลผลชิ้นส่วนประกอบด้วยการดำเนินการเจ็ดครั้งซึ่งระยะเวลาคือขั้นต่ำตามลำดับ: t 1 =4; t 2 =5; t 3 =7; t 4 =3; t 5 =4; t 6 =5; t 7 \u003d 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. คุณภาพของรหัสที่จะใช้งานได้ นี่เป็นปัจจัยที่มีอิทธิพลมากที่สุดเนื่องจากทุกอย่างอาจล่าช้ามากและโดยทั่วไปไม่เป็นไปตามแผน หากโครงการมีการทดสอบทุกที่มีเพียงการอ้างอิงที่ชัดเจนและการทำงานถูกแยกออกอย่างดีทุกอย่างไม่น่ากลัว จะแย่กว่านั้นมากถ้าคุณจัดการกับรหัสเดิมโดยไม่มีการทดสอบหรือมีโค้ดมากเกินไปโดยมีการอ้างอิงโดยนัย สิ่งต่างๆเช่น "ฟังก์ชันเวทย์มนตร์" (เมื่อยากที่จะเห็น call stack สุดท้ายจากโค้ด) และการทำซ้ำโค้ด (เมื่อคุณต้องการแก้ไขส่วนที่เป็นอิสระหลาย ๆ ส่วนเพื่อเปลี่ยนฟังก์ชันการทำงาน) ก็อาจทำให้เรื่องยุ่งยาก

หากต้องการเรียนรู้วิธีประเมินเวลาในการทำงานอย่างเพียงพอคุณต้องฝึกฝนอย่างต่อเนื่อง ในช่วงเริ่มต้นของงานของฉันฉันได้ทำสิ่งนี้: ฉันประมาณเวลาในการทำงานที่เข้ามาแม้ว่าจะไม่มีใครต้องการก็ตามจากนั้นฉันก็ดูว่าฉันจัดการได้ถูกต้องเพียงใดเพื่อให้ได้ค่าประมาณของฉัน ในกระบวนการทำงานให้เสร็จฉันสังเกตว่าการดำเนินการใดใช้เวลามากกว่า หากมีสิ่งใดเพิ่มขึ้นอย่างมากในระยะนี้ฉันจำช่วงเวลานี้ได้และนำมาพิจารณาในการประเมินครั้งต่อไป

ในการประเมินวัตถุประสงค์ของเวลาที่จำเป็นสำหรับการทำงานอย่างแท้จริงควรเพิ่มระยะขอบเล็กน้อยเพื่อให้ครอบคลุมสถานการณ์ที่เป็นเหตุสุดวิสัย มักจะประมาณเป็นเปอร์เซ็นต์ของความสำเร็จของงานหลัก แต่จะแตกต่างกันสำหรับทุกคน: มีคนเพิ่ม 20% ของเวลาบางคน - 10% และบางคน - 50%

นอกจากนี้ยังมีประโยชน์ในการวิเคราะห์สาเหตุของการพลาดกำหนดเวลาหลังจากการละเมิดกำหนดเวลาที่สำคัญแต่ละครั้ง หากคุณมีคุณสมบัติไม่เพียงพอคุณจำเป็นต้องแก้ไขจุดอ่อนของคุณ หากปัญหาเกิดจากองค์กร - เพื่อทำความเข้าใจว่าอะไรที่ขัดขวางการทำงานปกติ

เลื่อนระดับล่าง

, ผู้อำนวยการด้านเทคนิคของศูนย์นวัตกรรมเทคโนโลยีและโซลูชั่น "Jet Infosystems"

บทความจำนวนมากอุทิศให้กับวิธีการประเมินความซับซ้อนของโครงการรวมถึงระยะเวลาของงานและงานแต่ละงาน อย่างไรก็ตามนี่ยังคงเป็นสาเหตุของความขัดแย้งทั้งภายในทีมโครงการและเมื่อสื่อสารกับลูกค้า

ผู้ช่วยหลักในการประเมินคือประสบการณ์ พยายามเชื่อมโยงงานใหม่กับงานที่เสร็จสมบูรณ์แล้ว หากคุณกำลังทำรายงานโปรดดูว่ารายงานที่คล้ายกันในอดีตใช้เวลานานเพียงใด หากคุณกำลังทำสิ่งใหม่ ๆ ให้ลองแบ่งออกเป็นชิ้นส่วนที่รู้จักและชื่นชมสิ่งเหล่านั้น หากงานใหม่ทั้งหมดให้ใช้เวลาศึกษาสักระยะ (ดีกว่า - ประสานงานเวลานี้กับผู้กำหนดงาน)

ให้ความสนใจกับขั้นตอนต่อไปนี้ - หากคุณต้องการพัฒนาบริการการทดสอบหน่วย (และอาจไม่ใช่แค่หน่วย) ต้องรวมอยู่ในการประเมินด้วยการเตรียมข้อมูลการทดสอบจะใช้เวลาพอสมควร พิจารณาการผสานรวมกับบริการอื่น ๆ และอื่น ๆ ใช้เวลาในการแก้ไขจุดบกพร่องที่คุณพบเองหรือด้วยความช่วยเหลือของผู้ทดสอบ อาจเสียเวลาไปกับงานที่ "มองไม่เห็น" เป็นจำนวนมาก ตัวอย่างเช่นมีการประเมินเพื่อการพัฒนาและมีการประเมินสำหรับการทดสอบ แต่การถ่ายโอนสิ่งประดิษฐ์สำหรับการทดสอบสามารถเชื่อมโยงกับการปรับใช้พื้นที่ยืน ดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องจินตนาการถึงกระบวนการทั้งหมดในจิตใจเพื่อไม่ให้พลาดอะไรไป

หลังจากพิจารณาความเข้มของแรงงานแล้วจำเป็นต้องรวมงานใหม่ในปฏิทินโดยไม่ลืมเกี่ยวกับงานและกิจกรรมอื่น ๆ ที่เกิดขึ้นควบคู่กันไป

และอย่าลืมว่าแผนการไม่มีประโยชน์ แต่การวางแผนไม่มีค่า เรียนรู้ที่จะปรับแผนให้ทันเวลาทำให้ทุกคนสนใจและส่งต่ออย่างทันท่วงทีเพื่อไม่ให้ใครเลยกำหนดเวลาที่พลาดไป

เลื่อนระดับล่าง

คำถามที่ไม่สามารถตอบได้ในรูปแบบสั้น ๆ ถ้ามันง่ายก็จะไม่มีปัญหาเรื่องกำหนดเวลาที่ขาดหายไป

เพื่อให้กำหนดเวลาการพัฒนาสามารถคาดเดาได้มากขึ้นก่อนอื่นคุณต้องเข้าใจสาเหตุที่โปรแกรมเมอร์ทำผิดพลาดอยู่ตลอดเวลา

เหตุผลประการแรกคืองานส่วนใหญ่ที่โปรแกรมเมอร์ทำนั้นไม่ซ้ำกันในระดับใดระดับหนึ่ง เป็นไปได้มากว่าโปรแกรมเมอร์จะทำงานดังกล่าวเป็นครั้งแรก เขาไม่รู้ดีพอว่างานนี้จะใช้เวลานานแค่ไหน หากเป็นโปรแกรมเมอร์ที่มีประสบการณ์มั่นคงและต้องทำงานคล้าย ๆ กันการประเมินของเขาจะใกล้เคียงกับความเป็นจริงมากขึ้น

หากต้องการใช้การเปรียบเทียบแบบง่าย ๆ หากคุณไม่เคยขุดคูน้ำมาก่อนคุณจะไม่สามารถบอกได้ว่าจะใช้เวลานานเท่าใดในการขุดคูน้ำกว้าง 30 ซม. ลึก 60 ซม. และยาว 20 เมตร หากคุณเคยขุดมาก่อนเวลาทำงานโดยประมาณของคุณจะใกล้เคียงกับระยะเวลาทำงานจริงมากขึ้น

เหตุผลประการที่สองคือโปรแกรมเมอร์มองโลกในแง่ดีโดยเนื้อแท้ นั่นคือการพิจารณางานการเลือกตัวเลือกการใช้งานการประเมินการปรับปรุงนักพัฒนาคาดว่าทุกอย่างจะทำงานได้ตามที่เขาคาดหวัง และเขาไม่คิดถึงปัญหาที่จะต้องเจอระหว่างทาง บ่อยครั้งที่เขาไม่สามารถมองเห็นได้ ตัวอย่างเช่นมีงานที่โปรแกรมเมอร์สามารถทำได้โดยใช้ไลบรารีซอฟต์แวร์โอเพนซอร์สของ บริษัท อื่น ในขั้นตอนการประเมินผลเขาพบมันบนอินเทอร์เน็ตอ่านคำอธิบายมันเหมาะกับเขา และเขายังประเมินขอบเขตงานของเขาอย่างถูกต้องเพื่อสร้างในการใช้ห้องสมุดนี้ แต่เขาไม่ได้คาดการณ์เลยว่าจะมีข้อผิดพลาดเกิดขึ้นในสภาพแวดล้อมของผลิตภัณฑ์ซอฟต์แวร์ของเขาในไลบรารีนี้

นักพัฒนาจะต้องไม่เพียงสร้างการใช้ไลบรารีลงในโค้ดของพวกเขาเท่านั้น แต่ยังต้องแก้ไขข้อผิดพลาดในไลบรารีด้วย และบ่อยครั้งที่นักพัฒนาไม่ได้ให้เวลาในการแก้ไขข้อผิดพลาดของเขา ตามสถิติแสดงให้เห็นว่าการทดสอบและแก้ไขข้อผิดพลาดอาจใช้เวลาประมาณ 50% ของเวลาที่ใช้ในการเขียนโค้ด ตัวเลขขึ้นอยู่กับคุณสมบัติของผู้พัฒนาสภาพแวดล้อมแนวทางปฏิบัติในการพัฒนาที่ใช้ (ตัวอย่างเช่นการทดสอบหน่วยลดเวลานี้ลงอย่างมากและระยะเวลา / ความเข้มแรงงานทั้งหมดของงานพัฒนาน้อยกว่า)

ถ้าเรากลับไปเปรียบเทียบกับรถขุดผู้ขุดไม่ได้คาดหวังว่าพลั่วของเขาจะพังและเขาจะต้องใช้เวลาสองชั่วโมงในการตัดใหม่

เหตุผลประการที่สามคือความต้องการที่คาดไม่ถึง ไม่มีสาขาการผลิตวัสดุใดที่ลูกค้าชอบเปรียบเทียบการพัฒนาซอฟต์แวร์ด้วยข้อกำหนดใหม่ ๆ เช่นนี้ ลองนึกภาพทางเดินของรถขุดที่ขุดได้ 19 เมตรจาก 20 และได้ยินจากลูกค้าว่าคูน้ำไม่ควรเป็นเส้นตรง แต่เหมือนงูที่มีความยาวไหล่ 97 เซนติเมตร

จะจัดการกับเรื่องทั้งหมดนี้อย่างไรและจะอยู่ในสภาพที่ไม่แน่นอนเช่นนี้ได้อย่างไร? ลดความไม่แน่นอนและสร้างเวลาสำรอง

วิธีที่ง่ายที่สุดในการทำให้ความคาดหวังของคุณเข้าใกล้ความเป็นจริงมากขึ้นคือการใช้หลักการง่ายๆ "Pi" หลังจากได้รับการประมาณการจากผู้พัฒนา (ในแง่ของเวลาหรือความเข้มข้นของแรงงาน) คุณต้องคูณด้วยจำนวน Pi (\u003d 3.14159) ยิ่งผู้พัฒนามีประสบการณ์มากขึ้นในการประมาณการค่าสัมประสิทธิ์นี้ก็จะยิ่งต่ำลงเท่านั้น

จำเป็นต้องฝึกการสลายปัญหาดั้งเดิมให้เป็นปัญหาเล็ก ๆ ที่มีขนาดไม่เกิน 4 ชั่วโมง ยิ่งการย่อยสลายมีรายละเอียดมากเท่าใดโอกาสที่ค่าประมาณจะใกล้เคียงกับข้อมูล / ระยะเวลาในการผลิตจริง
หากเรากลับไปที่การจัดสรรเงินสำรอง - เวลานี้ควรได้รับการจัดสรรเมื่อสิ้นสุดโครงการ การสำรองและรวมไว้สำหรับแต่ละงานเป็นการปฏิบัติที่ไม่ดี กฎของพาร์กินสัน "งานเติมเต็มตลอดเวลาที่กำหนดให้" ดำเนินการอย่างเคร่งครัด

หากคุณสรุปสั้น ๆ ว่า "ผลรวม" ดังนั้นเพื่อกำหนดเวลาของงานได้อย่างถูกต้องการดำเนินการต่อไปนี้จะเป็นประโยชน์:

  • ดำเนินการย่อยสลายงานแบ่งงานออกเป็นขั้นตอนโดยละเอียดที่สุด
  • การสร้างต้นแบบ;
  • จำกัด การปฏิบัติตามข้อกำหนดที่คาดไม่ถึงก่อนหน้านี้ นี่ไม่ได้หมายความว่าไม่จำเป็นต้องทำ แต่ขอแนะนำให้เน้นข้อกำหนดเหล่านี้และตกลงกับลูกค้าในการเปลี่ยนระยะเวลาและค่าใช้จ่ายในการดำเนินการ
  • คำนึงถึงเวลาในการรักษาเสถียรภาพของโซลูชัน
  • ใช้แนวทางปฏิบัติเพื่อปรับปรุงคุณภาพของรหัสตัวอย่างเช่นเขียนการทดสอบหน่วย
  • วางสำรองทั่วไป

ดีและจำไว้ว่าหากข้อเท็จจริงเกินกว่าที่คุณคาดไว้ 30% นี่เป็นผลลัพธ์ที่ดีมาก

เลื่อนระดับล่าง

เพื่อการประเมินที่ถูกต้องที่สุดคุณต้องมีประสบการณ์ในการพัฒนาจริงและเฉพาะด้าน แต่มีกฎทั่วไปที่จะช่วยหลีกเลี่ยงความผิดพลาดในการวางแผนและปัญหาเมื่อส่งมอบงานให้กับลูกค้า ฉันจะอธิบายกฎเหล่านี้ดังนี้

ขั้นแรกคุณต้องเข้าใจงาน สิ่งนี้ดูเหมือนจะชัดเจนและไม่เกี่ยวข้องโดยตรงกับเวลา แต่จริงๆแล้วมันเป็นประเด็นสำคัญ แม้ในโครงการขนาดใหญ่ที่ร้ายแรงปัจจัยหลักประการหนึ่งสำหรับความล้มเหลวและความล่าช้าคือปัญหาในการกำหนดข้อกำหนด สำหรับนักพัฒนามือใหม่น่าเสียดายที่ปัญหานี้เป็นปัญหาร้ายแรง - พวกเขาไม่ได้อ่านงานที่มอบหมายทางเทคนิคหรืออ่านและทำความเข้าใจกับมันมากนัก (พวกเขาจดจำและทำคะแนนห้าจากสิบคะแนนให้เสร็จสิ้นและพวกเขาจำส่วนที่เหลือได้เมื่อส่งผลลัพธ์) เป็นที่ชัดเจนว่างานที่เข้าใจผิดไม่สามารถดำเนินการได้อย่างถูกต้องตรงเวลา

ถัดไป - ประมาณเวลาในการพัฒนา ความไม่ชอบมาพากลของการเขียนโปรแกรมคือไม่มีงานที่เหมือนกันอย่างแน่นอน สิ่งนี้ทำให้งานของเราน่าสนใจมากขึ้น แต่ระยะเวลานั้นยากกว่า การสลายตัวทำงานได้ดีที่นี่เช่น แบ่งงานเฉพาะที่ซับซ้อนออกเป็นลำดับของงานย่อยเล็ก ๆ ที่คุ้นเคย และแต่ละรายการสามารถประมาณได้อย่างเพียงพอเป็นชั่วโมง เรารวมค่าประมาณของปัญหาย่อย - และเราได้ค่าประมาณของปัญหาทั้งหมด

โดยปกติค่าประมาณนี้จะรวมเฉพาะค่าใช้จ่ายในการเข้ารหัสจริงเท่านั้น นี่เป็นส่วนสำคัญที่สุดของการพัฒนาอย่างไม่ต้องสงสัย แต่ยังห่างไกลจากสิ่งเดียว (และบ่อยครั้ง - ไม่ใช่ส่วนใหญ่) การดำเนินงานอย่างสมบูรณ์ยังรวมถึงการอ่านและชี้แจง TOR การประชุมกับเพื่อนร่วมงานหรือลูกค้าการดีบักและการทดสอบการจัดทำเอกสารการส่งมอบผลลัพธ์ (การสาธิตให้กับลูกค้าและการแก้ไขที่เป็นไปได้ตามความคิดเห็นของเขา) คุณจะใช้เวลานานแค่ไหนในการกระทำเหล่านี้ประสบการณ์เท่านั้นที่จะบอกได้ ในตอนแรกสิ่งสำคัญอย่างน้อยก็คืออย่าลืมคำนึงถึงเรื่องนี้ในการคำนวณและคุณสามารถสอบถามเวลาโดยประมาณโดยประมาณจากเพื่อนร่วมงานที่มีประสบการณ์มากกว่า

ดังนั้นเราจึงใช้เวลาโดยประมาณในการเขียนโค้ดค่าแรงบวกค่าประมาณของค่าใช้จ่ายของงานเพิ่มเติม - และเราจะได้เวลาโดยประมาณที่ต้องการในการทำงานให้เสร็จ แต่นั่นไม่ใช่ทั้งหมด! จำเป็นต้องระบุวันที่เสร็จสิ้นตามแผนของงาน มันจะเป็นความผิดพลาดที่จะใช้เวลาและหารต้นทุนแรงงาน (เป็นชั่วโมง) เป็นเวลา 8 ชั่วโมงแล้วบวกลงในวันที่ปัจจุบัน ในชีวิตจริงนักพัฒนาไม่เคย (ดีแทบไม่เคย) ทำงาน 100% ของเวลาในงานหนึ่ง ๆ คุณจะใช้เวลากับงานอื่นอย่างแน่นอน - สำคัญ แต่ไม่เกี่ยวข้องโดยตรงกับงานหลัก ตัวอย่างเช่นการช่วยเหลือเพื่อนร่วมงานการฝึกอบรมการเขียนรายงานเป็นต้น โดยปกติแล้วเมื่อวางแผนเชื่อว่า 60-70% ของเวลาทำงานจะใช้ไปกับการทำงานในโครงการปัจจุบันโดยตรง นอกจากนี้คุณต้องคำนึงถึงความล่าช้าที่อาจเกิดขึ้นซึ่งจะทำให้คุณไม่สามารถทำงานได้อย่างต่อเนื่อง ตัวอย่างเช่นหากคุณต้องการมีปฏิสัมพันธ์กับผู้อื่น (เพื่อนร่วมงานลูกค้า) ให้พิจารณาการจ้างงานตารางการทำงาน ฯลฯ

นี่คือกฎพื้นฐานที่ในความคิดของฉันจะช่วยให้นักพัฒนาซอฟต์แวร์หลีกเลี่ยงปัญหาในการประมาณและกำหนดเส้นตาย นอกจากนี้กุญแจสำคัญคือการได้รับประสบการณ์ส่วนตัวทั้งในการปฏิบัติงานและในการประเมิน ตัวอย่างเช่นหลังจากเสร็จสิ้นภารกิจการเปรียบเทียบค่าประมาณเริ่มต้นของคุณกับไทม์ไลน์จริงและสรุปผลในอนาคตจะเป็นประโยชน์มาก และแน่นอนว่าควรค่าแก่การศึกษาประสบการณ์ของคนอื่น ฉันอยากจะแนะนำในหัวข้อของหนังสือโดย S. McConnell "โครงการซอฟต์แวร์ราคาเท่าไหร่" และ S. Arkhipenkov "การบรรยายเกี่ยวกับการจัดการโครงการซอฟต์แวร์"

เลื่อนระดับล่าง

ในการประเมินและวางแผนกำหนดเวลาจำเป็น:

  1. แยกย่อยงานออกเป็นชิ้นงานเล็ก ๆ เพื่อให้มีความเข้าใจชัดเจนว่าจะต้องใช้เวลานานแค่ไหนในการพัฒนาแต่ละชิ้นงาน
  2. ควบคู่ไปกับการสลายตัวคำถามเพิ่มเติมเกี่ยวกับฟังก์ชันการทำงานที่ไม่ได้อธิบายไว้ในคำชี้แจงปัญหาจะเกิดขึ้นอย่างแน่นอน จำเป็นต้องได้รับคำตอบสำหรับคำถามดังกล่าวเนื่องจากสิ่งนี้เกี่ยวข้องโดยตรงกับขอบเขตของงานและดังนั้นเวลา
  3. เพิ่มเปอร์เซ็นต์ของความเสี่ยงในการประเมินขั้นสุดท้าย สิ่งนี้ถูกกำหนดในเชิงประจักษ์ ตัวอย่างเช่นคุณสามารถเริ่มต้นโดยมีความเสี่ยง 10-15%
  4. ทำความเข้าใจว่าโปรแกรมเมอร์เต็มใจจัดสรรงานกี่ชั่วโมงต่อวัน
  5. เราหารค่าประมาณสุดท้ายด้วยจำนวนชั่วโมงที่เราจัดสรรต่อวันและเราจะได้จำนวนวันที่ต้องใช้ในการนำไปใช้งาน
  6. เรามุ่งเน้นไปที่ปฏิทินและจำนวนวันที่ต้องดำเนินการ เราคำนึงถึงวันหยุดสุดสัปดาห์และวันอื่น ๆ ที่โปรแกรมเมอร์ไม่สามารถจัดการกับงานได้ตลอดจนวันที่เริ่มงาน (ผู้พัฒนาไม่พร้อมที่จะรับงานในวันเดียวกันเสมอไป) ดังนั้นเราจึงได้รับวันที่เริ่มต้นและวันที่สิ้นสุดของการทำงาน

เลื่อนระดับล่าง

ใน บริษัท ของเราการวางแผนงานต้องผ่านหลายขั้นตอนเสมอ ในด้านธุรกิจเรากำหนดเป้าหมายเชิงกลยุทธ์ 5-6 เป้าหมายสำหรับปีพ. นี่คืองานระดับสูงตัวอย่างเช่นเพื่อเพิ่มพารามิเตอร์เป็นเปอร์เซ็นต์ที่แน่นอน นอกจากนี้แผนกต่างๆของ บริษัท ยังรวมถึงงานทางธุรกิจสำหรับทีมไอทีทั้งหมด กำหนดเวลาสำหรับงานเหล่านี้จะได้รับการประมาณคร่าวๆเบื้องต้นซึ่งสมาชิกในทีมทุกคนมักเกิดขึ้นไม่ว่าจะเป็นผู้จัดการนักวิเคราะห์นักพัฒนาและผู้ทดสอบ หลังจากได้รับการประเมินแล้วธุรกิจจะจัดลำดับความสำคัญของงานโดยคำนึงถึงเป้าหมายเชิงกลยุทธ์ของ บริษัท เป้าหมายเชิงกลยุทธ์แบบไขว้กันช่วยในเรื่องนี้โดยจะเห็นได้ชัดว่าเราทุกคนทำงานเพื่อสาเหตุทั่วไปไม่มีสถานการณ์เช่นนี้เมื่อมีคนดึงเฉพาะทิศทางของพวกเขา เรารวบรวม sprint จากงานที่ประมาณไว้อย่างแม่นยำ บางทีมมีรายไตรมาสบางทีมมีรายเดือน งานหลายอย่างที่ได้รับการจัดอันดับอย่างไม่แน่นอนในการวิ่งครั้งต่อไปจะได้รับการประเมินอย่างแม่นยำโดยทีม งานขนาดใหญ่แบ่งออกเป็นงานระดับล่างซึ่งแต่ละงานมีหน้าที่รับผิดชอบเฉพาะผู้ทำหน้าที่ให้การประเมินที่ถูกต้อง

ในขั้นตอนนี้สิ่งสำคัญคืออย่าลืมเพิ่มเวลาพิเศษในการแก้ไขข้อบกพร่องเพราะมีเพียงผู้ที่ไม่ทำอะไรเลยเท่านั้นที่ไม่ผิดพลาด ทั้งเจ้าของผลิตภัณฑ์และลูกค้าธุรกิจเข้าใจกันดี ในขณะเดียวกันระยะเวลาที่กำหนดต้องเพียงพอ: ไม่มีใครเข้าใจนักพัฒนาที่กำหนดงานง่ายๆนานเกินไปเขาจะถูกขอให้แสดงเหตุผลในการตัดสินใจ ส่วนที่ยากที่สุดคือการอธิบายให้ธุรกิจเข้าใจว่าเหตุใดจึงต้องใช้เวลาในการ refactor เรารู้สึกขอบคุณ บริษัท ของเราสำหรับความจริงที่ว่าเราประสบความสำเร็จเป็นครั้งคราวเนื่องจากในที่สุดการปรับโครงสร้างใหม่จะนำไปสู่โครงสร้างพื้นฐานที่เบาลงและวางสิ่งต่างๆตามลำดับในโค้ดซึ่งจะเพิ่มความเสถียรของระบบและสามารถเร่งการพัฒนาฟังก์ชันใหม่ ๆ ได้อย่างมาก

บางครั้งเกิดข้อผิดพลาดในการประเมิน ในความคิดของฉันเป็นไปไม่ได้ที่ฝ่ายพัฒนาใน บริษัท ขนาดใหญ่ที่มีโครงสร้างพื้นฐานที่พัฒนาแล้วจะหลีกเลี่ยงสิ่งนี้โดยสิ้นเชิง ในกรณีนี้เป็นสิ่งสำคัญที่นักพัฒนาจะต้องแจ้งผู้จัดการของเขาเกี่ยวกับสิ่งที่เกิดขึ้นในเวลาและในทางกลับกันเขาก็มีเวลาที่จะเตือนธุรกิจและ "เล่นซ้ำ" บางอย่างในแผนทั่วไปของ บริษัท ในโหมดนี้การทำงานจะถูกต้องมากกว่าการพยายามทำอย่างเมามันโดยใช้เวลา 5 วันใน 3 วันจากนั้นก็จมอยู่กับความผิดพลาดจำนวนมากที่เกิดขึ้นเนื่องจากความเร่งรีบ

เลื่อนระดับล่าง

คำตอบที่ถูกต้องสำหรับทั้งสองส่วนของคำถาม [วิธีเรียนรู้วิธีการวางแผนและส่งมอบโครงการให้ตรงเวลา - เอ็ด.] - ประสบการณ์. ไม่มีวิธีอื่นในการ "รู้เซน" ตามทฤษฎีการตัดสินใจการอนุมานที่ถูกต้องสามารถสร้างขึ้นจากการวิเคราะห์ข้อมูลที่มีอยู่แล้วจำนวนหนึ่งเท่านั้น และยิ่งข้อมูลนี้มากเท่าไหร่การคาดการณ์และการประเมินขั้นสุดท้ายก็จะแม่นยำมากขึ้น

ในคำพูดของเฮอร์เบิร์ตชอว์: "ประสบการณ์คือโรงเรียนที่คน ๆ หนึ่งเรียนรู้ว่าเขาเป็นคนโง่มาก่อน" ด้วยเหตุนี้ข้อสรุปที่ค่อนข้างง่าย: หากโปรแกรมเมอร์มีประสบการณ์ที่สัมพันธ์กับงานในมืออยู่แล้วเขาสามารถพึ่งพาประสบการณ์ของ“ เพื่อนร่วมงานในร้าน” ได้หากไม่เป็นเช่นนั้น

นอกจากนี้คุณต้องเข้าใจว่าการจัดกำหนดการโดยตรงเป็นงานที่ผู้คนทำได้ไม่ดีนักโดยเฉพาะอย่างยิ่งในการพัฒนา เป็นแนวทางปฏิบัติที่ดีในการประมาณวันครบกำหนดเพื่อแนะนำ "ปัจจัยแก้ไข" ในประมาณการเดิม เมตริกนี้สามารถเปลี่ยนแปลงได้ในช่วง 1.5 ถึง 3 ขึ้นอยู่กับประสบการณ์ของผู้พัฒนาและจำนวนรวมของระดับความไม่แน่นอนของปัญหาที่แก้ไขภายในโครงการ

เลื่อนระดับล่าง

สิ่งสำคัญคือต้องพิจารณาหลายปัจจัยในการกำหนดระยะเวลา

ตัวอย่างเช่นประสบการณ์การทำงาน คุณจินตนาการถึงขอบเขตของงานที่กำลังจะมาถึงได้ชัดเจนแค่ไหน? คุณเคยทำอะไรแบบนี้มาก่อนหรือไม่? เป็นที่ชัดเจนว่ายิ่งมีประสบการณ์มากขึ้นก็จะทำงานได้เร็วขึ้น

การมอบหมายด้านเทคนิคที่เป็นลายลักษณ์อักษรมีบทบาทสำคัญในการกำหนดกำหนดเวลา ด้วยสิ่งนี้ในพื้นที่ของเราสิ่งต่างๆจึงยากมาก บ่อยครั้งที่ลูกค้าไม่รู้ว่าตัวเองต้องการอะไรดังนั้นฉันแนะนำให้คุณใช้เวลาเพิ่มอีกหนึ่งหรือสองวัน แต่ขอให้ลูกค้าทราบถึงผลลัพธ์ที่ต้องการอย่างชัดเจน สิ่งสำคัญคือมุมมองนี้ต่างตอบแทน และหลังจากนั้นคุณสามารถเริ่มเจรจาจำนวนเงินและเงื่อนไขได้

รวมถึงความเสี่ยงด้วยเสมอ สำหรับผู้เริ่มต้นฉันขอแนะนำให้คูณเวลาดำเนินการโดยประมาณด้วยสอง ท้ายที่สุดควรส่งมอบโครงการก่อนกำหนดและเติบโตในฐานะผู้เชี่ยวชาญในสายตาของลูกค้าแทนที่จะยื่นเรื่องต่อและทำลายชื่อเสียงของคุณ

เลื่อนระดับล่าง

คำแนะนำทั่วไปคือผู้พัฒนาจำเป็นต้องเรียนรู้วิธีการย่อยสลายงานอย่างถูกต้องมองหาข้อผิดพลาดที่อาจเกิดขึ้นอยู่เสมออาศัยประสบการณ์ของตนเองและอย่าลืมเตือนลูกค้าและเพื่อนร่วมงานให้ทันเวลาหากไม่สามารถแก้ไขงานได้ภายในกรอบเวลาที่กำหนด

การสร้างแผนงานที่ชัดเจนนั้นยากกว่าการกำหนดเส้นตายสำหรับงานใดงานหนึ่ง ในขณะเดียวกันสิ่งสำคัญไม่เพียง แต่จะต้องส่งมอบโครงการให้ตรงเวลาเท่านั้น แต่ยังต้องตรวจสอบให้แน่ใจว่าระบบที่คุณพัฒนาขึ้นอย่างถูกต้องสามารถแก้ปัญหาทางธุรกิจ ที่นี่ทีมไอทีได้รับความช่วยเหลือจากวิธีการพัฒนาซอฟต์แวร์ต่างๆ: ตั้งแต่ RUP และ MSF ไปจนถึง SCRUM และรูปแบบ Agile อื่น ๆ ทางเลือกของเครื่องมือมีมากมายและลูกค้าของเราหลายคนต้องการที่จะเข้าใจล่วงหน้าว่าเราจะทำงานร่วมกับพวกเขาอย่างไรในโครงการหลักการใดที่เรายึดมั่น

อย่างไรก็ตามตอนนี้หัวข้อ Agile กำลังใกล้ชิดกับธุรกิจและแม้แต่ในแต่ละโครงการไปจนถึงภาครัฐเนื่องจากหลักการของวิธีการนี้ทำให้สามารถดำเนินโครงการได้อย่างรวดเร็วโดยจัดการความคาดหวังของลูกค้าในการทำซ้ำแต่ละครั้ง ตัวอย่างเช่นในทีม Agile แทบไม่มีการพูดคุยกับลูกค้าเป็นเวลานาน ลืมหลายสิบหน้าที่อธิบายรายละเอียดทางเทคนิคที่ไม่จำเป็นเช่นความเร็วในการแสดงรายการแบบเลื่อนลง เปิดโอกาสให้ลูกค้าได้ทดลองใช้ระบบเวอร์ชันกลางจากนั้นคุณจะทำความเข้าใจกันได้ง่ายขึ้นมาก

ทีม Agile วางแผนทุกอย่างร่วมกันและกำหนดระดับต้นทุนแรงงานที่เหมาะสมที่สุดที่จะต้องใช้ในการแก้ปัญหาเฉพาะ ตัวอย่างเช่นหนึ่งในเทคนิคที่เรียกว่า "Poker Planning" ซึ่งผู้เข้าร่วมแต่ละคนจะประเมินปริมาณงานที่ต้องการสำหรับงานเฉพาะโดยไม่เปิดเผยตัวตน หลังจากนั้นทีมงานจะกำหนดน้ำหนักเฉลี่ยของงานใน Story Point หรือ Man-Hours และกระจายงานตามหลักการ "ใครชอบอะไร" ในขณะเดียวกันทีมจะรวบรวมทุกวันสำหรับการประชุม 15 นาทีเมื่อทุกคนพูดคุยเกี่ยวกับสถานะของงานปัจจุบันของพวกเขาในสองสามนาทีรวมถึงการรายงานปัญหาที่เกิดขึ้น ทีมงานกำจัดปัญหาที่ตรวจพบได้อย่างรวดเร็วดังนั้นลูกค้าจึงมองไปที่ขั้นตอนต่อไปของการทำงานของโปรแกรมเมอร์โดยเร็วที่สุด นักพัฒนาไม่ได้ชะลอกำหนดเวลาในการทำงานให้เสร็จสิ้นเนื่องจากความไม่เต็มใจที่จะดึงทีมอีกครั้งหรือพยายามที่จะคิดออกด้วยตัวเองโดยเปล่าประโยชน์เป็นการฆ่าเวลาอันมีค่า อย่างไรก็ตามด้วยสถานะย่อส่วนดังกล่าวนักพัฒนาจึงมีความปรารถนาที่จะแสดงด้านที่ดีที่สุดเพื่อแสดงให้เห็นว่าคุณมีความรับผิดชอบต่องานของคุณ เป็นแรงจูงใจและวินัยในตนเองจริงๆ

(เวลาจากการทำงานจะไม่ได้รับการสนับสนุนจนกว่าจะถึงวินาทีแรกที่เริ่มดำเนินการกับทรัพยากร) การย่อขนาด ความล่าช้า หรือ เวลาตอบสนอง (เวลาจากการทำงานจะเปิดใช้งานจนกว่าจะเสร็จสิ้นในกรณีของกิจกรรมเป็นระยะหรือจนกว่าระบบจะตอบสนองด้วยมือของผู้ใช้ทางออกแรกในกรณีของกิจกรรมแบบโต้ตอบ) หรือการขยายใหญ่สุด ความยุติธรรม (ระยะเวลาของตัวประมวลผลที่เท่ากันสำหรับแต่ละกระบวนการหรือมากกว่าโดยทั่วไปจุดเวลาที่สอดคล้องกันตามลำดับความสำคัญและปริมาณงานของแต่ละกระบวนการ) ในทางปฏิบัติเป้าหมายเหล่านี้มักจะขัดแย้งกัน (เช่นปริมาณงานเทียบกับเวลาในการตอบสนอง) ดังนั้นตัวกำหนดตารางเวลาจะทำการแลกเปลี่ยนที่เหมาะสม ความพึงพอใจวัดได้จากปัญหาใดปัญหาหนึ่งดังกล่าวข้างต้นขึ้นอยู่กับความต้องการและงานของผู้ใช้

OS / 360 และตัวต่อ

Aix

ใน AIX เวอร์ชัน 4 มีสามความหมายที่เป็นไปได้สำหรับนโยบายการจัดกำหนดการเธรด:

  • อันดับแรกชุดแรกออกมา: หลังจากเธรดที่มีนโยบายนี้ถูกกำหนดเวลาเธรดจะดำเนินการจนเสร็จสิ้นหากไม่ถูกบล็อกจะยกเลิกการควบคุมโปรเซสเซอร์โดยสมัครใจหรือการจัดส่งจะมีลำดับความสำคัญของเธรดสูง เฉพาะสตรีมที่มีลำดับความสำคัญคงที่เท่านั้นที่สามารถมีนโยบายการจัดกำหนดการ FIFO ได้
  • Round Robin: คล้ายกับ AIX Version 3 Scheduler Circuitry ตามไทม์สไลซ์ 10ms เมื่อเธรด PP มีการควบคุมที่ส่วนท้ายของช่วงเวลาเธรดจะย้ายไปยังส่วนท้ายของคิวเธรดที่มีลำดับความสำคัญเท่ากัน เฉพาะเธรดที่มีลำดับความสำคัญคงที่เท่านั้นที่สามารถมีนโยบายการตั้งเวลา Round Robin ได้
  • อื่น ๆ : นโยบายนี้กำหนดโดย POSIX1003.4a ในการนำไปใช้ ใน AIX เวอร์ชัน 4 นโยบายนี้ถูกกำหนดให้เทียบเท่ากับ RR ยกเว้นว่าจะใช้กับเธรดลำดับความสำคัญที่ไม่คงที่ การคำนวณค่าลำดับความสำคัญของเธรดที่กำลังรันต่ออินเทอร์รัปต์ใหม่หมายความว่าเธรดอาจสูญเสียการควบคุมเนื่องจากค่าลำดับความสำคัญสูงกว่าเธรดอื่น นี่คือลักษณะการทำงานของ AIX เวอร์ชัน 3

เธรดเป็นที่สนใจเป็นหลักสำหรับแอปพลิเคชันที่ปัจจุบันประกอบด้วยกระบวนการแบบอะซิงโครนัสหลายกระบวนการ แอพพลิเคชั่นเหล่านี้สามารถกำหนดภาระไฟในระบบได้หากถูกแปลงเป็นโครงสร้างแบบมัลติเธรด

บทความที่คล้ายกัน

2020 choosevoice.ru ธุรกิจของฉัน. การบัญชี. เรื่องราวความสำเร็จ ไอเดีย. เครื่องคิดเลข นิตยสาร.