บทที่ 7 การวิเคราะห์และออกแบบระบบเชิงวัตถุ
สรุปหนังสือวิศวกรรมซอฟแวร์:สุวรรณี อัศวกุลชัย
การวิเคราะห์และออกแบบระบบเชิงวัตถุ จะพิจารณาระบบเป็นกลุ่มของวัตถุโดยประกอบด้วย ข้อมูล ฟังชัน ตัวดำเนินการ ทำให้สามารถโยกย้ายปรับเปลี่ยนแต่ละวัตถุโดยไม่กระทบส่วนอื่น ทำใไ้สามารถนำแต่ละวัตถุไปใช้กับโครงการอื่นได้
แนวคิดเชิงวัตถุ (Object oriented)
คือหนึ่งในรูปแบบการเขียนโปรแกรมคอมพิวเตอร์ ที่ให้ความสำคัญกับ วัตถุ ซึ่งสามารถนำมาประกอบกันและนำมาทำงานรวมกันได้ โดยมีความสัมพันธ์กันในแต่ละส่วน
Unified Modeling Language Model (UML)
UML คือ เป็นภาษาสัญลักษณ์รูปภาพมาตรฐาน สำหรับใช้ในการสร้างแบบจำลองเชิงวัตถุ โดย UML จะใช้สัญลักษณ์ต่างๆ เพื่อแทนสิ่งต่างๆได้แก่ความสัมพันธ์ องค์ประกอบ ภาวะที่มีหลายรูปแบบ การห่อหุ้ม คราสการผึงพา
ความสัมพันธ์ (Aggregation) เป็นความสัมพันธ์ระหว่างคราสแบบต่างระดับ ในลักษะณะของการเป็นองค์ประกอบต่างๆเรียกว่า “คราสบางส่วน (Part class)” ส่วนคราสที่เกิดจากการร่วมกันขององค์ประกอบต่างๆเรียกว่า “คราสทั้งหมด(Whole class)” ความสัมพันธ์ชนิดนี้คือคราสบางส่วนมีอิสระ ไม่ขึ้นกับคราสทั้งหมดถึงแแม้ว่าคราสทั้งหมดจะถูกทำลาย
องค์ประกอบ (Composition) เป็นความสัมพันธ์ระหว่างวัตถุหรือคราสแบบขึ้นต่อกันและมีความเกี่ยวข้องกันเสมอ โดยจะมีคราสซึ่งเป็นองค์ประกอบของคราสที่ใหญ่กว่า เมื่อคราสที่ใหญ่กว่าถูกทำลายคราสที่เป็นองค์ประกอบก็จะถูกทำลายด้วย
ลักษณะทั่วไป (generalization) เป็นการสืบทอดคุณสมบัติจากคราสหญ่(Super class)ไปยังคราสย่อย (sub class)
การสืบทอดคุณสมบัติ (inheritance) คือการสืบทอดโครงสร้างข้อมูลและการดำเนินการ
พอลิมอร์ฟิซึม (polymorphism) คือ การที่วัตถุที่ต่างกันมีปฎิกิริยาตอบสนองต่อฟังก์ชัน/ข้อความที่ต่างกัน
การห่อหุ้ม (encapsulation) คือการจำกัดการเข้าถึงข้อมูลบ้างอย่างที่ไม่ต้องการให้ส่วนอื่นรับรู้แต่ให้เข้าถึงผ่านส่วนประสาน(Interface hiding)
การออกแบบระบบโดยใช้ UML model
การออกแบบระบบโดยใช้ UML model เราจะวาดรูปองค์ประกอบของซอฟแวร์ ให้อยู่ในไดอะแกรม เปรียบเสมือนการร่างแบบที่สถาปนิกใช้ในการออกแบบสิ่งก่อสร้างซึ่งไดอะแกรมออกที่ใช้กันมีอยู่ 9 ชนิดคือ
Use case diagram ใช้เพื่ออธิบายชุดของการกระทำว่าระบบควรหรือสามารถทำงานร่วมกับผู้ใช้ภายนอกของระบบ ช่วยให้ทีมพัฒนาทราบถึงความสามารถของรบบ และง่ายต่อการสื่อสารระหว่างทีมพัฒนากับลูกค้า
Class diagram คือ แผนภาพที่ใช้แสดง Class และความสัมพันธ์ระหว่างคราสของระบบที่เราสนใจ โดยมีองค์ประกอบดังนี้
- Class Name คือ ชื่อของ Class
- Attributes คือ คุณลักษณะของ Class
- Operations หรือ Methods คือ กิจกรรมที่สามารถกระทำกับ Object นั้นๆได้
- Cardinality ratio ใช้แสดงถึงอัตราส่วนของความสัมพันธ์ ใช้แสดงถึงอัตราส่วนของความสัมพันธ์ แทนที่ด้วยตัวเลข 1, M และ N โดย1 : 1 แทนความสัมพันธ์แบบหนึ่งต่อหนึ่ง 1 : N แทนความสัมพันธ์แบบหนึ่งต่อหลายM : N แทนความสัมพันธ์แบบหลายต่อหลาย
หลักการในการออกแบบ Class diagram
- กำหนดขอบเขตของปัญหาให้ชัดเจน
- วิเคราะห์ Tangible objects ให้ครบทุกตัว
- วิเคราะห์ Intangible objects ให้ครบทุกตัว
- วิเคราะห์ Classification abstraction เพื่อแยกแยะและสร้างครางจาก object ที่มีอยู่
- วิเคราะห์ Aggregation abstraction โดยพิจารณาคราสที่ได้จาก Classification abstraction ว่ามีความสัมพันธ์กันแบบ 1:Nหรือ N:N
- วิเคราะห์หา generalization โดยพิจารณาคราสต่างๆ ในคราสไดอะแกรม
- การวิเคราะห์ความสัมพันธ์ (association)โดยพิจารณาคราสต่างๆ ในคราสไดอะแกรม เพิ่มเติมสัญลักษณะของความสัมพันธ์ลงในคราสไดอะแกรม
Object diagram จะมีลักษณะคล้ายกับ Class Diagram แต่จะมองสิ่งต่าง ๆ เป็นวัตถุแทน โดยประกอบด้วยคุณสมบัติ (Properties) กับ พฤติกรรม (Behavior)
วิธีการออกแบบ Object diagram
- วิเคราะห์ระบบ พิจารณาข้อมูลและความสัมพันธ์ที่สำคัญ
- พิจารณาข้อมูลที่มีหน้าที่ชัดเจน
- เพิ่มประสิทธิภาพให้กับข้อมูล
ก่อนที่จะวาดแผนภาพวัตถุสิ่งต่อไปนี้ควรจะจำได้และเข้าใจได้อย่างชัดเจน:
- แผนภาพวัตถุจะประกอบด้วยวัตถุ
- การเชื่อมโยงในแผนภาพวัตถุที่ใช้ในการเชื่อมต่อวัตถุ
- วัตถุและการเชื่อมโยงเป็นสององค์ประกอบที่ใช้ในการสร้างแผนภาพวัตถุ
ตอนนี้หลังจากนี้สิ่งต่อไปนี้จะต้องมีการตัดสินใจก่อนที่จะเริ่มการก่อสร้างของแผนภาพ:
- แผนภาพวัตถุควรจะมีชื่อที่มีความหมายเพื่อบ่งชี้ถึงจุดประสงค์ของมัน
- องค์ประกอบที่สำคัญที่สุดจะต้องมีการระบุ
- สมาคมระหว่างวัตถุควรจะชี้แจง
- ค่าขององค์ประกอบที่แตกต่างกันจะต้องมีการจับจะรวมไว้ในแผนภาพวัตถุ
- เพิ่มบันทึกที่เหมาะสมที่จุดที่ชัดเจนมากขึ้นเป็นสิ่งจำเป็น
แผนภาพต่อไปนี้เป็นตัวอย่างของแผนภาพวัตถุ เพราะมันหมายถึงระบบการจัดการการสั่งซื้อที่เราได้กล่าวถึงในคลาสไดอะแกรมแผนภาพต่อไปนี้เป็นตัวอย่างของระบบที่เวลาใดเวลาหนึ่งของการซื้อ มันมีวัตถุต่อไปนี้
- ลูกค้า
- คำสั่ง
- SpecialOrder
- NormalOrder
ตอนนี้วัตถุลูกค้า © มีความเกี่ยวข้องกับวัตถุสามคำสั่ง (O1, O2 และ O3) เพื่อวัตถุเหล่านี้มีความเกี่ยวข้องกับคำสั่งพิเศษและวัตถุเพื่อปกติ (S1, S2 และ N1)ลูกค้าจะมีดังต่อไปนี้คำสั่งซื้อที่มีตัวเลขที่แตกต่างกัน (12, 32 และ 40) เวลาโดยเฉพาะอย่างยิ่งการพิจารณา
Sequence diagram คือแผนภาพUML ที่ใช้กันมากที่สุดโดย แสดงให้เห็นถึงการมีปฏิสัมพันธ์ระหว่างวัตถุในลำดับตามลำดับคือลำดับที่การโต้ตอบเหล่านี้เกิดขึ้น นอกจากนี้เรายังสามารถใช้Sequence diagram แสดงเหตุการณ์ข้อตกลงหรือสถานการณ์เหตุการณ์เพื่ออ้างถึงSequence diagram อธิบายวิธีและลำดับของวัตถุในฟังก์ชั่นระบบ แผนภาพเหล่านี้ถูกใช้อย่างกว้างขวางโดยนักธุรกิจและนักพัฒนาซอฟต์แวร์เพื่อจัดทำเอกสารและทำความเข้าใจข้อกำหนดสำหรับระบบใหม่และที่มีอยู่
- Actors ใช้เพื่ออธิบายบทบาทต่าง ๆ รวมถึงผู้ใช้ที่เป็นมนุษย์และสิ่งอื่น ๆ ภายนอก โดยใช้สัญกรณ์คน
2. massage แสดงถึง การติดต่อที่ส่งจากอ็อบเจกต์หนึ่งไปยังอ็อบเจกต์หนึ่ง
3. timeเป็นการแสดงเวลาของเป็นลักษะณะแนวตั้ง
Collaboration diagram เป็นแผนภาพแสดงการทำงานร่วมกันระหว่างอ็อบเจกต์เป็นสำคัญ นอกจากนี้ยังแสดงลำดับการทำงานก่อนและหลังด้วย
Activity diagram เป็นแผนภาพแสดงขั้นตอนของกิจกรรมในการปฏิบัติงาน (Work flow) สามารถแสดงทางเลือกที่เกิดขึ้นได้ ประกอบไปด้วยสถานะต่างๆ ที่เกิดขึ้นระหว่าง การทำงานและผลจากการทำงานในขั้นตอนต่างๆ
ขั้นตอนในการเขียน Activity diagram
- วิเคราะห์กิจกรรมต่างๆที่จะทำการออกแบบ
- พิจารณากิจกรรมย่อยที่เกิดขึ้น ภายใต้เงือนไขหรือกรณีต่างๆที่เกิดขึ้นเมื่อเป็นไปตามเงือนไข
- จัดเรียงลำดับกิจกรรมที่เกิดขึ้นก่อนหลัง
- เขียนกิจกรรมย่อยด้วยสัญลักษณ์แสดงกิจกรรม
- เขียนจุดเริ่มต้น จากนั้นจึงเขียนกิจกรรมตามลำดับก่อนหลัง