Files
wms-app/sdlc/2-SI Process (12 Work Product)/11.Software Requirements specification (SRS)/200-WMS-26-001-00 Software Requirements 25690225 V1.0 NoC.md
T
Thanakorn 087e7b3958 docs(sdlc): reformat work products to audited reference layout
Replace the PHP/Markdown seeding with a data-driven generator in
scripts/sdlc-seed and regenerate all 59 work products.
2026-09-09 08:09:54 +07:00

17 KiB
Raw Blame History

Software Requirements

| Document No | Software Requirements | Release, Version, By: | 25690225 V1.0 NoC | | Project Name | โครงการพัฒนาระบบบริหารจัดการคลังสินค้า (BRN WMS) บริษัท บี.อาร์.เอ็น เอ็นเตอร์ไพรส์ จำกัด | | Project Code | 200-WMS-26-001-00 | | Title | เอกสารบันทึกและสรุปความต้องการซอฟต์แวร์ (Software Requirements Specification) | | Project Period | 5 มกราคม 2569 – 24 สิงหาคม 2569 | | Organizer | คุณอภิรัชช์ สุภัทรประทีป (Project Manager) , คุณนพพงษ์ เจริญสุข (System Analyst) | | Recorder | คุณเยาวลักษณ์ บางชมภู (Document Control) |

วัตถุประสงค์ (Objectives)

เพื่อแปลงความต้องการของลูกค้าที่ได้รับอนุมัติแล้วให้เป็นความต้องการเชิงเทคนิคของซอฟต์แวร์ ครอบคลุมมาตรฐาน โครงสร้าง ส่วนประกอบ ความสัมพันธ์ ประสิทธิภาพ ส่วนเชื่อมต่อ ความปลอดภัย ฐานข้อมูล และการจัดการข้อผิดพลาด เพื่อใช้เป็นเอกสารอ้างอิงหลักในการออกแบบระบบ พัฒนา และทดสอบ

ผู้มีส่วนได้ส่วนเสีย (Stakeholders)

ลำดับ ชื่อ หน่วยงาน/ตำแหน่ง บทบาท
1 คุณเสรี วิริยะสกุลธรณ์ ผู้บริหาร (CEO) Project Sponsor อนุมัติความต้องการ
2 คุณอภิรัชช์ สุภัทรประทีป ผู้จัดการโครงการ บริหารจัดการโครงการ
3 คุณนพพงษ์ เจริญสุข นักวิเคราะห์ระบบ จัดทำและควบคุมความต้องการซอฟต์แวร์
4 คุณธนกร สถิตวิทยากุล นักพัฒนาระบบ พัฒนาระบบตามความต้องการ
5 คุณปริญ งามขำ ผู้ทดสอบระบบ จัดทำ Test Case จากความต้องการ

ความต้องการซอฟต์แวร์ (Software Requirements)

ID Topic Result* Remark
SR01: Standards of Software
SR01:001 ระบบต้องพัฒนาและจัดทำเอกสารให้สอดคล้องกับมาตรฐาน ISO/IEC 29110 Basic Profile และแนวปฏิบัติ Secure Coding A CR12:004, CR14:001–CR14:003, CR09:003, CR10:004, CR11:001–CR11:004
SR01:002 ระบบต้องใช้เทคโนโลยี PHP 8 ขึ้นไป, MySQL/MariaDB และ Node.js (Socket.IO, pm2) A CR04:004, CR12:001
SR01:003 ระบบต้องติดตั้งบน Linux Server ได้ทั้งแบบ Manual (setup.php) และ Docker Compose (php-apache, mariadb, node/pm2) A CR07:001, CR10:001, CR10:002, CR08:001, CR08:002, CR13:003
SR01:004 รหัสผ่านผู้ใช้ต้องเข้ารหัสด้วย bcrypt (PASSWORD_BCRYPT) และไม่เก็บหรือบันทึกเป็นข้อความธรรมดา A CR12:003
SR01:005 ค่าตั้งค่าและความลับ (app/config.php, .env) ต้องถูกยกเว้นจาก Source Control และสร้างขึ้นตอนติดตั้ง A CR06:002, CR09:002, CR10:003
SR01:006 แอปพลิเคชันและงานตามกำหนดเวลาต้องใช้เขตเวลา Asia/Bangkok A CR07:002
SR02: Software Structure Considerations
SR02:001 ระบบต้องเป็น Web-based Application แบบหลายหน้า (Multi-page PHP) A CR04:001
SR02:002 ส่วนติดต่อผู้ใช้ต้องเป็น Responsive Design รองรับ Desktop / Tablet / Mobile A CR05:001, CR07:003
SR02:003 ตรรกะทางธุรกิจต้องจัดเป็น Manager/Service Classes ที่เรียกใช้จาก Page Controller แยกจากส่วนแสดงผล A CR09:001
SR02:004 การเข้าถึงข้อมูลต้องผ่าน Manager Classes ไม่กระจาย SQL ในหน้าเพจ A CR09:001
SR02:005 ระบบต้องติดตั้งเป็น Container Stack ผ่าน Docker Compose ได้ นอกเหนือจากการติดตั้งแบบ Manual A CR10:002
SR03: Software Elements
SR03:001 โมดูลผู้ใช้งานและสิทธิ์: ลงทะเบียน, Onboarding, เข้าสู่ระบบ, บทบาท Owner/Admin/Staff/Viewer, สิทธิ์แอปพลิเคชัน (app/login/, UserManager, PasswordManager, PasswordResetManager) A CR01:001–CR01:004
SR03:002 โมดูลตั้งค่าบริษัท: ข้อมูลบริษัท, SMTP, การตั้งค่าระบบ (app/setting/, CompanyProfileManager, CompanySettingManager, SmtpManager) A CR01:004, CR03:005
SR03:003 โมดูลข้อมูลหลัก: คลังสินค้า, พื้นที่/ช่องจัดเก็บ, หมวดสินค้า, สินค้า, ผู้ติดต่อ (app/inventory/, app/contact/, WarehouseManager, ProductManager, ContactManager) A CR01:005, CR01:006
SR03:004 โมดูลควบคุมสินค้าคงคลัง: รับเข้า, จ่ายออก, โอนย้าย, Lot/Serial/Expiry, บาร์โค้ด, แนบไฟล์ (app/ics/, StockManager, StockSourceManager, BarcodeManager, FileUploader) A CR01:007–CR01:012, CR01:019, CR05:005
SR03:005 โมดูลขาย: ใบเสนอราคา, ใบสั่งขาย, ใบแจ้งหนี้, ใบรับคืน/ใบลดหนี้ (app/order/, app/revenue/, QuotationManager, OrderManager, InvoiceManager, ReturnManager) A CR01:013
SR03:006 โมดูลจัดซื้อ: ใบขอซื้อ, ใบสั่งซื้อ, ใบแจ้งหนี้ซื้อ, ใบคืนสินค้าผู้ขาย (app/po/, PurchaseRequestManager, PurchaseOrderManager, SupplierReturnManager) A CR01:014
SR03:007 โมดูลการเงิน: ใบวางบิลรับ, ใบเสร็จ, ใบวางบิลจ่าย, ใบสำคัญจ่าย (app/finance/, ReceiptBillingManager, ReceiptManager, PaymentBillingManager, PaymentManager) A CR01:015
SR03:008 โมดูลบัญชี: ผังบัญชี, แผนก, สูตรบัญชี, สมุดรายวัน, บัญชีแยกประเภท (app/accounting/, app/journal/, PostingManager) A CR01:016
SR03:009 โมดูลรายงานและแดชบอร์ด: รายงานสต๊อก, รายงานการเงิน, แดชบอร์ด (app/reports/, app/dashboard/, app/ac_dashboard/, ReportManager, EtlStockManager) A CR01:011, CR01:017, CR01:020
SR03:010 โมดูลควบคุมเอกสาร: ออกเลขที่เอกสาร, วงจรชีวิต/สถานะ, ประวัติรายการ (DocumentNumberManager, BatchActionManager) A CR01:018, CR01:023
SR03:011 บริการแจ้งเตือนและงานตามกำหนดเวลา: Socket.IO และ Scheduler (nodejs/server.js, nodejs/scheduler.js, app/cron/) A CR01:021, CR01:022
SR04: Software Elements Relationship
SR04:001 ทุกโมดูลปฏิบัติการต้องเข้าถึงได้ผ่านการยืนยันตัวตนและการตรวจสิทธิ์ของโมดูลผู้ใช้งานเท่านั้น A CR01:002, CR01:024, CR04:003, CR05:002
SR04:002 โมดูลขาย จัดซื้อ และการเงิน ต้องบันทึกผลกระทบต่อสต๊อกและ GL ผ่านโมดูลคลังสินค้าและบัญชี ไม่ทำซ้ำตรรกะ A CR01:013–CR01:016
SR04:003 โมดูลรายงานต้องอ่านข้อมูลภายใต้ขอบเขตบริษัท/คลังที่โมดูลข้อมูลหลักและคลังสินค้าบังคับใช้ A CR01:024, CR08:004
SR04:004 บริการ Node.js ต้องรับเหตุการณ์จากแอปพลิเคชัน PHP ผ่าน Endpoint ภายในที่ป้องกันด้วย Secret เท่านั้น A CR01:021, CR03:003
SR04:005 ทุกโมดูลที่สร้างเอกสารธุรกิจต้องเรียกใช้โมดูลควบคุมเอกสารเพื่อออกเลขที่เอกสาร A CR01:018
SR05: Performance Characteristics
SR05:001 งานประจำวัน (เปิดหน้าจอ, ค้นหา, สร้างเอกสาร) ต้องเสร็จภายในเวลาที่ใช้งานได้จริงบนสภาพแวดล้อมที่ตกลง A CR02:001
SR05:002 ยอดสรุปสต๊อก/GL/แดชบอร์ดต้องคำนวณล่วงหน้าตามกำหนดเวลา (etl_stock_summary, etl_gl_summary) A CR02:002, CR01:022, CR08:005
SR05:003 ระบบต้องรองรับปริมาณข้อมูลและผู้ใช้พร้อมกันตามที่ตกลงสำหรับสภาพแวดล้อมใช้งานจริง A CR02:003
SR05:004 ระบบต้องมี Health Check ทุก 5 นาที และแจ้งเตือนผู้ดูแลเมื่อล้มเหลวติดต่อกัน 2 ครั้ง A CR08:003
SR06: Software Interfaces
SR06:001 แอปพลิเคชัน PHP ต้องเชื่อมต่อฐานข้อมูล MariaDB 2 ฐาน: wms (ผู้ใช้/บริษัท) และ wms2 (คลัง/บัญชี) A CR03:001
SR06:002 ระบบต้องใช้งานได้บน Chrome, Edge และ Firefox รุ่นปัจจุบัน A CR03:002
SR06:003 ระบบต้องรองรับ Mobile/Tablet Browser ผ่าน Responsive UI A CR07:003
SR06:004 แอปพลิเคชัน PHP ต้องส่งเหตุการณ์ไป Node.js ผ่าน HTTP Endpoint ภายใน (NODE_EMIT_URL + NODE_EMIT_SECRET) และส่งอีเมลผ่าน SMTP ต่อบริษัท A CR03:003, CR03:005
SR06:005 Browser ต้องเชื่อมต่อ Socket.IO Endpoint (NODE_PUBLIC_URL) เพื่อรับการแจ้งเตือน A CR03:004
SR07: Security Characteristics
SR07:001 การเชื่อมต่อในสภาพแวดล้อมใช้งานจริงต้องผ่าน HTTPS/TLS A CR06:001
SR07:002 การทำงานฝั่งเซิร์ฟเวอร์ต้องตรวจสอบข้อมูลนำเข้า ยืนยันตัวตน ตรวจสิทธิ์ และจำกัดขอบเขตบริษัท/คลัง A CR06:003, CR14:004
SR07:003 ระบบต้องอนุญาต Session ที่ใช้งานอยู่เพียงหนึ่งต่อบัญชี (บล็อก Concurrent Login) A CR06:006
SR07:004 ระบบต้องป้องกัน SQL Injection และ Cross-Site Scripting ทั้งด้านรับข้อมูลและแสดงผล A CR06:005
SR07:005 RBAC (Owner/Admin/Staff/Viewer) ต้องบังคับใช้ที่ฝั่งเซิร์ฟเวอร์ ไม่ใช่เพียงการซ่อนเมนู A CR06:004
SR08: Database Design Requirements
SR08:001 ฐานข้อมูล wms: user, company_list, company_map_user, company_setting, company_smtp, company_usage, whitelist A CR01:001–CR01:004, CR04:002
SR08:002 ตารางข้อมูลหลัก (wms2): md_warehouse, md_storage, md_bin, md_product, md_product_category, md_contact, md_contact_type, md_account, md_account_formula, md_account_formula_item, md_department, md_barcode, md_sku_barcode_label, md_lot, md_lock_operation A CR01:005, CR01:010, CR01:016
SR08:003 ตารางรายการ (td_*): td_stock, td_order/_item, td_quotation/_item, td_invoice/_item, td_return/_item, td_purchase_request/_item, td_purchase_order/_item, td_supplier_return/_item, td_receipt/_item, td_receipt_billing/_item, td_payment/_item, td_payment_billing/_item, td_gl/td_gl_item, td_batch_action, td_bin_log A CR01:007–CR01:018
SR08:004 ตารางสรุปยอดและควบคุมเอกสาร: etl_stock_summary, etl_gl_summary, document_number_sequences, document_types, schema_migrations A CR01:018, CR01:022, CR09:004
SR08:005 ตารางทั้งหมดต้องสร้างซ้ำได้ในสภาพแวดล้อมใหม่ผ่าน setup.php โดยไม่ต้องแก้ Schema ด้วยมือ A CR10:001, CR09:004
SR09: Error Handling and Recovery Attributes
SR09:001 การลบ ยกเลิก หรือ Void เอกสารควบคุมต้องมี Confirm Dialog A CR05:004, CR01:023
SR09:002 ข้อผิดพลาดต้องแสดงข้อความที่ผู้ใช้เข้าใจได้แทน Fatal Error A CR05:003, CR13:004
SR09:003 การเปลี่ยนแปลงที่เกี่ยวข้องกัน (เอกสาร + สต๊อก + GL) ต้องเป็น Transaction และป้องกันยอดติดลบ/ซ้ำ A CR13:001, CR13:002, CR01:008

Remark

  • * Result : A = Accepted, U = Unaccepted, N/A = Not Applicable
  • ช่อง Remark แสดงรหัสความต้องการของลูกค้า (Customer Requirements) ที่เป็นที่มาของความต้องการซอฟต์แวร์แต่ละรายการ
  • ความต้องการซอฟต์แวร์ที่ไม่มีที่มาจากความต้องการของลูกค้าต้องผ่าน Change Report ก่อนถือเป็นข้อผูกพัน

ผู้จัดทำเอกสาร (Secretary)

ชื่อ ตำแหน่ง ลายเซ็น วันที่
คุณนพพงษ์ เจริญสุข System Analyst

ผู้ตรวจสอบเอกสาร (Reviewer)

ชื่อ ตำแหน่ง ลายเซ็น วันที่
คุณเยาวลักษณ์ บางชมภู Document Control

ผู้อนุมัติ (Approval)

ชื่อ ตำแหน่ง ลายเซ็น วันที่
คุณเสรี วิริยะสกุลธรณ์ Project Sponsor