แผนภาพสถานะ

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

การเขียน State Diagram เพื่อการทำ Object Oriented Analysis and Design นั้นจะแทนด้วยสัญลักษณ์  สี่เหลี่ยมมุมมน  ซึ่งแทน State โดยมีชื่อของ  State ระบุอยู่  และจะใช้เครื่องหมายลูกศรเพื่อแทน    Transition โดยลากจาก State เริ่มต้นไปยัง State ที่ต้องการ  โดยบนลูกศรจะมีชื่อของ Transition หรือกิจกรรมกำกับอยู่ด้วย  การเขียนชื่อของกิจกรรมกำกับบนลูกศร   มีรูปแบบดังนี้  		

[Condition /Action]

โดยที่
 Condition  หมายถึง	     เงื่อนไขในการเข้าหรือออกจาก   State 
 Action	   หมายถึง	     กิจกรรมที่ทำระหว่างการเปลี่ยน State 
 ทั้งนี้ในลูกศรจะมี   Condition  หรือ   Action  หรือไม่มีก็ได้   แต่ต้องมีตัวใดตัวหนึ่งเป็นอย่างน้อย   
 จุดเริ่มต้นของกิจกรรมต่าง ๆ ใน   State diagram	  เรียกว่า   Initial state
 จุดสิ้นสุดของกิจกรรมทั้งหมดใน  State diagram	  เรียกว่า   End State

หลักในการเขียน   State Diagram ให้มีประสิทธิภาพ 
 จาก  Class Diagram  ดูว่ามีจำนวนของ  State Diagram กี่ตัวที่ต้องเขียน  ปกติจะเท่ากับจำนวน  Function ของแต่ละ Class รวมกัน  
 ไม่จำเป็นที่จะต้องเขียน  State Diagram ของทุก ๆ Function ของทุก ๆ Class Diagram ก็ได้  
 ในบาง  Function  ที่กิจกรรมไม่ซับซ้อนมากมาย  ไม่จำเป็นต้องมี   State Diagram  
 ให้พิจารณาว่าในแต่ละ  Class จะมี State อะไรบ้าง (โดยยึดจากหลักการของความเป็นจริง) ไม่ต้องคำนึงว่ามี  Function อะไรอยู่
 จาก  State ที่มีอยู่ให้เขียน State Diagram ของแต่ละ Function
 เพิ่ม state ที่จำเป็นเพิ่มเติม เพื่อให้ state diagram สมบูรณ์ยิ่งขึ้น
 ทำจนกว่าจะได้  State Diagram ของ 1 Class ที่สมบูรณ์
 ทำซ้ำจนครบทุก  ๆ  Class ใน Class Diagram

Moore Model 
การเขียน  State Diagram ของ Moore จะใช้ตัวอักษรและตัวเลขเขียนอยู่ในวงกลม โดยที่ตัวอักษรแสดงถึง State ตัวเลขแสดงถึง Output เช่น W/0 หมายความว่า ที่ State W ที่เวลาใดๆ ถ้าได้รับ Input แล้ววงจรจะเชื่อมด้วยเส้นตรงหรือเส้นโค้งมีหัวลูกศรกำกับและแต่ละเส้นที่เชื่อมกันก็ยังมีตัวเลขอีกชุด  แสดงถึงการป้อน Input กำกับไว้ด้วย

Moore Model ใช้ในกรณีที่ Output ของวงจรไม่ได้ขึ้นอยู่กับ Input แต่จะขึ้นอยู่กับ Present State เท่านั้น ดังนั้น State table และ State Diagram ตามแบบของ  Moore จะแตกต่างกับแบบของ Mealy

จากรูปคือ

ถ้าให้ State W เป็น  Present State และวงจรได้รับ Input X=0 แล้ว Next State ของวงจรเป็น State Y และให้ Output Z=0 แต่ถ้าวงจรได้รับ Input X=1แล้ว Next State ของวงจรเป็น State X และให้ Output Z=0
  
ถ้าให้ State X เป็น  Present State และวงจรได้รับ Input X=0 แล้ว Next State ของวงจรจะคงอยู่ที่ State X และให้ Output Z=1 แต่ถ้าวงจรได้รับ Input X=1แล้ว Next State ของวงจรเป็น State Yและให้ Output Z=1
   
ถ้าให้ State Y เป็น  Present State และวงจรได้รับ Input X=0 แล้ว Next State ของวงจรเป็น State X และให้ Output Z=0 แต่ถ้าวงจรได้รับ Input X=1แล้ว Next State ของวงจรเป็น State W และให้ Output Z=0

ข้อดี

Output ไม่เปลี่ยนตาม Input
ทำให้ไม่เกิดปัญหา momntary change หรือ Glitch 

ข้อเสีย
ใช้จำนวนสภาวะมากกว่าในการออกแบบวงจรชนิดเดียวกัน

อ้างอิง 
 State diagram 

วิทยาการคอมพิวเตอร์
อินโฟกราฟิกส์