Đã có một câu trả lời tuyệt vời của Aaronaught, nhưng vì đã có những câu trả lời khác, hiện đã bị xóa, hoàn toàn sai về yêu cầu phi chức năng là gì, tôi nghĩ sẽ hữu ích khi thêm một vài lời giải thích để tránh những sai lầm về những gì yêu cầu phi chức năng là.
Yêu cầu phi chức năng là "chất lượng hoặc tài sản mà sản phẩm phải có" . James Taylor nói rằng một yêu cầu phi chức năng "[...] dù sao cũng là một yêu cầu và điều quan trọng đối với khách hàng, đôi khi còn quan trọng hơn cả yêu cầu chức năng" . Sau đó, ông đưa ra hai ví dụ: logo của sản phẩm, độ chính xác và độ tin cậy của thiết bị. Cả hai ví dụ cho thấy rất rõ rằng:
- Các yêu cầu phi chức năng không phải là một jibber-jabber tiếp thị như: "Internet ngày nay rất quan trọng và chúng tôi muốn có một trang web".
- Các yêu cầu phi chức năng liên quan đến khách hàng, vì họ có thể ảnh hưởng lớn đến năng suất và khả năng sử dụng sản phẩm của họ.
- Các yêu cầu phi chức năng là hoàn toàn khách quan.
Điểm cuối cùng là cần thiết. Nếu yêu cầu là chủ quan, nó không có gì để làm trong danh sách các yêu cầu. Không thể xây dựng các bài kiểm tra xác nhận từ một cái gì đó chủ quan . Mục đích duy nhất của danh sách các yêu cầu là liệt kê những kỳ vọng không mơ hồ của khách hàng. "Tôi muốn hình vuông này có màu đỏ" là một yêu cầu. "Tôi muốn hình vuông này có màu sắc đẹp" là một điều ước cần có lời giải thích.
Hãy nhớ rằng danh sách các yêu cầu giống như một hợp đồng (và trong hầu hết các trường hợp là một phần của hợp đồng). Nó được ký bởi khách hàng và công ty phát triển, và trong trường hợp kiện tụng, nó sẽ được sử dụng hợp pháp để xác định xem bạn đã thực hiện đúng công việc của mình chưa. Điều gì sẽ xảy ra nếu tôi đặt hàng cho bạn một sản phẩm phần mềm, xác định rằng "sản phẩm phải tuyệt vời" và từ chối thanh toán khi sản phẩm được hoàn thành, bởi vì đối với tôi, những gì bạn thực sự đã làm không phải là một sản phẩm tuyệt vời ?
Vì vậy, hãy xem một số ví dụ.
1. Sản phẩm phần mềm đáp ứng cho người dùng cuối.
Đây không phải là một yêu cầu. Không phải là một chức năng. Không phải là một chức năng. Nó không phải là một yêu cầu. Ở tất cả. Nó có giá trị bằng không. Bạn không thể kiểm tra xem hệ thống phần mềm có đáp ứng yêu cầu này trong quá trình kiểm tra xác nhận hay không. Không phải bạn - bộ phận QA, cũng không phải khách hàng.
2. Việc tải lại số liệu thống kê người dùng thực hiện 90% thời gian dưới 100 ms. khi được thử nghiệm trên máy với hiệu suất được chỉ định trong phụ lục G phần 2 và tải dưới 10% cho CPU, dưới 50% cho bộ nhớ và không có hoạt động đĩa R / W hoạt động.
Đó là một yêu cầu. Nếu phụ lục G phần 2 đủ chính xác, tôi có thể lấy máy có phần cứng tương tự và thực hiện kiểm tra xác nhận trong bộ phận QA và tôi sẽ luôn nhận được kết quả nhị phân: đã vượt qua hoặc thất bại.
Đây có phải là một yêu cầu chức năng? Không. Nó không chỉ định những gì hệ thống phải làm. Có thể có một yêu cầu chức năng trước đó, xác định rằng ứng dụng phần mềm phải có thể tải lại số liệu thống kê người dùng.
Đây có phải là một yêu cầu phi chức năng? Nó là. Nó chỉ định một thuộc tính mà sản phẩm phải có, tức là thời gian phản hồi tối đa / trung bình, được đưa ra ngưỡng phần trăm.
3. Ứng dụng này được viết bằng C #.
Đây có phải là một yêu cầu? Chúng tôi không thực sự biết mà không có bối cảnh. Đó có thể là mong muốn của nhà phát triển chính, người muốn, bằng cách chèn yêu cầu này, để tránh sau đó một cuộc thảo luận với các đồng nghiệp của mình về ngôn ngữ sẽ sử dụng. Nó cũng có thể là một yêu cầu dựa trên các yếu tố phần cứng / phần mềm, di sản hoặc khả năng tương thích. Chúng tôi không biết.
4. Cơ sở mã C # của sản phẩm tuân theo Quy tắc khuyến nghị tối thiểu của Microsoft và Quy tắc toàn cầu hóa của Microsoft.
Đây là một điều kỳ lạ. Cá nhân, tôi không muốn gọi nó là một yêu cầu, và đưa nó vào một tài liệu riêng quy định các tiêu chuẩn và thực tiễn tốt nhất.
5. Cửa sổ chính của ứng dụng có viền 10px màu xanh lam (# 00f) với các vòng tròn được tô màu hồng (#fcc), các vòng tròn đó được đặt ở cạnh trong của đường viền và có đường kính 3px, cách nhau 20px.
Đây là một yêu cầu, và không có chức năng. Nó chỉ định một cái gì đó chúng tôi có thể kiểm tra trong quá trình kiểm tra xác thực và nó chỉ định một thuộc tính của sản phẩm, chứ không phải những gì sản phẩm dự định làm.
6. Hệ thống theo dõi xe đo tốc độ với độ chính xác ± 0,016 dặm / giờ.
Cũng là một yêu cầu phi chức năng. Nó đưa ra một ngưỡng có thể đo lường được về độ chính xác của hệ thống. Nó không cho biết hệ thống phải làm gì, nhưng cho biết chính xác thì nó hoạt động như thế nào. Nhưng còn chờ gì nữa? Nó nói rằng hệ thống theo dõi xe đo tốc độ, phải không? Vì vậy, đó là một yêu cầu chức năng quá? Chà, không, vì chúng tôi nhấn mạnh vào độ chính xác của phép đo, chứ không phải trên thực tế là phép đo được thực hiện.
7. Hệ thống theo dõi xe đo tốc độ của xe.
Bây giờ nó là một yêu cầu chức năng. Nó không cho biết hệ thống hoạt động như thế nào, nhưng nó đang làm gì. Thông qua các yêu cầu chức năng, chúng ta có thể biết rằng hệ thống theo dõi xe đo tốc độ, năng lượng pin, áp suất của tôi không biết đèn nào sáng và có bật hay không.
8. Các trang của trang web mất 850 ms. để tải.
Đây không phải là một yêu cầu. Là cố gắng là một, nhưng hoàn toàn không hợp lệ. Làm thế nào bạn có tài sản này? Những trang nào? Tất cả các? Đã thử nghiệm qua mạng 1Gbps cục bộ trên máy khách lõi tứ và máy chủ tám lõi với SSD được sử dụng ở mức 2% hoặc qua modem của máy tính xách tay cũ và xảo quyệt trong khi trang web được lưu trữ bởi một máy chủ nhỏ được sử dụng ở mức 99% ? "Tải" nghĩa là gì? Có nghĩa là tải xuống trang? Tải về và hiển thị nó? Gửi yêu cầu POST với một số dữ liệu lớn, sau đó tải phản hồi và hiển thị nó?
Để kết luận, một yêu cầu phi chức năng luôn là một yêu cầu, có nghĩa là nó mô tả một cái gì đó là hoàn toàn khách quan và có thể được kiểm tra thông qua một bài kiểm tra xác nhận tự động hoặc bằng tay, nhưng thay vì nói những gì hệ thống đang làm, nó giải thích cách hệ thống đang làm một cái gì đó hoặc làm thế nào hệ thống là chính nó .
Quản lý các dự án công nghệ thông tin: Áp dụng các chiến lược quản lý dự án cho các sáng kiến tích hợp phần cứng, phần cứng và tích hợp, James Taylor, ISBN: 0814408117.