หรือแผนผังการทำงานแบบลำดับปฏิสัมพันธ์ คือ แผนภาพที่แสดงรายละเอียดความสัมพันธ์ของการดำเนินงาน หรือการทำงานของระบบโดย Sequence Diagram จะโฟกันที่เวลาและลำดับการโต้ตอบกันระหว่าง object (วัตถุ) โดยแผนภาพจะอธิบายว่าลำดับเหตุการณ์นั้นเกิดขึ้นได้อย่างไรและเกิดขึ้นเมื่อไหร่ มีลำดับการทำงานอย่างไร

ความสัมพันธ์ระหว่าง Use Case Diagram และ Sequence Diagram

Use Case Diagram จะมี Actor ที่มีปฏิสัมพันธ์กับแต่ละ Use Case โดยในแต่ละ Use Case ก็จะเป็นตัวแทนของภารกิจหรือ task ในระบบที่ Actor ต้องทำให้สำเร็จ
เราจะสร้าง Sequence Diagram สำหรับแต่ละ Use Case โดยแต่ละ Sequence Diagram จะระบุขั้นตอนหลักสำหรับโต้ตอบเพื่อทำภารกิจนั้นให้สำเร็จ

Notations ใน Sequence Diagram

Lifeline Notation

คือเส้นชีวิตของวัตถุหรือ class เป็นตัวแทนของวัตถุหรือส่วนประกอบต่างๆที่มีปฏิสัมพันธ์ซึ่งกันและกันในระบบในลำดับต่างๆ

format การเขียนชื่อเส้นชีวิตคือ
Instance Name:Class Name

เส้นชีวิตกับ Actor

เส้นชีวิตกับสัญลักษณ์ Actor จะใช้เมื่อลำดับใดลำดับหนึ่งโดยเฉพาะนั้นเป็นส่วนหนึ่งของ Use Case

เส้นชีวิตกับ Entity

เส้นชีวิตที่มีองค์ประกอบเป็น Entity แสดงถึงข้อมูลระบบ ตัวอย่างเช่น แอพพลิเคชั่นสำหรับ customer service เอนทิตี้ลูกค้าจะจัดการข้อมูลทั้งหมดที่เกี่ยวข้องกับลูกค้า

เส้นชีวิตกับ Boundary element

เส้นชีวิตที่มีองค์ประกอบเป็น Boundary element แสดงขอบเขตของระบบหรือ software element ในระบบ เช่น หน้าจอสำหรับผู้ใช้งาน, data gateways หรือ เมนูที่ผู้ใช้งานสามารถตอบโต้ได้

เส้นชีวิตกับ control element

เส้นชีวิตที่มีองค์ประกอบเป็น control element แสดงเอนทิตี้การควบคุมหรือผู้จัดการ มันจะจัดระเบียบและกำหนดเวลาการตอบโต้ และทำหน้าที่เป็นเป็นสื่อกลางระหว่างขอบเขตและเอนทิตี้

Activation Bars

Activation Bars จะถูกวางอยู่บนเส้นชีวิตเพื่อแสดงการโต้ตอบระหว่างวัตถุ ฟังก์ชั่น หรือ module ความยาวของสี่เหลี่ยมจะแสดงระยะเวลาการโต้ตอบของวัตถุ หรือ จุดเริ่มต้นและจุดสิ้นสุดของแต่ละกิจกรรมของวัตถุนั้น

การโต้ตอบระหว่าง 2 วัตถุ เกิดเมื่อวัตถุหนึ่งส่งข้อความไปให้อีกวัตถุหนึ่ง วัตถุที่ส่งข้อความเรียกว่า Message Caller ในขณะที่วัตถุที่รับข้อความเรียกว่า Message Receiver เมื่อมีแถบ Activation บนเส้นชีวิตของวัตถุ นั่นหมายความวัตถุนั้นมีการทำงานในขณะที่ส่งข้อความโต้ตอบกัน

Message Arrows

ลูกศรจาก Message Caller ชี้ไปที่ Message Receiver ระบุข้อความที่เกิดขึ้นใน Sequence Model ข้อความสามารถไหลไปในทิศทางใดก็ได้ จากซ้ายไปขวา ขวาไปซ้าย หรือส่งข้อความกลับไปที่ตัวมันเองก็ได้

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

รูปแบบของ Message

  • Synchronous message

จะถูกใช้เมื่อวัตถุที่ส่งข้อความรอให้วัตถุที่รับปข้อความระมวลผลและส่ง return กลับมาก่อนที่จะส่งข้อความอันต่อไป หัวลูกศรที่ใช้จะเป็นลูกศรแบบทึบ

  • Asynchronous message

จะถูกใช้เมื่อวัตถุที่ส่งข้อความไม่รอให้วัตถุรับข้อความประมวลผลข้อความและส่งค่า return กลับมา แต่จะส่งข้อความต่อไปให้แก่วัตถุอื่นในระบบเลย
หัวลูกศรที่แสดงในข้อความประเภทนี้เป็นหัวลูกศรเส้น

  • return message

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

return message เป็นตัวเลือกที่จะเลือกให้มีหรือไม่มีก็ได้ สำหรับการส่งข้อความบนแถบ Activation ด้วย Synchronous message จะให้ความหมายโดยนัยว่ามี return message ด้วยแม้จะไม่ได้มีเส้น return message แสดงก็ตาม

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

  • Participant creation message

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

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

  • Participant destruction message

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

  • Reflexive message

เมื่อวัตถุส่งข้อความหาตัวเอง จะเรียกว่า reflexive message แสดงข้อความประเภทนี้โดยการใช้ message arrow ที่เริ่มจากจบที่เส้นชีวิตเดียวกันอย่างตัวอย่างด้านล่างนี้

  • Comment

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

Sequence Fragment

คือกล่องที่มีเครื่องหมายแสดง section การโต้ตอบระหว่างวัตถุใ sequence diagram

Fragment จะใช้ในแผนภาพที่มีการโต้ตอบของวัตถุที่ซับซ้อน เช่น การไหลแบบ alternative หรือ loop ที่มีวิธีที่เป็นโครงสร้างมากขึ้น ด้านบนซ้ายของกล่องจะแสดง fragment operator ระบุว่า fragment นี้เป็น fragment ประเภทใด

Alternatives

Alternative combination fragment ถูกใช้เมื่อมีตัวเลือกให้เลือกตั้งแต่ 2 ตัวเลือกขึ้นไป ใช้ตรรกะแบบ “if then else”

Alternative fragment แสดงโดยเฟรมหรือกล่องสี่เหลี่ยมผืนผ้าขนาดใหญ่ มี ‘alt’ ซึ่งเป็น fragment operator ระบุเป็นชื่อกล่องในมุมซ้ายด้านบนของกล่อง

ในการเลือกตัวเลือกที่มากกว่าหนึ่ง ข้างในกล่องสี่เหลี่ยมผืนผ้าจะถูกแบ่งออกเป็นส่วนๆ เรียกว่า interaction operand โดยใช้เส้นประเป็นตัวแบ่ง แต่ละ operand จะมี Guard ระบุไว้ที่ด้านบนของแต่ละ operand

Options

Option Combination fragment ถูกใช้เพื่อแสดงถึงลำดับเหตุการณ์ที่เกิดขึ้นภายใต้เงื่อนไขใดเงื่อนไขหนึ่งเท่านั้น ไม่เช่นนั้นเหตุการณ์นั้นจะไม่สามารถเกิดขึ้นได้ ใช้ตรรกะแบบ ‘if then’

Option fragment สามารถแสดงได้โดยกล่องสี่เหลี่ยมผืนผ้าเช่นเดียวกับ Alternative fragment ส่วน fragment operator จะใช้ ‘opt’

ความแตกต่างระหว่าง Option fragment และ Alternative fragment คือ Option fragment จะไม่แบ่งออกเป็นแต่ละ Operand ส่วน Option Guard จะวางอยู่ด้านบนซ้ายในกล่อง

ความแตกต่างระหว่าง alt และ opt fragment ใน Sequence diagram

alt ถูกใช้เพื่ออธิบายทางเลือกที่สามารถเลือกได้ในการไหลของเหตุการณ์ ทางเลือกเดียวเท่านั้นที่จะถูก executed

opt ถูกใช้เพื่อแสดงถึงขั้นตอนทางเลือกในการไหลของเหตุการณ์ หรือ workflow

เช่น ในร้านค้าออนไลน์ เราอาจใช้ opt เพื่อกำหนดว่าลูกค้าสามารถเลือกที่จะห่อของขวัญก็ได้หากต้องการ

และใช้ alt เพื่อกำหนดว่ามีวิธีจ่ายเงิน 2 วิธี คือ จ่ายผ่านบัตรเครดิตหรือโอนเงินผ่านธนาคาร

Loops

Loop fragment ถูกใช้เพื่อแสดงลำดับเหตุการณ์ที่เกิดขึ้นซ้ำ โดยมี ‘loop’ เป็น fragment operation และ guard condition ระบุที่มุมด้านซ้ายของกล่อง

guard ใน loop fragment สามารถมีเงื่อนไขพิเศษเพิ่มได้อีกสองเงื่อนไข คือ
minimum iterations (minint = [the number])
maximum iterations (maxint = [the number])

หากใช้เงื่อนไข minimum iterations guard ลูปต้องแสดงผลไม่น้อยกว่าจำนวนที่ระบุใน minimum iteration

หากใช้เงื่อนไข maximum iteration guard ลูปก็ต้องแสดงผลไม่เกินจำนวนที่ระบุใน maximum iteration เช่นกัน

loop fragment จะทำงานซ้ำจนกว่าค่าของ guard จะเป็น false

Reference fragment

เราสามารถใช้ Reference fragment เพื่อจัดการกับขนาดของ sequence diagram ที่มีขนาดใหญ่ ref fragment จะช่วยให้เราทำบางส่วนของ sequence diagram มาใช้กับส่วนอื่นๆได้ หรือเรียกว่า สามารถอ้างถึงส่วนอื่นๆของ sequence diagram ได้โดยใช้ ref fragment

การแสดงถึง ref fragment จะต้องกำหนด ‘ref’ เป็นชื่อกล่อง หรือ fragment operation และชื่อของ sequence diagram ที่ถูกอ้างถึงข้างในกล่อง

วิธีวาด Sequence Diagram

เนื่องจาก sequence diagram แสดงลำดับการไหลของเหตุการณ์ในหนึ่ง Use Case การไหลไปของข้อความหรือ Message ใน Sequence Diagram จะเป็นไปตามทิศทางของ Use Case นั้นๆ

ดังนั้นก่อนวาด Sequence Diagram เราจะต้องวาด Use Case ก่อน หรือ ต้องมีการตัดสินใจก่อนว่าการโต้ตอบหรือเหตุการณ์ใดบ้างที่จะระบุถึง

ในตัวอย่าง Use Case ของ Online Library Management System เลือกว่าจะวาด Sequence Diagram ที่ขั้นตอนย่อยใด ในตัวอย่างจะเลือกขั้นตอน ‘Create New User Account’ ของ ‘Create New Online Library Account’ 

ก่อนที่จะวาดไดอะแกรม สิ่งสำคัญคือต้องระบุวัตถุ (Object) หรือ Actor ที่มีเกี่ยวข้องสำหรับการสร้าง new user account ซึ่งจะลิสออกมาได้ดังนี้

  • Librarian
  • Online Library Management system
  • User credential database
  • Email system

เมื่อระบุวัตถุหรือ Actor ที่เกี่ยวข้องได้แล้ว สิ่งต่อมาคือต้องเขียนรายละเอียดอธิบายว่า Use Case นี้มีกระบรวนการใดบ้าง หากสามารถอธิบายได้ ก็จะสามารถทราบได้ว่าแต่ละส่วนมีการตอบโต้ หรือ Interaction อย่างไร จากน้ันการตอบโต้เหล่านี้จะถูกจับเอาไปใส่ไว้ใน Sequence Diagram

ตัวอย่างเหตุการณ์ที่เกิดขึ้นใน Use Case ‘Create New Library User Account’

  • Librarian ร้องขอระบบให้สร้าง online library account ใหม่
  • Librarian เลือกประเภทของ user account
  • Librarian ใส่รายละเอียดของผู้ใช้งาน
  • รายละเอียดของผู้ใช้งานจะถูกตรวจสอบโดย User Credential Database (หรือฐานข้อมูลนั่นแหละ)
  • บัญชีผู้ใช้ใหม่ถูกสร้าง
  • รวมข้อมูลทั้งหมดสำหรับบัญชีใหม่ และส่งอีเมลให้เจ้าของบัญชี

แต่ละลำดับเหตุการณ์ดังกล่าว ทำให้เราสามารถระบุได้ว่าข้อความใดจะเป็นข้อความที่ใช้ในการโต้ตอบระหว่างวัตถุใน Sequence Diagram