ข้อกำหนดด้านการทำงานในวิศวกรรมซอฟต์แวร์คืออะไร?

⚡ สรุปอย่างชาญฉลาด

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

  • 📘 ความหมาย: ข้อกำหนดเชิงฟังก์ชัน หรือที่เรียกว่า ข้อกำหนดคุณสมบัติเชิงฟังก์ชัน ระบุถึงสิ่งที่ระบบต้องทำ — ข้อมูลนำเข้า พฤติกรรม และผลลัพธ์ ซึ่งอธิบายจากมุมมองของผู้ใช้หรือฝ่ายธุรกิจ
  • 📄 ขอบเขตเอกสาร: เอกสารข้อกำหนดด้านฟังก์ชันการทำงานครอบคลุมการทำงานของหน้าจอ ตรรกะการจัดการข้อมูล รายงาน ขั้นตอนการทำงาน สิทธิ์การเข้าถึง และการปฏิบัติตามกฎระเบียบ
  • 🗂️ ประเภททั่วไป: การจัดการธุรกรรม กฎทางธุรกิจ การรายงาน หน้าที่ด้านการบริหาร ระดับการอนุญาต การตรวจสอบ tracกษัตริย์ อินเทอร์เฟซภายนอก และข้อกำหนดทางกฎหมาย
  • 💡 ตัวอย่าง: การตรวจสอบการเข้าสู่ระบบ การบันทึกยอดขาย การดูรายได้ตามบทบาท การผสานรวม API ของธนาคาร และการปฏิบัติตามข้อกำหนดด้านการเข้าถึง ล้วนอยู่ในขอบเขตของข้อกำหนดด้านฟังก์ชันการทำงาน
  • 🆚 ความแตกต่างที่ไม่เกี่ยวข้องกับการทำงาน: ข้อกำหนดด้านฟังก์ชันการทำงานอธิบายว่าระบบทำอะไรได้บ้าง ส่วนข้อกำหนดที่ไม่ใช่ฟังก์ชันการทำงานอธิบายว่าระบบทำงานได้ดีแค่ไหน เช่น ประสิทธิภาพ ความปลอดภัย และความสามารถในการใช้งาน
  • ปฏิบัติที่ดีที่สุด: กำหนดข้อกำหนดให้ละเอียด สามารถทดสอบได้ และเชื่อมโยงกับวัตถุประสงค์ทางธุรกิจ โดยรวบรวมข้อกำหนดผ่านการสัมภาษณ์และการจัดประชุมเชิงปฏิบัติการ

ข้อกำหนดเชิงฟังก์ชันในวิศวกรรมซอฟต์แวร์

ข้อกำหนดด้านการทำงานคืออะไร?

A ความต้องการใช้งาน ข้อกำหนดเชิงฟังก์ชัน (Functional Requirements: FR) คือคำอธิบายของบริการที่ซอฟต์แวร์ต้องมีให้ โดยจะอธิบายระบบซอฟต์แวร์หรือส่วนประกอบของระบบ ฟังก์ชันถูกกำหนดโดยอินพุต พฤติกรรม และเอาต์พุต อาจเป็นการคำนวณ การจัดการข้อมูล กระบวนการทางธุรกิจ หรือการโต้ตอบกับผู้ใช้ ซึ่งกำหนดว่าระบบต้องทำอะไร ข้อกำหนดเชิงฟังก์ชันในวิศวกรรมซอฟต์แวร์เรียกอีกอย่างว่า... คุณสมบัติการทำงาน.

ข้อกำหนดเชิงฟังก์ชันมีตั้งแต่ความต้องการระดับสูงของผู้มีส่วนได้ส่วนเสียไปจนถึงข้อกำหนดทางคณิตศาสตร์โดยละเอียด ซอฟต์แวร์ที่ใช้งานได้ ข้อกำหนดต่างๆ ระบุถึงพฤติกรรมที่ระบบต้องการ

สิ่งที่ควรระบุไว้ในเอกสารข้อกำหนดด้านฟังก์ชันการทำงาน

เอกสารข้อกำหนดด้านฟังก์ชันการทำงานควรครอบคลุมสิ่งต่อไปนี้:

ตัวอย่างข้อกำหนดด้านการทำงาน

ตัวอย่างข้อกำหนดด้านการทำงาน

เอกสารข้อกำหนดด้านฟังก์ชันการทำงานโดยทั่วไปจะประกอบด้วย:

  • รายละเอียดของการดำเนินการที่เกิดขึ้นบนทุกหน้าจอ
  • ตรรกะการจัดการข้อมูลที่ระบบต้องนำไปใช้
  • Descriptไอออนของรายงานระบบและผลลัพธ์อื่นๆ
  • ข้อมูลโดยละเอียดเกี่ยวกับขั้นตอนการทำงานที่ระบบดำเนินการ
  • ใครบ้างที่มีสิทธิ์สร้าง แก้ไข หรือลบข้อมูลในระบบ
  • ระบบตอบสนองความต้องการด้านกฎระเบียบและการปฏิบัติตามกฎหมายที่เกี่ยวข้องได้อย่างไร

ประโยชน์ของข้อกำหนดด้านฟังก์ชันการทำงาน

ประโยชน์หลักของเอกสารข้อกำหนดการทำงาน (Functional Requirements Document) ที่เขียนอย่างดีมีดังนี้:

  • ตรวจสอบว่าแอปพลิเคชันส่งมอบฟังก์ชันทุกอย่างตามที่ระบุไว้หรือไม่
  • อธิบายฟังก์ชันการทำงานของระบบและระบบย่อยต่างๆ ไว้ในที่เดียว
  • เมื่อนำมาผนวกกับการวิเคราะห์ความต้องการแล้ว ความต้องการด้านฟังก์ชันจะช่วยระบุความต้องการที่ขาดหายไปและชี้แจงพฤติกรรมของระบบที่คาดหวังได้
  • ข้อผิดพลาดที่ตรวจพบในขั้นตอนการกำหนดความต้องการนั้นแก้ไขได้ง่ายและประหยัดที่สุด
  • สนับสนุนเป้าหมาย งาน และกิจกรรมของผู้ใช้

ประเภทของข้อกำหนดในการใช้งาน

ประเภทของข้อกำหนดด้านฟังก์ชันการทำงานโดยทั่วไป ได้แก่:

  • การจัดการธุรกรรม
  • กฎเกณฑ์ทางธุรกิจ
  • ความต้องการการรับรอง
  • ข้อกำหนดในการรายงาน
  • ฟังก์ชั่นการบริหาร
  • ระดับการอนุญาต
  • กรรมการตรวจสอบ Tracking
  • อินเทอร์เฟซภายนอก
  • การจัดการข้อมูลทางประวัติศาสตร์
  • ข้อกำหนดทางกฎหมายและข้อบังคับ

ตัวอย่างของข้อกำหนดด้านการทำงาน

ด้านล่างนี้คือตัวอย่างที่เป็นรูปธรรมของข้อกำหนดด้านฟังก์ชันการทำงาน:

  • ซอฟต์แวร์จะตรวจสอบความถูกต้องของลูกค้าโดยอัตโนมัติกับระบบจัดการข้อมูลติดต่อ ABC
  • ระบบการขายจะต้องอนุญาตให้ผู้ใช้บันทึกยอดขายของลูกค้าได้
  • สีพื้นหลังของหน้าต่างทั้งหมดในแอปพลิเคชันจะเป็นสีน้ำเงิน โดยมีค่า RGB ในรูปแบบเลขฐานสิบหกคือ 0x0000FF
  • เฉพาะพนักงานระดับบริหารเท่านั้นที่จะมีสิทธิ์ดูข้อมูลรายได้
  • ระบบซอฟต์แวร์จะต้องเชื่อมต่อกับ API ของธนาคาร
  • ระบบซอฟต์แวร์จะต้องตรงตามข้อกำหนด 508 มาตรา ข้อกำหนดด้านการเข้าถึง

ความต้องการเชิงฟังก์ชันกับเชิงไม่ใช่ฟังก์ชัน

ต่อไปนี้คือความแตกต่างที่สำคัญระหว่างข้อกำหนดเชิงฟังก์ชันและข้อกำหนดที่ไม่ใช่เชิงฟังก์ชัน วิศวกรรมซอฟต์แวร์:

พารามิเตอร์ ความต้องการใช้งาน ข้อกำหนดที่ไม่สามารถใช้งานได้
มันคืออะไร คำกริยา คุณสมบัติ
ความต้องการ มันเป็นข้อบังคับ มันไม่บังคับ
ประเภทการจับ มันถูกบันทึกในกรณีการใช้งาน ถือเป็นคุณลักษณะที่มีคุณภาพ
ผลลัพธ์สุดท้าย คุณลักษณะผลิตภัณฑ์ คุณสมบัติผลิตภัณฑ์
จับ ง่ายต่อการจับภาพ ยากที่จะจับ
วัตถุประสงค์ ช่วยคุณตรวจสอบการทำงานของซอฟต์แวร์ ช่วยคุณตรวจสอบประสิทธิภาพของซอฟต์แวร์
พื้นที่โฟกัส มุ่งเน้นไปที่ความต้องการของผู้ใช้ มุ่งเน้นไปที่ความคาดหวังของผู้ใช้
เอกสาร อธิบายว่าผลิตภัณฑ์ทำอะไร อธิบายวิธีการทำงานของผลิตภัณฑ์
ประเภทของการทดสอบ การทดสอบการทำงาน เช่น System, Integration, End to End, การทดสอบ APIฯลฯ การทดสอบที่ไม่เกี่ยวกับฟังก์ชัน เช่น ประสิทธิภาพ ความเครียด การใช้งาน การทดสอบความปลอดภัยฯลฯ
ทดสอบการทำงาน การทดสอบจะดำเนินการก่อนการทดสอบที่ไม่เกี่ยวข้องกับการทำงานหลัก หลังจากการทดสอบการทำงาน
ข้อมูลสินค้า สินค้า คุณสมบัติผลิตภัณฑ์

แนวปฏิบัติที่ดีที่สุดสำหรับการเขียนข้อกำหนดเชิงฟังก์ชัน

หลักปฏิบัติที่ดีที่สุดที่สำคัญที่สุดสำหรับการเขียนเอกสารข้อกำหนดเชิงฟังก์ชันมีดังนี้:

  • อย่ารวมข้อกำหนดสองข้อเข้าด้วยกัน ให้แยกข้อกำหนดแต่ละข้อออกเป็นรายละเอียดปลีกย่อย
  • ระบุข้อกำหนดทุกอย่างให้ครบถ้วนและถูกต้องที่สุดเท่าที่จะเป็นไปได้
  • ร่างข้อกำหนดทางเทคนิคทั้งหมดลงในเอกสาร
  • เชื่อมโยงข้อกำหนดทุกข้อเข้ากับวัตถุประสงค์และหลักการที่ขับเคลื่อนการส่งมอบซอฟต์แวร์ให้ประสบความสำเร็จ
  • รวบรวมข้อกำหนดต่างๆ ผ่านการสัมภาษณ์ การจัดประชุมเชิงปฏิบัติการ และการสนทนาแบบไม่เป็นทางการ
  • บันทึกข้อจำกัดที่ทราบและตรวจสอบแล้วทั้งหมดที่มีผลกระทบอย่างมีนัยสำคัญต่อข้อกำหนด
  • บันทึกสมมติฐานทุกข้อลงในเอกสาร

ข้อผิดพลาดทั่วไปในการเขียนข้อกำหนดเชิงฟังก์ชัน

ข้อผิดพลาดที่พบบ่อยในการจัดทำเอกสารข้อกำหนดด้านฟังก์ชันการทำงาน ได้แก่:

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

คำถามที่พบบ่อย

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

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

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

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

EARS (Easy Approach to Requirements Syntax) เป็นมาตรฐานที่ใช้เทมเพลต 5 แบบ ได้แก่ แบบทั่วไป (ubiquitous), แบบขับเคลื่อนด้วยเหตุการณ์ (event-driven), แบบขับเคลื่อนด้วยสถานะ (state-driven), คุณสมบัติเสริม (optional feature) และพฤติกรรมที่ไม่พึงประสงค์ (unless behaviour) แต่ละแบบจะบังคับให้มีโครงสร้างที่สามารถทดสอบได้ เช่น เมื่อ TRIGGER ระบบจะต้อง RESPONSE

เอกสารข้อกำหนดซอฟต์แวร์ (Software Requirements Specification) เป็นเอกสารหลักที่อธิบายว่าระบบต้องทำอะไรบ้าง ข้อกำหนดด้านฟังก์ชันการทำงานเป็นส่วนที่ใหญ่ที่สุด รองลงมาคือส่วนต่อประสาน ข้อกำหนดที่ไม่ใช่ฟังก์ชันการทำงาน กรณีการใช้งาน และข้อจำกัดต่างๆ

ข้อกำหนดด้านฟังก์ชันการทำงานเป็นตัวกำหนดกรณีทดสอบในการทดสอบระบบ การทดสอบการบูรณาการ การทดสอบแบบครบวงจร การทดสอบ API และการทดสอบการยอมรับของผู้ใช้ แต่ละข้อกำหนดจะเชื่อมโยงกับกรณีทดสอบอย่างน้อยหนึ่งกรณี และข้อกำหนดต่างๆ Traceability Matrix ยืนยันความคุ้มครองก่อนวางจำหน่าย

ทีม Agile แสดงความต้องการด้านฟังก์ชันการทำงานในรูปแบบของ User Story โดยใช้รูปแบบ "ในฐานะบทบาท ฉันต้องการความสามารถ ดังนั้น คุณค่า" เกณฑ์การยอมรับที่แนบมากับ User Story จะเปลี่ยนความต้องการนั้นให้กลายเป็นคำจำกัดความของความสำเร็จที่สามารถทดสอบได้

สรุปโพสต์นี้ด้วย: