สัปดาห์ที่ 11 UML

จุดประสงค์การเรียนรู้

  1. ใช้ Use Case Diagram เพื่อวิเคราะห์ความต้องการได้
  2. ใช้ Class Diagram เพื่อออกแบบโครงสร้างคลาสได้
  3. ใช้ Sequence Diagram เพื่อออกแบบลำดับการทำงานได้

เนื้อหา

Use Case Diagram

Use Case Diagram แสดงผู้ใช้งาน ระบบ และกรณีการใช้งาน ช่วยให้ทีมเข้าใจขอบเขตและความต้องการของระบบร่วมกัน

Class Diagram

Class Diagram แสดงคลาส คุณลักษณะ เมธอด และความสัมพันธ์ เช่น Association, Inheritance และ Dependency เหมาะกับการออกแบบระบบเชิงวัตถุ

Sequence Diagram

Sequence Diagram แสดงลำดับการสื่อสารระหว่าง Object ตามเวลา ช่วยอธิบาย flow การทำงานของฟีเจอร์สำคัญ

Workshop

ออกแบบ UML ของ Mini Project โดยเริ่มจาก Use Case แล้วต่อยอดเป็น Class Diagram และ Sequence Diagram

รายละเอียดการเรียนรู้

ผู้เรียนใช้ UML เพื่อสื่อสารการออกแบบก่อนเขียนโค้ด ไม่ใช่เพื่อวาดให้สวยอย่างเดียว Use Case Diagram ช่วยกำหนดขอบเขตงาน Class Diagram ช่วยเห็นโครงสร้างข้อมูลและความสัมพันธ์ ส่วน Sequence Diagram ช่วยตรวจลำดับการทำงานของฟีเจอร์สำคัญ

การออกแบบ UML ควรสัมพันธ์กับโค้ดจริง หาก Diagram มีคลาสหรือเมธอดใด โค้ดควรสะท้อนแนวคิดนั้น และหากโค้ดเปลี่ยน Diagram ควรถูกปรับให้ทันสมัยด้วย

แนวปฏิบัติ

  1. เริ่มจาก Use Case ที่สำคัญที่สุด
  2. แยก Actor กับ System ให้ชัดเจน
  3. Class Diagram ต้องระบุความสัมพันธ์หลัก
  4. Sequence Diagram ควรเล่า flow เดียวให้ชัด

แบบฝึกหัด

สร้าง UML 3 แบบสำหรับ Mini Project ได้แก่ Use Case Diagram, Class Diagram และ Sequence Diagram ของฟีเจอร์หลัก

รูปแบบการนำเสนอเพิ่มเติมตามแม่แบบ

UML (Unified Modeling Language) คือภาษาภาพสำหรับสื่อสารการออกแบบระบบ ช่วยให้ทีมเข้าใจ requirement, class structure และลำดับการทำงานก่อนลงมือเขียนโค้ด

%%{init: {'theme': 'base', 'themeVariables': {'background': '#282828','primaryColor': '#3c3836','primaryTextColor': '#fbf1c7','primaryBorderColor': '#fabd2f','lineColor': '#83a598','secondaryColor': '#504945','tertiaryColor': '#665c54'}}}%%
flowchart LR
  A[Use Case Diagram
ความต้องการผู้ใช้] --> B[Class Diagram
โครงสร้างคลาส] B --> C[Sequence Diagram
ลำดับการทำงาน] C --> D[Implementation
เขียนโค้ด]

สมการประเมินความครบของแบบจำลอง

M=dr×100%

ตัวอย่างโค้ดจาก Class Diagram

#include <iostream>
using namespace std;

class Order {
public:
    void confirm() {
        cout << "Order confirmed" << endl;
    }
};

int main() {
    Order order;
    order.confirm(); // expected: Order confirmed
    return 0;
}
Diagram ใช้อธิบาย ผลลัพธ์ที่คาดหวัง
Use Case ผู้ใช้และกรณีใช้งาน ขอบเขตระบบ
Class class และความสัมพันธ์ โครงสร้างโค้ด
Sequence ลำดับ message flow ของฟีเจอร์

กลับรายวิชา