Чи є різниця між стабільністю та надійністю (принаймні, в контексті інженерії програмного забезпечення) або вони можуть бути взаємозамінні? Якщо ні, то які приклади надійних, але не обов'язково стабільних систем, і навпаки?
Чи є різниця між стабільністю та надійністю (принаймні, в контексті інженерії програмного забезпечення) або вони можуть бути взаємозамінні? Якщо ні, то які приклади надійних, але не обов'язково стабільних систем, і навпаки?
Відповіді:
Скажімо, наприклад, у нас є додаток, воно працює чудово, окрім того, що він виходить з ладу кожні 5 хвилин, але миттєво створюється резервне копіювання без втрати даних.
Це в моїй думці надійне, але не стійке.
Я можу розраховувати на те, що він не втрачає даних і працює правильно, незважаючи на те, що він не є стабільним.
Насправді Інтернет в основному це. Це далеко не стабільно - зв’язки падають і знову з’являються, пакети стикаються і втрачаються, і трапляються всілякі інші нестабільні речі. Однак досить дивно, наскільки надійно віддається вся властива йому нестабільність.
Ці визначення походять із стандарту ISO 9126, який ділиться на характеристики та підхарактеристики: ця таблиця , цей pdf або wikipedia або стаття
Стабільність: Характеризує чутливість до змін даної системи, тобто негативний вплив, який можуть бути спричинені змінами системи.
Надійність - основна характеристика, яка містить:
Мета: написати програму, щоб додати два числа
Надійний, але нестабільний:
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 копійки.
Надійність - це ступінь, в якому експеримент, тест чи будь-яка процедура вимірювання дають однаковий результат при повторних випробуваннях.
Надійність стабільності (іноді її називають тестовою, надійністю повторного випробування) - це узгодження вимірювальних приладів у часі. Щоб визначити стабільність, міру або тест повторюють на тих же предметах у майбутній день. Результати порівнюються та співвідносяться з початковим тестом, щоб дати міру стабільності.
Більше посилань на цю тему надано:
На мій погляд, "надійність" означає, що ви зрозуміли межу системи. Можна з упевненістю сказати, що "ми надаємо час відгуку X на X-му перцентилі" (чим більший X, тим краще, очевидно).
З іншого боку, стабільність - це лише міра доступності. "Якщо ви спробуєте підключити наш сервіс, він буде там принаймні X% разів".
Надійний, але не стабільний :
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)