มีคำตอบที่ยอดเยี่ยมจาก Aaronaught แล้ว แต่เนื่องจากมีคำตอบอื่น ๆ เอาออกไปซึ่งผิดทั้งหมดเกี่ยวกับข้อกำหนดที่ไม่สามารถใช้งานได้ฉันคิดว่ามันจะมีประโยชน์ในการเพิ่มคำอธิบายเล็กน้อยเพื่อหลีกเลี่ยงข้อผิดพลาดเกี่ยวกับสิ่งที่ ข้อกำหนดที่ไม่สามารถใช้งานได้คือ
ข้อกำหนดด้านการใช้งานไม่ได้คือ"คุณภาพหรือทรัพย์สินที่ผลิตภัณฑ์ต้องมี" ¹ เจมส์เทย์เลอร์บอกว่าเป็นความต้องการที่ไม่ใช่หน้าที่"คือ [ ... ] [กระนั้น] ความต้องการและมันก็เป็นสิ่งสำคัญที่จะลูกค้าบางครั้งก็มีความสำคัญมากกว่าความต้องการการทำงาน" จากนั้นเขาก็ให้สองตัวอย่าง: โลโก้ของผลิตภัณฑ์และความถูกต้องและความน่าเชื่อถือของอุปกรณ์ ตัวอย่างทั้งสองนั้นแสดงว่า:
- ข้อกำหนดที่ไม่ใช้งานได้ไม่ใช่การตลาด jibber-jabber อย่างเช่น: "อินเทอร์เน็ตมีความสำคัญทุกวันนี้และเราต้องการมีเว็บไซต์"
- ข้อกำหนดที่ไม่เกี่ยวกับการใช้งานเกี่ยวข้องกับลูกค้าเนื่องจากสามารถส่งผลกระทบอย่างมากต่อประสิทธิภาพการทำงานและความสามารถในการใช้ผลิตภัณฑ์
- ความต้องการที่ไม่ใช่หน้าที่มีวัตถุประสงค์โดยสิ้นเชิง
จุดสุดท้ายเป็นสิ่งจำเป็น หากความต้องการนั้นเป็นแบบอัตนัยก็ไม่มีอะไรต้องทำในรายการข้อกำหนด มันจะเป็นไปไม่ได้ที่จะสร้างการทดสอบการตรวจสอบจากสิ่งที่เป็นอัตนัย จุดประสงค์เดียวของรายการข้อกำหนดคือเพื่อระบุความคาดหวังที่ไม่ชัดเจนของลูกค้า "ฉันต้องการให้สี่เหลี่ยมนี้เป็นสีแดง" เป็นข้อกำหนด "ฉันต้องการให้สี่เหลี่ยมนี้มีสีสวย" เป็นความต้องการที่ต้องการคำอธิบาย
โปรดจำไว้ว่ารายการข้อกำหนดเป็นเหมือนสัญญา (และในกรณีส่วนใหญ่เป็นส่วนหนึ่งของสัญญา) มีการลงนามโดยลูกค้าและ บริษัท พัฒนาและในกรณีที่มีการดำเนินคดีมันจะถูกใช้อย่างถูกกฎหมายเพื่อพิจารณาว่าคุณทำงานของคุณถูกต้องหรือไม่ ถ้าฉันสั่งผลิตภัณฑ์ซอฟต์แวร์ให้คุณระบุว่า "ผลิตภัณฑ์ต้องยอดเยี่ยม" และปฏิเสธที่จะจ่ายเมื่อผลิตภัณฑ์เสร็จเพราะสำหรับฉันสิ่งที่คุณทำจริง ๆ แล้วไม่ใช่ผลิตภัณฑ์ที่ยอดเยี่ยม
ดังนั้นเรามาดูตัวอย่าง
1. ผลิตภัณฑ์ซอฟต์แวร์ตอบสนองต่อผู้ใช้ปลายทาง
นี่ไม่ใช่ข้อกำหนด ไม่สามารถใช้งานได้ ไม่ใช้งานไม่ได้ มันไม่ใช่ข้อกำหนด เลย มันมีค่าเป็นศูนย์ คุณไม่สามารถตรวจสอบว่าระบบซอฟต์แวร์ตรงตามข้อกำหนดนี้ในระหว่างการทดสอบการตรวจสอบความถูกต้องหรือไม่ ไม่ว่าคุณ - แผนก QA หรือลูกค้า
2. การโหลดสถิติผู้ใช้ดำเนินการ 90% ของเวลาต่ำกว่า 100 มิลลิวินาที เมื่อทดสอบกับเครื่องที่มีการทำงานตามที่ระบุในภาคผนวก G ตอนที่ 2 และโหลดต่ำกว่า 10% สำหรับ CPU ต่ำกว่า 50% สำหรับหน่วยความจำและไม่มีการใช้งานดิสก์ R / W ที่ใช้งานอยู่
มันเป็นข้อกำหนด หากภาคผนวก G ตอนที่ 2 มีความแม่นยำเพียงพอฉันสามารถนำเครื่องพร้อมกับฮาร์ดแวร์ที่คล้ายกันและทำการทดสอบการตรวจสอบความถูกต้องในแผนก QA และฉันจะได้รับผลลัพธ์ไบนารีเสมอ: ผ่านหรือล้มเหลว
มันเป็นข้อกำหนดการทำงานหรือไม่? ไม่มันไม่ได้ระบุสิ่งที่ระบบต้องทำ อาจมีความต้องการด้านการทำงานมาก่อนโดยระบุว่าแอปพลิเคชันซอฟต์แวร์จะต้องสามารถโหลดสถิติผู้ใช้ซ้ำได้
มันเป็นข้อกำหนดที่ไม่ใช่หน้าที่หรือไม่? มันคือ. มันระบุคุณสมบัติที่ผลิตภัณฑ์จะต้องมีเช่นเวลาตอบสนองสูงสุด / เฉลี่ยให้กำหนดเกณฑ์ร้อยละ
3. แอปพลิเคชันเขียนเป็น C #
นี่เป็นข้อกำหนดหรือไม่? เราไม่รู้จริง ๆ หากไม่มีบริบท อาจเป็นความปรารถนาของผู้พัฒนานำที่ต้องการโดยการแทรกข้อกำหนดนี้เพื่อหลีกเลี่ยงการสนทนากับเพื่อนร่วมงานของเขาเกี่ยวกับภาษาที่จะใช้ในภายหลัง อาจเป็นข้อกำหนดตามฮาร์ดแวร์ / ซอฟต์แวร์องค์ประกอบดั้งเดิมหรือความเข้ากันได้ เราไม่รู้
4. codebase C # ของผลิตภัณฑ์เป็นไปตามกฎขั้นต่ำที่แนะนำของ Microsoft และกฎ Globalization ของ Microsoft
นี่คือสิ่งที่แปลก โดยส่วนตัวแล้วฉันไม่ต้องการเรียกมันว่าข้อกำหนดและวางมันลงในเอกสารแยกต่างหากที่ระบุมาตรฐานและแนวปฏิบัติที่ดีที่สุด
5. หน้าต่างหลักของแอปพลิเคชันมีเส้นขอบสีน้ำเงินขนาด 10px (# 00f) ที่มีสีชมพู (#fcc) วงกลมเหล่านั้นจะถูกวางที่ขอบด้านในของเส้นขอบและมีเส้นผ่านศูนย์กลาง 3px คั่นด้วย 20px จากกัน
มันเป็นข้อกำหนดและเป็นสิ่งที่ไม่สามารถใช้งานได้ มันระบุสิ่งที่เราอาจทดสอบระหว่างการทดสอบการตรวจสอบความถูกต้องและระบุคุณสมบัติของผลิตภัณฑ์ไม่ใช่สิ่งที่ตั้งใจจะทำ
6. ระบบติดตามยานพาหนะวัดความเร็วด้วยความแม่นยำ± 0.016 ไมล์ต่อชั่วโมง
ยังเป็นข้อกำหนดที่ไม่สามารถใช้งานได้ มันให้เกณฑ์ที่วัดได้ของความแม่นยำของระบบ มันไม่ได้บอกสิ่งที่ระบบจะต้องทำ แต่บอกได้ว่ามันทำงานอย่างไร แต่เดี๋ยวก่อน? มันบอกว่าระบบติดตามยานพาหนะขนาดความเร็วไม่ได้หรือไม่ ดังนั้นมันเป็นความต้องการด้านการใช้งานเช่นกัน? ไม่เลยเนื่องจากเราให้ความสำคัญกับความแม่นยำของการวัดไม่ใช่ความจริงที่ว่าการวัดเสร็จแล้ว
7. ระบบติดตามยานพาหนะวัดความเร็วของยานพาหนะ
ตอนนี้มันเป็นความต้องการการทำงาน มันไม่ได้บอกว่าระบบทำงานอย่างไร แต่มันกำลังทำอะไรอยู่ ด้วยความต้องการในการใช้งานเราสามารถเรียนรู้ว่าระบบติดตามยานพาหนะวัดความเร็วแบตเตอรี่พลังงานความดันของฉันไม่ทราบว่าไฟติดอยู่หรือไม่
8. หน้าเว็บไซต์ใช้เวลา 850 ms เพื่อโหลด
นี่ไม่ใช่ข้อกำหนด คือพยายามเป็นหนึ่ง แต่ไม่ถูกต้องทั้งหมด คุณจะให้ความสำคัญกับสิ่งนี้อย่างไร หน้าอะไร ทั้งหมดหรือไม่ ทดสอบผ่านเครือข่ายท้องถิ่น 1Gbps บนเครื่องไคลเอนต์แบบ quad-core และเซิร์ฟเวอร์แปดหลักที่มี SSD ที่ใช้ที่ 2% หรือผ่านโมเด็มของแล็ปท็อปเก่าและเส็งเคร็งในขณะที่เว็บไซต์กำลังโฮสต์โดยเซิร์ฟเวอร์ขนาดเล็กที่ใช้ 99% ? "โหลด" มีความหมายอย่างไร มันหมายถึงการดาวน์โหลดหน้า? กำลังดาวน์โหลดและแสดงหรือไม่ ส่งคำขอ POST ด้วยข้อมูลขนาดใหญ่แล้วโหลดการตอบสนองและแสดงผลหรือไม่
เพื่อสรุปความต้องการที่ไม่ใช่หน้าที่อยู่เสมอความต้องการซึ่งหมายความว่ามันจะอธิบายสิ่งที่เป็นไปตามวัตถุประสงค์ทั้งหมดและสามารถตรวจสอบได้ผ่านการทดสอบการตรวจสอบอัตโนมัติหรือคู่มือ แต่แทนที่จะบอกสิ่งที่ระบบจะทำมันอธิบายถึงวิธีการที่ระบบ จะทำบางสิ่งบางอย่างหรือวิธีการที่ระบบเป็นตัวเอง
¹การจัดการโครงการเทคโนโลยีสารสนเทศ: การใช้กลยุทธ์การจัดการโครงการกับซอฟต์แวร์ฮาร์ดแวร์และการรวมเข้าด้วยกัน James Taylor, ISBN: 0814408117