⚙️ ความต้องการเชิงไม่ฟังก์ชัน (Non-Functional Requirements)
เอกสารนี้ระบุเกณฑ์และข้อกำหนดด้านคุณภาพ ประสิทธิภาพ ความปลอดภัย และการบำรุงรักษาระบบของ SplitDee เพื่อให้การทำงานของระบบมีประสิทธิภาพสูงสุด
🔒 1. ความปลอดภัยและความเป็นส่วนตัว (Security & Privacy)
| รหัสข้อกำหนด (ID) | หัวข้อ | รายละเอียดข้อกำหนด |
|---|
| NFR-SEC-001 | การรับรองความถูกต้อง | ระบบต้องใช้ JSON Web Tokens (JWT) สำหรับการรักษาความปลอดภัยของ API ทุกเส้นที่ต้องได้รับการรับรองสิทธิ์ |
| NFR-SEC-002 | การเข้ารหัสข้อมูล | การสื่อสารข้อมูลระหว่างแอปพลิเคชันมือถือและเซิร์ฟเวอร์ต้องเข้ารหัสผ่านโปรโตคอล HTTPS (TLS 1.2 ขึ้นไป) |
| NFR-SEC-003 | ความปลอดภัยของข้อมูลทางการเงิน | ห้ามจัดเก็บภาพสลิปโอนเงินหรือข้อมูลทางการเงินของลูกค้าไว้โดยไม่มีการควบคุมสิทธิ์อย่างถูกต้อง และรูปภาพสลิปต้องถูกเก็บในที่ปลอดภัยใน Object Storage ที่เข้ารหัส |
| NFR-SEC-004 | การป้องกันข้อมูลส่วนบุคคล | ปฏิบัติตามมาตรฐาน PDPA โดยต้องขอความยินยอมจากผู้ใช้ก่อนจัดเก็บเบอร์โทรศัพท์หรือรูปโปรไฟล์เพื่อประมวลผลระบบ PromptPay |
| รหัสข้อกำหนด (ID) | หัวข้อ | รายละเอียดข้อกำหนด |
|---|
| NFR-PER-001 | เวลาในการตอบสนอง (Latency) | API ของระบบ (FastAPI) ต้องตอบสนองต่อผู้ร้องขอภายในเวลาเฉลี่ยไม่เกิน 500 มิลลิวินาที ภายใต้สภาวะโหลดปกติ |
| NFR-PER-002 | การสแกนสลิปด้วย AI | ระบบการดึงข้อมูลจากสลิปโอนเงินและการเปรียบเทียบข้อมูลต้องเสร็จสิ้นภายในเวลาไม่เกิน 3 วินาทีหลังจากผู้ใช้ส่งภาพ |
| NFR-PER-003 | การทำงานพร้อมกัน (Concurrency) | ระบบต้องสามารถรองรับจำนวนผู้ใช้งานที่ทำงานพร้อมกัน (Concurrent Users) ได้อย่างน้อย 1,000 คน โดยประสิทธิภาพไม่ลดลง |
| NFR-PER-004 | ความพร้อมใช้งาน (Availability) | ระบบหลังบ้านต้องมีเวลาทำงานอย่างต่อเนื่อง (Uptime) ไม่ต่ำกว่า 99.9% ต่อเดือน |
🤝 3. ความง่ายในการใช้งานและการเข้าถึง (Usability & Accessibility)
| รหัสข้อกำหนด (ID) | หัวข้อ | รายละเอียดข้อกำหนด |
|---|
| NFR-USA-001 | ความเร็วในการเรียนรู้แอป | การออกแบบอินเตอร์เฟสผู้ใช้ (UI/UX) ต้องมีความชัดเจน ผู้ใช้ใหม่ต้องสามารถทำความเข้าใจและสร้างบิลแรกได้สำเร็จภายในเวลาไม่เกิน 2 นาทีโดยไม่ต้องอ่านคู่มือ |
| NFR-USA-002 | การแสดงผลที่เป็นมิตร | โทนภาษาและข้อความแจ้งเตือนต่างๆ ต้องอ่านง่าย มีขนาดตัวอักษรที่เหมาะสม และมี Contrast Ratio ตามมาตรฐานการใช้งานทั่วไป |
| NFR-USA-003 | การตอบสนองเชิงโต้ตอบ | มีการแสดงสัญลักษณ์ความคืบหน้า (Progress Indicator) หรือ Loading Spinner ทุกครั้งเมื่อมีการทำงานแบบไม่ซิงโครนัส (เช่น กำลังสแกนสลิป) |
🔧 4. ความน่าเชื่อถือและการบำรุงรักษา (Reliability & Maintainability)
| รหัสข้อกำหนด (ID) | หัวข้อ | รายละเอียดข้อกำหนด |
|---|
| NFR-REL-001 | ความถูกต้องของยอดเงิน | การคำนวณบิลและการสรุปยอดค้างชำระห้ามมีความผิดพลาดแม้แต่ทศนิยมเดียว ยอดรวมหนี้ในกลุ่มต้องเป็นศูนย์เสมอ (Zero-sum Debt) |
| NFR-REL-002 | ความสมบูรณ์ของข้อมูล | ข้อมูลประวัติการแชร์บิลและการชำระเงินต้องไม่สูญหายแม้จะเกิดข้อผิดพลาดขึ้นในระหว่างการทำธุรกรรม (รองรับ Database Transactions) |
| NFR-REL-003 | การเขียนโค้ดและสถาปัตยกรรม | โครงสร้างโปรเจกต์ต้องจัดระบบด้วย Clean Architecture เพื่อให้ง่ายต่อการเพิ่มฟีเจอร์ในอนาคต (Extensibility) และการแก้ไขบั๊ก |
📱 5. ความเข้ากันได้ของระบบ (Compatibility)
| รหัสข้อกำหนด (ID) | หัวข้อ | รายละเอียดข้อกำหนด |
|---|
| NFR-CMP-001 | รองรับหลายแพลตฟอร์ม | ตัวแอปพลิเคชันที่พัฒนาขึ้นด้วย Flutter ต้องสามารถทำงานได้อย่างมีประสิทธิภาพบนระบบปฏิบัติการ Android 9.0 ขึ้นไป และ iOS 15 ขึ้นไป |
| NFR-CMP-002 | ความเสถียรของหน้าจอ | หน้าจอแอปพลิเคชันต้องเป็นแบบ Responsive สามารถปรับเปลี่ยนการแสดงผลตามขนาดหน้าจอต่างๆ ได้โดยไม่ตกหล่นหรือซ้อนทับกัน |