Apakah persyaratan stabil dan andal dipertukarkan?

20

Apakah ada perbedaan antara stabilitas dan keandalan (setidaknya dalam konteks rekayasa perangkat lunak) atau dapatkah mereka digunakan secara bergantian? Jika tidak, apa yang akan menjadi contoh dari sistem yang andal tetapi tidak harus stabil, dan sebaliknya?

gsakkis
sumber
3
Seseorang mungkin menyebut suatu sistem sebagai stabil tetapi tidak dapat diandalkan jika selalu aktif dan berjalan tetapi kadang-kadang menghasilkan hasil yang salah atau terkadang kehilangan data. Ini masalah pendapat apa arti kata-kata ini.
joshp
Dalam pikiranku mereka mendidih ke hal yang sama, konsistensi ...
Darknight
Kenapa kamu bertanya?
JᴀʏMᴇᴇ

Jawaban:

37

Katakanlah misalnya kita memiliki aplikasi, itu berfungsi dengan baik, selain itu macet setiap 5 menit, tetapi itu langsung kembali tanpa kehilangan data.

Itu dalam pikiran saya dapat diandalkan, tetapi tidak stabil.

Saya dapat mengandalkannya untuk tidak kehilangan data dan bekerja dengan benar, meskipun tidak stabil.

Padahal, internet pada dasarnya itu. Jauh dari stabil — koneksi jatuh dan muncul kembali, paket bertabrakan dan hilang, dan segala macam hal yang tidak stabil lainnya terjadi. Namun, sungguh menakjubkan betapa andalnya hal itu diberikan semua ketidakstabilan yang melekat di dalamnya.

CaffGeek
sumber
2
Ian Somerville mendefinisikan keandalan sebagai "Probabilitas operasi bebas kegagalan selama waktu tertentu, dalam lingkungan tertentu, untuk tujuan tertentu." dalam buku Rekayasa Perangkat Lunak. Jadi sistem Anda mogok setiap 5 menit tidak begitu dapat diandalkan (tergantung pada metrik Anda sekalipun).
m3th0dman
2
@ m3th0dman, tergantung bagaimana Anda mendefinisikan kegagalan. Tidak ada kehilangan data, dan akurasi data 100% tidak akan menjadi kegagalan dalam buku-buku saya, bahkan jika aplikasi terus macet dan memulai kembali dengan sendirinya. Saya ingin memperbaiki masalah ini, tetapi itu tidak akan menjadi prioritas tinggi jika terus 'berfungsi'
CaffGeek
Jika sistem Anda crash, maka jelas ada kegagalan di suatu tempat dan dengan demikian operasi Anda tidak bebas dari kesalahan (seperti yang disarankan oleh definisi); dengan demikian sistem Anda tidak begitu dapat diandalkan. Diskusi dapat dirinci menjadi pembicaraan tentang ketersediaan, respons, dan waktu mulai kembali.
m3th0dman
Saya benar-benar tidak berpikir aplikasi contoh ini dapat diandalkan. Keandalan dan stabilitas tidak harus merupakan dua hal yang terpisah.
Moshe Revah
@ m3th0dman: Program Erlang dianggap dapat diandalkan, bukan karena mereka sempurna, tetapi karena mereka terdiri dari banyak proses bersamaan (bukan proses OS) yang dapat gagal tanpa membahayakan program secara keseluruhan, yang dirancang untuk menangani kegagalan tersebut.
André Paramés
24

Definisi-definisi ini berasal dari Standar ISO 9126, yang membagi dalam karakteristik dan sub karakteristik: tabel ini, pdf ini atau wikipedia atau artikel

Stabilitas adalah: Mencirikan sensitivitas terhadap perubahan sistem yang diberikan yang merupakan dampak negatif yang mungkin disebabkan oleh perubahan sistem.

Keandalan adalah karakteristik utama yang mengandung:

  • jatuh tempo: Sub karakteristik ini menyangkut frekuensi kegagalan perangkat lunak.
  • toleransi kesalahan: Kemampuan perangkat lunak untuk menahan (dan memulihkan) dari kegagalan komponen, atau lingkungan.
  • recoverability: Kemampuan untuk mengembalikan sistem yang gagal ke operasi penuh, termasuk data dan koneksi jaringan.
KeesDijk
sumber
6

Sasaran: menulis sebuah program untuk menambahkan dua angka

Dapat diandalkan tetapi tidak stabil:

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

Stabil tapi tidak bisa diandalkan:

add(a,b):
    if randomInt mod 5 == 0: 
        print a+a
    else
        print a+b
Gort the Robot
sumber
Definisi ini salah. Bukan bagaimana istilah tersebut benar-benar digunakan dalam industri.
Federico
2

Dalam konteks mengevaluasi perpustakaan, istilah tersebut memiliki arti yang sangat berbeda.

Perpustakaan yang andal adalah perpustakaan yang melakukan tugasnya tanpa kegagalan yang terputus-putus.

Pustaka yang stabil adalah pustaka yang tidak banyak berubah.

Sebastian Redl
sumber
Saya terkejut melihat begitu banyak jawaban yang menafsirkan stabil sebagai "tidak crash". Bagi saya makna pertama memang "tidak banyak berubah selama beberapa waktu", itu tidak lagi bergerak. Masalahnya tidak crash lagi mungkin sesuatu yang menyertainya tetapi stabilitas bukan terutama tentang perilaku perangkat lunak.
Martin Maat
0

Stabilitas dan Keandalan adalah hal yang berbeda dalam pengembangan perangkat lunak, namun keduanya digunakan sebagai istilah saudara :)

Saya setuju dengan beberapa komentar sebelumnya dan ingin menambahkan 2 sen saya.

Reliabilitas adalah sejauh mana eksperimen, tes, atau prosedur pengukuran apa pun menghasilkan hasil yang sama pada uji coba berulang.

Keandalan stabilitas (kadang-kadang disebut pengujian, uji ulang reliabilitas) adalah kesepakatan untuk mengukur instrumen dari waktu ke waktu. Untuk menentukan stabilitas, pengukuran atau tes diulangi pada subjek yang sama di masa mendatang. Hasil dibandingkan dan dikorelasikan dengan tes awal untuk memberikan ukuran stabilitas.

Referensi lebih lanjut tentang topik ini disediakan:

EL Yusubov
sumber
0

Menurut saya, "keandalan" berarti Anda memiliki pemahaman tentang batasan sistem. Anda dapat, dengan percaya diri, mengatakan bahwa "kami memberikan waktu respons X pada persentil X" (semakin tinggi X, semakin baik, jelas).

Stabilitas, di sisi lain, hanyalah ukuran ketersediaan. "Jika Anda mencoba menghubungkan ke layanan kami, itu akan ada setidaknya X% dari waktu".

Vatine
sumber
0

Andal tapi tidak Stabil :

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

Stabil tapi tidak bisa diandalkan :

add(a,b):
    if a == nil ||  b == nil: 
        return 0
    else
        return (a+b)
Sazzad Hissain Khan
sumber