What is uml :
........UML คือ
โมเดลมาตรฐานที่ใช้หลักการออกแบบ OOP(Object oriented programming)
รูปแบบของภาษา UML จะมี Notation ซึ่งเป็นสัญลักษณ์ที่นำไปใช้ใน Model
ต่างๆ UMLจะมีข้อกำหนดกฏระเบียบต่างๆ ในการโปรแกรม โดยกฎระเบียบต่างๆ
จะมีความหมายต่อการเขียนโปรแกรม(Coding) ดังนั้นการใช้ UML
จะต้องทราบความหมายของ Notation ต่างๆ เช่น Generalize, association
dependency class และ package
สิ่งเหล่านี้มีความจำเป็นอย่างยิ่งต่อการตีความของการออกแบบและ Design
ระบบ ก่อนนำไป Implement ระบบงานจริง
ในปัจจุบันมีเครื่องมือมากมายที่สามารถแปลง Model UML เป็น Code
ภาษาต่างๆ ยกตัวอย่าง เช่น ภาษา Java, Power builder และ VB
เป็นต้น
เครื่อมือในการเขียน UML :
........ UML
อาจใช้โปรแกรมสำหรับการวาดรูปต่างๆ เช่น Paint, Photoshop, Power
point, Visio หรือ โปรแกรมอะไรก็ตามที่สามารถวาดรูปได้
นอกจากการใช้โปรแกรมแล้วการวาดรูป ลงบนกระดาษ
ก็สามารถใช้ได้เช่นเดียวกัน อย่างไรก็ตามวิธีการต่างๆ เหล่านี้
จะไม่มีเครื่องอำนวยความสะดวก ในการทำงานให้ ดังนั้น จึงมีผู้ผลิต
Software หลายค่ายได้ทำการสร้างเครื่องมือสำหรับการทำงานกับ UML
โดยเฉพาะ อาทิ Rational Rose, Borland Together , Visual UML โดยเครื่องมือเหล่านี้จะสามารถทำการออกแบบ UML Diagram ต่างๆ
และทำการ Generate Code หรือ เอกสารสำหรับออกรายงาน หรือ ส่งลูกค้าได้
นอกจากนี้เครื่องมือเหล่านี้ยังสามารถทำการ import code
กลับเข้ามาเพื่อให้อยู่ในรูป Model ได้ เรียกการ generate code และ
การ import กลับเข้ามาอยู่ใน Model UML ว่า round trip engineer
กระบวนการนี้มีประโยชน์มากในการ update model และ code ให้ตรงกันเสมอ
ซึ่งจะต้องมีการควบคุมให้ดี
เนื่องจากจะเป็นการทำงานร่วมกันระหว่างนักออกแบบระบบ(UML) และ
Developer(Coding)
Visual Modeling :
Uml เป็น Visual Modeling ซึ่งจะทำหน้าที่ในการแสดงโครงสร้าง
การทำงานของ Software ให้ออกมาใน model ที่สามารถมองเห็นได้
โดยการสื่อให้ออกมาในรูปของ Diagram รูปภาพ ด้วยวิธีการแบบนี้จะทำให้
Model, Implement, Coding มีความสอดคล้อง เป็นไปในแนวทางเดียวกัน
*** Visual Modeling is modeling using standard graphical
notations
Software Performance
UML ถูกนำมาใช้ในการพัฒนา software อย่างกว้างขวาง
และทำให้การทำงานมีคุณภาพ กล่าว คือ
1. ช่วยลดระยะเวลาในการพัฒนาระบบงาน(Shortest Development life
cycle)
2. ช่วยเพิ่มความสามารถในการทำงาน(Increase productivity)
3. ช่วยเพิ่มคุณภาพของระบบงาน (Improve software quality)
4. รองรับระบบงานเดิม(Support legacy system)
5. ช่วยในการสื่อสารระหว่างทีมผู้พัฒนาระบบงาน(Improve team
connectivity)
Brief history of UML :
เนื่องจากมีแนวความคิดเกี่ยวกับการสร้าง Model แสดงการทำงาน และ
โครงสร้างของการพัฒนา Software แบบ Object-Oriented Programming
จำนวนมาก แต่ละวิธีก็มีข้อดีข้อเสียแตกต่างกัน ยุคแรกๆ ของการใช้
Model สำหรับการออกแบบระบบงาน จะมี Model และ Diagram ต่างๆ
เกิดขึ้นจำนวนมาก และความสับสนในการใช้งานขึ้น(Model war)
ภายหลังจึงมรแนวความคิดในการนำเอาวิธีการสร้าง Model ต่างๆ
ที่มีชื่อเสียง และเป็นที่ยอมรับมากำหนดเป็น Model ใหม่ ขึ้นมา
การนำเอาหลายๆ แนวคิดมารวมกันจึงเรียกว่า Unified Modeling Language
โดยกลุ่มผู้เริ่มต้นร่วมกันกำหนด UML ขึ้นมา Grady Booch และ Jame
Rumbaugh ร่วมกันทำงานที่ Rational Software Coporation เพื่อสร้าง
UMLขึ้นมา โดยเริ่มต้นพัฒนาเมื่อปี 1994 ได้แก่
1. Grady Booch - ซึ่งเป็นผู้นำแนวคิดแบบ Booch method
ซึ่งเป็นวิธีการที่มีชื่อเสียงมาก มี Diagram จำนวนมากสำหรับใช้งาน
แต่มีข้อเสียคือมีมากเกินความจำเป็น และยุ่งยากมากในการวาด digram
ด้วยมือ แนวความคิดของ Booch จะทำการวิเคราะห์ทั้งแบบ Micro - และ
Micro Development และอยู่บนพื้นฐานของการพัฒนาระบบงานแบบ Iteration
and Incremental Process
2. Jame Rumbaugh - Object modeling Techniques(OMT)
แนวความคิดนี้ถูกพัฒนาขึ้นที่ General Eletric
ซึ่งเป็นที่ทำงานเดิมของ Jame Rumbaugh ประกอบด้วยโมเดลจำนวนมาก
ครอบคลุมถึง Object Model, Dynamic Model, Functional Model, Use-case
Model
3. Ivar Jacobson - Object Oriented Software Engineer(OOSE)
เป็นรูปแบบวิธีการทำงานที่เน้น Requirement ด้วย
มีพื้นฐานการทำงานอยู่บน Use-Case Model ซึ่ง Use-Case Model นี้
จะถูกใช้ตลอดทุกระยะในการพัฒนาระบบงาน
เริ่มต้นแนวคิดของ UML ถูกริเริ่มโดย Grady Booch และ Jame Rumbaugh
ภายหลัง Ivar Jacobson จึงเข้ามาร่วมทีมด้วย
ดังภาพด้านล่างนี้
UML History
Why UML :
1. UML สามารถแสดงส่วนประกอบในการสร้างโปรเจคในรูปของ OOP
2. เชื่อมแนวคิดกับการออกแบบระบบโดยใช้ Object Oriented Code
3. ง่ายต่อการทำความเข้าใจและสามารถแปลงเป็น Code program ได้
Use case Driven
กระบวนการการพัฒนาโครงการใดๆ
นั้นมีวัตถุประสงค์เพื่อทำการสนับสนุนการทำงานของ User เป็นหลัก หรือ
สนับสนุนความต้องการของผู้ใช้ ทั้งนี้ User
ไม่ได้หมายถึงคนเพียงอย่างเดียว อาจจะหมายถึง
ระบบอื่นที่อยู่ภายนอกระบบก็ได้ (Some one or something such as other
system out side the system) User จะมีการกระทำกิจกรรมใดๆ ต่อ ระบบ
เช่น การสอดบัตรพลาสติกลงในเครื่องอ่านบัตร
การกดปุ่มตอบสนองต่อหน้าจอที่ปรากฏต่อผู้ใช้ การใช้งานเครื่อง
Automatic Teller Machine (ATM) และ การรับเงินที่เครื่องส่งออกมา โดย
ATM หรือระบบจะมีการสร้างลำดับของงานขึ้นมาก่อน
จากนั้นจึงส่งผลลัพธ์ให้ User หรือผู้ใช้
กระบวนการตอบสนองของระบบอย่างมีลำดับ(Sequence)
เพื่อให้ได้งานตามต้องการในลักษณะนี้เรียกว่า Use case Use case
จึงเป็น Function การทำงานของระบบที่ทำหน้าที่ให้ผลลัพธ์
หรืองานตามที่ user ต้องการ(Capture functional requirement)
นักพัฒนาระบบจะนำเอา Use case มาสร้างเป็น Model ที่สามารถอธิบาย
function การทำงานที่สมบูรณ์ของระบบต่อไป
อย่างไรก็ตาม Use case
ไม่ได้เป็นแค่เพียงสิ่งที่บอกถึงความต้องการของระบบเท่านั้น(Specification
requirement) แต่มันยังมีความสำคัญอย่างมากต่อการ Design,
Implementation, Test และ การติดตั้งใช้งานระบบ(Deployment)
จาก Use case model ที่เกิดขึ้น Developer
จะทำการสร้างลำดับของการออกแบบและพัฒนาระบบ, การแตกรายละเอียด use
case เพื่อให้สามารถพัฒนาโครงการได้ โดยอาศัย Use case
เป็นแกนหรือตัวขับ หรือ Use case driven
ดังนั้น Use case driven
จึงหมายถึงกระบวนการการพัฒนาระบบโดยมีการไหลของงานเกิดจากการใช้ use
case (Derive from use case) เป็นตัวกำหนด Use case
และดำเนินไปเป็นวงจร(Development Life cycle)
Iterative and Incremental Development
ในโลกแห่งความเป็นจริงการทำงานไม่สามารถทำให้เสร็จสมบูรณ์ได้ในขั้นตอนเดียว
และวิธีการทำงาน
โดย Water fall model
ซึ่งเป็นวิธีการทำงานแบบดั้งเดิมจะต้องทำงานให้เสร็จในรอบเดียว
นับว่าเป็นความเสี่ยงอย่างยิ่งต่อความล้มเหลวของโครงการ
เนื่องจากการทำงานในยุคปัจจุบันมักมีการเปลี่ยนแปลง Environment ต่างๆ
เกิดขึ้นเสมอ เช่น Requirement change, Technology change เป็นต้น
ดังนั้นจะเห็นว่าในสภาพการทำงานจริงๆ
มักจะมีการทำงานแบบแก้ไขใหม่วนซ้ำเรื่อยๆ ซึ่งก็คือ Iteration
นั่นเอง(การวนทำซ้ำใหม่เมื่อพบข้อผิดพลาดหรือบกพร่อง)
วิธีการนี้จึงมีความสำคัญมาก นอกจากนี้ยังพบว่าการทำงานโดยการค่อยๆ
เพิ่มงานเข้าไปในงานเดิมที่ทำเสร็จแล้วเรื่อยๆ
จนหมดทั้งโครงการก็จะเป็นการลดความเสี่ยงงานได้ด้วย เนื่องจาก
ทำงานเสร็จเป็นช่วงๆ โดยทำการแบ่งซอยงานใหญ่ๆ ออกเป็นงานย่อยๆ
เมื่อเกิดข้อผิดพลาดขึ้นจะมีผลกระทบต่องานเพียงส่วนย่อยที่กำลังดำเนินการอยู่เท่านั้น
ไม่ใช่กระทบหมดทั้งโครงการ วิธีการทำงานเช่นนี้เรียกการทำงานแบบ
Incremental จะเห็นว่าการทำงานแบบ Incremental & Iteration
จะให้ผลดีกว่าการทำงานแบบดั้งเดิมหรือ Water fall
model(มีความเสี่ยงมากกว่าเนื่องจากหากพบข้อผิดพลาดขึ้น
จะมีผลกระทบกับโครงการมากกว่า)
ดังนั้นในยุคปัจจุบันจึงนิยมที่จะทำงานโดยอาศัยหลัก Incremental &
Iteration
Incremental & Iteration บ่อยๆ ครั้งที่นำมาใช้ร่วมกันอย่างสับสน
แต่มันมีข้อแตกต่างกันกล่าวคือ
Incremental
จะเป็นการทำงานโดยอาศัยการเพิ่มเติมส่วนงานเข้าไปในงานเดิมเรื่อยๆ
เพื่อให้มีความสมบูรณ์มากขึ้น เช่นการสร้างบ้านที่ค่อยๆ
มีการต่อเติมส่วนประกอบย่อยเข้าไปหลังจากทำงานส่วนหนึ่งเสร็จไปแล้ว
เช่นสร้างห้องน้ำ ต่อด้วยห้องนอน ประตูเป็นต้น
การทำงานในปัจจุบันมักพบว่าโปรเจคต่างๆ จะมีขนาดใหญ่
ดังนั้นจึงนิยมทำการแบ่งงานออกเป็นโปรเจคย่อยๆ หลายๆ ส่วน(Slice or
minimize project) แต่ละส่วนก็จะมีการทำการวนทำซ้ำ(Iteration)
และการเพิ่มเติมเข้าไปรายละเอียดหรืองานเข้าไปในงานเดิม (Incremental)
การแบ่งส่วนงานออกเป็นงานย่อยจะส่งผลดี คือ
1. การแบ่งส่วนงานจะสามารถทำงานร่วมกับ use case จำนวนมากได้
2. ลดความเสี่ยงในการทำงาน(Deal with important risk)
Risk Profile of an Iterative Development |
Use case Analysis Model
:
วัตถุประสงค์ของ Analysis model
1. ต้องการแยกการวิเคราะห์ระบบ
2. ต้องการภาพรวมของระบบ(Integrated part)
3. ต้องการทราบวิธีการอื่น(ถ้ามี) (Alternative Solution)
4. ศึกษาเพื่อสร้างระบบที่เกี่ยวข้องกับระบบ หรือสิ่งที่มีอยู่แล้ว(
Legacy system)
UML จะประกอบไปด้วย Object ต่างๆ มากมาย
ดังนั้นจึงจะอธิบายความหมายของ Object ก่อน
Object Definition
1. สิ่งต่างๆ ที่มีอยู่ในโลกแห่งความเป็นจริง
2. สิ่งต่างๆ ที่สัมผัสได้ เช่น รถของนาย ก
3. กระบวนการต่างๆ เช่น การจองห้องพัก การทดสอบรถยนต์
4. ความสัมพันธ์ต่างๆ เช่น สัญญาฉบับหนึ่ง
5. คำนามต่างๆ ซึ่งสามารถกำหนดนิยามได้
6. Cyberspace (Electronic money, cash etc.)
องค์ประกอบของ Object
1. ชื่อของ Object
2. ข้อมูล Static structure เช่น ยี่ห้อ รุ่น
3. พฤติกรรมของวัตถุ
Class Definition
กลุ่มของ Object ซึ่งมีข้อมูล และมีพฤติกรรมเหมือนกัน เช่น Class
ของรถยนต์ ประกอบด้วยรุ่น ยี่ห้อ เป็นต้น
Object Orientation
1. แนวความคิดพื้นฐานในการสร้างระบบ หรือ Software
โดยพิจารณาปัญหาในโลกแห่งความเป็นจริง ว่าประกอบไปด้วยวัตถุ(Object)
ต่างๆ มาทำงานร่วมกัน
2. การเข้าถึงข้อมูลของ Object ใดๆ จะต้องกระทำผ่านทางพฤติกรรมของ
Object นั้นเท่านั้น
3. การกำหนดประเภทพฤติกรรม/ข้อมูลของObject
จะทำให้สามารถควบคุมการเข้าถึงข้อมูลจากภายนอก Object ได้
Symbol in Analysis model
1. Boundary Class (ส่วนติดต่อผู้ใช้)
2. Control class(ส่วนควบคุม)
3. Entity Class(ใช้เก็บข้อมูล)
Building Blocks of the UML
UML สามารถแบ่งองค์ประกอบออกเป็น 3 กลุ่ม ดังนี้
1. Things คือ สัญลักษณ์หรือสิ่งต่างๆ ที่นำมาใช้สร้าง Diagram UML
แบ่งออกเป็น 4 หมวด คือ
...1.1. Structural Things หรือ
หมวดโครงสร้าง เป็นคำนามใช้สำหรับ uml ส่วนใหญ่จะเป็นส่วน static ของ
ได้ แก่ Use case , Interface , Class ,Collaboration , ...Component , Node
...1.2. Bahavioral
Things หรือ หมวดพฤติกรรม ได้แก่ส่วนที่เป็น dynamic
แสดงถึงพฤติกรรมของระบบ ประกอบด้วย 2 ส่วนใหญ่ๆ คือ
......... - Interaction
......... - state machine
...1.3. Grouping Things หรือ
หมวดการจัดกลุ่มหมู่ ได้แก่ package
......... - package
...1.4. Annotation Things หรือ
หมวดคำอธิบาย ได้แก่ note
......... - note
2. Relationships ความสัมพันธ์ใน UML ประกอบไปด้วย
...2.1. Dependency หรือ
ความขึ้นอยู่ต่อกันจะให้ความหมายว่าเมื่อเกิดการเปลี่ยนแปลงที่ส่วนหนึ่งแล้วจะส่งผลกระทบถึงอีกส่วนหนึ่งที่ลากเส้นมาสัมพันธ์กัน
เช่น ...........การเปลี่ยนแปลงของโรงเรียนจะมีผลกระทบของนักเรียนเป็นต้น
...2.2. Association หรือ ความสัมพันธ์จะแสดงถึงความสัมพันธ์ระหว่าง Object ความสัมพันธ์ยังสามารถแยกออกเป็นความสัมพันธ์แบบธรรมดา ความสัมพันธ์แบบ ...........Aggregration, Composite,ทิศทางความสัมพันธ์ นอกจากนั้นยังสามารถกำหนด multiplicity ให้กับความสัมพันธ์ได้อีกด้วย
...2.3. Generalization หรือ การสืบทอดคุณสมบัติ หรือ Inheritance นั่นเอง
...2.4. Realization หรือ การทำให้ทำงานได้จริง เช่น Interface ถูก Realize โดย Class , Use case ถูก Realize โดย Collaboration
3.Diagrams
Diagram ของ UML แบ่งออกได้เป็น 9 Diagram หลัก ดังนี้ คือ
1. Use case Diagram
ในการพัฒนาระบบงานใดๆ นั้น
การเก็บรวบรวมความต้องการของผู้ใช้มีความสำคัญมาก และจะทำในระยะแรกๆ
ของการพัฒนาระบบงานเสมอ Use case diagram เป็น Diagram ที่ทำหน้าที่
Capture requirement
....1.1
เป็นเทคนิคในการสร้างแบบจำลองเพื่อใช้อธิบายหน้าที่ของระบบใหม่
หรือระบบปัจจุบัน
....1.2 กระบวนการสร้าง Use case
เป็นแบบ Iteration
....1.3 ความต้องการของระบบจะได้จาก
ลูกค้า/ผู้ใช้ + ผู้พัฒนาระบบ
....1.4 องค์ประกอบจะมี Use case,
Actor, Use case Relation และ System
ตัวอย่าง Use case Di diagram ที่สร้างจาก visual uml
องค์ประกอบของ use case use case และ ความสัมพันธ์ |
2. Sequence Diagram จ ะบอกลำดับการทำงานของระบบ โดยมี Object และ เวลาเป็นตัวกำหนดลำดับของงาน
ตัวอย่าง Sequence Diagram ในขั้นตอนของการ
Analysis
ตัวอย่าง Sequence Diagram ในขั้นตอนของการ Design
Sequence diagram เป็น Diagram ซึ่งแสดงปฏิสัมพันธ์(Interaction)
ระหว่าง Object ตามลำดับของเหตุการณ์ที่เกิดขึ้น ณ เวลาที่กำหนด
message ที่เกิดขึ้นระหว่าง class จะสามารถนำไปสู่การสร้าง method ใน
class ที่เกี่ยวข้องได้ จากตัวอย่าง Sequence ข้างต้นจะทำการ Design
สำหรับการทำรายการบัญชีการเงินของธนาคาร โดยจะเริ่มจากหน้าจอ JSP
ซึ่งถือเป็น User Interface(UI) ประเภทหนึ่ง
จะทำหน้าที่ติดต่อกับผู้ใช้ เพื่อรับข้อมูลจากการใช้งานโดย User
จากนั้น เมื่อกดปุ่มส่งคำสั่งใดๆ ผ่านหน้าจอ JSP ก็จะทำการเรียกใช้
Servlet โดยเรียกผ่าน Method doPost ของ Account Servlet
และทำการส่งค่าและเรียกใช้ Class ต่างๆ
ที่เกี่ยวข้องเพื่อทำการประมวลผลตาม business process ต่อไป Servlet
และ Class ที่ทำการประมวลผลต่างๆ จึงเป็นตัวควบคุมการทำงาน หรือ
Controller นั่นเอง ส่วน Class ที่ทำหน้าที่เก็บข้อมูลต่างๆ
จะเรียกว่า Entity Class
3. Collaboration Diagram ทำหน้าที่เช่นเดียวกับ Sequence
diagram แต่รูปแบบและลักษณะการเขียนจะต่างกัน หรือ อาจกล่าวได้ว่า
Collaboration diagram ก็คือรูปอีกรูปแบบหนึ่งของ Sequence diagram
เมื่อได้ sequence diagram แล้ว tool บางชนิดสามารถ generate
collboration diagram ให้ได้เลย หรือ ในทางกลับกันเมื่อสร้าง
Collaboration diagram เสร็จแล้ว ก็จะสามารถ generate sequence
diagram ได้ โดยอัตโนมัติ ซึ่งถือว่าทั้ง 2 diagram
สะท้อนภาพกันและกันอยู่นั่นเอง
ตัวอย่าง Collaboration diagram ที่สร้างจาก visual
uml
4. State Diagram ประกอบด้วย State ต่างๆ ของ Object
และเหตุการณ์ต่างๆ ที่ทำให้สถานะของ Object
เปลี่ยนและการกระทำที่เกิดขึ้นเมื่อสถานะของระบบเปลี่ยนไป
สามารถบอกสถานะของ Object ได้ โดยจะให้ความสนใจว่า ณ เวลาใดๆ Object
นั้นมี status เป็นแบบใด
ตัวอย่าง State diagram ที่สร้างจาก visual uml
5. Activities Diagram แสดงลำดับ
กิจกรรมของการทำงาน(flow) สามารถแสดงทางเลือกที่เกิดขึ้นได้ Activity
diagram จะแสดงขั้นตอนการทำงานในการปฏิบัติการ
โดยประกอบไปด้วยสถานะต่างๆ ที่เกิดขึ้นระหว่างการทำงาน
และผลจากการทำงานในขั้นตอนต่างๆ
ตัวอย่าง Activity diagram ที่สร้างจาก visual uml
6. Class Diagram ประกอยด้วย Class
และความสัมพันธ์ต่างๆ ระหว่าง Class เช่น Dependency, generalization,
association เป็นต้น Class Diagram ยังสามารถทำการแสดงรายละเอียดภายใน
Class แต่ละ Class ได้ว่ามี Method อะไรบ้าง Field และ Attribute
เป็นอย่างไร
จากแผนภาพตัวอย่างข้างต้นหมายความว่า Class Process
Control ทำการ Extends หรือ Generalize มาจาก Class API
ซึ่งจะมีผลทำให้ Class ProcessControl มีคุณสมบัติของ Class API
นั่นคือมี Attribute และ method ของ Class API อยู่ใน Class
ProcessControl สามารถเรียกใช้งานได้ทันที โดยไม่ต้องเขียน attribute
และ method เพิ่มใน class ProcessControl ซ้ำอีก
ตัวอย่าง Class diagram ที่สร้างจาก visual uml
7. Object Diagram ประกอบด้วย Object และ Relation ระหว่าง
Object โดยแต่ละ Object จะแสดง Instance oของแต่ละ class ที่มีในระบบ
และความสัมพันธ์ต่างๆ ระหว่าง Class เช่น Dependency, generalization,
association จะมีลักษณะเช่นเดียวกับใน Class diagram
จะเห็นว่า Object diagram จะเป็น Instance ของ
Class ซึ่งจะมีชื่อและ ข้อมูลเก็บอยู่ในขณะที่ Class
จะเป็นเพียงตัวแบบที่ยังไม่มีการสร้าง Object หรือ Instance
8. Component Diagram เป็น Diagram
ซึ่งแสดงโครงสร้างทางกายภาพของ Software
โดยจะประกอบด้วยองค์ประกอบซึ่งอยู่ในรูปต่างๆ เช่น Binary, text และ
executeable ภายใน Component Diagram
ก็จะมีความสัมพันธ์แสดงอยู่เช่นเดียวกับ Class diagram, Object
diagram
9. Deployment Diagram
เป็นสิ่งที่สามารถทำการแสดงระบบสถาปัตยกรรมของ Hardware/Software
ตลอดจนความสัมพันธ์ระหว่าง hardware/software
***
แหล่งข้อมูลเพิ่มเติมสำหรับ UML - http://www.rational.com - http://www.thaiall.com - more links |
ขอบคุณมากเลยคับสำหรับข้อมูลดีจริงๆคับ