470 likes | 656 Views
Object-Oriented Analysis and Design. ภาคการศึกษาที่ 2 / 2549. บทที่ 3 Introduction to UML. แนะนำ UML (Unified Modeling Language). Modeling. การสร้างแบบจำลอง ( Modeling )
E N D
Object-Oriented Analysis and Design ภาคการศึกษาที่ 2 / 2549 บทที่ 3 Introduction to UML
Modeling การสร้างแบบจำลอง (Modeling) เป็นวิธีการวิเคราะห์ และออกแบบ (Analysis and Design) วิธีการหนึ่งที่เน้นการสร้างแบบจำลอง เพื่อให้สามารถเข้าใจในปัญหาของระบบ ใช้เป็นเครื่องมือในการสื่อสาร แนวคิดในการพัฒนาระบบ กับบุคคลอื่นๆ Visual Modeling ใช้สัญลักษณ์รูปภาพในการสร้างแบบจำลอง
ความเป็นมาของภาษา UML จากความนิยมในการใช้แนวคิดเชิงวัตถุ (Object Orientation) ในการวิเคราะห์ออกแบบและพัฒนาระบบซอฟตแวรที่มีขนาดใหญและซับซอน ทําใหมีผูคิดคนวิธีการพัฒนาซอฟตแวรเชิงวัตถุ ขึ้นหลายวิธี แต่ละวิธีของการวิเคราะหออกแบบจะมีการกําหนดสัญลักษณรูปภาพ(Notation)ตางกัน รวมทั้งจุดเดนจุดดอยของแตละวิธีการก็แตกตางกัน ซึ่งยากที่จะตอบวิธีการใดดีที่สุด ผูออกแบบและพัฒนาระบบซอฟตแวร ที่มีประสบการณมักจะใชหลายวิธีการรวมกัน อันเปนที่มาของการรวมกันของวิธีการตางๆ ในเวลาต่อมา
ความเป็นมาของภาษา UML ชวงแรก เปนการวมกันระหวางวิธีการชื่อ Booch ของ Grady Booch และ OMT ของ James Rumbaugh เปนการพัฒนากระบวนการพัฒนาซอฟตแวรเชิงวัตถุที่มีเปาหมายใหเปนหนึ่งเดียวกัน (Unified Method) โดยนําเอาวิธีการของ Booch และOMT(Object Modeling Technique) มารวมกันแล้วปรับปรุงใหม ตอมา Ivar Jacobson ผูพัฒนากระบวนการ OOSE หรือ Objectory Process ไดเขารวมโครงการดังกลาวภายหลัง ซึ่งในครั้งนั้นเปนการสรางภาษาโมเดลขึ้นใหมเรียกวา ภาษายูเอ็มแอล (UML - Unified Modeling Language)
ความเป็นมาของภาษา UML เนื่องจากวิธีการพัฒนาซอฟตแวรเชิงวัตถุของทั้งสามมีชื่อเสียงและเป็นที่ยอมรับในชวงเวลานั้นอยู่แล้ว ภาษา UML ที่ถูกพัฒนาขึ้นมาใหมจึงกลายเปนที่นิยมใชกันอยางแพรหลาย ในป ค.ศ.1997 ภาษายูเอ็มแอล รุนที่ 1.1 ไดถูกเสนอใหกับหนวยงาน OMG (Object Management Group) กําหนดใหเปนภาษาโมเดลมาตรฐาน (Standard Modeling Language) จากนั้นภาษา UML ถูกพัฒนาตอโดย OMG ซึ่งในปจจุบันภาษา UML รุนที่เผยแพรออกสูสาธารณชนคือ ภาษา UML รุนที่ 2.0
ความเป็นมาของภาษา UML ปี 1998 พัฒา UML Version 1.2 ปี 1999 พัฒา UML Version 1.3 ปี 2000 พัฒา UML Version 1.4 ปี 2001 พัฒา UML Version 2.0 http://www.uml.org/
ภาษา UML ภาษา UML เปนภาษาที่มีรูปภาพมาตรฐาน (Standard Visual Modeling Language) และเปนภาษาสากลที่ใชในการวิเคราะห์ออกแบบและพัฒนาระบบซอฟตแวรเชิงวัตถุ ดังนั้น เอกสารการวิเคราะหและออกแบบที่ถูกสรางดวยภาษา UML จึงสามารถแลกเปลี่ยน และทําความเขาใจตรงกันไดระหวางผูรวมงานภายในกลุมผูพัฒนาระบบ
ภาษา UML ภาษา UML มีคุณสมบัติที่สามารถนําเสนอและสนับสนุนหลักการเชิงวัตถุไดอยางครบถวนชัดเจน และไมผูกติดกับภาษาโปรแกรมภาษาใดภาษาหนึ่ง Model ที่ถูกสรางขึ้นจากภาษา UML สามารถถูกแปลงไปเปนระบบจริงที่ถูกสรางขึ้นดวยภาษาโปรแกรมเชิงวัตถุใดก็ได อีกทั้งภาษา UML เปนภาษาที่งายตอการทําความเขาใจ ผูที่ทําการศึกษาหรือนําไปใชงานไมจําเปนตองมีความรูอื่นใดนอกจากแนวคิดเชิงวัตถุ
ภาษา UML จากการที่ภาษา UMLเปนภาษาที่มีมาตรฐาน ผูออกแบบและพัฒนาจึงจําเปนตองศึกษาไวยากรณ(Syntax)หรือโครงสรางของภาษา UMLกอนนําไปใชงาน ภาษายูเอ็มแอลประกอบดวยองคประกอบพื้นฐาน 3 สวน คือ 1)หนวยโครงสรางพื้นฐาน (Basic Building Block) 2)กฎการใชงาน (Rules) 3)กลไกการทํางาน (Mechanism)
ภาษา UML 1)หนวยโครงสรางพื้นฐาน เป็นองคประกอบที่สําคัญและผูใช้ตองทําความเขาใจ ซึ่งประกอบดวยองคประกอบยอย 3 สวน คือ 1.1)สัญลักษณทั่วไป (Things) คือ สัญลักษณพื้นฐานที่ถูกใชงานในการสราง diagram ตางๆ ของภาษา UML ถือวาเปนรูปแบบที่เล็กที่สุดของModel สัญลักษณทั่วไปแบงไดออกเปน 4 หมวด คือ หมวดโครงสราง (Structural Things) หมวดพฤติกรรม (Behavioral Things) หมวดการจัดกลุม (Grouping Things) หมวดคําอธิบาย (Annotation Things)
ภาษา UML 1.2) ความสัมพันธ์ (Relationships) เปนสิ่งที่ใชแสดงความสัมพันธระหวางสัญลักษณทั่วไป มี 4 ชนิด คือ ความสัมพันธแบบขึ้นตอกัน (Dependency Relationship): คุณสมบัติของสิ่งหนึ่งขึ้นอยูกับคุณสมบัติของอีกสิ่งหนึ่ง ความสัมพันธแบบเกี่ยวของกัน (Association Relationship): สิ่งสองสิ่งที่มีความสัมพันธเชื่อมโยงกัน ความสัมพันธแบบทั่วไป(Generalization Relationship): คุณสมบัติของสิ่งหนึ่งเปนคุณสมบัติพื้นฐานของอีกสิ่งหนึ่ง ซึ่งอาจจะมีคุณสมบัติมากกวาคุณสมบัติพื้นฐานนั้น ความสัมพันธแบบตนแบบ (Realization Relationship): สิ่งหนึ่งถูกสรางใหมีคุณสมบัติของอีกสิ่งหนึ่ง
ภาษา UML 1.3) แผนภาพ (Diagrams) คือ แผนภาพที่เกิดจากแนวคิดที่วาสัญลักษณทั่วไป ใดๆก็ตาม ถามีคุณสมบัติบางประการที่สามารถจัดใหอยูใน กลุมเดียวกันได้ ก็จะใชแผนภาพมาจัดกลุมใหแกสัญลักษณ เหลานั้น
ภาษา UML นอกจากองคประกอบของภาษา UML แล้ว อีกสิ่งหนึ่งที่สำคัญคือ การเลือกใชงานdiagram สาเหตุที่ภาษา UML ตองมีแผนภาพที่หลากหลาย เนื่องจากใน ระบบที่มีขนาดใหญและมีความซับซอน ไม่สามารถใช้แผนภาพชนิดใดเพียงแผนภาพเดียว แล้วแสดงมุมมองได้ครบ ทั้งมุมมอง เชิงโครงสรางของระบบ (Static หรือ Structural View) และ เชิงพฤติกรรมของระบบ (Dynamic หรือ Behavioral View) ดังนั้นจําเปนตองมีการเลือกแผนภาพหนึ่งมาใชในมุมมองหนึ่ง และเลือกอีกแผนภาพหนึ่งมาใชในอีกมุมมองหนึ่ง
ภาษา UML เพื่อใหไดแผนภาพที่สามารถเสนอมุมมองไดอยางครบถวน จําเปนตองใชหลายแผนภาพ โดยตองเขาใจจุดประสงคของแตละแผนภาพ และเลือกใชแผนภาพใหตรงกับมุมมองที่ตองการ
ภาษา UML View ตามแนวทางของ UML นี้จะแยกออกเป็น 2 ลักษณะหลัก คือ 1. Static Views (Structural Views) มุมมองของระบบที่ไม่มีการเคลื่อนไหวหรือคงที่ ไม่ได้มองถึงการเปลี่ยนสภาวะหรือสถานะขององค์ประกอบที่อยู่ภายในระบบ เช่น Class Diagram 2. Dynamic Views (Behavioral Views) มุมมองของระบบที่มีการเคลื่อนไหว,เปลี่ยนแปลง สภาวะหรือสถานะขององค์ประกอบที่อยู่ภายในระบบ เช่น Sequence Diagram
Diagram ใน UML Diagram(แผนภาพ) ใน UML จำแนกตาม มุมมองเชิงโครงสร้าง และ มุมมองเชิงพฤติกรรมของระบบ
Class Diagram • ใช้เพื่อแสดงโครงสร้างของระบบซึ่งประกอบด้วย • Class และรายละเอียดภายใน Class • ความสัมพันธ์ในเชิง Abstraction ระหว่าง Class เช่น • Aggregation , Generalization , Association
Object Diagram คล้ายกับ Class Diagram
Component Diagram ใช้เพื่อแสดงโครงสร้างทางกายภาพของSoftwareซึ่งประกอบด้วยส่วนประกอบต่างๆ ที่เรียกว่า Components (ชิ้นส่วนทาง software)
Deployment Diagram ใช้เพื่อแสดงโครงสร้างทางHardwareของระบบ ซึ่งมักใช้ร่วมกับ Component Diagram
Use Case Diagram ใช้เพื่ออธิบายฟังก์ชันของระบบในมุมมองของกลุ่มผู้ใช้ระบบ
Sequence Diagram Time ใช้เพื่อแสดงปฎิสัมพันธ์(Interaction)ระหว่าง Objectsโดยเฉพาะการส่ง Message ระหว่าง Objects ตามลำดับของเวลา
Collaboration Diagram ใช้เพื่อแสดงปฎิสัมพันธ์(Interaction)ระหว่าง Objectsคล้ายกับ Sequence Diagram แต่ต่างกันที่ Collaboration Diagram จะไม่แสดงลำดับการส่ง Message อย่างชัดเจน แต่จะเน้นที่ การแสดงความสัมพันธ์ระหว่าง Objects ตามลักษณะการทำงาน (ปกติจะเลือกใช้ Diagram ใด Diagram หนึ่ง)
Statechart Diagram ใช้เพื่อแสดงสถานะ (State) ของแต่ละ Object รวมทั้งเหตุการณ์(Events)ต่าง ๆ ที่ทำให้สถานะของ Object เปลี่ยนไป โดยจะให้ความสนใจว่า ณ เวลาต่าง ๆ Object นั้นมีสถานะเป็นแบบใด
Activity Diagram ใช้เพื่อแสดงลำดับการดำเนินกิจกรรม(Activity) จากกิจกรรมหนึ่งไปยังอีกกิจกรรมหนึ่งภายในระบบ ที่เกิดจากการทำงานของObjects (ในลักษณะ Flowchart) สัญลักษณ์จะคล้ายกับ Statechart Diagram แต่จะไม่สนใจในเรื่องสถานะ
Diagram ใน UML ปัจจุบัน Diagram ในภาษา UML สามารถแบ่งออกได้เป็น9 diagrams โดยแต่ละ diagram เปรียบเสมือนมุมมองในด้านต่างๆของระบบที่ผู้วิเคราะห์และออกแบบกำลังจะพัฒนา โดยในแต่ละ diagram ที่แสดงมุมมองต่างๆ ประกอบด้วยสัญลักษณ์ที่ใช้สื่อความหมายเฉพาะภายใน diagram นั้น
Diagram ใน UML นอกจากความรู้พื้นฐานที่เกี่ยวข้องกับองค์ประกอบและdiagramของภาษา UML แล้ว สิ่งที่ทำให้การใช้งานภาษา UMLเป็นไปอย่างประสบผลสำเร็จอีกอย่างก็คือ ผู้ออกแบบและพัฒนาจำเป็นต้องเรียนรู้กระบวนการในการเลือกใช้ diagram ตามความเหมาะสม ในขั้นตอนกระบวนการพัฒนาซอฟต์แวร์เชิงวัตถุ จะใช้แผนภาพของภาษา UML เพื่อสร้างโมเดลระบบอย่างเป็นขั้นตอนสอดคล้องกับกระบวนการพัฒนาซอฟต์แวร์
Diagram ใน UML ในการพัฒนาระบบโดยทั่วไป ผู้พัฒนาไม่จำเป็นต้องสร้างแผนภาพให้ครบทุกแผนภาพเสมอไป ผู้พัฒนาสามารถปรับเปลี่ยนการใช้งานแผนภาพได้ตามความเหมาะสม
Object 1. เฟสการวิเคราะห์ความต้องการ(Requirement Analysis) วัตถุประสงค์ของเฟสแรกนี้ คือ การทำความเข้าใจกับขอบเขตของปัญหา (Problem Domain) การกำหนดขอบเขตของการพัฒนาและฟังก์ชันการทำงานต่างๆของระบบที่พัฒนา สิ่งที่ผู้พัฒนาต้องทำในขั้นตอนนี้ คือ การนำเอาความต้องการแบบ Functionality (Functional Requirements) ซึ่งบ่งบอกถึงความสามารถที่ผู้ใช้สามารถเรียกใช้จากระบบ มาแปลงเป็น Model ความต้องการของผู้ใช้งาน ซึ่งจะใช้Use Case Diagram
Object 1. เฟสการวิเคราะห์ความต้องการ(Requirement Analysis) ที่ขาดไม่ได้ใน Use Case คือ คำบรรยาย Use Case(Use Case Description) ซึ่งเป็นรายละเอียดของแต่ละ Function ว่าเริ่มต้นอย่างไร มีการดำเนินเหตุการณ์เกิดขึ้นอย่างไรและสิ้นสุดลงอย่างไร เรียกรวมๆว่า ลำดับการเกิดเหตุการณ์ (Flow of Event) รวมถึงเหตุการณ์ยกเว้น (Exception Flow of Event) ที่อาจเกิดขึ้นระหว่างการปฏิบัติฟังก์ชันดังกล่าวของระบบ ก็ต้องถูกบันทึกด้วยเช่นกัน
Object 2. เฟสการวิเคราะห์ระบบ(Domain Analysis) ในเฟสที่สองนี้เป็นการบรรยายถึงโครงสร้างและพฤติกรรมของระบบที่กำลังพัฒนา ซึ่งกิจกรรมสำคัญต่างๆที่ผู้พัฒนาต้องกระทำในเฟสนี้ ได้แก่ 2.1) การสร้าง Class Diagramเพื่อศึกษาโครงสร้าง (Structure) หรือส่วนที่เป็นโครงสร้างของระบบ โดยการ
Object 2. เฟสการวิเคราะห์ระบบ(Domain Analysis) 2.1.1หา Class ทั้งหมดในระบบโดยใช้เทคนิคHeuristic Mappingคือ ให้คำนามที่พบในคำบรรยาย Use case (เฟสแรก) แปลงเป็น Class คำกิริยา จะถูกแปลงเป็นOperationและ คำวิเศษณ์ จะถูกแปลงเป็น Attribute ซึ่งคำนามทุกคำอาจไม่ถูกแปลงเป็น Class เสมอไป เช่น คำนามบางคำเขียนต่างกันแต่หมายถึงสิ่งเดียวกัน ซึ่งขั้นตอนนี้ ประสบการณ์ถือเป็นสิ่งสำคัญที่ช่วยให้ผู้พัฒนาค้นพบคลาสเป้าหมาย และรายละเอียดของคลาสได้อย่างถูกต้อง
Object 2. เฟสการวิเคราะห์ระบบ(Domain Analysis) 2.1.2ค้นหาความสัมพันธ์ (Relationships) ระหว่างคลาส อันได้แก่ การขึ้นต่อกัน (Dependency), การถ่ายทอดคุณสมบัติ (Inheritance), ความสัมพันธ์แบบเชื่อมโยง(Association) ทั้งแบบ สัมพันธ์แบบองค์ประกอบร่วม (Composition) และ สัมพันธ์แบบมีส่วนร่วม (Aggregation) ด้วยเช่นกัน
Object 2. เฟสการวิเคราะห์ระบบ(Domain Analysis) 2.2)การสร้าง Sequence Diagram เพื่อศึกษาพฤติกรรม (Behavior) หรือส่วนที่มีความเป็นพลวัต( Dynamic) ของระบบ โดยการสร้าง Sequence Diagramสำหรับแต่ละ Use caseใน Use Case Diagram จากเฟสแรก นอกจากนี้การสร้าง Sequence Diagramยังช่วยให้พบ Operation เพิ่มเติมด้วย
Object 2. เฟสการวิเคราะห์ระบบ(Domain Analysis) วิธีการพัฒนาซอฟต์แวร์เชิงวัตถุ เป็นไปในลักษณะของการวนรอบทำซ้ำและทำเพิ่ม (Interative and Incremental) ขึ้นเรื่อยๆจนสมบูรณ์ ซึ่งลักษณะดังกล่าวเริ่มปรากฏในเฟสนี้ คือ แทนที่ต้องทำการวิเคราะห์ ทุก Use Case จาก Use Case Diagramในครั้งเดียว ซึ่งหากเป็นระบบที่ซับซ้อนและมีขนาดใหญ่ก็อาจประกอบไปด้วย Use Case นับร้อย
Object 2. เฟสการวิเคราะห์ระบบ(Domain Analysis) ดังนั้นในเฟสนี้ ผู้พัฒนาสามารถเลือกเพียงหนึ่ง Use Case มาทำการวิเคราะห์ หา Classes และ Relations รวมถึงลักษณะ Dynamic ของระบบ และเมื่อวงจรการพัฒนากลับมาที่เฟสนี้อีกครั้ง ก็เป็นการวิเคราะห์ออกแบบ Use Case ถัดๆไปนั่นเอง
Object 2. เฟสการวิเคราะห์ระบบ(Domain Analysis) กล่าวโดยสรุป ในเฟสของการวิเคราะห์เป็นการ Model ปัญหา ซึ่งผลที่ได้ในเฟสนี้คือ เอกสารที่บันทึก Model การวิเคราะห์ระบบ (Analysis Model Document) อันประกอบไปด้วย Class Diagram, Sequence Diagram นอกจากนี้อาจมีการใช้สัญลักษณ์ Package หรือ Diagram อื่นๆ เช่น Collaboration Diagram , State Transition Diagram, Activity Diagram มาช่วยในการสร้างโมเดลด้วยเช่นกัน
Object 3. เฟสการออกแบบ(Design) ในเฟสการออกแบบระบบ ผู้พัฒนาจะทำการกำหนดรายละเอียดเชิงเทคนิคของระบบให้พร้อม เพื่อนำไป Implement จริงในเฟสถัดไป อาจกล่าวได้ว่า เฟสนี้เป็นเฟสการค้นหาวิธีการแก้ปัญหา(How) ภายหลังจากการทำความเข้าใจปัญหา (What ในเฟสก่อนหน้า) สิ่งที่ต้องเตรียมสำหรับใช้ในเฟสนี้ คือ Model การวิเคราะห์จากเฟสที่สอง ซึ่งอาจรวมถึงความต้องการแบบ Nonfunctionalก็จะถูกนำมาพิจารณาในการออกแบบเฟสนี้ด้วยเช่นกัน
Object 3. เฟสการออกแบบ(Design) กิจกรรมในการเฟสการออกแบบระบบมีดังต่อไปนี้ 3.1)การเพิ่มเติมClass หรือ Package ลงไปภายในModel การวิเคราะห์ระบบ (เฟสที่สอง) เช่น การเพิ่มแพ็กเกจที่เกี่ยวข้องกับฐานข้อมูล การติดต่อสื่อสาร โดย Package หรือ Class เหล่านี้จะทำงานร่วมกันกับ Package เดิมที่มีอยู่ในModel การวิเคราะห์ระบบ นอกจากนี้ยังรวมถึงการแก้ไขปรับปรุงเพิ่มเติม Attribute หรือ Operation ของ Class ต่างๆในModel การวิเคราะห์ระบบด้วยเช่นกัน
Object 3. เฟสการออกแบบ(Design) 3.2)จัดหา Class Library หรือ Component จากที่อื่นเพื่อนำมา ใช้อีกครั้ง เพื่อช่วยลดเวลาในการพัฒนาระบบ (Reuse of Class Libraries) 3.3)กำหนดรายละเอียดส่วนติดต่อกับผู้ใช้ของระบบ (User Interface Design) 3.4)หาวิธีจัดการกับข้อผิดพลาดที่อาจจะเกิดขึ้นในการใช้ งานระบบ (Exception Handling)
Object 3. เฟสการออกแบบ(Design) 3.5)ออกแบบสถาปัตยกรรมระบบ (System Architecture Design) เพื่อทำการพิจารณาที่อยู่ หรือตำแหน่งการติดตั้งของ Component หรือ Package ต่างๆ พิจารณาว่า Class ใดควรอยู่ ใน Component หรือไฟล์ใดควรติดตั้งไว้ที่ระบบคอมพิวเตอร์ ส่วนใด นั่นคือการสร้างComponent Diagramและ Deployment Diagram สำหรับรูปแบบของสถาปัตยกรรมที่ใช้กันโดยทั่วไป คือ สถาปัตยกรรมแบบกระจาย (Distributed System) ซึ่งได้แก่ 2-เทียร์ (2-Tier), 3-เทียร์ (3- Tier) และ มัลติเทียร์(Multi-Tier System)
Object 3. เฟสการออกแบบ(Design) 3.6) ออกแบบส่วนที่เป็น Nonfunctional Requirement เช่น กลุ่มของผู้ใช้งานมีความต้องการใช้งานระบบใหม่ร่วมกับฐานข้อมูลหรือระบบเดิมที่มีอยู่ (Legacy System Integration) 3.7)นอกจากนี้ การออกแบบยังรวมถึงการตัดสินใจเลือกใช้เทคโนโลยีต่างๆที่มีอยู่ให้เหมาะสมกับความต้องการและงบประมาณของผู้ใช้งานด้วยเช่นกัน
Object 3. เฟสการออกแบบ(Design) กล่าวโดยสรุป UML Diagram ที่ถูกสร้างในเฟสนี้ได้แก่ Component Diagramและ Deployment Diagram ในส่วนของ Class DiagramและSequence Diagramจะถูกเพิ่มรายละเอียดเชิงเทคนิค เรียกผลลัพธ์รวมของเฟสนี้ว่าModel การออกแบบระบบ (Design Model) ซึ่งประกอบไปด้วย Diagram ต่างๆข้างต้น รวมถึงข้อกำหนด ด้านอื่นๆ ซึ่งระบุถึงรายละเอียดของความต้องการแบบ Nonfunctional เทคนิควิธีการแก้ปัญหา และเอกสารการออกแบบ (UML Design Document) นี้จะถูกส่งต่อไปให้โปรแกรมเมอร์เพื่อนำไปพัฒนาในเฟสถัดไป
Object 4. เฟสการสร้างโปรแกรมระบบ(Construction) วัตถุประสงค์หลักของเฟสนี้ คือ การแปลงผลที่ได้จากเฟส การออกแบบไปเป็น Code กล่าวคือ นักวิเคราะห์ออกแบบระบบจะต้องทำการสร้าง Model ระบบที่สมบูรณ์อันเป็นข้อมูลสำคัญสำหรับโปรแกรมเมอร์
Object 5.เฟสการทดสอบระบบ(Testing) ในเฟสนี้ ผู้พัฒนาจะต้องทำการค้นหาข้อผิดพลาด (Error) ภายในระบบที่กำลังพัฒนา ซึ่ง โดยปกติการทดสอบระบบจะอ้างอิงผลการวิเคราะห์ความต้องการผู้ใช้งานระบบ(เฟสแรก)เป็นหลัก ว่าเป็นไปตามความต้องการของผู้ใช้งานจริงอย่างครบถ้วนหรือไม่ ทั้งด้านความต้องการแบบ Functional และ Nonfunctional