แผนภาพสถานะ

ตัวอย่างแผนภาพแสดงสถานะ
แผนภาพแสดงสถานะ หรือ สเตตไดอะแกรม (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 date=2011-11-05 

**แหล่งข้อมูลอื่น**
  Introduction to UML 2 State Machine Diagrams by Scott W. Ambler-  UML 2 State Machine Diagram Guidelines by Scott W. Ambler-  Intelliwizard - UML StateWizard - A discontinued round-trip UML dynamic modeling/development framework and tool that ran in popular IDEs under an open-source license.-  YAKINDU Statechart Tools - an Open-Source-Tool for the specification and development of reactive, event-driven systems with the help of state machines.-  Understanding and Using State Machines date=2016-06-14  MATLAB Tech Talks on State Machines- FSM: Open Source Finite State Machine Generation in Java by Alexander Sakharov  FSM date=2016-03-03 -  scxmlcc An efficient scxml state machine to C++ compiler.- SMC: An Open Source State Machine Compiler that generates FSM for many languages as C, Python, Lua, Scala, PHP, Java, VB, etc.  SMC
หมวดหมู่:วิทยาการคอมพิวเตอร์
หมวดหมู่:อินโฟกราฟิกส์