Cuộc thi mạnh mẽ và đúng đắn [đóng cửa]


17

Đọc "Mã hoàn thành 2" trong đoạn Chất lượng yêu cầu Tôi thấy điều này:

Là sự đánh đổi chấp nhận được giữa các thuộc tính cạnh tranh được chỉ định - ví dụ, giữa độ mạnh và độ chính xác?

(đây là một điểm của danh sách hộp kiểm lớn để kiểm tra chất lượng của các yêu cầu)

Vì vậy, tôi đã tìm thấy rất nhiều định nghĩa về Mạnh mẽ và Chính xác, trên web, sách học thuật, v.v.

ví dụ :

Trong cuốn sách "Xây dựng phần mềm hướng đối tượng, phiên bản 2, cuốn sách của Bertrand Meyer, Prentice-Hall, 1997":

  • Tính chính xác: Mức độ mà một hệ thống không có [lỗi] trong đặc điểm kỹ thuật, thiết kế và triển khai.
  • Tính mạnh mẽ: Mức độ mà một hệ thống tiếp tục hoạt động với sự có mặt của các yếu tố đầu vào không hợp lệ hoặc các điều kiện môi trường căng thẳng.

Mặc dù vậy, không rõ tại sao và trong tình huống nào hai người này có thể xảy ra xung đột.

Câu hỏi của tôi là: tại sao hai thuộc tính này trong cạnh tranh ?


11
Các cuốn sách khác nhau đưa ra định nghĩa khác nhau cho các điều khoản này. (Thông thường, những cuốn sách được viết cho các lập trình viên thông thường không sử dụng các định nghĩa giống như các ấn phẩm học thuật.) Có lẽ bạn có thể xem cách cuốn sách này định nghĩa chúng, nếu có bao giờ. (Đôi khi các thuật ngữ này được sử dụng bởi sách mà không có bất kỳ định nghĩa nào.)
rwong

Tôi không biết bất kỳ định nghĩa nào về "mạnh mẽ" ngoài "xử lý tất cả các loại đầu vào bất ngờ một cách duyên dáng" (ngoài các đầu vào được yêu cầu về chức năng).
Kaz

Tôi đã chỉnh sửa câu hỏi của mình cố gắng rõ ràng nhất có thể để có thể mở lại.
overcomer

Câu trả lời:


36

Có nhiều tình huống trong đó hai người có thể xảy ra xung đột. Ví dụ, sự mạnh mẽ có thể liên quan đến khả năng phục hồi dưới tải nặng. Nếu một phản hồi gần đúng (nghĩa là không chính xác) cho một yêu cầu có thể được tính toán nhanh hơn nhiều so với phản hồi chính xác (chính xác), thì điều quan trọng là phải biết liệu hệ thống sẽ cung cấp kết quả gần đúng hay không hoàn toàn cung cấp.


17

Hai chỉ là ví dụ như bạn nói. Trong thực tế, tất cả các yêu cầu phi chức năng thuộc loại đó có thể có khả năng xung đột với nhau. Trong cuốn sách "Xây dựng kiến ​​trúc tiến hóa", có một bảng gồm khoảng một trăm "năng lực" này (vì chúng thường được gọi là).

Đây là một bài tập để các kiến ​​trúc sư phần mềm xem xét xung đột tiềm năng giữa bất kỳ hai trong số này. Về cơ bản, bạn có thể quyết định xem cái nào trong số này là quan trọng đối với các dự án của bạn, sau đó theo dõi các xung đột này.

Để quay lại ví dụ chính xác của bạn và hãy xem định nghĩa của thuật ngữ robustnesstrong Wikipedia:

Trong khoa học máy tính, sự mạnh mẽ là khả năng của một hệ thống máy tính để đối phó với các lỗi trong quá trình thực thi [1] [2] và đối phó với đầu vào sai lầm.

Như bạn có thể thấy từ định nghĩa, sự mạnh mẽ liên quan đến lỗi . Mặt khác, bạn muốn có sự chính xác, về cơ bản có nghĩa là không có lỗi.

Để làm cho xung đột rõ ràng hơn, hãy xem xét một trường đầu vào đơn giản. Từ yêu cầu chính xác, dễ dàng nhất cho bất kỳ đầu vào sai lầm nào được thực hiện bởi người dùng sẽ bị từ chối. Nhưng sự mạnh mẽ đòi hỏi bạn phải có khả năng làm việc với đầu vào này, điều này có thể không hoàn toàn chính xác.

Để mang tất cả xung quanh vào cuốn sách của bạn: sự đánh đổi chấp nhận được bây giờ là gì? Giả sử bạn viết một ứng dụng khoa học trong đó người dùng có thể nhập một lượng điện áp, bao gồm cả cường độ. Vì vậy, đầu vào chính xác sẽ là một cái gì đó như "10 kV" hoặc "200 mV". Sự đánh đổi có thể chấp nhận có thể bao gồm cho phép các đầu vào như "10kV", "10kVolt" hoặc thậm chí chỉ là "10" và vì mục đích chính xác, ánh xạ các giá trị này đến giá trị điện áp hợp lệ. Lưu ý rằng đây vẫn là một sự đánh đổi và không phải là một điều "tốt nhất của cả hai thế giới". Xem xét chữ hoa và chữ thường: "10 kV" và "10 KV" có thể tốt, nhưng "10 mV" và "10 MV" có thể không. Tính chính xác trở thành nghi vấn vì bạn không chắc bây giờ là milli hay mega,


5

Một ví dụ thực tế là XHTML so với HTML .

  • Các trình duyệt (trong chế độ nghiêm ngặt) từ chối XHTML có lỗi cú pháp. Điều này đảm bảo rằng kết quả không chính xác không được hiển thị cho người dùng và hỗ trợ tìm lỗi.
  • Các trình duyệt cố gắng tiếp tục phân tích mã HTML ngay cả khi nó có vấn đề rất rõ ràng. Điều này thường cho phép người dùng xem trang, ngay cả khi nội dung được đọc sai một chút.

Do đó, XHTML nhắm đến tính chính xác, trong khi HTML nhắm đến sự mạnh mẽ. Hiện tại HTML có vẻ phổ biến hơn, nhưng cả hai bên đều có lý lẽ tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.