Terimler istikrarlı ve güvenilir bir şekilde değiştirilebilir mi?


20

Kararlılık ve güvenilirlik arasında bir fark var mı (en azından yazılım mühendisliği bağlamında) veya birbirlerinin yerine kullanılabilir mi? Değilse, güvenilir ancak zorunlu olarak kararlı olmayan sistemlerin örnekleri nelerdir?


3
Birisi her zaman çalışır durumda olsa da zaman zaman yanlış sonuçlar verirse veya zaman zaman veri kaybederse, bir sistem kararlı ama güvenilir değildir. Bu kelimelerin ne anlama geldiği bir görüş meselesi.
joshp

Aklımda aynı şey, tutarlılık aşağı kaynar ...
Darknight

Neden soruyorsun?
JᴀʏMᴇᴇ

Yanıtlar:


37

Diyelim ki bir uygulamamız var, her 5 dakikada bir kilitlenmesinin yanı sıra mükemmel çalışıyor, ancak veri kaybı olmadan anında yedekleniyor.

Aklımda güvenilir ama istikrarlı değil.

Kararlı olmamasına rağmen veri kaybetmemesine ve düzgün çalışmamasına güvenebilirim.

Aslında, internet temelde budur. Kararlı olmaktan uzaktır - bağlantılar düşer ve tekrar ortaya çıkar, paketler çarpışır ve kaybolur ve her türlü diğer kararsız şeyler gerçekleşir. Bununla birlikte, içerdiği tüm dengesizliğin ne kadar güvenilir olduğu oldukça şaşırtıcı.


2
Ian Somerville, güvenilirliği "Belirli bir ortamda, belirli bir amaç için belirli bir süre boyunca hatasız çalışma olasılığı" olarak tanımlar. Yazılım Mühendisliği kitabında. Yani sisteminiz her 5 dakikada bir kilitleniyor o kadar güvenilir değil (yine de metriklerinize bağlı).
m3th0dman

2
@ m3th0dman, bir arızayı nasıl tanımladığınıza bağlıdır. Uygulama çökmeye ve kendini yeniden başlatmaya devam etse bile veri kaybı olmaz ve% 100 veri doğruluğu kitaplarımda bir hata olmaz. Sorunu düzeltmek isterdim, ancak 'çalışmaya devam
etseydi

Sisteminiz çökerse, açıkça bir yerde bir arıza vardı ve bu nedenle işleminiz hatasız değildi (tanımın önerdiği gibi); böylece sisteminiz o kadar güvenilir değildir. Tartışma uygunluk, yanıt ve yeniden başlatma süresi hakkında konuşulabilir.
m3th0dman

Ciddi bu örnek uygulama güvenilir olduğunu sanmıyorum. Güvenilirlik ve istikrar zorunlu olarak iki ayrı şey değildir.
Moshe Revah

@ m3th0dman: Erlang programları, güvenilir olmadıkları için değil, bir bütün olarak ödün vermeden başarısız olabilecek birçok eşzamanlı süreçten (OS süreçlerinden) oluştuğu için güvenilir olarak kabul edilir ve bu hataları ele almak için tasarlanmıştır.
André Paramés

24

Bu tanımlar, karakteristikleri ve alt karakteristikleri bölen ISO 9126 Standardından gelir: bu tablo , bu pdf veya wikipedia veya makale

Kararlılık: Belirli bir sistemin, sistem değişikliklerinden kaynaklanabilecek olumsuz etki olan değişiklik duyarlılığını karakterize eder.

Güvenilirlik aşağıdakileri içeren ana bir özelliktir:

  • olgunluk: Bu alt karakteristik, yazılımın hata sıklığıyla ilgilidir.
  • hataya dayanıklılık: Yazılımın bileşene veya çevresel arızaya karşı dayanma (ve kurtarma) yeteneği.
  • kurtarılabilirlik: Veri ve ağ bağlantıları da dahil olmak üzere arızalı bir sistemi tam çalışmaya geri getirme yeteneği.

6

Amaç: iki sayı eklemek için bir program yazın

Güvenilir ancak kararsız:

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

Kararlı ama güvenilir değil:

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

Bu tanım yanlış. Bu terimler endüstride gerçekten kullanılmaz.
Federico

2

Kütüphaneleri değerlendirme bağlamında, terimler tamamen farklı şeyler ifade eder.

Güvenilir bir kütüphane, kesintili arızalar olmadan işini yapan kütüphanedir.

Sabit bir kütüphane çok fazla değişmeyen kütüphanedir.


Istikrarlı "çökmez" olarak yorumlayan birçok cevap görmek için sürpriz. Bana göre ilk anlam "bir süredir fazla değişmedi", artık hareket etmiyor. Artık çökmeyen şey, onunla birlikte gelen bir şey olabilir, ancak istikrar öncelikle yazılım davranışı ile ilgili değildir.
Martin Maat

0

İstikrar ve Güvenilirlik yazılım geliştirmede farklı şeylerdir, ancak her ikisi de kardeş terimler olarak kullanılır :)

Daha önce bahsedilen bazı yorumları kabul ediyorum ve benim 2 sent eklemek istiyorum.

Güvenilirlik , bir denemenin, testin veya herhangi bir ölçüm prosedürünün tekrarlanan denemelerde aynı sonucu verdiği derecedir.

Kararlılık güvenilirliği (bazen test, yeniden test güvenilirliği olarak da adlandırılır) zaman içinde ölçüm cihazlarının anlaşmasıdır. Kararlılığı belirlemek için, ileride bir tarihte aynı konular üzerinde bir ölçüm veya test tekrarlanır. Sonuçlar, stabilite ölçüsü vermek için ilk test ile karşılaştırılır ve ilişkilendirilir.

Bu konuda daha fazla referans verilmiştir:


0

Bana göre, "güvenilirlik" sistemin sınırlarını kavramanız anlamına gelir. Güvenle, "X.

Öte yandan, istikrar sadece bir kullanılabilirlik ölçüsüdür. "Hizmetimizi bağlamaya çalışırsanız, en az% X oranında olacaktır".


0

Güvenilir fakat Kararlı Değil :

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

Kararlı ama Güvenilir Değil :

add(a,b):
    if a == nil ||  b == nil: 
        return 0
    else
        return (a+b)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.