Чи взаємозамінні умови стабільні та надійні?


20

Чи є різниця між стабільністю та надійністю (принаймні, в контексті інженерії програмного забезпечення) або вони можуть бути взаємозамінні? Якщо ні, то які приклади надійних, але не обов'язково стабільних систем, і навпаки?


3
Хтось може називати систему стабільною, але ненадійною, якщо вона завжди працює і працює, але періодично створює неправильні результати або періодично втрачає дані. Це питання думки, що означають ці слова.
joshp

По-моєму, вони зводяться до того самого, послідовність ...
Darknight

Чому ти питаєш?
JᴀʏMᴇᴇ

Відповіді:


37

Скажімо, наприклад, у нас є додаток, воно працює чудово, окрім того, що він виходить з ладу кожні 5 хвилин, але миттєво створюється резервне копіювання без втрати даних.

Це в моїй думці надійне, але не стійке.

Я можу розраховувати на те, що він не втрачає даних і працює правильно, незважаючи на те, що він не є стабільним.

Насправді Інтернет в основному це. Це далеко не стабільно - зв’язки падають і знову з’являються, пакети стикаються і втрачаються, і трапляються всілякі інші нестабільні речі. Однак досить дивно, наскільки надійно віддається вся властива йому нестабільність.


2
Ян Сомервілл визначає надійність як "Ймовірність безвідмовної роботи протягом визначеного часу, в заданому середовищі, для конкретної мети". у книзі Програмне забезпечення. Тож система, що виходить з ладу кожні 5 хвилин, не настільки надійна (хоча це залежить від ваших показників).
m3th0dman

2
@ m3th0dman, залежить від того, як ви визначите провал тоді. Ніяка втрата даних, і 100% точність даних не буде невдачею в моїх книгах, навіть якщо додаток постійно виходив з ладу і перезапускався. Я б хотів виправити цю проблему, але це не буде першочерговим завданням, якби вона продовжувала працювати
CaffGeek

Якщо ваша система виходить з ладу, то, очевидно, десь стався збій, і, отже, ваша робота не була безвідмовною (як це пропонується визначенням); таким чином ваша система не настільки надійна. Обговорення може бути детально розказано про доступність, відповідь та час перезавантаження.
m3th0dman

Я серйозно не вважаю цей приклад додатком надійним. Надійність та стабільність - це не обов'язково дві окремі речі.
Moshe Revah

@ m3th0dman: Програми Erlang вважаються надійними не тому, що вони непогрішні, а тому, що вони складаються з багатьох паралельних процесів (а не процесів ОС), які можуть вийти з ладу без шкоди для програми в цілому, яка призначена для усунення цих збоїв.
Андре Парамеш

24

Ці визначення походять із стандарту ISO 9126, який ділиться на характеристики та підхарактеристики: ця таблиця , цей pdf або wikipedia або стаття

Стабільність: Характеризує чутливість до змін даної системи, тобто негативний вплив, який можуть бути спричинені змінами системи.

Надійність - основна характеристика, яка містить:

  • зрілість: Ця підхарактеристика стосується частоти відмов програмного забезпечення.
  • відмовостійкість: здатність програмного забезпечення протистояти (і відновлюватись) від неполадок у компонентах або навколишнього середовища
  • відновлення: Можливість повернути несправну систему до повноцінної роботи, включаючи дані та мережеві з'єднання.

6

Мета: написати програму, щоб додати два числа

Надійний, але нестабільний:

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

Стабільний, але ненадійний:

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

Це визначення неправильне. Це не те, як терміни реально використовуються в галузі.
Федеріко

2

У контексті оцінювання бібліотек терміни означають зовсім інші речі.

Надійна бібліотека - це та, яка виконує свою роботу без невпинних збоїв.

Стабільна бібліотека - це те, що мало змінюється.


Я здивований, коли бачу так багато відповідей, які трактують стабільно як "не врізається". Для мене перше значення - це справді "не сильно змінилося за деякий час", воно вже не рухається. Те, що більше не виходить з ладу, може статися разом із цим, але стабільність полягає не в першу чергу щодо поведінки програмного забезпечення.
Мартін Мейт

0

Стабільність та надійність - це різні речі в розробці програмного забезпечення, однак вони обидва використовувались як дочірні умови :)

Я згоден з деякими згаданими попередніми коментарями і хотів би додати свої 2 копійки.

Надійність - це ступінь, в якому експеримент, тест чи будь-яка процедура вимірювання дають однаковий результат при повторних випробуваннях.

Надійність стабільності (іноді її називають тестовою, надійністю повторного випробування) - це узгодження вимірювальних приладів у часі. Щоб визначити стабільність, міру або тест повторюють на тих же предметах у майбутній день. Результати порівнюються та співвідносяться з початковим тестом, щоб дати міру стабільності.

Більше посилань на цю тему надано:


0

На мій погляд, "надійність" означає, що ви зрозуміли межу системи. Можна з упевненістю сказати, що "ми надаємо час відгуку X на X-му перцентилі" (чим більший X, тим краще, очевидно).

З іншого боку, стабільність - це лише міра доступності. "Якщо ви спробуєте підключити наш сервіс, він буде там принаймні X% разів".


0

Надійний, але не стабільний :

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

Стабільний, але не надійний :

add(a,b):
    if a == nil ||  b == nil: 
        return 0
    else
        return (a+b)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.