วัน: 15 ธันวาคม 2018

UML: State Machine Diagram แผนภาพแสดงสถานะการทำงานของอ็อบเจ็กต์ตั้งแต่เริ่มต้นจนจบUML: State Machine Diagram แผนภาพแสดงสถานะการทำงานของอ็อบเจ็กต์ตั้งแต่เริ่มต้นจนจบ

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

UML State Machine Diagramคืออะไร?

แผนผังนี้ไม่ใช่เพียงแค่ลำดับเหตุการณ์ แต่เป็นการจำลองวงจรชีวิตทางตรรกะทั้งหมดของเอนทิตี้หรือคลาสใด ๆ ที่เรากำลังศึกษา มันช่วยให้นักพัฒนาสามารถมองเห็นทุก ‘เฟส’ ของระบบได้อย่างชัดเจน ไม่ว่าจะเกิดจากการกระตุ้นภายนอก (External Event) อย่างไรก็ตาม บทบาทหลักของเราคือ việc mapping พฤติกรรมที่ไม่ใช่เส้นตรง โดยเน้นย้ำถึงขีดจำกัดและความถูกต้องตามกฎเกณฑ์ในการเปลี่ยนผ่านจากสภาพ A ไปยังสภาพ B เท่านั้นเท่านั้น.

องค์ประกอบพื้นฐานและการทำงานในมุมมอง System Specialist

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

  • State (สถานะ): คือภาวะที่อ็อบเจ็กต์ดำรงอยู่ ณ ช่วงเวลาหนึ่ง เช่น “รอการจ่ายเงิน” หรือ “สินค้าถูกจัดส่งแล้ว”.
  • Transition (การเปลี่ยนผ่าน): คือลูกศรแสดงทิศทางของการเคลื่อนที่จาก State หนึ่งไปยังอีก State One Transition จะเกิดขึ้นเมื่อมีเหตุการณ์หรือเงื่อนไขบางอย่างเป็นตัวจุดชนวน.
  • Event/Trigger (เหตุการณ์กระตุ้น): นี่คือปัจจัยภายนอกที่เป็นสาเหตุให้เกิดการ Change of state เสมอ ตัวอย่างเช่น เมื่อผู้ใช้คลิกปุ่ม ‘ยืนยันคำสั่งซื้อ’ นั่นคือกำลัง Trigger ให้ระบบออกจาก Status ใดไปสู่ Status ไหนก็ตาม.

ขั้นตอนเชิงลึกในการสร้างแผนภาพ

ในฐานะ System Specialist เราไม่ได้เพียงแค่วาดรูป แต่เรากำลังทำการวิเคราะห์พฤติกรรมของธุรกิจทั้งหมด โดยทั่วไป ขั้นตอนจะประกอบด้วย:

# Step 1: ระบุขอบเขตและสถานะหลัก \
(Identify Initial States) - อะไรบ้างที่สิ่งนี้สามารถจะเป็นได้? เช่น Order, Payment Pending, Shipped.

หลังจากนั้นจึงกำหนดเส้นทางการไหลเวียนข้อมูล:

# Step 2: กำหนด Transition และ Guard Condition\
Transition = [Event] / [Guard condition]. เงื่อนไขกำกับ (Guards) คือการตรวจสอบทางตรรกศาสตร์ว่า การเปลี่ยนผ่านนี้เกิดขึ้นได้อย่างถูกต้องหรือไม่ ก่อนที่จะอนุญาตให้เกิด State ใหม่ นี่คือส่วนสำคัญที่สุดของการควบคุมระบบที่ไม่ยอมให้อ็อบเจ็กต์อยู่ในภาวะที่เป็นไปไม่ได้ตามกฎเกณฑ์ครับ/ค่ะ.

ตัวอย่างเชิงประยุกต์

ลองพิจารณาระบบ E-commerce เมื่อลูกค้าสั่งซื้อสินค้า สถานะนั้นจะเริ่มต้นจาก ‘Pending’ -> หากมีการจ่ายเงินสำเร็จ จะเข้าสู่ Status ‘Paid Awaiting Shipment’. ระบบจะไม่กระโดดโดยตรงจาก ‘Pending’ ไปยัง ‘Delivered’ เพราะขาดขั้นตอนวิเคราะห์และจัดส่ง ซึ่ง UML SMD บังคับให้นักพัฒนากำหนดทุกจุดพัก ทุกเงื่อนไข เพื่อสร้างความมั่นใจในเสถียรภาพของโค้ดที่กำลังพัฒนา ดังนั้น แผนผังสเตทแมชจึงเป็นเครื่องมือบังคับใช้ Business Logic ในระดับโครงสร้างก่อนลงมือกราฟิกใด ๆ ครับ.