บทเรียนที่ 5 • Requirement Analysis & Use Case Model

การวิเคราะห์ความต้องการ และแบบจำลองยูสเคส

เรียนรู้การค้นหา วิเคราะห์ จัดลำดับ ตรวจสอบ และเขียนข้อกำหนดความต้องการของระบบ แล้วแปลงเป็น Use Case Model เพื่อใช้เป็นฐานในการออกแบบระบบเชิงวัตถุ

SRSข้อกำหนดระบบ
Usersแหล่งข้อมูล
Use Caseโมเดลฟังก์ชัน
Learning Path

จากผู้ใช้สู่ Use Case

1
เก็บข้อมูลจากผู้ใช้
Observation, Interview, Questionnaire, JAD, Prototype
2
ระบุ Requirement
แยกสิ่งที่ระบบต้องทำและขอบเขตระบบ
3
จัดกลุ่ม ตรวจสอบ จัดลำดับ
FR/NFR, Priority, Dependency, Validation
4
เขียน SRS และ Use Case Model
Use Case Diagram + Use Case Description
ผู้สอน
ผู้ช่วยศาสตราจารย์ ดร. นัฐพงศ์ ส่งเนียม
xnattapong@gmail.com
Chapter Introduction

บทที่ 5 เรียนเรื่องอะไร

การวิเคราะห์ความต้องการ หรือ Requirement Analysis เป็นขั้นตอนสำคัญในกระบวนการวิเคราะห์และออกแบบระบบเชิงวัตถุ เพราะช่วยให้ทีมพัฒนาระบบเข้าใจว่า ผู้ใช้ต้องการอะไร ระบบควรทำอะไร และขอบเขตของระบบอยู่ตรงไหน ก่อนเข้าสู่การออกแบบและพัฒนาระบบจริง

หากวิเคราะห์ความต้องการไม่ครบถ้วนหรือไม่ชัดเจน ระบบที่พัฒนาขึ้นอาจไม่ตรงกับความต้องการของผู้ใช้ เกิดการแก้ไขซ้ำ ใช้งบประมาณสูง และอาจทำให้โครงการล้มเหลวได้ ดังนั้นบทนี้จึงเริ่มจากความหมายของ Requirement, User Requirement, System Requirement และ SRS ก่อนเชื่อมไปสู่ Use Case Model

บทเรียนยังครอบคลุมแหล่งที่มาของความต้องการ เทคนิคการเก็บข้อมูล การแยก Functional และ Non-functional Requirement การตรวจสอบความถูกต้อง และการเขียน Use Case Diagram กับ Use Case Description

วัตถุประสงค์การเรียนรู้
  • อธิบายความสำคัญของ Requirement Analysis ได้
  • แยก User Requirement, System Requirement และ SRS ได้
  • เลือกเทคนิคเก็บข้อมูลที่เหมาะสมได้
  • จำแนก FR และ NFR ได้
  • เขียน Requirement และ Use Case Model ได้
ภาพประกอบ: Requirement Analysis ใน Unified Process
UP Lifecycle Phases และตำแหน่งของ Requirement AnalysisInceptionภาพรวม / ขอบเขตElaborationรายละเอียด / สถาปัตยกรรมConstructionพัฒนา / ทดสอบTransitionติดตั้ง / ส่งมอบRequirement Analysisเริ่มใน Inception และขยายใน Elaborationผลลัพธ์: SRS + Use Case Diagram + Description
เรียบเรียงจากสไลด์ที่อธิบายความสัมพันธ์ระหว่าง UP กับ Requirement Analysis โดยเน้นช่วง Inception และ Elaboration
Requirement

ความต้องการของระบบคืออะไร

Requirement คือข้อกำหนดที่บอกว่าระบบต้องทำอะไรได้บ้าง และต้องมีเงื่อนไขใดในการทำงาน

Requirement คือคำตอบของคำถามอะไร

Requirement คือสิ่งที่ผู้ใช้ เจ้าของระบบ หรือผู้เกี่ยวข้องคาดหวังให้ระบบสารสนเทศสามารถทำได้ หรือเป็นเงื่อนไขที่ระบบต้องปฏิบัติตาม เพื่อให้ระบบแก้ปัญหาและสนับสนุนเป้าหมายขององค์กรได้

Requirement ตอบคำถามว่า “ระบบที่กำลังจะพัฒนาต้องทำอะไรได้บ้าง และต้องมีเงื่อนไขอะไรบ้างในการทำงาน”

Requirement ที่ดีควรมีลักษณะอย่างไร

ชัดเจน

อ่านแล้วเข้าใจตรงกัน ไม่กำกวม

ครบถ้วน

มีข้อมูลและเงื่อนไขที่จำเป็น

ตรวจสอบได้

นำไปทดสอบได้จริง

เป็นไปได้จริง

ทำได้ภายใต้เวลา งบประมาณ และเทคโนโลยี

User Requirement

ภาษาธรรมชาติที่ผู้ใช้อ่านเข้าใจง่าย เช่น “ลูกค้าสามารถสมัครสมาชิกได้” หรือ “เจ้าของร้านดูรายงานยอดขายได้”

System Requirement

รายละเอียดเชิงระบบที่นำไปออกแบบ พัฒนา และทดสอบ เช่น ตรวจสอบอีเมลซ้ำ รหัสผ่านอย่างน้อย 8 ตัวอักษร

SRS

เอกสารรวบรวมข้อกำหนดทั้งหมดอย่างเป็นระบบ เพื่อเป็นข้อตกลงร่วมระหว่างผู้ใช้ นักวิเคราะห์ และทีมพัฒนา

Sources of Requirements

แหล่งที่มาของความต้องการ: ทำไมต้องรู้จัก User

ความต้องการไม่ได้มาจาก SA แต่ SA ต้องสังเคราะห์จากผู้ใช้และผู้เกี่ยวข้องหลายกลุ่ม

System Owner / Sponsor

เจ้าของระบบ ผู้บริหาร ผู้จัดการ หรือผู้อนุมัติโครงการ สนใจความคุ้มค่า งบประมาณ และผลลัพธ์เชิงธุรกิจ

End User

ผู้ใช้ที่ป้อนข้อมูลหรือใช้งานประจำวัน เช่น พนักงานขาย เจ้าหน้าที่ทะเบียน พยาบาล สนใจความรวดเร็วและความถูกต้อง

Power User

ผู้เชี่ยวชาญเฉพาะงาน เช่น หัวหน้าแผนก หัวหน้าช่าง แพทย์ ให้ข้อมูลเชิงลึกของงานเฉพาะทางได้ดี

Administrator

ผู้ดูแลระบบ กำหนดสิทธิ์ ดูแลการทำงาน สำรองข้อมูล ตั้งค่า และแก้ปัญหาทางระบบ

Executive User

ผู้บริหารที่ต้องการรายงาน สถิติ แนวโน้ม และสารสนเทศเพื่อการตัดสินใจ เช่น CEO, CIO, ผู้อำนวยการ

External User

ผู้ใช้นอกองค์กร เช่น ลูกค้า ผู้ป่วย ผู้ชมภาพยนตร์ หรือญาติผู้ป่วยที่ใช้บริการของระบบ

หลักคิด: ต้องรู้ว่าข้อมูลเรื่องใดควรถามใคร เพราะแต่ละ User ให้ข้อมูลเฉพาะตามหน้าที่ของตน เช่น เรื่องประเภทยาในโรงพยาบาลควรถามผู้เกี่ยวข้องกับงานยา ไม่ใช่ถามผู้บริหารหรือแม่บ้านเพียงอย่างเดียว
Requirement Analysis Process

กระบวนการวิเคราะห์ความต้องการ

7 ขั้นตอนหลัก

1. Information Gathering

เก็บข้อมูลข้อเท็จจริงจากผู้ใช้ เอกสาร กระบวนการ และปัญหาเดิม

2. Requirement Identification

ระบุความต้องการแต่ละข้อให้ชัดเจน แยกเป็นอิสระ และทดสอบได้

3. Selection / Scope

เลือกเฉพาะส่วนสำคัญที่อยู่ใน Problem Domain

4. Classification and Structuring

จัดกลุ่มตามผู้ใช้ ฟังก์ชัน หรือมุมมองของระบบ

5. Prioritization and Negotiation

จัดลำดับความสำคัญ เช่น 0, 1, 2

6. Validation

ตรวจความถูกต้อง ความครบถ้วน และความเป็นไปได้

7. Specification

จัดทำรายงาน SRS

ภาพประกอบ: Input → Process → Output
Requirement AnalysisINPUTUser RequirementBusiness WorkflowProblem StatementBusiness RulePROCESSGatherIdentifySelect / ScopeClassify / PrioritizeValidateOUTPUTSRSUse Case DiagramUse Case DescriptionPriority / DependencyAcceptance Criteria
สรุปจากแนวคิดในสไลด์ Requirement Analysis ที่นำข้อมูลจากผู้ใช้และองค์กรมาแปลงเป็น Requirement Specification
Information Gathering Techniques

เทคนิคการเก็บรวบรวมข้อมูล

Observation

ลงพื้นที่สังเกตการทำงานจริง เพื่อเข้าใจ Workflow จริง เช่น การทำงานของพนักงานโรงพยาบาลหรือร้านคาร์แคร์

Interview

สัมภาษณ์รายบุคคลหรือรายกลุ่ม เหมาะกับข้อมูลเชิงลึกและบทบาทเฉพาะ

Questionnaire

ใช้แบบสอบถามเมื่อต้องการข้อมูลจากผู้ใช้จำนวนมาก เพื่อสรุปแนวโน้มและระดับความต้องการ

Document Review

ทบทวนเอกสารเดิม เช่น แบบฟอร์ม ใบเสร็จ รายงาน คู่มือ หรือนโยบาย

Workshop / JAD

ประชุมผู้เกี่ยวข้อง เช่น User, Manager, Sponsor, SA เพื่อหาข้อสรุป Requirement ร่วมกัน

Prototyping

สร้าง Mockup หรือ Wireframe อย่างรวดเร็วให้ผู้ใช้ทดลองและเสนอแนะ เหมาะเมื่อผู้ใช้ยังอธิบายความต้องการไม่ชัด

ภาพประกอบ: วงจร Prototyping
UserFeedbackInitial RequirementPrototype 1Prototype 2 / 3Accepted Prototypeพัฒนาเป็นระบบจริง
Mobile Login
UN
PWD
Login
Exit

Mockup ช่วยให้ผู้ใช้เห็นภาพระบบก่อนพัฒนาจริง
Requirement Types

Functional Requirement และ Non-functional Requirement

Functional Requirement (FR)

บริการหลักหรือหน้าที่ที่ระบบต้องทำได้ เช่น บันทึกข้อมูลลูกค้า สั่งซื้อสินค้า จ่ายยา ออกใบเสร็จ หรือจองห้องพัก โดยทั่วไปสามารถแปลงเป็น Use Case ได้โดยตรง

  • ระบบสามารถบันทึกข้อมูลผู้ป่วยได้
  • ระบบสามารถบันทึกการสั่งซื้อสินค้าได้
  • ระบบสามารถคำนวณค่าบริการร้านคาร์แคร์ได้
  • ลูกค้าสามารถตรวจสอบสถานะการจองห้องพักได้

Non-functional Requirement (NFR)

เงื่อนไขหรือคุณภาพของระบบ เช่น ประสิทธิภาพ ความปลอดภัย ความเสถียร ความง่ายในการใช้งาน Browser อุปกรณ์ และกฎหมาย เช่น PDPA

  • ตอบสนองภายใน 3 วินาทีเมื่อมีผู้ใช้พร้อมกันไม่เกิน 100 คน
  • รองรับมือถือ แท็บเล็ต และคอมพิวเตอร์
  • เข้ารหัสข้อมูลสำคัญของลูกค้า
  • ใช้งานได้กับ Browser หลักทุกตัว
ตัวอย่างการปรับ NFR: “ระบบต้องมีประสิทธิภาพดี” ยังไม่ทดสอบได้ ควรปรับเป็น “ระบบต้องตอบสนองภายใน 3 วินาที เมื่อมีผู้ใช้พร้อมกันไม่เกิน 100 คน”
Requirement Specification / SRS

การเขียน Requirement Specification

SRS ควรประกอบด้วยอะไร

  • วัตถุประสงค์และขอบเขตของระบบ
  • กลุ่มผู้ใช้และผู้เกี่ยวข้อง
  • Functional และ Non-functional Requirements
  • Business Rules และข้อจำกัด
  • Use Case Diagram และ Description
  • Priority, Dependency และ Acceptance Criteria
ระบบเล็กอาจเขียนแบบย่อ ได้แก่ Problem Domain, Glossary, Requirement Specification และ Use Case Diagram

ตัวอย่าง SRS แบบย่อ

ReqIDREQ-001
ชื่อ Requirementบันทึกข้อมูลลูกค้า
ผู้ใช้ที่เกี่ยวข้องพนักงานขาย
รายละเอียดระบบต้องบันทึกข้อมูลลูกค้า ได้แก่ รหัสลูกค้า ชื่อ นามสกุล เบอร์โทรศัพท์ อีเมล และที่อยู่
เงื่อนไขเบอร์โทรศัพท์ต้องเป็นตัวเลข 10 หลัก และอีเมลต้องมีรูปแบบถูกต้อง
ระดับความสำคัญสูง / 2
การทดสอบหากกรอกข้อมูลไม่ครบ ระบบต้องแสดงข้อความแจ้งเตือนและไม่บันทึกข้อมูล

Priority

ระดับความหมาย
0ไม่สำคัญ / ตัดออกได้
1ปานกลาง / ยังไม่เร่งด่วน
2สำคัญมาก / เร่งด่วน

Dependency

Requirement หนึ่งอาจขึ้นอยู่กับอีก Requirement หนึ่ง เช่น ถ้าไม่มีข้อมูลห้องพัก จะไม่สามารถจองห้องพักได้ หรือถ้าไม่มีการเปิดคอร์ส จะไม่สามารถลงทะเบียนเรียนได้

ตัวอย่าง: REQ-001 บันทึกข้อมูลห้องพัก → REQ-002 จองห้องพัก → REQ-003 ชำระเงิน
Requirement Validation

การตรวจสอบความถูกต้องของความต้องการ

Validity

ตรงกับความต้องการจริงหรือไม่

Consistency

มีข้อกำหนดขัดแย้งกันเองหรือไม่

Completeness

ครบถ้วนสำหรับผู้ใช้ทุกกลุ่มหรือไม่

Realism

สร้างได้จริงหรือไม่

Verifiability

ตรวจสอบหรือทดสอบได้หรือไม่

ข้อเสียของภาษาธรรมชาติ

  • กำกวม ไม่ชัดเจน
  • ทำให้ผู้ใช้และทีมพัฒนาเข้าใจไม่ตรงกัน
  • ผสมหลาย Requirement ในประโยคเดียว ทำให้ทดสอบยาก

แนวทางเขียนให้ดีขึ้น

  • ใช้รูปแบบมาตรฐาน ReqID, Actor, Detail, Priority, Test Criteria
  • ใช้ภาษาตรงไปตรงมา
  • แยก Requirement แต่ละข้อให้เป็นอิสระ
  • กำหนดเงื่อนไขที่วัดและทดสอบได้
Use Case Model

การวิเคราะห์เชิงวัตถุด้วย Use Case Model

Use Case Diagram คืออะไร

Use Case Diagram เป็นแผนภาพ UML สำหรับวิเคราะห์ระบบเชิงวัตถุ ใช้แสดงฟังก์ชันของระบบว่าระบบมีหน้าที่ใด และแต่ละหน้าที่มีปฏิสัมพันธ์กับ Actor ใด

ข้อควรจำ: Use Case แทน Functional Requirement จึงควรตั้งชื่อเป็นคำกิริยา เช่น สมัครสมาชิก จองห้องพัก ชำระเงิน ตรวจสอบสถานะ
ภาพประกอบ: องค์ประกอบ Use Case Diagram
ระบบจองห้องพักลูกค้าค้นหาห้องว่างจองห้องพักชำระเงิน

ความสัมพันธ์ใน Use Case

AssociationActor มีปฏิสัมพันธ์กับ Use Case
<<include>>Use Case หลักต้องเรียก Use Case ย่อยทุกครั้ง เช่น ยืมหนังสือ include เข้าสู่ระบบ
<<extend>>Use Case ย่อยเกิดเฉพาะบางเงื่อนไข เช่น คืนหนังสือ extend คิดค่าปรับล่าช้า
Generalizationแบ่งประเภท Actor หรือ Use Case เช่น ลูกค้า → สมาชิก / ลูกค้าทั่วไป

ขั้นตอนสร้าง Use Case Diagram

  1. หา Actor ที่เกี่ยวข้อง
  2. หา Use Case ที่มีปฏิสัมพันธ์กับ Actor
  3. หา Relationship ระหว่าง Actor และ Use Case
  4. ตรวจว่าไม่มี Actor หรือ Use Case ลอยอยู่เดี่ยว ๆ
  5. เขียน Use Case Description ให้ครบถ้วน
Examples

ตัวอย่างการแปลง Requirement เป็น Use Case

ระบบร้านคาร์แคร์

RequirementUse Case
ลงทะเบียนลูกค้าใหม่และจัดการข้อมูลลูกค้าลงทะเบียนลูกค้า / แก้ไขข้อมูลลูกค้า
จัดการนัดหมายและตารางบริการนัดหมายบริการ / จัดตารางบริการ
บันทึกข้อมูลรถยนต์บันทึกข้อมูลรถยนต์
ลูกค้าตรวจสอบสถานะบริการได้ตรวจสอบสถานะบริการ
คำนวณค่าบริการคำนวณค่าบริการ

ระบบจองห้องพักออนไลน์

ActorUse Case
ลูกค้าสมัครสมาชิก, เข้าสู่ระบบ, ค้นหาห้องว่าง, จองห้องพัก, ชำระเงิน, ตรวจสอบสถานะการจอง, ยกเลิกการจอง
เจ้าหน้าที่ตรวจสอบห้องพัก, ตรวจสอบสถานะการจอง, จัดการห้องพัก, ออกใบเสร็จ
ผู้ดูแลระบบจัดการข้อมูลผู้ใช้, จัดการข้อมูลห้องพัก, กำหนดสิทธิ์
ภาพประกอบ: Use Case Diagram ระบบจองห้องพักออนไลน์แบบย่อ
ระบบการจองห้องพักโรงแรมออนไลน์ลูกค้าเจ้าหน้าที่สมัครสมาชิกเข้าสู่ระบบค้นหาห้องว่างจองห้องพักตรวจสอบสถานะชำระเงินยกเลิกการจองจัดการห้องพักออกใบเสร็จ<<include>>
ดัดแปลงจากสไลด์ตัวอย่างระบบจองห้องพักออนไลน์ที่ระบุ Actor ลูกค้า/พนักงาน และ Use Case เช่น Check, Reservation, Login, Payment และ Reservation Management

Use Case Description ตัวอย่าง

Use Case Nameจองห้องพัก
Actorลูกค้า
Preconditionsลูกค้าต้องเข้าสู่ระบบ และมีห้องว่างในช่วงวันที่เลือก
Main Flowเลือกวันที่ → ระบบแสดงห้องว่าง → เลือกห้อง → ระบบคำนวณราคา → ยืนยันการจอง
Alternative Flowถ้าห้องไม่ว่าง ระบบแสดงห้องอื่นหรือให้เปลี่ยนวันที่
Postconditionsระบบบันทึกข้อมูลการจองและแสดงเลขที่การจอง

ข้อควรระวัง

  • Use Case ต้องง่ายและสื่อสารกับผู้ใช้ได้
  • ไม่ควรใช้ include, extend และ inheritance โดยไม่จำเป็น
  • ไม่ควรมีเส้นซ้อนทับกันมาก
  • Use Case ควรตั้งชื่อเป็นคำกิริยา
  • ควรเขียน Use Case Description กำกับ
Summary

สรุปบทเรียนที่ 5

1) Requirement Analysis เป็นรากฐานของระบบ

ช่วยให้ทุกฝ่ายเข้าใจปัญหา ความต้องการ และขอบเขตตรงกัน

2) Requirement มาจากผู้ใช้หลายกลุ่ม

ต้องเลือกถามข้อมูลให้ถูกคน

3) Requirement ต้องชัดเจนและทดสอบได้

หลีกเลี่ยงคำคลุมเครือ เช่น ง่าย เร็ว ดี สวย

4) SRS คือเอกสารข้อตกลงร่วม

รวม ReqID, รายละเอียด, Priority, Dependency และ Test Criteria

5) Use Case Model แปลง FR เป็นภาพ

แสดง Actor, Use Case, System Boundary และ Relationship

แบบฝึกหัดท้ายบทที่ 5

  1. อธิบายความสำคัญของ Requirement Analysis และผลเสียเมื่อ Requirement ไม่ชัดเจน
  2. เปรียบเทียบ User Requirement, System Requirement และ SRS
  3. เลือกกลุ่มผู้ใช้ของระบบโรงพยาบาลและระบุว่าควรถามข้อมูลใดจากใครบ้าง
  4. เขียน Requirement Specification สำหรับ “ระบบบันทึกข้อมูลการซื้อสินค้า” อย่างน้อย 8 ข้อ
  5. จำแนก Requirement เป็น FR หรือ NFR
  6. เขียน Requirement Validation Checklist สำหรับระบบจองห้องพักออนไลน์
  7. หา Actor และ Use Case ของระบบร้านคาร์แคร์อย่างน้อย 8 รายการ
  8. เขียน Use Case Description สำหรับ Use Case “ชำระเงิน”
แนวทางงานกลุ่ม: เก็บข้อมูลจริง → แยก User → เขียน Requirement → จัด Priority → ตรวจ FR/NFR → วาด Use Case Diagram → เขียน Use Case Description

พร้อมต่อยอดสู่การออกแบบระบบ

เมื่อ Requirement และ Use Case ชัดเจนแล้ว ขั้นต่อไปคือการวิเคราะห์ Class, Sequence, Activity และการออกแบบสถาปัตยกรรมระบบ