UML


แบบจำลอง UML (Unified Modeling Language)
UML (Unified Modeling Language) เป็นภาษาแผนภาพที่ใช้แสดงการทำงานของระบบงาน ในการวิเคราะห์และออกแบบระบบเชิงวัตถุ (Object Oriented Analysis and Design) ซึ่งภาษาแผนภาพที่ใช้แสดงนั้นมีหลายแบบด้วยกัน ได้แก่ Use Case Diagram, Class Diagram, Sequence Diagram และ Activity Diagram ซึ่งมีหลักการในการออกแบบและเขียนแผนภาพดังต่อไปนี้

Use Case Diagram
Use Case Diagram คือ แผนภาพที่แสดงการทำงานของผู้ใช้ระบบ (User) และความสัมพันธ์กับระบบย่อย (Sub systems) ภายในระบบใหญ่ ในการเขียน Use Case Diagram ผู้ใช้ระบบ (User) จะถูกกำหนดว่าให้เป็น Actor และ ระบบย่อย (Sub systems)  คือ Use Case  จุดประสงค์หลักของการเขียน Use Case Diagram ก็เพื่อเล่าเรื่องราวทั้งหมดของระบบว่ามีการทำงานอะไรบ้าง เป็นการดึง Requirement หรือเรื่องราวต่าง ๆ ของระบบจากผู้ใช้งาน ซึ่งถือว่าเป็นจุดเริ่มต้นในการวิเคราะห์และออกแบบระบบ สัญลักษณ์ที่ใช้ใน Use Case Diagram   จะใช้สัญลักษณ์รูปคนแทน Actor ใช้สัญลักษณ์วงรีแทน Use Case   และใช้เส้นตรงในการเชื่อม Actor  กับ Use Case  เพื่อแสดงการใช้งานของ Use Case ของ Actor   นอกจากนั้น Use Case ทุก ๆตัวจะต้องอยู่ภายในสี่เหลี่ยมเดียวกันซึ่งมีชื่อของระบบระบุอยู่ด้วย
Use Case Diagram ที่เป็นการจำลองภาพการทำงานของระบบการจัดการการใช้บัตรเครดิต ซึ่งจะเห็นได้ว่าระบบนี้ประกอบไปด้วย 4 ระบบย่อยคือ
1. ระบบการรับและประมวลผลรายการการใช้จ่ายด้วยบัตรเครดิตของลูกค้าแสดงด้วย Use  Case ชื่อ Perform Card Transaction
2. ระบบการจัดทำใบเสร็จการชำระเงินด้วยบัตรเครดิต แสดงด้วย Use Case ชื่อ Process Customer Bill
3. ระบบการรวบรวมยอดใช้จ่ายแต่ละวัน แสดงด้วย Use Case ชื่อ Reconcile Transaction
4. ระบบการจัดการบัญชีของลุกค้า แสดงด้วย Use Case ชื่อ Manage Customer Account

ความสัมพันธ์ระหว่าง Use Case
หมายถึง ความสัมพันธ์ที่แต่ละ Use Case ภายในระบบเองมีความสัมพันธ์กัน โดยความสัมพันธ์ของ Use Case นั้น สามารถแบ่งออกได้ 2 แบบ คือ Include และ Extends 
ความสัมพันธ์แบบ Include หมายถึง การที่ Use Case หนึ่ง เรียกใช้งาน Use Case อีกอันหนึ่ง คล้าย ๆ กับการเรียกใช้งาน Program ย่อยโดย Program หลัก การเขียนสัญลักษณ์แทนการ Include ของ Use Case นั้น ใช้สัญลักษณ์เส้นประพร้อมหัวลูกศรชี้ไปยัง Use Case ที่ถูกเรียกใช้งาน   และมีคำว่า <<include>> กำกับอยู่บนเส้นลูกศร
ความสัมพันธ์แบบ Extend หมายถึง การที่ Use Case หนึ่งไปมีผลต่อการทำงานตามปกติของอีก Use Case หนึ่ง   นั่นหมายถึงว่า Use Case ที่มา Extend นั้นจะมีผลทำให้การทำงานของUse Case ที่ถูก Extend ถูกรบกวนหรือมีการสะดุด หรือมีกิจกรรมที่เปลี่ยนแปลงไป สัญลักษณ์ที่ใช้แทน Extend ใน Use Case Diagram ก็คือ ใช้สัญลักษณ์ลูกศร โดยเริ่มจาก Use Case ที่Extend ไปยัง Use Case ที่ถูก Extend และมีคำว่า << extend >>กำกับ 
                       
Class Diagram
Class Diagram คือ แผนภาพที่ใช้แสดง Class และความสัมพันธ์ในแง่ต่าง ๆ (Relation)  ระหว่าง Class เหล่านั้น ซึ่งความสัมพันธ์ที่กล่าวถึงใน Class Diagram นี่ถือเป็นความสัมพันธ์เชิงสถิตย์ (Static Relationship) หมายถึง ความสัมพันธ์ที่มีอยู่แล้วเป็นปกติในระหว่าง Class ต่าง ๆ ไม่ใช่ความสัมพันธ์ที่เกิดขึ้นเนื่องจากกิจกรรมต่าง ๆ ซึ่งเรียกว่า ความสัมพันธ์เชิงกิจกรรม (Dynamic Relationship) สิ่งที่ปรากฏใน Class Diagram นั้นประกอบด้วยกลุ่มของ Class และกลุ่มของ Relationship โดยสัญลักษณ์ที่ใช้ในการแสดง Class นั้นจะแทนด้วยสี่เหลี่ยมที่แบ่งออกเป็น 3ส่วน โดยแต่ละส่วนนั้น (จากบนลงล่าง) จะใช้ในการแสดง ชื่อของ Class, Attribute, และฟังก์ชัน ต่าง ๆ ตามลำดับ
ในการเขียนสัญลักษณ์แทน Class สิ่งที่ต้องคำนึงถึงอีกสิ่งหนึ่งคือ ระดับการเข้าถึงเรียกสัญลักษณ์ที่ใช้แทนการเข้าถึงนี้ว่า Visibility แบ่งออกได้เป็น 3 ประเภท ได้แก่
1. Private เขียนแทนด้วยสัญลักษณ์   -   หมายถึง Attribute หรือ ฟังก์ชัน ที่ไม่สามารถมองเห็นได้จากภายนอก   แต่สามารถมองเห็นได้จากภายในตัวของ Class เองเท่านั้น
2. Protect เขียนแทนด้วยสัญลักษณ์   #   หมายถึง Attribute หรือ ฟังก์ชัน ที่สงวนไว้สำหรับการทำ Inheritance โดยเฉพาะ Attribute หรือ ฟังก์ชันเหล่านี้ จะเป็นของ Super class เมื่อทำการ Inheritance แล้ว Attribute หรือ ฟังก์ชัน ที่มี Visibility แบบ Protect จะกลายไปเป็น Private Attribute/ฟังก์ชัน หรือ Protected ขึ้นอยู่กับภาษา Programming ที่นำไปใช้
3. Public เขียนแทนด้วยสัญลักษณ์   +   หมายถึง Attribute หรือ ฟังก์ชัน ที่สามารถมองเห็นได้จากภายนอก และสามารถเข้าไปเปลี่ยนค่า อ่านค่าหรือเรียกใช้งาน Attribute หรือ ฟังก์ชัน นั้นได้ทันทีโดยอิสระจากภายนอก (โดยทั่วไปแล้ว Visibility แบบ Public มักจะใช้กับฟังก์ชันมากกว่า Attribute)

Sequence Diagram
Sequence Diagram คือ การสร้างแบบจำลองเชิงกิจกรรม (Dynamic Model หรือ Behavioral Model) ซึ่งก็คือการจำลองกระบวนการที่ทำให้เกิดกิจกรรมของระบบ เกิดจากชุดของกิจกรรม  ซึ่งกิจกรรมหนึ่ง ๆ นั้นเกิดจากการที่ Object หนึ่งโต้ตอบกับอีก Object หนึ่ง Sequence Diagram เป็น Diagram ที่ประกอบด้วย Class หรือ Object เส้นที่ใช้เพื่อแสดงลำดับเวลา และเส้นที่ใช้เพื่อแสดงกิจกรรมที่เกิดจาก Object หรือ Class ใน Diagram ภายใน Sequence Diagram จะใช้สี่เหลี่ยมแทน Class หรือ Object ซึ่งภายในกรอบสี่เหลี่ยมจะมีชื่อของ Object หรือ Class ประกอบอยู่ ในรูปแบบ Object: Class กิจกรรมที่เกิดขึ้นจะแทนด้วยลูกศรแนวนอนที่ชี้จาก Class หรือ Object หนึ่งไปยัง Class หรือ Object ต่อไป  การระบุชื่อกิจกรรมนั้นจะอยู่ในรูปแบบ [Condition] ฟังก์ชัน ชื่อของกิจกรรมจะต้องเป็นฟังก์ชัน ที่มีอยู่ใน Class หรือ Object ที่ลูกศรชี้ไป เส้นแสดงเวลาจะแทนด้วยเส้นตรงประแนวตั้ง โดยเวลาจะเดินจากด้านบนลงมาสู่ด้านล่าง  นั้นหมายถึงว่า  ถ้าหากกิจกรรมที่เกิดขึ้นเกิดอยู่ด้านบนสุดกิจกรรมนั้นเป็นกิจกรรมแรก  และกิจกรรมที่อยู่บริเวณต่ำลงมาจะเป็นกิจกรรมที่เกิดต่อจากนั้น

 Activity Diagram
Activities Diagram แสดงลำดับ กิจกรรมของการทำงาน (Work Flow) สามารถแสดงทางเลือกที่เกิดขึ้นได้ Activity Diagram จะแสดงขั้นตอนการทำงานในการปฏิบัติการ โดยประกอบไปด้วยสถานะต่างๆ ที่เกิดขึ้นระหว่างการทำงาน และผลจากการทำงานในขั้นตอนต่าง ๆ
1 วงกลมสีดำ คือ จุดเริ่มต้น
2 วงกลมสีดำ มีวงล้อมอีกชั้น คือ จุดสิ้นสุด
3 Swim lanes เป็นการแบ่งกลุ่ม activity เป็นช่องในแนวดิ่ง และกำหนดแต่ละช่องด้วยชื่อ object ไว้ด้านบน   การแบ่งเป็น Swim lanes ช่วยให้แยกแยะผู้รับผิดชอบ แต่ละงานได้ว่าใครควรจะเป็นคนทำงานในหมวดหมู่ใด