บทเรียนที่ 6 • UML Behavioral Interaction Diagram

แผนภาพปฏิสัมพันธ์
Interaction Diagram

บทเรียนนี้อธิบายมุมมองเชิงพฤติกรรมของ UML โดยเน้น Sequence Diagram และ Communication Diagram เพื่อแสดงว่า Actor และ Object ส่ง Message ติดต่อกันอย่างไรในแต่ละ Use Case

Sequenceเน้นลำดับเวลา
Messageการส่งคำสั่งระหว่าง Object
Communicationเน้นโครงสร้างการสื่อสาร
Learning Path

จาก Use Case สู่ Interaction

1
เข้าใจ UML Behavioral View
Static vs Dynamic, Structural vs Behavioral
2
แยก Actor, Object, Message
ผู้เริ่มต้น วัตถุภายใน และข้อความที่ส่งหากัน
3
เขียน Sequence Diagram
อ่านจากบนลงล่างตามเวลา พร้อม Lifeline และ Activation
4
เปรียบเทียบ Communication Diagram
ใช้หมายเลข Message เพื่อแสดงลำดับ
ผู้สอน
ผู้ช่วยศาสตราจารย์ ดร. นัฐพงศ์ ส่งเนียม
xnattapong@gmail.com
UML Diagrams Overview

ภาพรวม UML Diagrams

บทที่ 6 อยู่ในกลุ่ม Behavioral Diagram โดยเจาะลึก Interaction Diagram

UML ใช้มองระบบได้หลายมุม

UML หรือ Unified Modeling Language เป็นภาษามาตรฐานในการสร้างแบบจำลองระบบเชิงวัตถุ ในการเรียน OOAD เราไม่ได้ใช้ UML เพียงเพื่อวาดรูป แต่ใช้เพื่อสื่อสารความเข้าใจระหว่างผู้ใช้ นักวิเคราะห์ระบบ นักออกแบบ และนักพัฒนา

ในสไลด์บทที่ 6 มีการอธิบายว่า UML 1.x มี 9 diagrams และ UML 2.x ขยายเป็น 14 diagrams โดยในรายวิชาจะเน้นแผนภาพที่ใช้บ่อย เช่น Use Case, Activity, Sequence, Communication, Class, State Machine, Component และ Deployment

ประเด็นสำคัญ: ระบบหนึ่งมีทั้งส่วนที่ “นิ่ง” เช่น Class, Object, Component และส่วนที่ “เคลื่อนไหว” เช่น Flow, Message, State และ Interaction
วัตถุประสงค์การเรียนรู้
  • อธิบาย Static View และ Dynamic View ได้
  • แยก Structural Diagram และ Behavioral Diagram ได้
  • อธิบาย Actor, Object, Message และ Lifeline ได้
  • อ่านและสร้าง Sequence Diagram จาก Use Case ได้
  • ใช้ alt, opt, loop, par ใน Sequence Diagram ได้
  • เปรียบเทียบ Sequence Diagram กับ Communication Diagram ได้
ภาพประกอบ: UML Diagrams ในมุม Static และ Dynamic
UML Diagrams: What vs How Structural Diagrams Static View: ระบบประกอบด้วยอะไร • Class Diagram • Object Diagram • Component Diagram • Deployment Diagram • Package Diagram Behavioral Diagrams Dynamic View: ระบบทำงานอย่างไร • Use Case Diagram • Activity Diagram • Sequence Diagram • Communication Diagram • State Machine Diagram บทที่ 6 เน้น Sequence + Communication
สรุปจากสไลด์ 6.1–6.3 ที่แบ่ง UML เป็น Structural Diagram และ Behavioral Diagram
Static View & Dynamic View

Static View และ Dynamic View

สองมุมมองนี้ช่วยให้นักศึกษาแยกได้ว่าแผนภาพใดใช้ตอบคำถาม “ระบบมีอะไร” และแผนภาพใดใช้ตอบ “ระบบทำงานอย่างไร”

Static View

Static View คือมุมมองที่แสดงองค์ประกอบของระบบ เช่น Class, Object, Module, Database, Server และความสัมพันธ์ระหว่างองค์ประกอบเหล่านั้น

มุมมองนี้ตอบคำถามว่า “ระบบมีอะไร และแต่ละส่วนสัมพันธ์กันอย่างไร”

แผนภาพใช้แสดง
Class DiagramClass, Attribute, Method, Relationship
Object Diagramตัวอย่างวัตถุที่เกิดจาก Class
Component Diagramส่วนประกอบหรือโมดูลของโปรแกรม
Deployment Diagramการติดตั้งบน Server, Client, Network

Dynamic View

Dynamic View คือมุมมองที่แสดงการทำงาน ขั้นตอน การโต้ตอบ การส่ง Message หรือการเปลี่ยนสถานะของระบบ

มุมมองนี้ตอบคำถามว่า “ระบบทำงานตามลำดับอย่างไร และวัตถุติดต่อกันอย่างไร”

แผนภาพใช้แสดง
Use Case Diagramผู้ใช้ทำอะไรกับระบบ
Activity DiagramWorkflow หรือขั้นตอนการทำงาน
Sequence Diagramลำดับ Message ระหว่าง Actor/Object
Communication Diagramโครงสร้างการสื่อสารระหว่าง Object
ตัวอย่างระบบ Login: Static View จะมองว่าระบบมี User, LoginForm, AuthController และ Database ส่วน Dynamic View จะมองว่าผู้ใช้กรอก Username/Password → LoginForm ส่งข้อมูล → AuthController ตรวจสอบกับ Database → ระบบแจ้งผลลัพธ์
Behavioral Diagrams

Behavioral Diagrams คืออะไร

แผนภาพเชิงพฤติกรรมใช้แสดงพฤติกรรม ขั้นตอน เหตุการณ์ การเปลี่ยนสถานะ และการโต้ตอบภายในระบบ

Use Case Diagram

แสดงว่า Actor ต้องการทำอะไรกับระบบ ใช้ในช่วงวิเคราะห์ความต้องการ

Activity Diagram

แสดงขั้นตอนหรือ Workflow ของ Use Case เช่น เลือกสินค้า → ชำระเงิน → ยืนยันคำสั่งซื้อ

Interaction Diagram

แสดงการโต้ตอบและการส่ง Message ระหว่าง Actor/Object เช่น Sequence และ Communication

State Machine

แสดงสถานะของ Object และการเปลี่ยนสถานะ เช่น Order: รอชำระเงิน → ชำระแล้ว → จัดส่งแล้ว

ภาพประกอบ: Behavioral Diagram ในระบบสั่งซื้อสินค้าออนไลน์
ระบบสั่งซื้อสินค้าออนไลน์: Behavioral Views Use Case ลูกค้าทำอะไร สมัครสมาชิก เข้าสู่ระบบ สั่งซื้อสินค้า ชำระเงิน Activity เลือกสินค้า ชำระเงิน Sequence User System order() result State Machine รอชำระเงิน ชำระแล้ว จัดส่งแล้ว
ดัดแปลงจากสไลด์ 6.3 ที่เปรียบเทียบ Use Case, Activity, State Machine และ Interaction Diagram
Interaction Diagrams

Interaction Diagrams คืออะไร

แผนภาพปฏิสัมพันธ์ใช้แสดงว่า Actor และ Object ติดต่อสื่อสารกันอย่างไรผ่าน Message

Actor

ผู้ใช้หรือสิ่งภายนอกที่เข้ามาโต้ตอบกับระบบ เช่น ลูกค้า นักศึกษา ผู้ดูแลระบบ Payment Gateway, Email Server หรือ Barcode Scanner

ตัวอย่าง Login: User เป็น Actor ที่กรอก Username และ Password

Object

วัตถุหรือส่วนประกอบภายในระบบที่รับ ส่ง หรือประมวลผลข้อมูล เช่น LoginForm, AuthController, UserDatabase, Session

Object เหล่านี้ทำงานร่วมกันเพื่อให้ Use Case สำเร็จ

Message

ข้อความ คำสั่ง หรือการเรียกใช้ Method ที่ส่งจาก Actor/Object หนึ่งไปยังอีก Object หนึ่ง เช่น submitLogin(), validateUser(), checkPassword()

Message คือหัวใจของ Interaction Diagram
ภาพประกอบ: การโต้ตอบของระบบ Login
User → LoginForm → AuthController → UserDatabase → LoginForm → User UserActor LoginFormBoundary AuthControllerControl UserDatabaseEntity / DB submitLogin() validateUser() checkUser() return result: Login สำเร็จ / ไม่สำเร็จ
สรุปจากสไลด์ 6.4 ที่อธิบาย Actor, Object, Message และตัวอย่างระบบ Login
Sequence Diagram

Sequence Diagram: ความหมาย องค์ประกอบ และหลักการอ่าน

Sequence Diagram เน้นลำดับเวลาก่อน-หลังของ Message โดยอ่านจากบนลงล่าง

Sequence Diagram คืออะไร

Sequence Diagram หรือแผนภาพลำดับ คือแผนภาพ UML ที่แสดงลำดับการโต้ตอบระหว่าง Actor และ Object ภายในระบบ โดยแสดงการส่ง Message จากวัตถุหนึ่งไปยังอีกวัตถุหนึ่งตามลำดับเวลา

จุดเด่นคือการอธิบายว่า ใครติดต่อกับใคร ส่ง Message อะไร และเกิดขึ้นก่อน-หลังอย่างไร ใช้ได้ดีเมื่ออธิบาย Use Case เช่น เข้าสู่ระบบ สมัครสมาชิก สั่งซื้อสินค้า ชำระเงิน หรือจองตั๋วหนัง

หลักการอ่าน: Actor หรือ Object วางตามแนวนอน ส่วนเวลาจะไหลจากด้านบนลงด้านล่าง Message ที่อยู่บนเกิดก่อน Message ที่อยู่ล่างเกิดทีหลัง

องค์ประกอบของ Sequence Diagram

Actorผู้ใช้หรือระบบภายนอกที่เริ่มต้นหรือร่วมในการทำงาน
Object / Participantวัตถุหรือส่วนประกอบของระบบ เช่น Form, Controller, Service, Database
Lifelineเส้นประแนวตั้ง แสดงช่วงเวลาการมีอยู่ของ Participant
Messageคำสั่งหรือ Method ที่ส่งระหว่าง Participant
Activation Barช่วงเวลาที่ Object กำลังทำงานหรือประมวลผล
Return Messageเส้นประแสดงการส่งผลลัพธ์กลับ
Create / DestroyMessage ที่สร้างหรือทำลาย Object
ภาพประกอบ: Sequence Diagram ระบบ Login แบบย่อ
Sequence Diagram: Login User LoginForm AuthController UserDatabase 1: submitLogin(username,password) 2: validateUser() 3: checkUser() 4: return result alt [ถูกต้อง] [ไม่ถูกต้อง] 5a: showDashboard() 5b: showError() 6: display result
ดัดแปลงจากสไลด์ 6.6, 6.8 และ 6.10 ที่อธิบาย Lifeline, Activation, Message, Return Message และ alt ในระบบ Login
Messages

Message ใน Sequence Diagram

Message คือข่าวสาร คำสั่ง หรือการเรียกใช้ Method ที่ส่งระหว่าง Participant เพื่อให้ระบบทำงาน

Call Message

เรียกใช้ Method หรือ Function เช่น User → TicketSystem: bookTicket()

Return Message

ส่งผลลัพธ์กลับไปยังผู้เรียก มักแสดงด้วยเส้นประ เช่น returnConfirmation()

Send / Signal

ส่งสัญญาณหรือแจ้งเหตุการณ์โดยไม่จำเป็นต้องรอผลลัพธ์ทันที เช่น alertUser()

Create Message

สร้าง Object ใหม่ เช่น new Session(), createReportCard()

Destroy Message

ทำลายหรือสิ้นสุด Object เช่น destroySession() เมื่อผู้ใช้ Logout

Self Message

Object ส่ง Message กลับหาตัวเอง เช่น Interface แสดงรายการสินค้าหลังได้รับข้อมูล

Synchronous vs Asynchronous

ประเภทความหมายตัวอย่าง
Synchronousผู้ส่งรอจนผู้รับทำงานเสร็จแล้วตอบกลับAuthController → Database: checkPassword()
Asynchronousผู้ส่งไม่ต้องรอ ผู้รับอาจทำงานภายหลังOrderService → EmailService: sendEmail()
Returnผลลัพธ์ที่ส่งกลับจากผู้รับไปยังผู้เรียกDatabase -->> AuthController: userFound

หลักการเขียนชื่อ Message

  • ควรเป็นคำกิริยาหรือชื่อ Method เช่น validateUser(), checkStock(item)
  • ข้อมูลที่ส่งไปให้ใส่ในวงเล็บ เช่น displayError(errorMessage)
  • เงื่อนไขให้เขียนในวงเล็บก้ามปู เช่น [password false] showError()
  • Message ต้องสอดคล้องกับ Method ใน Class Diagram
  • ถ้าเกิด Method ใหม่ ต้องกลับไปเพิ่ม Method ใน Class ที่เกี่ยวข้อง
Combined Fragment

Combined Fragment: alt, opt, loop, par

ใช้กรอบใน Sequence Diagram เพื่อแสดงเงื่อนไขพิเศษ เช่น ทางเลือก กรณีเสริม การทำซ้ำ และการทำงานพร้อมกัน

alt

Alternative ใช้เมื่อมีหลายทางเลือก คล้าย if...else เช่น Login สำเร็จ / Login ไม่สำเร็จ

alt
[ข้อมูลถูกต้อง] showDashboard()
[ข้อมูลไม่ถูกต้อง] showError()

opt

Optional ใช้เมื่อขั้นตอนอาจเกิดหรือไม่เกิดก็ได้ คล้าย if ที่ไม่มี else เช่น มีคูปองส่วนลด

opt
[มีคูปอง]
applyCoupon()

loop

Loop ใช้เมื่อทำซ้ำหลายครั้ง เช่น ตรวจสอบสินค้าแต่ละรายการในตะกร้า

loop
[for each item]
checkStock(item)

par

Parallel ใช้เมื่อหลายงานเกิดพร้อมกัน เช่น ส่งอีเมล แจ้งเตือน และบันทึก Log

par
sendEmail()
sendNotification()
saveLog()
ภาพประกอบ: ตัวอย่าง Combined Fragment ในงานสั่งซื้อสินค้า
Combined Fragment ใน Sequence Diagram Customer OrderService PaymentService placeOrder() opt [ลูกค้ามีคูปองส่วนลด] applyCoupon() alt [ชำระเงินสำเร็จ] / [ชำระเงินไม่สำเร็จ] processPayment() return paymentResult
ดัดแปลงจากสไลด์ 6.8 ที่อธิบาย alt, opt, loop และ par พร้อมตัวอย่าง Login และ Order Product
From Use Case to Sequence Diagram

ขั้นตอนการสร้าง Sequence Diagram จาก Use Case

เลือก Use Case → อ่าน Main Flow → ระบุ Actor/Object → จัดลำดับ Message → เพิ่มเงื่อนไข → ตรวจสอบกับ Class Diagram

ขั้นตอนหลัก

1. เลือก Use Case หรือ Scenario

ไม่จำเป็นต้องเขียนทั้งระบบ เลือก Use Case ที่สำคัญก่อน

2. อ่าน Main Flow

ดึงลำดับเหตุการณ์จาก Use Case Description

3. ระบุ Actor / Object

หา External Entity, Boundary, Control, Entity และ External System

4. วาง Lifeline

Actor มักวางซ้ายสุด จากนั้นวาง Object ที่เกี่ยวข้อง

5. จัดลำดับ Message

Message ด้านบนเกิดก่อน ด้านล่างเกิดทีหลัง

6. เพิ่ม Activation / Return / Fragment

ใช้ Activation Bar, Return Message, alt, opt, loop, par ตามความจำเป็น

7. ตรวจสอบกับ Class Diagram

ถ้ามี Method หรือ Class ใหม่ ต้องปรับ Class Diagram ให้สอดคล้อง

ภาพประกอบ: ขั้นตอนการแปลง Use Case เป็น Sequence Diagram
Use Case → Sequence Diagram Use CaseMain Flow / Alternative Flow Actor / ObjectBoundary, Control, Entity Lifelineวางแนวนอน จัดลำดับ Message จากบนลงล่าง Actor Control Entity 1: request() 2: query() 3: return
สรุปจากสไลด์ 6.9 และเทคนิคการสร้าง Sequence Diagram จาก Use Case และ Class Diagram
Sequence Examples

ตัวอย่าง Sequence Diagram: Login / Register / Order Product

ในการเลือกเขียน Interaction Diagram ไม่มีหลักตายตัว ควรเลือก Use Case หรือ Scenario ที่สำคัญและมีการโต้ตอบระหว่าง Object ชัดเจน

ตัวอย่าง Login

1User → LoginForm: กรอก Username/Password
2LoginForm → AuthController: validateUser()
3AuthController → UserDatabase: checkUser()
4UserDatabase → AuthController: ส่งผลการตรวจสอบ
5AuthController → LoginForm: ส่งผลลัพธ์
6LoginForm → User: แสดงผล Login สำเร็จ/ไม่สำเร็จ

ตัวอย่างจองตั๋วหนัง

  • User ค้นหาภาพยนตร์จาก Movie Database
  • Movie Database ส่งรายการภาพยนตร์กลับ
  • User เลือกภาพยนตร์และจองที่นั่ง
  • Ticket System ตรวจสอบที่นั่งว่าง
  • Ticket System ส่งข้อมูลไป Payment Gateway
  • Payment Gateway ส่งผลการชำระเงินกลับ
  • Ticket System ยืนยันการจองและอาจสร้าง Confirmation Email

ตัวอย่างสั่งซื้อสินค้า

  • Actor ขอแสดงรายการสินค้า
  • Interface ขอ Product List จาก Product
  • Product ส่งรายการสินค้ากลับ
  • Actor เลือกสินค้า
  • Product ขอให้ Order สร้าง Order ID
  • Order เพิ่มสินค้าเข้าใบสั่งซื้อ
  • Interface แสดงรายละเอียดใบสั่งซื้อ
  • Actor เลือก Save Order หรือ Cancel Order
ภาพประกอบ: Sequence Diagram ระบบจองตั๋วหนังออนไลน์
Online Movie Ticket Booking User MoviePage TicketSystem MovieDB Payment 1: searchMovie() 2: getMovieList() 3: returnMovieList 4: displayList 5: bookTicket(movie,seat) 6: checkSeat() 7: seatAvailable 8: processPayment() 9: paymentResult 10: confirmTicket()
เรียบเรียงจากสไลด์ 6.9–6.10 ที่ใช้ระบบจองตั๋วหนังออนไลน์เป็นตัวอย่างการระบุ Object และจัดลำดับ Message
Communication Diagram

Communication Diagram คืออะไร

Communication Diagram หรือชื่อเดิม Collaboration Diagram เน้นความสัมพันธ์และการสื่อสารระหว่าง Object พร้อมหมายเลข Message

ลักษณะสำคัญ

  • แสดง Object ต่าง ๆ ที่ทำงานร่วมกันใน Use Case หรือ Scenario หนึ่ง
  • ใช้เส้นเชื่อมเพื่อแสดงว่า Object ใดติดต่อกับ Object ใด
  • ใช้หมายเลข Message เช่น 1, 2, 3 หรือ 1.1, 1.2 เพื่อบอกลำดับก่อนหลัง
  • เน้นโครงสร้างความสัมพันธ์มากกว่าลำดับเวลาในแนวตั้ง
  • เหมาะเมื่อต้องการเห็นภาพรวมว่า Object เชื่อมโยงกันอย่างไร

เปรียบเทียบ Sequence กับ Communication

ประเด็นSequence DiagramCommunication Diagram
จุดเน้นลำดับเวลาของ Messageความสัมพันธ์ระหว่าง Object
การอ่านลำดับอ่านจากบนลงล่างอ่านจากหมายเลข Message
เหมาะกับFlow ที่ต้องเห็นก่อน-หลังชัดเจนระบบที่ต้องเห็นโครงสร้างการสื่อสาร
ข้อควรระวังถ้า Message มากจะยาวถ้า Object มากและเส้นเยอะจะอ่านยาก
ภาพประกอบ: Communication Diagram ระบบเปลี่ยนเที่ยวบิน
Communication Diagram: Change Flight Itinerary Traveler Booking System Client Account DBMS Airline Reservation System 1: change flight itinerary 2: get customer account 3: get itinerary 4: present itinerary 5: select segment 6: present detailed info 7: update information 8: available flight ลำดับเวลาอ่านจากหมายเลข Message ไม่ใช่ตำแหน่งบนลงล่าง
ดัดแปลงจากสไลด์ 6.11 และตัวอย่าง Change Flight Itinerary ที่เปรียบเทียบ Sequence Diagram กับ Communication Diagram
Summary

สรุปบทเรียนที่ 6

1) UML มีทั้ง Static และ Dynamic View

Static ใช้อธิบายโครงสร้าง Dynamic ใช้อธิบายพฤติกรรมและการทำงาน

2) Behavioral Diagram แสดงพฤติกรรมของระบบ

เช่น Use Case, Activity, State Machine และ Interaction Diagram

3) Interaction Diagram แสดงการโต้ตอบผ่าน Message

ประกอบด้วย Actor, Object, Message, Lifeline และ Activation

4) Sequence Diagram เน้นเวลา

อ่านจากบนลงล่าง เหมาะกับการอธิบาย Flow ของ Use Case

5) Communication Diagram เน้นโครงสร้าง Object

อ่านลำดับจากหมายเลข Message เหมาะกับการมองความสัมพันธ์ของ Object

แบบฝึกหัดท้ายบทที่ 6

  1. อธิบายความแตกต่างระหว่าง Static View และ Dynamic View พร้อมยกตัวอย่างแผนภาพ
  2. อธิบายว่า Behavioral Diagrams มีแผนภาพอะไรบ้าง และแต่ละแผนภาพใช้ทำอะไร
  3. จาก Use Case “เข้าสู่ระบบ” ให้ระบุ Actor, Object และ Message ที่เกี่ยวข้อง
  4. วาด Sequence Diagram สำหรับ Use Case “สมัครสมาชิก” โดยมี User, RegisterForm, MemberController และ MemberDatabase
  5. เพิ่ม Combined Fragment แบบ alt ในกรณีสมัครสมาชิกสำเร็จและไม่สำเร็จ
  6. อธิบายความแตกต่างระหว่าง Call Message, Return Message, Create Message และ Destroy Message
  7. จากระบบสั่งซื้อสินค้าออนไลน์ ให้เขียนลำดับ Message อย่างน้อย 10 ขั้นตอน
  8. แปลง Sequence Diagram ระบบ Login ให้เป็น Communication Diagram พร้อมหมายเลข Message
  9. จาก Problem Domain บริษัทจัดหางาน ให้สร้าง Sequence Diagram สำหรับกระบวนการจับคู่ผู้สมัครกับตำแหน่งงาน
แนวทางทำงาน: เริ่มจาก Use Case Description ก่อน แล้วจึงเลือก Actor/Object, วาง Lifeline, ใส่ Message, ตรวจเงื่อนไข alt/loop และย้อนกลับไปตรวจ Class Diagram ว่ามี Method ครบหรือไม่

พร้อมต่อยอดสู่การออกแบบเชิงวัตถุ

เมื่อเข้าใจ Interaction Diagram แล้ว จะสามารถตรวจสอบได้ว่า Class/Object ที่ออกแบบไว้มีการสื่อสารกันครบตาม Requirement และ Use Case หรือไม่