วันพฤหัสบดีที่ 19 กุมภาพันธ์ พ.ศ. 2552

SA-Assignment 6 UML

System Analysis Assignment 6
เรื่อง การวิเคราะห์และออกแบบเชิงวัตถุ

รายละเอียดของงาน : ให้นักศึกษาตอบคำถามจากโจทย์ที่ให้ มีรายละเอียดดังนี้

1. Class Diagram คืออะไร และแสดงให้เห็นโครงสร้างด้านใดของระบบบ้าง
Class Diagram คือ แผนภาพที่ใช้แสดง Class และความสัมพันธ์ในแง่ต่าง ๆ (Relation) ระหว่าง Class เหล่านั้น ซึ่งความสัมพันธ์ที่กล่าวถึงใน Class Diagram นี่ถือเป็นความสัมพันธ์เชิงสถิตย์ (Static Relationship) หมายถึง ความสัมพันธ์ที่มีอยู่แล้วเป็นปกติในระหว่าง Class ต่าง ๆ ไม่ใช่ความสัมพันธ์ที่เกิดขึ้นเนื่องจากกิจกรรมต่าง ๆ ซึ่งเรียกว่า ความสัมพันธ์เชิงกิจกรรม (Dynamic Relationship) สิ่งที่ปรากฏใน Class Diagram นั้นประกอบด้วยกลุ่มของ Class และกลุ่มของ Relationship โดยสัญลักษณ์ที่ใช้ในการแสดง Class นั้นจะแทนด้วยสี่เหลี่ยมที่แบ่งออกเป็น 3ส่วน โดยแต่ละส่วนนั้น (จากบนลงล่าง) จะใช้ในการแสดง ชื่อของ Class, Attribute, และฟังก์ชัน ต่าง ๆ ตามลำดับ
- Class Daiagram เป็นแผนภาพที่แสดงให้เห็นโครงสร้างของข้อมูลระบบ และโครงสร้างด้านการประมวลผลของระบบ (Process)
- Class Daiagram เป็นแผนภาพที่แสดงกลุ่มของคลาส โครงสร้างและอินเตอร์เฟส ตลอดจนความสัมพันธ์ระหว่าง Class ด้วย
- Class คือ กลุ่มของ Object ที่มี Attributes, Functions และความสัมพันธ์ที่เหมือนกัน โดย Object ที่มีคุณสมบัติเดียวกันก็จะรวมกลุ่มอยู่ใน Class เดียวกัน ซึ่ง Class จะต้องเกี่ยวข้องกับระบบที่สนใจ (Problem Domain) เช่น ในระบบจัดซื้อ Class คือ ลูกค้าใบสั่งซื้อ ใบเสนอราคา ใบเสร็จรับเงิน
- Object คือ ทุกสิ่งที่อยู่รอบตัวเรา ทั้งจับต้องได้ เช่น แฟ้ม รถ หนังสือ ฯลฯ รวมถึงที่จับต้องไม่ได้ เช่น รายการขายสินค้า, วิชาเรียน, เที่ยวบิน เป็นต้น
- Class และ Object มีความคล้ายกันมากจนทำให้หลายคนสงสัยว่าเป็นสิ่งเดียวกันหรือไม่ ในความเป็นจริง Class ถือว่าเป็น นามธรรม (Abstract) ในขณะที่ Object นั้นเป็นสิ่งที่มีตัวตน (Concrete) กล่าวคือ Class เป็นเหมือนพิมพ์เขียวของ Object โดยที่ Class จะไม่สามารถทำงานได้ แต่ Object สามารถทำงานได้
- การทำงานของ Object จะเป็นไปตามคุณสมบัติที่กำหนดไว้ใน Class และ Object ทุกตัวก็ต้องอยู่ใน Class ดังนั้น Class และ Object จึงเป็นสิ่งคู่กันเสมอ
- Class นอกจากจะมีชื่อ Class กำกับแล้ว ยังมี คุณสมบัติ (Attributes) และ หน้าที่การทำงาน (Operations หรือ Methods)

- แนวทางการค้นหา Class ในระบบ
1. คำนาม ที่ปรากฏในคำบรรยาย ระบบ จะถูกสร้างเป็น Class เช่น Class รถยนต์
2. คำวิเศษณ์ ที่ปรากฏในคำบรรยาย ระบบ จะถูกสร้างเป็น Attributes เช่น สีรถ รุ่นรถ ยี่ห้อรถ เป็นต้น
3. คำกริยาที่ปรากฏในคำบรรยาย ระบบ จะถูกสร้างเป็น Functions เช่น สตาร์ทรถ

- สัญลักษณ์ Class ประกอบด้วย
1. Class Name จะต้องเป็นคำนาม จะต้องขึ้นต้นด้วยอักษรพิมพ์ตัวใหญ่ (ตัวหนา) และไม่มีช่องว่างระหว่างชื่อคลาส (BankClient)
2. Attributes จะต้องใช้อักษรตัวพิมพ์เล็ก และหากมี 2 คำขึ้นไป ตัวอักษรแรกของคำที่สองจะต้องขึ้นต้นด้วยตัวพิมพ์ใหญ่ โดย Attribute คือ คุณลักษณะของ Class ประกอบด้วย
2.1 การเขียนสัญลักษณ์แทน Class สิ่งที่ต้องคำนึงถึงอีกสิ่งหนึ่งคือ ระดับการเข้าถึงเรียกสัญลักษณ์ที่ใช้แทนการเข้าถึงนี้ว่า Visibility แบ่งออกได้เป็น 3 ประเภท ได้แก่
2.1.1 Private เขียนแทนด้วยสัญลักษณ์ - หมายถึง Attribute หรือ ฟังก์ชัน ที่ไม่สามารถมองเห็นได้จากภายนอก แต่สามารถมองเห็นได้จากภายในตัวของ Class เองเท่านั้น
2.1.2 Protect เขียนแทนด้วยสัญลักษณ์ # หมายถึง Attribute หรือ ฟังก์ชัน ที่สงวนไว้สำหรับการทำ Inheritance โดยเฉพาะ Attribute หรือ ฟังก์ชันเหล่านี้ จะเป็นของ Super class เมื่อทำการ Inheritance แล้ว Attribute หรือ ฟังก์ชัน ที่มี Visibility แบบ Protect จะกลายไปเป็น Private Attribute/ฟังก์ชัน หรือ Protected ขึ้นอยู่กับภาษา Programming ที่นำไปใช้
2.1.3 Public เขียนแทนด้วยสัญลักษณ์ + หมายถึง Attribute หรือ ฟังก์ชัน ที่สามารถมองเห็นได้จากภายนอก และสามารถเข้าไปเปลี่ยนค่า อ่านค่าหรือเรียกใช้งาน Attribute หรือ ฟังก์ชัน นั้นได้ทันทีโดยอิสระจากภายนอก (โดยทั่วไปแล้ว Visibility แบบ Public มักจะใช้กับฟังก์ชันมากกว่า attribute) 2.2 ชื่อของ attribute
2.3 ประเภทของ attribute เช่น integer,Boolean,Real
2.4 ค่าเริ่มต้นของ attribute
3. Functions หรือ Operations คือ พฤติกรรมที่สามารถกระทำกับ Object ได้ประกอบด้วย - ชนิดของการเข้าถึง เช่นเดียวกับ attribute
- ชื่อของ function หรือ operation
- Parameters ที่จำเป็นต่อการทำงานของ function
2. Cardinality Ratio ใน Class Diagram เรียกว่าอะไร อธิบาย
-Multiplicity หมายถึง การพิจารณาจำนวน instances (objects) ของคลาสหนึ่ง ที่สามารถเชื่อมโยงกับinstance (object) ของคลาสที่เกี่ยวข้อง
- Multiplicity คือ Cardinality ratio ได้แก่ 1-1, 1-M, M-Nซึ่งเขียนให้อยู่ในรูป Min..Max - Cardinality ratio คือ การระบุจำนวนสมาชิกของ Entity ที่สัมพันธ์กัน
- Multiplicity ในความสัมพันธ์ (Relationship) เป็นการแสดงจำนวน Object ของ Class หนึ่ง ซึ่งมี

ความสัมพันธ์กับ Objects ของอีก Class หนึ่ง บนเส้นความสัมพันธ์โดยใช้รูปแบบ
Minumum Cardinality .. Maximum Cardinality

3. Aggregation และ Composition Relationship ต่างกันอย่างไร
ความสัมพันธ์ระหว่าง Object ประกอบด้วย
- Association
- Aggregation
- Composition
- Generalization /Specialization

Aggregation
- Aggregation เป็นความสัมพันธ์ระหว่างคลาสแบบต่างระดับ ในลักษณะของการป็นองค์ประกอบต่าง ๆ เรียกว่า “Part Class” ส่วน คลาสที่เกิดจากการรวมกันขององค์ประกอบต่าง ๆ เรียกว่า “Whole Class” โดยข้อสังเกตของความสัมพันธ์ชนิดนี้คือ Part Class มีอิสระ ไม่จำเป็นต้องพึ่งพา Whole Class ถูกทำลาย หรือเสียหาย Part Class ก็ยังคงอยู่ เช่น ความสัมพันธ์ระหว่างคลาส “Team” กับ Person” โดยที่ Team จะต้องมี Person มารวมกันเป็นองค์ประกอบหรือความสัมพันธ์ระหว่างคลาส “Car” มีคลาส “Engine”, “Wheel”, Steering” เป็นต้น
- การนำส่วนประกอบย่อยๆ หลายๆอย่างมาประกอบเป็นหนึ่ง Object ที่สามารถใช้งานได้อย่างสมบูรณ์ ถ้าขาดส่วนหนึ่งส่วนใดจะเกิดการผิดพลาดได้ เป็นความสัมพันธ์แบบ Composition แทนด้วยข้าวหลามตัด ซึ่งความสัมพันธ์ระหว่าง Object หรือ Class แบบ “Whole-Part” หรือ “is part of” โดยจะมี Class ที่ใหญ่ที่สุดที่เป็น Object หลัก และมี Class อื่นเป็นส่วนประกอบ
- วัตถุมี วัตถุอื่นๆ เป็นองค์ประกอบย่อย เช่น Car มี engine และwheels เป็นองค์ประกอบ
- ปลายที่มีข้าวหลามตัดเป็น Class “Container” ปลายอีกข้างเป็น Class “ส่วนประกอบ”
Composition
- Object ที่ไม่ได้เป็น Object หน่วยย่อยที่สุด หรือเป็น Object ที่ประกอบขึ้นจาก Object อื่นหลายๆ Object อยู่ภายใน เช่น Object Computer ประกอบไปด้วย Object video card, object keyboards, object drive, object power supply เป็นต้น
- ในความสัมพันธ์แบบ Aggregation หาก Part Class ได้กลายสภาพเป็น “ส่วนหนึ่ง (Composed-of)” ของ Whole Class จะทำให้เกิดความสัมพันธ์ที่เรียกว่า “Composition” เนื่องจาก Part Class ไม่สามารถทำงานได้หากไม่มี Whole Class และ Part Class จะต้องทำงานร่วมกับ Whole Class ตลอดอายุของ Whole Class ดังนั้นเมื่อ Whole Class ถูกลบ Part Class ก็ถูกลบไปด้วย เช่น ความสัมพันธ์ระหว่างคลาส “Employee” กับ “EmpHistory” เมื่อพนักงานลาออกไปประวัติพนักงานก็จะไม่มีอีกต่อไป หรือ คลาส “Windows” กับ คลาสที่เป็นส่วนประกอบของโปรแกรมวินโดวส์ หากโปรแกรมวินโดวส์ถูกปิดลงส่วนประกอบอื่น ๆ ของโปรแกรมวินโดวส์ก็จะถูกปิดลงไปด้วย เป็นต้น
- เป็นความสัมพันธ์ระหว่าง Object หรือ Class แบบขึ้นต่อกันและมีความเกี่ยวข้องกันเสมอ โดยจะมี Class ซึ่งเป็นองค์ประกอบของ Class อื่นที่ใหญ่กว่า
- วัตถุมีวัตถุอื่นๆ เป็นองค์ประกอบย่อยทั้งหมด
- การส่ง message ติดต่อกับวัตถุที่เป็นองค์ประกอบรวม อาจมีผลกับองค์ประกอบทั้งหมด
- ถ้า delete วัตถุที่เป็นองค์ประกอบรวม ส่วนย่อยจะต้องถูก delete ทิ้งไปด้วย

ความเหมือนและความแตกต่างระหว่าง Aggregation และ Composition


4. อธิบายความสัมพันธ์ระหว่าง Use Case Diagram, Class Diagram Statechart Diagram

4.1 Use Case Diagram คือ แผนภาพที่แสดงหน้าที่ที่ระบบจะต้องกระทำ (Functionality) ทั้งหมด โดยระบบดังกล่าวจะต้องเป็นระบบที่เราสนใจ บางทีเรียกว่าเป็น ระบบย่อย (Subsystem) และแสดงปฏิสัมพันธ์ระหว่างระบบงานและสิ่งที่อยู่นอกระบบงาน

ในการพัฒนาระบบงานใดๆ นั้น การเก็บรวบรวมความต้องการของผู้ใช้มีความสำคัญมาก และจะทำในระยะแรกๆ ของการพัฒนาระบบงานเสมอ Use case diagram เป็น Diagram ที่ทำหน้าที่ Capture requirement

- เป็นเทคนิคในการสร้างแบบจำลองเพื่อใช้อธิบายหน้าที่ของระบบใหม่ หรือระบบปัจจุบัน
- กระบวนการสร้าง Use case เป็นแบบ Iteration
- ความต้องการของระบบจะได้จาก ลูกค้า/ผู้ใช้ + ผู้พัฒนาระบบ
- องค์ประกอบจะมี Use case, Actor, Use case Relation และ System


4.2 Class Diagram คือ แผนภาพที่ใช้แสดง Class และ ความสัมพันธ์ระหว่าง Class ของระบบที่สนใจ (Problem Domain) เช่น ในระบบจัดซื้อ Class ที่เกี่ยวข้องคือ ผู้ผลิต, พนักงานจัดซื้อ, ใบสั่งซื้อ, ใบเสนอราคา, ใบเสร็จรับเงิน เป็นต้น
Class Diagram ประกอยด้วย Class และความสัมพันธ์ต่างๆ ระหว่าง Class เช่น Dependency, generalization, association เป็นต้น Class Diagram ยังสามารถทำการแสดงรายละเอียดภายใน Class แต่ละ Class ได้ว่ามี Method อะไรบ้าง Field และ Attribute เป็นอย่างไร 4.3 State Diagram หรือ Statechart Diagram เป็นแผนภาพที่แสดงให้เห็นพฤติกรรมของ Object เช่นเดียวกับแผนภาพในกลุ่ม Behavioral Diagram อื่น ๆ แต่ Statechart Diagram จะเน้นที่การแสดงให้เห็นถึงสถานะ (State) การเปลี่ยนสถานะ (Transition) ที่มีต่อเหตุการณ์ (Event) ที่เกิดในช่วงชีวิตของ Object 1 ช่วง (1Sequence) ทำให้เรียกได้อีกชื่อหนึ่งว่า “State Machine Diagram” เนื่องจากเริ่มต้นมาจากเลียนแบบการเปลี่ยนพฤติกรรมของเครื่องจักร
State Diagram ประกอบด้วย State ต่างๆ ของ Object และเหตุการณ์ต่างๆ ที่ทำให้สถานะของ Object เปลี่ยนและการกระทำที่เกิดขึ้นเมื่อสถานะของระบบเปลี่ยนไป สามารถบอกสถานะของ Object ได้ โดยจะให้ความสนใจว่า ณ เวลาใดๆ Object นั้นมี status เป็นแบบใด ตัวอย่าง State diagram ที่สร้างจาก visual uml
Statechart Diagram เหมาะสำหรับการอธิบาย Object ที่มีสถานะจำนวนมาก และใช้อธิบายสถานะของ Object ที่ถูกใช้งานข้าม Use Case ซึ่งโดยทั่วไปจะเป็นระบบงานขนาดใหญ่ ดังนั้น หากเป็นระบบงานขนาดเล็กไม่ซับซ้อน ทีมงานอาจใช้ Statechart Diagram อธิบายเพียงบาง Object ที่จำเป็นเท่านั้น

State-Transition Diagram ทำหน้าที่ต่อไปนี้
- แสดงวงจรชีวิตของออบเจ็กต์ ระบบย่อยต่างๆ และระบบโดยรวม
- บ่งบอกว่าเหตุการณ์ต่างๆ จะส่งผลกระทบให้เกิดอะไรขึ้นบ้างในระบบ
- อาจมีจุดเริ่มต้นและและจุดจบได้หลายจุด

ความสัมพันธ์ระหว่าง Use Case Diagram, Class Diagram Statechart Diagram

- Use Case Diagram จะอธิบายทุก ๆ กรณีที่สามารถเกิดขึ้นได้ หลังจากนั้นจะมีการนำข้อมูลหรือเหตุการณ์ที่อธิบายจาก Use Case Diagram มาเขียน Class Diagram เพื่อแสดงความสัมพันธ์ของระบบทั้งหมด หลังจากนั้นจะนำเอา ข้อมูลที่ได้จากการออกแบบมาทำการเขียน State Diagram เพื่อนำไปพัมนาในส่วนพัฒนาต่อไปได้

แผนภาพใช้ในการวิเคราะห์ และออกแบบ
1. class diagram แสดงองค์ประกอบและความสัมพันธ์ของคลาส
2. object diagram แสดงองค์ประกอบและความสัมพันธ์ของวัตถุแผนภาพใช้ในการสร้างระบบ
3. component diagram แสดงโครงสร้างทางกายภาพสำหรับการเขียนโปรแกรม
4. deployment diagram แสดงความสัมพันธ์ของชุดโปรแกรมและฮาร์ดแวร์ที่ใช้
ส่วนที่แสดงพฤติกรรมและบทบาท ระบบ
5. use case diagram แสดงความต้องการของระบบ
6. sequence diagram จำลองพฤติกรรมของคลาสต่าง ๆ หรือขั้นตอนการทำงาน
7. collaboration diagram จำลองพฤติกรรมหรือความสัมพันธ์เชิงกิจกรรม
8. statechart diagram แสดงเหตุการณ์ของแต่ละสถานะ
9. activity diagram แสดงขั้นตอนของกิจกรรมในการปฏิบัติงาน

ไม่มีความคิดเห็น: