State Diagram คืออะไร ?

หลักในการเขียน State Diagram

1. จาก Class Diagram ให้ดูว่ามี State Diagram กี่ตัวที่ต้องเขียน  ไม่จำเป็นที่จะต้องเขียน State Diagram ของทุก Function ทุก Class Diagram ในบาง Function ที่ไม่ได้มีกิจกรรมที่ซับซ้อนมากมาย ก็ไม่จำเป็นต้องมีStateDiagram

2. ในแต่ละ Class ให้พิจารณาว่า จะมี State อะไรบ้าง โดยยังไม่ต้องคำนึงว่ามี Function อะไรอยู่บ้าง

3. จาก State ที่มีอยู่ให้เขียน State Diagram ของแต่ละ Function

4. หากพบว่ามี State ใดที่จะต้องเพิ่ม ให้เพิ่มเข้าไป เพื่อทำให้ State Diagram สมบูรณ์ขึ้น

5. ทำข้อ 3 และ 4 จนกว่าจะได้ State Diagram ของ 1 Class ที่สมบูรณ์

6. ทำข้อ 1-5 จนครบทุกๆ Class ใน Class Diagram

ตัวอย่าง การเขียน State Diagram ของ Function ต่างๆ ของ Class “Computer” แสดงได้ดังรูป

จากรูปของ Class Computer เมื่อพิจารณาแล้วพบว่า State ที่ควรจะมีของ Class Computer คือ

Off       (เครื่องปิด)

On               (เครื่องเปิด)

Boot            (เครื่องกำลังเริ่มทำงาน)

Ready         (เครื่องพร้อมทำงาน)

Reading        (อ่านคำสั่งจากหน่วยความจำ)

Sending       (ส่งคำสั่งที่อ่านได้ไปยัง CPU)

Decoding     (ถอดรหัสคำสั่งโดย CPU)

Executing     (ประมวลผลคำสั่งโดย CPU)

Buffering     (เก็บผลลัพธ์จากการประมวลผลไว้ในหน่วยความจำชั่วคราว เพื่อรอการประมวลผลเสร็จสิ้น)

Output            (การแสดง Output ออกทางอุปกรณ์แสดงผลต่างๆ)

Storing Data (การเก็บผลลัพธ์จากการประมวลผลไว้ในหน่วยความจำ)

 

การทำงานของ State Diagram ของแต่ละ Function

Turn On (เปิดเครื่อง)

การเปิดเครื่องคอมพิวเตอร์ เริ่มต้นที่เครื่องคอมพิวเตอร์ที่อยู่ใน State Off ได้รับการเปิด (Switch is turned on) จึงทำให้คอมพิวเตอร์เปลี่ยนไปอยู่ที่ State On และเมื่อเปิดเครื่องเสร็จเรียบร้อย การ Boot จึงเกิดขึ้น            จนทำให้คอมพิวเตอร์มาอยู่ที่ State Boot และเมื่อ Boot เสร็จเรียบร้อยแล้ว เครื่องคอมพิวเตอร์จึงมาอยู่ใน State Ready ซึ่งรอรับคำสั่งและพร้อมจะทำงานต่อไป

Shut Down (ปิดเครื่อง)

ในการปิดเครื่องคอมพิวเตอร์คือ การเปลี่ยน State จาก Ready ซึ่งไม่มีการทำงานใดๆ ไปยัง State Off ซึ่งการจะเปลี่ยน State เช่นนี้ได้ต้องใช้ Transition การปิดเครื่อง (Switch is turned off)

Read Instruction (อ่านคำสั่งจากหน่วยความจำ)

ในการอ่านคำสั่งใดๆ จากหน่วยความจำของคอมพิวเตอร์นั้นจะเริ่มต้นใน State Ready ก่อน เมื่อมีคำสั่งเข้ามาในหน่วยความจำแล้วตาม Transition Instruction Coming คอมพิวเตอร์จะเริ่มเข้าไปยัง State reading    ซึ่งจะอ่านคำสั่งจาก Memory ทีละคำสั่งไปจนกว่าจะเสร็จสิ้น (Reading Complete)       ซึ่งเมื่ออ่านเสร็จแล้ว คอมพิวเตอร์จะส่งคำสั่งที่อ่านได้ไปยัง CPU ดังระบุไว้ใน State Sending และคอมพิวเตอร์จะวนอยู่ใน State นี้                 (ดังจะเห็นจาก Transition Sending not Complete) จนกว่าจะเสร็จสิ้น จึงกลับเข้าไปยัง State Ready

Decode (การถอดรหัสคำสั่ง)

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

Execute (การประมวลผล)

การประมวลผลทางคอมพิวเตอร์จะเริ่มต้นที่ State Ready     เข้าไปยัง State Executing ซึ่งจะวนอยู่ใน State นี้จนกระทั่งคำสั่งถูกประมวลผลเสร็จสิ้น ซึ่งแบ่งออกเป็น 2 แบบคือ การประมวลผลคำสั่งเกี่ยวกับ Memory และการประมวลผลทาง Input/Output ซึ่งการเสร็จสิ้นการประมวลผลทาง Memory นั้นคอมพิวเตอร์จะย้ายกลับไปยัง State Ready ในขณะที่ เมื่อการประมวลทาง Input/Output เสร็จสิ้น คอมพิวเตอร์จะย้ายไป state Buffering ซึ่งเป็นการบันทึกผลการประมวลผลไว้ใน Memory เพื่อรอการนำออกไปยังอุปกรณ์ Output หลังจากที่การทำ Buffering เสร็จเรียบร้อย จะเข้าไปยัง State Output ซึ่งเมื่อเข้าไปยัง State นี้ จะนำผลที่ได้ออกทางอุปกรณ์ และเมื่อการนำข้อมูลออกแสดงทางอุปกรณ์ Output แล้วจึงกลับมาสู่ State Ready ตามเดิม

Store Data (การบันทึกผลลัพธ์สู่หน่วยความจำ)

 การ Store Data เริ่มต้นที่ State Ready แล้วเข้าสู่ State Storing Data ซึ่งจะบันทึกข้อมูลลงใน Memory จนกว่าจะครบถ้วนในทุกๆ หน่วยข้อมูล หลังจากนั้นจึงกลับเข้าสู่ State Ready ตามเดิม

                ข้อควรคำนึงในการเขียน State Diagram ใน Analysis Phase นั้นคือ ต้องเขียน State ให้ครบในภาพรวมทั้งหมดก่อน โดยยังไม่ต้องคำนึงถึงรายละเอียดของแต่ละ State และ Transitionมากนัก แต่ที่สำคัญคือต้องไม่มี State และ Transition ใดตกหล่น หรือหายไป 

***Youtube***

YouTube Preview Image

Cr. statesuwat.hol.es

Kumpon Putthasri
at GlurGeek.Com
นักศึกษาชั้นปีที่ 4 สาขาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยกรุงเทพ
สิ่งที่ชอบเป็นพิเศษ
1.เที่ยว 2.ดูหนัง 3.กิน 4.เล่นเกม 5.เข้าวัดทำบุญ 6.เตะฟุตซอล 7.ถ่ายภาพ

Leave a Reply

© 2022 GlurGeek.Com