Là các điều khoản ổn định và đáng tin cậy có thể thay thế cho nhau?


20

Có sự khác biệt giữa độ ổn địnhđộ tin cậy (ít nhất là trong bối cảnh kỹ thuật phần mềm) hoặc chúng có thể được sử dụng thay thế cho nhau không? Nếu không, một số ví dụ về các hệ thống đáng tin cậy nhưng không nhất thiết phải ổn định và ngược lại?


3
Ai đó có thể coi hệ thống là ổn định nhưng không đáng tin cậy nếu hệ thống luôn hoạt động nhưng không liên tục tạo ra kết quả không chính xác hoặc đôi khi mất dữ liệu. Đó là một vấn đề về ý nghĩa những từ này có nghĩa là gì.
joshp

Trong tâm trí tôi, họ sôi sục với cùng một thứ, tính nhất quán ...
Darknight

Tại sao cậu lại hỏi?
JMᴇᴇ

Câu trả lời:


37

Ví dụ, chúng ta có một ứng dụng, nó hoạt động hoàn hảo, ngoài việc nó bị sập cứ sau 5 phút, nhưng nó sẽ sao lưu ngay lập tức mà không mất dữ liệu.

Điều đó trong tâm trí của tôi là đáng tin cậy, nhưng không ổn định.

Tôi có thể dựa vào nó để không mất dữ liệu và hoạt động chính xác, mặc dù nó không ổn định.

Trên thực tế, internet về cơ bản là như vậy. Nó nằm cách xa các kết nối ổn định của Drop và xuất hiện lại, các gói bị va chạm và bị mất, và tất cả các loại điều không ổn định khác xảy ra. Tuy nhiên, thật đáng ngạc nhiên khi nó đáng tin cậy với tất cả sự bất ổn vốn có trong nó.


2
Ian Somerville định nghĩa độ tin cậy là "Xác suất hoạt động không có lỗi trong một thời gian xác định, trong một môi trường nhất định, cho một mục đích cụ thể." trong cuốn sách Kỹ thuật phần mềm. Vì vậy, hệ thống của bạn bị sập cứ sau 5 phút không đáng tin cậy (mặc dù phụ thuộc vào số liệu của bạn).
m3th0dman

2
@ m3th0dman, phụ thuộc vào cách bạn xác định một thất bại sau đó. Không mất dữ liệu và độ chính xác 100% dữ liệu sẽ không phải là một thất bại trong sách của tôi, ngay cả khi ứng dụng liên tục gặp sự cố và tự khởi động lại. Tôi muốn khắc phục sự cố, nhưng nó sẽ không phải là ưu tiên cao nếu nó tiếp tục 'hoạt động'
CaffGeek

Nếu hệ thống của bạn gặp sự cố, thì rõ ràng đã có lỗi ở đâu đó và do đó hoạt động của bạn không bị lỗi (như được đề xuất bởi định nghĩa); do đó hệ thống của bạn không đáng tin cậy Các cuộc thảo luận có thể được chi tiết để nói về tính sẵn sàng, phản hồi và thời gian khởi động lại.
m3th0dman

Tôi thực sự không nghĩ rằng ứng dụng ví dụ này là đáng tin cậy. Độ tin cậy và ổn định không nhất thiết là hai điều riêng biệt.
Moshe Revah

@ m3th0dman: Các chương trình Erlang được coi là đáng tin cậy, không phải vì chúng không thể sai được, mà vì chúng bao gồm nhiều quy trình đồng thời (không phải quy trình HĐH) có thể thất bại mà không ảnh hưởng đến toàn bộ chương trình, được thiết kế để xử lý các lỗi đó.
André Paramés

24

Các định nghĩa này xuất phát từ Tiêu chuẩn ISO 9126, phân chia các đặc điểm và đặc điểm phụ: bảng này, pdf hoặc wikipedia hoặc bài viết này

Tính ổn định là: Đặc trưng độ nhạy cảm với sự thay đổi của một hệ thống nhất định là tác động tiêu cực có thể gây ra bởi những thay đổi của hệ thống.

Độ tin cậy là một đặc điểm chính có chứa:

  • trưởng thành: Đặc tính phụ này liên quan đến tần suất thất bại của phần mềm.
  • khả năng chịu lỗi: Khả năng của phần mềm chịu được (và phục hồi) từ thành phần, hoặc môi trường, lỗi.
  • khả năng phục hồi: Khả năng đưa hệ thống bị lỗi hoạt động trở lại, bao gồm cả kết nối dữ liệu và mạng.

6

Mục tiêu: viết chương trình để thêm hai số

Đáng tin cậy nhưng không ổn định:

add(a,b):
    if randomInt mod 5 == 0: 
        throw exception
    else
        print a+b

Ổn định nhưng không đáng tin cậy:

add(a,b):
    if randomInt mod 5 == 0: 
        print a+a
    else
        print a+b

Định nghĩa này không chính xác. Nó không phải là làm thế nào các điều khoản thực sự được sử dụng trong ngành công nghiệp.
Federico

2

Trong bối cảnh đánh giá các thư viện, các thuật ngữ có nghĩa là những thứ hoàn toàn khác nhau.

Một thư viện đáng tin cậy là một thư viện thực hiện công việc của mình mà không bị lỗi liên tục.

Một thư viện ổn định là một thư viện không thay đổi nhiều.


Tôi ngạc nhiên khi thấy rất nhiều câu trả lời diễn giải ổn định là "không sụp đổ". Đối với tôi ý nghĩa đầu tiên thực sự là "đã không thay đổi nhiều trong một thời gian", nó không còn chuyển động nữa. Thứ không bị sập nữa có thể là thứ đi kèm với nó nhưng sự ổn định không phải chủ yếu là về hành vi của phần mềm.
Martin Maat

0

Tính ổn địnhđộ tin cậy là những thứ khác nhau trong phát triển phần mềm, tuy nhiên cả hai đều được sử dụng như các thuật ngữ chị em :)

Tôi đồng ý với một số ý kiến ​​được đề cập trước đó và muốn thêm 2 xu của tôi.

Độ tin cậy là mức độ mà một thử nghiệm, thử nghiệm hoặc bất kỳ quy trình đo lường nào mang lại kết quả tương tự trên các thử nghiệm lặp lại.

Độ tin cậy ổn định (đôi khi được gọi là kiểm tra, kiểm tra lại độ tin cậy) là sự thỏa thuận của các dụng cụ đo theo thời gian. Để xác định sự ổn định, một biện pháp hoặc thử nghiệm được lặp lại trên cùng một đối tượng vào một ngày trong tương lai. Kết quả được so sánh và tương quan với thử nghiệm ban đầu để đưa ra một thước đo về sự ổn định.

Tham khảo thêm về chủ đề này được cung cấp:


0

Theo tôi, "độ tin cậy" có nghĩa là bạn nắm bắt được ràng buộc của hệ thống. Bạn có thể, với sự tự tin, nói rằng "chúng tôi cung cấp thời gian phản hồi X ở phân vị thứ X" (X càng cao, rõ ràng càng tốt).

Sự ổn định, mặt khác, chỉ là một biện pháp sẵn có. "Nếu bạn cố gắng kết nối với dịch vụ của chúng tôi, nó sẽ ở đó ít nhất X% số lần".


0

Đáng tin cậy nhưng không ổn định :

add(a,b):
    if a == nil ||  b == nil: 
        throw exception
    else
        return (a+b)

Ổn định nhưng không đáng tin cậy :

add(a,b):
    if a == nil ||  b == nil: 
        return 0
    else
        return (a+b)
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.