State Diagram
State
Diagram อาจเรียกว่า State transition diagram หรือ Harel diagram
(statecharts) State Diagram เป็นแผนภาพใช้แสดงสถานะ(state) ต่างๆ ของ Object ที่เป็นได้ในระหว่างช่วงชีวิต
ในการตอบสนองต่อ เหตุการณ์ (Event) ที่เกิดขึ้น โดยทั่วไปแล้ว State Diagram จะไม่ถูกใช้กับ Class ทั้งหมด แต่จะใช้อธิบายเฉพาะ Class ที่มีความซับซ้อนสูงเท่านั้น เพื่อที่จะช่วยให้การออกแบบ Algorithm ง่ายขึ้น
ตัวอย่าง State Diagram
Stateและ Transition
ในระบบใดๆก็ตาม สิ่งที่เคลื่อนไหวหรือการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นในระบบนั้น เรียกว่า
กิจกรรม (Activity)
ซึ่งกิจกรรมนั้นเกิดขึ้นจาก การที่
Objects ในระบบมีปฏิสัมพันธ์กัน
สิ่งที่ใช้เพื่อบรรยายกิจกรรมโดยรวมที่เกิดขึ้นในระบบก็คือ Sequence Diagram
แต่เมื่อพิจารณาเข้าไปในรายละเอียดของกิจกรรมที่เกิดขึ้นจะพบว่า กิจกรรมโดยรวมของระบบเกิดจากกิจกรรมย่อยของ Object แต่ละตัวรวมกันนั่นเอง
กลไกที่ทำให้ระบบมีกิจกรรมก็คือการรับ/ส่ง Message กิจกรรมที่เกิดขึ้นใน Object นั้น
เกิดจาก 2 สิ่งประกอบกัน
นั่นคือ สถานะ(State) และ การเปลี่ยนสถานะ (Transition) การที่ Object ใด ๆ
เปลี่ยนจาก State ที่ 1
ไปยัง State ที่
2 จะทำให้เกิดกิจกรรม หรือส่วนของกิจกรรมขึ้นในตัว Object นั้น
ดังรูปตัวอย่างของกิจกรรมของหลอดไฟ
รูปแสดงกิจกรรมที่เกิดขึ้นในหลอดไฟโดยใช้ State และ Transition เป็นสื่อในการอธิบาย ดังนี้
- หลอดไฟจะเริ่มต้นกิจกรรมทั้งหมดที่ State หลอดยังไม่ได้ติดตั้ง
- เมื่อได้รับการติดตั้งแล้วหลอดไฟจะอยู่ใน State ปิด
- จากสถานะปิด
เมื่อเกิด Transition Turn on Switch ขึ้น หลอดไฟจะเปลี่ยน State ไปยัง Stateเปิด
- แต่จาก State เปิด เมื่อได้รับ Transition Turn off Switch หลอดไฟจะกลับมายัง State เปิดอีกครั้ง
- หลังจากนั้น
State ของหลอดไฟจะเปลี่ยน State ไปมาระหว่าง State ปิด – เปิด เช่นนี้ต่อไป
สัญลักษณ์ที่ใช้ใน State Diagram
State สถานะของ Object แทนด้วย สี่เหลี่ยมมุมมน
สัญลักษณ์ที่ใช้ใน State Diagram
Transition แทนด้วย
ลูกศร
ลากจาก
state เริ่มต้นไปยัง state ที่ต้องการ
เขียนชื่อ
Event บนลูกศร มีรูปแบบคือ
[Condition]/[Action]
Condition
คือ เงื่อนไขในการเข้าหรือออกจาก state
Action คือ กิจกรรมที่ทำระหว่างการเปลี่ยน state
สัญลักษณ์ที่ใช้ใน State Diagram
Event (เหตุการณ์) หมายถึง
Message หรือ Signal ที่วัตถุได้รับ
Events
อาจจะทำให้สถานะของวัตถุเปลี่ยนแปลง หรือไม่ก็ได้
สัญลักษณ์ที่ใช้ใน State Diagram
จุดเริ่มต้น จุดเริ่มต้นของกิจกรรมต่าง
ๆ ใน state diagram เรียกว่า initial state แทนด้วยวงกลมทึบ
จุดสิ้นสุด จุดสิ้นสุดของกิจกรรมทั้งหมดเรียกว่า
End
state แทนด้วยวงกลมใส ล้อมรอบวงกลมทึบ
การจำลองกิจกรรมภายใน state (Internal
Activity)
ใช้เพื่อระบุรายละเอียดในการทำงานของ
state ต่าง ๆ ให้ชัดเจนขึ้นแบ่งได้เป็น
- กิจกรรมที่ทำเมื่อเข้ามาใน state
(entry/action)
- กิจกรรมที่ทำระหว่างอยู่ใน state (do/action)
- กิจกรรมที่ทำก่อนที่จะออกจาก state (exit/action)
- กิจกรรมที่ทำเมื่อเกิดเงื่อนไขต่างๆ ขึ้น (condition/action)
กิจกรรมที่ทำเมื่อเข้ามาใน state
entry/action
หมายถึง
เมื่อเข้ามายัง state นี้ให้ทำกิจกรรม action
เช่น
entry/count=0
หมายถึง
เมื่อเข้ามายัง state ให้ค่า count เป็น 0
กิจกรรมที่ทำระหว่างอยู่ใน state
do/action
หมายถึง
หลังจากเข้ามายัง state นี้แล้ว หากไม่มีเงื่อนไขอื่นใด ให้ทำกิจกรรม action
เช่น do/count:=count+1
หมายถึง
เมื่อเข้ามายัง state นี้ให้เพิ่มค่า count ทีละ
1
กิจกรรมที่ทำก่อนออกจาก state
exit/action
หมายถึง
ขณะที่จะออกจาก state นี้ให้ทำกิจกรรม action
เช่น exit/show “Good Bye” message
หมายถึง
หากออก state นี้ให้แสดงข้อความ “Good Bye”
กิจกรรมที่ทำเมื่อเกิดเงื่อนไขต่างๆขึ้น
condition/action
หมายถึง ขณะที่ยังอยู่ใน state นี้เมื่อเกิดเงื่อนไขใด
ๆ ที่กำหนดโดย condition ให้ทำกิจกรรม action
เช่น every 2 seconds/phone ring
หมายถึง ทุก ๆ 2
วินาทีให้เสียงโทรศัพท์ดัง 1 ครั้ง
ตัวอย่าง State Diagram การทำงานของลิฟต์
รูปแสดง State Diagram เพื่อจำลองการทำงานของลิฟต์ โดยมีเงื่อนไขว่า
ไม่ว่าลิฟต์จะเคลื่อนที่ไปยังจุดหมายที่ชั้นใดก็ตาม ลิฟต์จะต้องเคลื่อนที่กลับมาอยู่ที่ชั้น 1 ตามเดิม (Idle) State Diagram นี้ อธิบายการทำงานของลิฟต์ได้ดังนี้
- เริ่มต้นที่
Initial State
เมื่อมีการเปิดสวิตช์ของลิฟต์ ลิฟต์จึงเข้าสู่สภาวะหยุดนิ่ง (Idle)
- เมื่อมีคนต้องการที่จะขึ้น (Want Up) ลิฟต์จึงมีการเคลื่อนที่ขึ้น (Go up)
ทำให้ลิฟต์อยู่ในสภาวะเคลื่อนขึ้น (Move Up)
- แต่ถ้ามีคนต้องการที่จะลง (Want Down)
ลิฟต์จึงมีการเคลื่อนที่ลง (Go Down)
ทำให้ลิฟต์อยู่ในสภาวะเคลื่อนลง (Move Down)
- สืบเนื่องจากข้อ 2
และ 3 เมื่อลิฟต์มาถึงชั้นที่ต้องการ (แต่ไม่ใช่ชั้นที่ 1
ซึ่งเป็นชั้นล่างสุด - floor < > 1) ลิฟต์จะอยู่ในสถานะ Reach จนกว่าคนจะลงจากลิฟต์จนหมด จึงเลื่อนลงมา
(Go Down) ที่ชั้นที่
1 แล้วกลับสู่สภาวะ Idle อีกครั้ง
- แต่จากข้อ 3
ถ้าลิฟต์มาถึงชั้นที่ 1 แล้วจะ Idle
ทันที
- เมื่อลิฟต์อยู่ในสภาวะ Idle เมื่อใดก็ตามที่มีการปิดสวิตช์ (Turn Off) กิจกรรมทั้งหมดของลิฟต์จะหยุดทันที (การทำงานมาถึง Final State แล้ว)
นั่นหมายความว่าลิฟต์จะถูกปิดได้ก็ต่อเมื่อลิฟต์อยู่ในสภาวะ Idle เท่านั้น
จากการใช้ Internal Activity เพื่อบรรยายกิจกรรมที่เกิดขึ้นกับ Objects ต่างๆ
ในตัวอย่างที่ผ่านมา
เราสามารถสร้าง State Diagram ที่มี
State ซึ่งมี
Internal Activity ได้ดังรูปต่อไปนี้
State Diagram ที่มี
Internal Activity ในแต่ละ
State สามารถอธิบายได้ดังนี้
State Idle หมายถึง State ของลิฟต์ เมื่อ Lift ยังอยู่ที่ชั้นที่ 1 เข้ามายัง State นี้ ค่า Floor จะถูก Set ไว้ที่ 1 เสมอ
state Move Down หมายถึง State
ของลิฟต์ ที่มีการเคลื่อนที่ลงทีละขั้น โดยเมื่อใดก็ตามที่เข้ามายัง State นี้
ค่า floor จะลดลง ทีละ 1 และ เมื่อใดก็ตามที่ Floor มีค่าเป็น 1
ให้หยุดลิฟต์ทันที ซึ่งการหยุดลิฟต์ที่ floor เท่ากับ
1
นั้นเท่ากับเป็นการบังคับให้ลิฟต์เข้ามาอยู่ในสถานะ Idle โดยปริยาย
State Move Up หมายถึง State ของลิฟต์ ที่มีการเคลื่อนที่ ใดก็ตามที่เข้ามายัง State นี้ ค่า floor จะเพิ่มขึ้นทีละ 1 และ เมื่อใดก็ตามที่ Floor มีค่าเป็น Max ซึ่งหมายถึงลิฟต์อยู่ในชั้น สูงสุด ให้หยุดลิฟต์ทันที
Reach หมายถึง State
ที่ลิฟต์มาถึงยังขั้นที่กำหนด (มีคนต้องขึ้นหรือลงจากลิฟต์) ซึ่งเมื่อใดก็ตามที่เข้ามาถึง State
นี้แล้ว ต้องหยุดลิฟต์ทันที
วัตถุดิบที่นำมาใช้ในการสร้าง State Diagram คือ Class Diagram และ Sequence Diagram Class Diagram จะทำให้เห็นภาพของ Class แต่ละClass และแต่ละ Method ของ Class จะหมายถึง State Diagram หนึ่งชุด
Sequence Diagram จะทำให้เห็นภาพกิจกรรมของ Class
ซึ่งจะใช้เพื่อโต้ตอบกับ Class อื่น ๆ ใน Problem Domain ซึ่งมีส่วนช่วยในการพิจารณาแนวการดำเนินไปของการเปลี่ยน
State ของ Class หนึ่ง ๆ นั่นเอง
หลักในการเขียน State Diagram ให้มีประสิทธิภาพมีดังนี้
- จากClass Diagramให้ดูว่ามี State Diagram กี่ตัวที่ต้องเขียน ซึ่งปกติแล้วจะเท่ากับจำนวน Method ของแต่ละ Class รวมกันแต่อย่างไรก็ตามไม่จำเป็นที่จะต้องเขียน State Diagram ของทุกๆ Method ของทุก ๆClassในบาง Methodที่ไม่ได้มีกิจกรรมที่ซับซ้อนก็ไม่จำเป็นต้องมี
State Diagram
- ในแต่ละClassให้พิจารณาว่าจะมี State อะไรบ้าง(โดยยึดจากหลักการของความเป็นจริง)โดยยังไม่ต้องคำนึงว่ามี Method อะไรอยู่บ้าง
- จาก Stateที่มีอยู่ให้เขียน State Diagramของแต่ละ Method
- หากพบว่ามี
State ใดที่จะต้องเพิ่ม เพื่อทำให้ State Diagram สมบูรณ์ขึ้น ให้เพิ่มเข้าไป
- ทำข้อ 3 และ4 จนกว่าจะได้ State Diagram ของ 1 Class ที่สมบูรณ์
- ทำข้อ 1 – 5 จนครบทุก ๆ ClassในClass Diagram
พิจารณาหลักการเขียน State Diagram
ตัวอย่างการเขียน State Diagram ของ Method ต่างๆของ Class Computerได้ดังต่อไปนี้
Stateที่ควรจะมีของ Class Computer คือ
- Off (เครื่องปิด)
- On (เครื่องเปิด)
- Boot (เครื่องกำลังเริ่มทำงาน)
- Ready (เครื่องพร้อมทำงาน)
- Reading (อ่านคำสั่งจากหน่วยความจำ (Memory) )
- Sending (ส่งคำสั่งที่อ่านได้ไปยัง
CPU)
- Decoding (ถอดรหัสคำสั่งโดย CPU)
- Executing (ประมวลผลคำสั่ง โดย CPU)
- Buffering (เก็บผลลัพธ์จากการประมวลผลไว้ใน Memory
ชั่วคราวเพื่อรอการประมวลผลเสร็จสิ้น)
- Output (การแสดง Output ออกทางอุปกรณ์แสดงผลต่างๆ)
- Storing Data (การเก็บผลลัพธ์จากการประมวลผลไว้ใน Memory
State Diagram ของแต่ละ Method เป็นดังนี้
Read Instruction (อ่านคำสั่งจาก Memory)
ในการอ่านคำสั่งใดๆ
จากMemory ของคอมพิวเตอร์นั้นจะเริ่มต้นใน State Ready ก่อน เมื่อมีคำสั่งเข้ามาใน Memory แล้วตาม 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 (การบันทึกผลลัพธ์สู่ Memory)
การ Store Data เริ่มต้นที่ State Ready แล้วเข้าสู่ State Storing Data ซึ่งจะบันทึกข้อมูลใน Memory จนกว่าจะครบถ้วนในทุกๆหน่วยข้อมูล
หลังจากนั้นจึงกลับเข้าสู่ State Ready ตามเดิม
ข้อควรคำนึงในการเขียน State Diagramใน Analysis Phase คือต้องเขียน Stateให้ครบในภาพรวมทั้งหมดก่อน
โดยยังไม่ต้องคำนึงถึงรายละเอียดของแต่ละ StateและTransition มากนัก
แต่ที่สำคัญคือต้องไม่มี
StateและTransitionใดตกหล่นหรือหายไป
แล้วขั้นตอนของ Design Phase นั้น เราจะทำให้State Diagram มีความละเอียดมากขึ้นจนสามารถนำไปสร้างเป็นโปรแกรมได้ต่อไป
ตัวอย่าง State Diagram
การชำระเงิน
การทำงานของลิฟต์
การทำงานรีโมตควบคุมเครื่อง CD/DVD
State Diagram ใช้อธิบายการเปลี่ยนแปลงจาก State
หนึ่งไปยังอีก State หนึ่ง
ส่วน Activity
Diagram หรือแผนภาพแสดงกิจกรรม
ใช้อธิบายกิจกรรมที่เกิดขึ้นในลักษณะกระแสการไหลของการทำงาน
(workflow)
Activity
Diagram จะมีลักษณะเดียวกับ
Flowchart (แสดงขั้นตอนการทำงานของระบบ) โดยขั้นตอนในการทำงานแต่ละขั้นตอนซึ่งเรียกว่า
Activity
ใช้
Activity Diagram
-
อธิบาย กระแสการไหลของการทำงาน (workflow)
-
แสดงขั้นตอนการทำงานของระบบ
Activity
อาจเป็นการทำงานต่างๆ ได้แก่
การคำนวณผลลัพธ์บางอย่าง
การเปลี่ยนแปลงสถานะ
(State) ของระบบ
การส่งค่ากลับคืน
การส่งสัญญาณ
การเรียกให้ Operation
(Method) อื่นๆเพื่อทำงาน
การสร้าง หรือ ทำลายวัตถุ
วีดีโออธิบายการทำงาน State Diagram การทำงานของลิฟต์
- กิจกรรมที่ทำเมื่อเข้ามาใน state (entry/action)
- กิจกรรมที่ทำระหว่างอยู่ใน state (do/action)
- กิจกรรมที่ทำก่อนที่จะออกจาก state (exit/action)
- กิจกรรมที่ทำเมื่อเกิดเงื่อนไขต่างๆ ขึ้น (condition/action)
State Diagram ที่มี
Internal Activity ในแต่ละ
State สามารถอธิบายได้ดังนี้
State Idle หมายถึง State ของลิฟต์ เมื่อ Lift ยังอยู่ที่ชั้นที่ 1 เข้ามายัง State นี้ ค่า Floor จะถูก Set ไว้ที่ 1 เสมอ
state Move Down หมายถึง State
ของลิฟต์ ที่มีการเคลื่อนที่ลงทีละขั้น โดยเมื่อใดก็ตามที่เข้ามายัง State นี้
ค่า floor จะลดลง ทีละ 1 และ เมื่อใดก็ตามที่ Floor มีค่าเป็น 1
ให้หยุดลิฟต์ทันที ซึ่งการหยุดลิฟต์ที่ floor เท่ากับ
1
นั้นเท่ากับเป็นการบังคับให้ลิฟต์เข้ามาอยู่ในสถานะ Idle โดยปริยาย
State Move Up หมายถึง State ของลิฟต์ ที่มีการเคลื่อนที่ ใดก็ตามที่เข้ามายัง State นี้ ค่า floor จะเพิ่มขึ้นทีละ 1 และ เมื่อใดก็ตามที่ Floor มีค่าเป็น Max ซึ่งหมายถึงลิฟต์อยู่ในชั้น สูงสุด ให้หยุดลิฟต์ทันที
Reach หมายถึง State ที่ลิฟต์มาถึงยังขั้นที่กำหนด (มีคนต้องขึ้นหรือลงจากลิฟต์) ซึ่งเมื่อใดก็ตามที่เข้ามาถึง State นี้แล้ว ต้องหยุดลิฟต์ทันที
วัตถุดิบที่นำมาใช้ในการสร้าง State Diagram คือ Class Diagram และ Sequence Diagram Class Diagram จะทำให้เห็นภาพของ Class แต่ละClass และแต่ละ Method ของ Class จะหมายถึง State Diagram หนึ่งชุด
Sequence Diagram จะทำให้เห็นภาพกิจกรรมของ Class
ซึ่งจะใช้เพื่อโต้ตอบกับ Class อื่น ๆ ใน Problem Domain ซึ่งมีส่วนช่วยในการพิจารณาแนวการดำเนินไปของการเปลี่ยน
State ของ Class หนึ่ง ๆ นั่นเอง
หลักในการเขียน State Diagram ให้มีประสิทธิภาพมีดังนี้
- จากClass Diagramให้ดูว่ามี State Diagram กี่ตัวที่ต้องเขียน ซึ่งปกติแล้วจะเท่ากับจำนวน Method ของแต่ละ Class รวมกันแต่อย่างไรก็ตามไม่จำเป็นที่จะต้องเขียน State Diagram ของทุกๆ Method ของทุก ๆClassในบาง Methodที่ไม่ได้มีกิจกรรมที่ซับซ้อนก็ไม่จำเป็นต้องมี State Diagram
- ในแต่ละClassให้พิจารณาว่าจะมี State อะไรบ้าง(โดยยึดจากหลักการของความเป็นจริง)โดยยังไม่ต้องคำนึงว่ามี Method อะไรอยู่บ้าง
- จาก Stateที่มีอยู่ให้เขียน State Diagramของแต่ละ Method
- หากพบว่ามี State ใดที่จะต้องเพิ่ม เพื่อทำให้ State Diagram สมบูรณ์ขึ้น ให้เพิ่มเข้าไป
- ทำข้อ 3 และ4 จนกว่าจะได้ State Diagram ของ 1 Class ที่สมบูรณ์
- ทำข้อ 1 – 5 จนครบทุก ๆ ClassในClass Diagram
พิจารณาหลักการเขียน State Diagram
ตัวอย่างการเขียน State Diagram ของ Method ต่างๆของ Class Computerได้ดังต่อไปนี้
Stateที่ควรจะมีของ Class Computer คือ
- Off (เครื่องปิด)
- On (เครื่องเปิด)
- Boot (เครื่องกำลังเริ่มทำงาน)
- Ready (เครื่องพร้อมทำงาน)
- Reading (อ่านคำสั่งจากหน่วยความจำ (Memory) )
- Sending (ส่งคำสั่งที่อ่านได้ไปยัง CPU)
- Decoding (ถอดรหัสคำสั่งโดย CPU)
- Executing (ประมวลผลคำสั่ง โดย CPU)
- Buffering (เก็บผลลัพธ์จากการประมวลผลไว้ใน Memory ชั่วคราวเพื่อรอการประมวลผลเสร็จสิ้น)
- Output (การแสดง Output ออกทางอุปกรณ์แสดงผลต่างๆ)
- Storing Data (การเก็บผลลัพธ์จากการประมวลผลไว้ใน Memory
Read Instruction (อ่านคำสั่งจาก Memory)
ในการอ่านคำสั่งใดๆ
จากMemory ของคอมพิวเตอร์นั้นจะเริ่มต้นใน State Ready ก่อน เมื่อมีคำสั่งเข้ามาใน Memory แล้วตาม 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 (การบันทึกผลลัพธ์สู่ Memory)
การ Store Data เริ่มต้นที่ State Ready แล้วเข้าสู่ State Storing Data ซึ่งจะบันทึกข้อมูลใน Memory จนกว่าจะครบถ้วนในทุกๆหน่วยข้อมูล
หลังจากนั้นจึงกลับเข้าสู่ State Ready ตามเดิม
ข้อควรคำนึงในการเขียน State Diagramใน Analysis Phase คือต้องเขียน Stateให้ครบในภาพรวมทั้งหมดก่อน
โดยยังไม่ต้องคำนึงถึงรายละเอียดของแต่ละ StateและTransition มากนัก
แต่ที่สำคัญคือต้องไม่มี
StateและTransitionใดตกหล่นหรือหายไป
แล้วขั้นตอนของ Design Phase นั้น เราจะทำให้State Diagram มีความละเอียดมากขึ้นจนสามารถนำไปสร้างเป็นโปรแกรมได้ต่อไป
ตัวอย่าง State Diagram
การชำระเงิน
การทำงานของลิฟต์
การทำงานรีโมตควบคุมเครื่อง CD/DVD
State Diagram ใช้อธิบายการเปลี่ยนแปลงจาก State
หนึ่งไปยังอีก State หนึ่ง
ส่วน Activity
Diagram หรือแผนภาพแสดงกิจกรรม
ใช้อธิบายกิจกรรมที่เกิดขึ้นในลักษณะกระแสการไหลของการทำงาน
(workflow)
Activity
Diagram จะมีลักษณะเดียวกับ
Flowchart (แสดงขั้นตอนการทำงานของระบบ) โดยขั้นตอนในการทำงานแต่ละขั้นตอนซึ่งเรียกว่า
Activity
ใช้
Activity Diagram
-
อธิบาย กระแสการไหลของการทำงาน (workflow)
-
แสดงขั้นตอนการทำงานของระบบ
Activity
อาจเป็นการทำงานต่างๆ ได้แก่
การคำนวณผลลัพธ์บางอย่าง
การเปลี่ยนแปลงสถานะ
(State) ของระบบ
การส่งค่ากลับคืน
การส่งสัญญาณ
การเรียกให้ Operation
(Method) อื่นๆเพื่อทำงาน
การสร้าง หรือ ทำลายวัตถุ
วีดีโออธิบายการทำงาน State Diagram การทำงานของลิฟต์
ไม่มีความคิดเห็น:
แสดงความคิดเห็น