แผนภาพเครื่องของรัฐและแผนภาพแผนภูมิรัฐใน UML

⚡ สรุปอย่างชาญฉลาด

แผนภาพสถานะเครื่องจักร (State Machine Diagram) หรือที่เรียกว่าแผนภาพผังสถานะ (Statechart Diagram) เป็นแบบจำลองพฤติกรรมแบบไดนามิกของวัตถุที่เปลี่ยนสถานะไปตามเหตุการณ์ต่างๆ เอกสารนี้จะอธิบายสัญลักษณ์ ประเภทของสถานะ กฎการวาด และความแตกต่างจากผังงาน (Flowchart)

  • 🔁 วัตถุประสงค์หลัก: แผนภาพสถานะเครื่องจักรแสดงให้เห็นว่าวัตถุเปลี่ยนสถานะอย่างไรเพื่อตอบสนองต่อเหตุการณ์ต่างๆ ตลอดช่วงอายุการใช้งานของมัน
  • 🧩 สองประเภท: เครื่องสถานะเชิงพฤติกรรมจำลองการใช้งานขององค์ประกอบ ในขณะที่เครื่องสถานะเชิงโปรโตคอลจำลองการเปลี่ยนแปลงโปรโตคอลที่อนุญาต
  • 🔷 สัญลักษณ์สำคัญ: แผนภาพประกอบด้วยสถานะเริ่มต้นและสถานะสุดท้าย กล่องตัดสินใจ การเปลี่ยนสถานะ และกล่องสถานะโค้งมน
  • 🗂️ ประเภทของรัฐ: สถานะแบบง่าย แบบผสม และแบบเครื่องจักรย่อย จัดระเบียบพฤติกรรม โดยสถานะตั้งฉากจะเก็บสถานะย่อยแบบขนานไว้
  • 🔐 ตัวอย่างการทำงาน: แบบจำลองการตรวจสอบสิทธิ์ OTP แสดงการเปลี่ยนสถานะโดยอิงตามเงื่อนไขการตรวจสอบ

State Machine Diagram คืออะไร?

แผนภาพสถานะ แผนภาพสถานะ (State machine diagram) ใน UML ใช้เพื่อบันทึกพฤติกรรมของระบบซอฟต์แวร์ สามารถใช้จำลองพฤติกรรมของคลาส ระบบย่อย แพ็กเกจ หรือแม้แต่ระบบทั้งหมดได้ เรียกอีกอย่างว่า แผนภาพสถานะ (Statechart) หรือ แผนภาพการเปลี่ยนสถานะ (State Transition diagram)

แผนภาพ Statechart คืออะไร?

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

มีไดอะแกรมเครื่องสถานะทั้งหมดสองประเภทใน UML:

1. แผนภาพเครื่องสถานะพฤติกรรม

  • โดยจะจับพฤติกรรมของเอนทิตีที่มีอยู่ในระบบ
  • มันถูกใช้เพื่อแสดงการใช้งานเฉพาะขององค์ประกอบ
  • สามารถสร้างแบบจำลองพฤติกรรมของระบบได้โดยใช้แผนภาพเครื่องสถานะพฤติกรรมใน OOAD

2. แผนผังเครื่องสถานะโปรโตคอล

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

เหตุใดจึงต้องใช้ State Machine Diagram

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

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

มันแสดงถึงสถานะของวัตถุตั้งแต่สร้างวัตถุจนกระทั่งวัตถุนั้นถูกทำลายหรือยุติลง

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

สัญกรณ์และสัญลักษณ์สำหรับแผนภาพเครื่องของรัฐ (Statechart Diagram)

ต่อไปนี้เป็นสัญลักษณ์ต่างๆ ที่ใช้ในแผนภาพรัฐ เมื่อนำสัญลักษณ์ทั้งหมดเหล่านี้มารวมกัน จะกลายเป็นแผนภาพเดียว

สัญลักษณ์ไดอะแกรมสถานะ UML
สัญลักษณ์ไดอะแกรมสถานะ UML

สถานะเริ่มต้น

สัญลักษณ์สถานะเริ่มต้นใช้เพื่อระบุจุดเริ่มต้นของไดอะแกรมเครื่องสถานะ

สถานะสุดท้าย

สัญลักษณ์นี้ใช้เพื่อระบุจุดสิ้นสุดของแผนภาพเครื่องสถานะ

กล่องการตัดสินใจ

มันมีเงื่อนไข ขึ้นอยู่กับผลลัพธ์ของเงื่อนไขการป้องกันที่ประเมิน เส้นทางใหม่จะถูกนำไปใช้ในการรันโปรแกรม

การเปลี่ยนแปลง

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

กล่องรัฐ

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

จะแสดงเป็นรูปสี่เหลี่ยมผืนผ้าที่มีมุมมน ชื่อของรัฐเขียนอยู่ในสี่เหลี่ยมมุมมน

ชื่อของรัฐสามารถวางไว้ภายนอกสี่เหลี่ยมผืนผ้าได้ ซึ่งสามารถทำได้ในกรณีของสถานะแบบผสมหรือแบบย่อย สามารถวางชื่อของรัฐไว้ในสี่เหลี่ยมผืนผ้าหรือภายนอกสี่เหลี่ยมผืนผ้าในกล่องตารางได้ ไม่สามารถทำทั้งสองอย่างในเวลาเดียวกันได้

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

ประเภทของรัฐ

Unified Modeling Language กำหนดสถานะสามประเภท:

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

จะวาดแผนภาพ Statechart ได้อย่างไร?

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

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

ในการวาดแผนภาพสถานะจะต้องพิจารณากฎต่อไปนี้:

  1. ชื่อของการเปลี่ยนสถานะต้องไม่ซ้ำกัน
  2. ชื่อของรัฐจะต้องเข้าใจง่ายและอธิบายพฤติกรรมของรัฐ
  3. หากมีวัตถุหลายชิ้น ควรใช้งานเฉพาะวัตถุสำคัญเท่านั้น
  4. ต้องระบุชื่อที่เหมาะสมสำหรับการเปลี่ยนแปลงแต่ละครั้งและเหตุการณ์

เมื่อใดจึงควรใช้ State Machine Diagram

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

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

ใช้ไดอะแกรมสถานะถ่าน:

  1. เพื่อจำลองวัตถุของระบบ
  2. เพื่อสร้างแบบจำลองและใช้งานระบบเชิงโต้ตอบ
  3. เพื่อแสดงเหตุการณ์ที่ทำให้เกิดการเปลี่ยนแปลงภายในรัฐ

ตัวอย่างเครื่องของรัฐ

แผนภูมิตัวอย่างแผนภาพสถานะต่อไปนี้แสดงให้เห็นกระบวนการพิสูจน์ตัวตนของผู้ใช้

แผนภาพสถานะ UML

แผนภาพสถานะ UML

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

แผนภาพเครื่องของรัฐกับผังงาน

ต่อไปนี้เป็นความแตกต่างที่สำคัญระหว่าง Statechart Diagram และ Flowchart

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

คำถามที่พบบ่อย

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

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

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

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

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

สรุปโพสต์นี้ด้วย: