2. Usecase Diagram

ในการออกแบบระบบงาน เราจะเริ่มต้นด้วยการวิเคราะห์ว่าระบบงานจะต้องสามารถทำอะไรให้กับผู้ใช้ได้บ้าง แล้วเขียนบรรยายกรณีต่าง ๆ  ที่จะเกิดขึ้นกับการใช้ระบบงาน โดยเขียนบรรยายออกมาเป็น Usecase Diagram Usecase Diagram จะไม่ได้จับคู่โดยตรงกับความต้องการของระบบ แต่ Usecase Diagram แสดงให้เห็นว่ามีกรณีใดบ้างที่ผู้ใช้จะมาใช้งานระบบ ซึ่งบางกรณีอาจจะไม่ใช้ความต้องการของผู้ใช้โดยตรงก็ได้

รูปภาพ 14 Usecase Diagram ของระบบส่งต่อผู้ป่วย

ในภาพที่ 14 เป็นตัวอย่างการใช้งาน Usecase Diagram เพื่อแสดงให้เห็นกรณีต่าง ๆ  ที่ผู้ใช้เข้ามาใช้งานระบบ สัญลักษณ์รูปคนก้าง (Stickman) เราเรียกว่าแอคเทอร์ (Actor) แอคเทอร์จะใช้แทนผู้ใช้ที่เป็นคนจริง หรือระบบอีกระบบหนึ่งที่ต้องการใช้งานระบบนี้ก็ได้

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

รูปสี่เหลี่ยมที่ล้อมรอบ Usecase ไว้ก็คือ System Boundary ที่แสดงขอบเขตของระบบงาน ว่าต้องประกอบด้วย Usecase อะไรบ้าง สำหรับการพิจารณาแอคเทอร์ที่จะโต้ตอบกับระบบ เราจะพิจารณาจากบทบาทมากกว่าพิจารณาตามตำแหน่งงานที่เป็นอยู่จริงในองค์กร ซึ่งจากภาพที่ 14 เราจะสังเกตเห็นว่า เราสามารถแยกผู้ใช้ออกเป็น ผู้ใช้ที่เป็นเจ้าหน้าที่ของสถานบริการฝ่ายส่ง และผู้ใช้ที่เจ้าหน้าที่ของสถานบริการฝ่ายรับ ก็เนื่องจากทั้งสองแอคเทอร์นี้มีบทบาทหน้าที่ต่างกัน

ความสัมพันธ์ระหว่าง Usecase กับ Usecase สามารถเกิดขึ้นได้ 2 แบบคือ

1.    includes                   ถ้า Usecase หนึ่ง includes ไปที่ Usecase อีกก้อนหนึ่ง หมายถึง การทำงานภายใน Usecase นั้นจะต้องไปสั่งให้อีก Usecase ที่ถูก includes เข้ามาไว้ ทำงานร่วมกันด้วย ถ้าคิดในแบบง่าย ๆ  ก็คือ Usecase ที่ถูก includes จะถูกรวมการทำงานเข้าไว้กับ Usecase ที่เป็นตัวหลักด้วยเสมอ จากตัวอย่างในภาพที่ 14 จะพบว่า การตรวจสอบสถานภาพของผู้ป่วย การตรวจสอบค่าใช้จ่ายที่ใช้รักษา และการบันทึกข้อมูลผู้ป่วยส่งต่อจะต้องผ่าน Usecase เพื่อเลือกผู้ป่วยก่อนเสมอ

                                        ความสัมพันธ์แบบ includes มักจะเกิดขึ้นเสมอกับ Usecase ที่มีลักษณะการทำงานเป็นทั่วๆ  ไป เช่น การเพิ่มข้อมูล การลบข้อมูล การบันทึกข้อมูล การค้นหาข้อมูล ซึ่งมักจะถูกรวมเข้าไปไว้ใน Usecase ที่เป็นกิจกรรมเฉพาะของระบบงานนั้น ๆ

2.    extends                    Usecase ที่ extends จากอีก Usecase หนึ่งจะเป็น Usecase ที่เกิดขึ้นในกรณีเดียวกันแต่เป็นกรณีที่พิเศษมากกว่า เช่น ในภาพที่ 14 จะพบว่า การตรวจสอบสิทธิผู้ป่วยในกรณีปกติจะตรวจสอบจากหมายเลขบัตรประชาชน แต่ถ้าผู้ป่วยลืมรหัสบัตรประชาชนหรือไม่ได้ติดบัตรประชาชนมาด้วย ระบบจะตรวจสอบสิทธิโดยใช้ ชื่อ นามสกุล และวันเดือนปี เกิดของผู้ป่วย ซึ่งเป็นกรณีพิเศษของการตรวจสอบสิทธิผู้ป่วย เช่นนี้ จะเห็นว่าเราจะให้ Usecase การตรวจสอบด้วย ชื่อ นามสกุลและวันเดือนปีเกิด เป็น Usecase ที่ extends มาจาก Usecase การตรวจสอบสิทธิปกติ

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

รูปภาพ 15 การออกแบบให้แอคเทอร์สืบทอดต่อจากแอคเทอร์ที่มีลักษณะทั่วไป

2.1 Usecase Description

เนื่องจากรายละเอียดที่ปรากฏใน Usecase Diagram เป็นเพียงภาพรวมของระบบ และไม่ได้มีคำอธิบายว่า Usecase แต่ละตัวมีการทำงานภายในเป็นอย่างไรบ้าง ดังนั้นในการเขียนเอกสาร Requirement Specification ให้สมบูรณ์จะเพิ่มเติมส่วนที่เป็น Usecase Description เข้าไปด้วยเพื่อให้ผู้ร่วมทีมพัฒนาระบบเข้าใจรายละเอียดของ Usecase ได้ดียิ่งขึ้น

ตารางที่ 1 ตัวอย่างข้อมูลที่ควรใส่เข้าไปใน Usecase Description

Usecase No.หมายเลข Usecase เพื่อใช้สำหรับอ้างอิงกับ Usecase อื่น
Usecase nameชื่อของ Usecase
Last update onวันที่แก้ไขครั้งสุดท้าย
Last update byชื่อของผู้ที่แก้ไขเอกสารนี้ครั้งสุดท้าย
Primary Actorแอคเทอร์ที่เป็นผู้กระทำหลัก
Secondary Actorแอคเทอร์ที่เป็นผู้กระทำรอง
Objectiveวัตถุประสงค์
Usecase typeประเภทของ Usecase เช่น Basic, Alternative, Abstract หรือ Extension
Preconditionเงื่อนไขที่ต้องเกิดมาก่อนที่จะมาทำงานที่ Usecase นี้
Success End Conditionเงื่อนไขที่บ่งชี้ให้เห็นว่า Usecase เสร็จอย่างสมบูรณ์
Failed End Conditionเงื่อนไขที่บ่งชี้ให้เห็นว่า Usecase ล้มเหลว
Triggerเมื่อเข้ามาทำที่ Usecase นี้แล้วจะทำให้เกิดเหตุการณ์ต่อเนื่องอะไรขึ้น
Basic Flow of Eventsลำดับเหตุการณ์ตามปกติ
Exception Flow of Eventsลำดับเหตุการณ์พิเศษที่ไม่ค่อยพบบ่อยในกรณีปกติ
Alternative Flow of Eventsลำดับเหตุการณ์อื่น ๆ  ที่เป็นทางเลือกเมื่อไม่สามารถทำตามลำดับเหตุการณ์ปกติได้
Current Open Issueประเด็นที่ยังเป็นที่น่าสงสัยอยู่ในปัจจุบัน
Future Open Issueประเด็นที่อาจจะเกิดขึ้นในอนาคต
SuperordinatesUsecase ที่ต้องเกิดขึ้นก่อนที่จะเข้ามาทำงานใน Usecase นี้
SubordinatesUsecase ที่จะเกิดตามมาหลังจากที่ Usecase นี้เสร็จสิ้น
General Descriptionรายละเอียดอื่น ๆ  ทั่วไปที่เพิ่มเติมให้กับผู้อ่าน

ในตารางที่ 1 จะเป็นรายละเอียดทั่ว ๆ  ไปที่ควรจะใส่ให้กับ Usecase หนึ่งก้อน ซึ่งอาจจะมีรูปแบบต่างกันไป แล้วแต่กฏระเบียบของทีมพัฒนา อย่างไรก็ตามข้อมูลที่สำคัญที่ควรจะปรากฏใน Usecase Description เสมอก็คือลำดับเหตุการณ์[3]ที่เกิดขึ้น ซึ่งอย่างน้อยจะต้องมีอยู่หนึ่งลำดับเหตุการณ์ที่เป็นเหตุการณ์หลักที่แอคเทอร์จะกระทำกับระบบงานใน Usecase นี้ นอกจากนั้นถือว่าเป็นข้อมูลเพิ่มเติมที่อาจจะมีหรือไม่มีก็ได้

ตารางที่ 2 ตัวอย่างของการเขียน Usecase Description ให้กับ Usecase บันทึกข้อมูลผู้ป่วยส่งต่อ

Usecase No.3.1
Usecase nameบันทึกข้อมูลผู้ป่วยส่งต่อ
Last update on10 กันยายน พ.ศ. 2546
Last update byนาย สรพงษ์ เรือนมณี
Primary Actorผู้ใช้ระบบของสถานบริการฝ่ายส่ง
Secondary Actor 
Objectiveเพื่อบันทึกข้อมูลผู้ป่วย แล้วส่งต่อไปให้สถานบริการที่จะรับผู้ป่วยไปรักษาต่อ
Usecase typeþBasic ¨Alternative ¨Abstract ¨Extension
Precondition1.      ผู้ใช้ต้องป้อนชื่อผู้ใช้และรหัสผ่านเพื่อขอเข้าสู่ระบบก่อน 2.      ผู้ใช้ต้องมีระดับสิทธิพอเพียงที่จะดำเนินการบันทึกข้อมูลผู้ป่วยส่งต่อ 3.      ผู้ป่วยที่จะถูกส่งต่อไปที่สถานบริการฝ่ายรับ จะต้องเป็นผู้ป่วยที่มีสิทธิประกันสุขภาพ โดยผ่านการตรวจสอบสิทธิมาแล้ว
Success End Condition1.      มีข้อมูลครบถ้วนถูกบันทึกไว้ในแฟ้มผู้ป่วยส่งต่อ 2.      มีข้อความแจ้งเตือนไปปรากฏที่เครื่องเทอร์มินอลของสถานบริการฝ่ายรับ ว่าผู้ป่วยที่ถูกเลือก ได้ส่งต่อไปที่สถานบริการแห่งนั้นแล้ว 3.      มีข้อความปรากฏให้ผู้ใช้ทราบว่าได้บันทึกข้อมูลเสร็จเรียบร้อยแล้ว
Failed End Condition1.      มีข้อความปรากฏให้ผู้ใช้ทราบว่าการบันทึกข้อมูลไม่สำเร็จ 2.      ไม่มีข้อมูลใด ๆ  ทั้งสิ้นบันทึกไว้ในแฟ้มผู้ป่วยส่งต่อ 3.      ไม่มีข้อความแจ้งเตือนใด ๆ  ไปปรากฏที่เครื่องเทอร์มินอลของสถานบริการฝ่ายรับ
Triggerส่งเหตุการณ์แจ้งเตือนไปที่เครื่องเทอร์มินอลของสถานบริการฝ่ายรับ
Basic Flow of Events1.      หลังจากผู้ใช้เข้าสู่ระบบงาน และผู้ใช้มีสิทธิที่จะส่งต่อผู้ป่วยได้ จะปรากฏคำสั่งให้ผู้ใช้เลือกว่าจะส่งต่อผู้ป่วย 2.      ผู้ใช้เลือกคำสั่งเพื่อส่งต่อผู้ป่วย จะปรากฏแบบฟอร์มให้ผู้ใช้กรอกข้อมูลที่จำเป็นสำหรับการส่งต่อผู้ป่วย 3.      ผู้ใช้เลือกผู้ป่วยที่ต้องการส่งต่อไปที่สถานบริการอื่น (ดูที่ Usecase 3.2 เลือกผู้ป่วย) 4.      ผู้ใช้เลือกสถานบริการที่ต้องการส่งผู้ป่วยไปให้ (ดูที่ Usecase 3.3 เลือกสถานบริการ) 5.      ผู้ใช้กรอกรายละเอียดที่เหลือในแบบฟอร์มให้ครบถ้วน 6.      ผู้ใช้เลือกคำสั่งบันทึกข้อมูลผู้ป่วยส่งต่อ 7.      ระบบตรวจสอบความถูกต้องของข้อมูลในแบบฟอร์มผู้ป่วยส่งต่อ ก่อนที่จะเริ่มดำเนินการบันทึกเข้าสู่ระบบ 8.      ถ้าข้อมูลที่ผู้ใช้กรอกเข้ามาทุกอย่างถูกต้อง และครบถ้วนสมบูรณ์ ระบบจะบันทึกข้อมูลผู้ป่วยส่งต่อ เข้าสู่แฟ้มข้อมูลผู้ป่วยส่งต่อ 9.      ระบบส่งสัญญาณแจ้งเตือนไปที่เครื่องเทอร์มินอลที่เปิดไว้ที่สถานบริการที่รับต่อผู้ป่วย 10.    ระบบแจ้งข้อความให้ผู้ใช้ทราบว่าการบันทึกเสร็จสมบูรณ์ 11.    ผู้ใช้ตอบ ตกลง แล้วกลับเข้าสู่การทำงานในหน้าเมนูหลัก
Exception Flow of Events8.1    ถ้าข้อมูลที่ผู้ใช้กรอกเข้ามาไม่ครบถ้วนสมบูรณ์ 8.2    แสดงข้อความแจ้งเตือนปรากฏขึ้นบนหน้าจอ พร้อมกับแนะนำผู้ใช้ว่าสมควรแก้ไขที่ตรงจุดไหน 8.3    ผู้ใช้แก้ไขข้อมูลในแบบฟอร์มแล้วทดลองสั่งบันทึกข้อมูลใหม่อีกครั้ง
Alternative Flow of Events1.      ลักษณะการทำงานแบบ Batch Operation โดยการเก็บข้อมูลผู้ป่วยส่งต่อไว้ก่อน แล้วจึงสั่งให้บันทึกข้อมูลทั้งหมดในเวลาเดียวกัน
Current Open Issue1.      มีการทำงานแบบ Offline หรือไม่ เช่นในกรณีที่เครื่องเซิร์ฟเวอร์ที่ส่วนกลางไม่พร้อมดำเนินการให้ จะสามารถเก็บข้อมูลการส่งต่อผู้ป่วยไว้ที่เครื่องเทอร์มินอลก่อนหรือไม่ 2.      การแจ้งไปที่เครื่องเทอร์มินอลของสถานบริการรับผู้ป่วย จะให้แจ้งแบบ Synchronous หรือแจ้งแบบ Asynchronous 3.      ต้องการให้เก็บบันทึกเหตุการณ์ ที่ผู้ใช้เข้าใช้งานระบบไว้ในไฟล์บันทึกเหตุการณ์เปลี่ยนแปลง (Event Log) ด้วยหรือไม่
Future Open Issue1.      ในกรณีที่มีผู้ใช้สองคนพยายามจะส่งผู้ป่วยคนเดียวกัน กรณีแบบนี้สามารถเกิดขึ้นได้หรือไม่ และถ้าเกิดขึ้นจะให้แก้ปัญหานี้อย่างไร
Superordinates1.      ตรวจสอบความเป็นผู้ใช้ของระบบ 2.      ตรวจสอบสิทธิการเข้าใช้งาน 3.      เลือกผู้ป่วย 4.      ตรวจสอบสิทธิประกันสุขภาพของผู้ป่วย 5.      เลือกสถานบริการที่รับผู้ป่วย
Subordinates1.      ส่งสัญญาณเตือนสถานบริการฝ่ายรับ
General Description 

2.2 สรุปการใช้งาน Usecase Diagram

ใน Usecase Diagram ประกอบด้วยสัญลักษณ์ 3 อย่างคือ

ชื่อสัญลักษณ์รูปสัญลักษณ์คำอธิบายอย่างย่อ
Usecaseแสดงกรณีที่แอคเทอร์จะทำงานโต้ตอบกับระบบ และจะต้องมีผลลัพธ์บางอย่างเกิดขึ้นถ้าทำสำเร็จ
Actorเป็นผู้กระทำกับระบบงาน โดยสั่งให้ระบบทำงานบางอย่างให้ อาจจะเป็นผู้ป้อนข้อมูลให้กับระบบ หรือเป็นผู้ที่ต้องการข้อมูลจากระบบก็ได้
includes stereotypeรวมเอาอีก usecase หนึ่งที่ปลายลูกศรชี้ไปไว้ด้วยกัน แสดงให้เห็นว่าไปเรียกใช้งาน usecase อีกตัวหนึ่ง
extends stereotypeมี usecase ที่เกิดขึ้นเป็นกรณีพิเศษ ต่อไปจาก usecase ตัวนี้ ซึ่งทางปลายลูกศรจะชี้ไปที่อีก usecase หนึ่งที่เป็นกรณีพิเศษที่ไม่ค่อยจะพบบ่อยในการทำงานตามปกติ

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *