มีความแตกต่างระหว่างความเสถียรและความน่าเชื่อถือ (อย่างน้อยในบริบทวิศวกรรมซอฟต์แวร์) หรือสามารถใช้แทนกันได้หรือไม่? ถ้าไม่เช่นนั้นจะมีตัวอย่างของระบบที่น่าเชื่อถือ แต่ไม่จำเป็นต้องมีเสถียรภาพและในทางกลับกัน
มีความแตกต่างระหว่างความเสถียรและความน่าเชื่อถือ (อย่างน้อยในบริบทวิศวกรรมซอฟต์แวร์) หรือสามารถใช้แทนกันได้หรือไม่? ถ้าไม่เช่นนั้นจะมีตัวอย่างของระบบที่น่าเชื่อถือ แต่ไม่จำเป็นต้องมีเสถียรภาพและในทางกลับกัน
คำตอบ:
สมมติว่าเรามีแอพมันทำงานได้อย่างสมบูรณ์แบบนอกเหนือจากความล้มเหลวทุก 5 นาที แต่มันกลับมาทันทีโดยไม่สูญเสียข้อมูล
ว่าในใจของฉันมีความน่าเชื่อถือ แต่ไม่มั่นคง
ฉันสามารถวางใจได้ว่าจะไม่สูญเสียข้อมูลและทำงานอย่างถูกต้องแม้ว่ามันจะไม่เสถียรก็ตาม
ความจริงแล้วอินเทอร์เน็ตนั้นเป็นสิ่งสำคัญ อยู่ไกลจากความเสถียร - การเชื่อมต่อหล่นและปรากฏอีกครั้งแพ็คเก็ตชนกันและหายไปและสิ่งต่าง ๆ ที่ไม่แน่นอนอื่น ๆ เกิดขึ้น อย่างไรก็ตามมันเป็นเรื่องที่น่าอัศจรรย์มากที่ความน่าเชื่อถือจะได้รับความไม่แน่นอนทั้งหมดที่มีอยู่ในนั้น
คำจำกัดความเหล่านี้มาจากมาตรฐาน ISO 9126 ซึ่งแบ่งในลักษณะและคุณสมบัติย่อย: ตารางนี้PDFหรือวิกิพีเดียหรือบทความนี้
ความเสถียรคือ: แสดงถึงความไวต่อการเปลี่ยนแปลงของระบบที่กำหนดซึ่งเป็นผลกระทบด้านลบที่อาจเกิดจากการเปลี่ยนแปลงของระบบ
ความน่าเชื่อถือเป็นคุณสมบัติหลักที่ประกอบด้วย:
เป้าหมาย: เขียนโปรแกรมเพื่อเพิ่มตัวเลขสองตัว
เชื่อถือได้ แต่ไม่เสถียร:
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 ที่เปอร์เซนต์ไทล์ Xth" (ยิ่ง 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)