Kompetisi Robustness vs Correctness [ditutup]


17

Membaca "Kode Lengkap 2" dalam paragraf Kualitas Persyaratan, saya menemukan ini:

Apakah trade-off yang dapat diterima antara atribut yang bersaing ditentukan - misalnya, antara ketahanan dan kebenaran?

(ini di atas adalah titik dari daftar kotak centang besar untuk memeriksa kualitas persyaratan)

Jadi, saya menemukan banyak definisi Robustness and Correctness, di web, buku akademik, dll.

misalnya:

Dalam "Konstruksi Perangkat Lunak Berorientasi Objek, Edisi 2, Bertrand Meyer, Prentice-Hall, 1997" buku:

  • Kebenaran: Sejauh mana sistem bebas dari [cacat] dalam spesifikasi, desain, dan implementasinya.
  • Robustness: Tingkat di mana suatu sistem terus berfungsi di hadapan input yang tidak valid atau kondisi lingkungan yang penuh tekanan.

Meskipun demikian, tidak jelas mengapa dan dalam situasi apa keduanya mungkin mengalami konflik.

Pertanyaan saya adalah: mengapa kedua atribut ini bersaing ?


11
Buku-buku yang berbeda memberikan definisi yang berbeda untuk istilah-istilah ini. (Biasanya, buku-buku yang ditulis untuk programmer biasa tidak menggunakan definisi yang sama dengan publikasi akademis.) Mungkin Anda bisa melihat bagaimana buku ini mendefinisikannya, jika pernah. (Terkadang istilah-istilah ini digunakan oleh buku-buku tanpa definisi apa pun.)
rwong

Saya tidak mengetahui definisi "kuat" selain "menangani semua jenis input yang tidak terduga dengan anggun" (selain input yang diperlukan secara fungsional).
Kaz

Saya telah mengedit pertanyaan saya dengan berusaha sejelas mungkin agar dapat dibuka kembali.
menang

Jawaban:


36

Ada banyak situasi di mana keduanya mungkin berada dalam konflik. Misalnya, ketahanan dapat melibatkan ketahanan di bawah beban berat. Jika perkiraan (yaitu, salah) respons terhadap permintaan dapat dihitung jauh lebih cepat daripada respons yang tepat (benar), penting untuk mengetahui apakah sistem harus memberikan hasil perkiraan, atau gagal mengirim sekaligus.


17

Keduanya hanyalah contoh seperti yang Anda katakan. Bahkan, semua persyaratan non-fungsional semacam itu berpotensi dapat saling bertentangan. Dalam buku "Membangun Arsitektur Evolusi" ada tabel kira-kira seratus "fungsi" ini (sebagaimana mereka juga sering disebut).

Ini adalah semacam latihan bagi arsitek perangkat lunak untuk mempertimbangkan potensi konflik di antara keduanya. Anda pada dasarnya dapat memutuskan mana yang penting untuk proyek Anda, kemudian melacak konflik ini.

Untuk kembali ke contoh persis Anda dan lihat definisi istilah robustnessdi Wikipedia:

Dalam ilmu komputer, ketahanan adalah kemampuan sistem komputer untuk mengatasi kesalahan selama eksekusi [1] [2] dan mengatasi input yang salah.

Seperti yang Anda lihat dari definisi, ketahanan melibatkan kesalahan . Di sisi lain, Anda ingin memiliki kebenaran, yang pada dasarnya berarti tidak adanya kesalahan.

Untuk membuat konflik lebih jelas, mari pertimbangkan bidang input sederhana. Dari persyaratan kebenaran itu termudah untuk setiap input yang salah yang dibuat oleh pengguna untuk ditolak. Tetapi ketahanan membutuhkan Anda untuk dapat bekerja dengan input ini, yang mungkin tidak sepenuhnya benar.

Untuk membawanya ke buku Anda: apa trade-off yang dapat diterima sekarang? Katakanlah Anda menulis aplikasi ilmiah di mana pengguna dapat memasukkan jumlah tegangan, termasuk besarnya. Jadi input yang benar akan menjadi sesuatu seperti "10 kV" atau "200 mV". Pertukaran yang dapat diterima mungkin termasuk mengizinkan input seperti "10kV", "10kVolt", atau bahkan hanya "10" dan demi kebenaran, petakan ini ke nilai tegangan yang valid. Perhatikan bahwa ini masih merupakan trade-off dan bukan hal "terbaik-dari-dua-dunia". Pertimbangkan huruf besar vs huruf kecil: "10 kV" dan "10 KV" mungkin baik-baik saja, tetapi "10 mV" dan "10 MV" mungkin tidak. Kebenaran menjadi dipertanyakan karena Anda tidak yakin apakah itu mili atau mega sekarang,


5

Contoh praktis adalah XHTML vs. HTML .

  • Browser (dalam mode ketat) menolak XHTML yang memiliki kesalahan sintaksis. Ini memastikan bahwa hasil yang salah tidak ditampilkan kepada pengguna, dan membantu dalam menemukan kesalahan.
  • Peramban berupaya untuk melanjutkan penguraian kode HTML meskipun memiliki masalah yang sangat jelas. Ini sering memungkinkan pengguna melihat halaman, bahkan jika konten sedikit rusak.

Dengan demikian XHTML bertujuan untuk kebenaran, sedangkan HTML bertujuan untuk ketahanan. Saat ini HTML tampaknya lebih populer, tetapi kedua belah pihak memiliki argumen yang bagus.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.