Apakah ada sedikit manfaat dalam memperbaiki bug [ditutup]

27

Saya telah mendengar dari seorang mantan kolega bahwa tidak semua bug perlu diperbaiki, karena ketika Anda masuk ke daftar prioritas bug, kasus penggunaan yang menyebabkan bug menjadi lebih tidak jelas, atau kepuasan pelanggan yang diperoleh semakin rendah. Tetapi Anda masih harus menghabiskan banyak waktu untuk memperbaiki bug itu.

Dalam upaya meyakinkan pemilik produk kami tentang konsep ini, saya tidak dapat menemukan sumber daya yang baik. Yang bisa saya temukan hanyalah diskusi tentang apakah ada biaya marjinal dalam pengembangan perangkat lunak atau tidak.

Apakah benar-benar sedikit manfaat dalam memperbaiki bug? Apakah ada istilah berbeda yang menjelaskan konsep ini?

Gökhan Kurt
sumber
2
Pertanyaan Anda cukup tidak jelas. "tidak semua bug perlu diperbaiki" berarti ada beberapa yang tidak layak diperbaiki. "Apakah benar-benar ada manfaat marjinal dalam memperbaiki bug" menurut saya maksud Anda sesuatu yang berbeda. Bisakah Anda jelaskan?
Doc Brown
2
Apakah itu tidak diketahui oleh pemilik produk? Menurut Anda mengapa Anda perlu meyakinkan mereka tentang hal itu?
Berhentilah melukai Monica
@ Goyo Saya tidak menanyakan pertanyaan ini secara khusus untuk meyakinkan mereka. Ini adalah konsep yang saya temui beberapa waktu lalu tetapi tidak dapat menemukan sumber daya lagi. Juga tidak jarang bagi pengembang perangkat lunak berada dalam posisi manajemen. Jadi saya sendiri mungkin memerlukan informasi ini di masa depan.
Gökhan Kurt
2
@ GökhanKurt: Ini tidak mengikuti dari "Semua bug harus diperbaiki" bahwa mereka semua sama pentingnya. Beberapa mungkin lebih mengganggu daripada yang lain dan karenanya memiliki prioritas yang lebih tinggi.
JacquesB

Jawaban:

66

Dari perspektif bisnis, perbaikan bug tidak berbeda dengan permintaan fitur. Ini memiliki biaya tertentu dalam waktu pengembangan, dan memiliki nilai tertentu bagi pelanggan. Jika bug tidak kritis, itu benar-benar masuk akal bisnis untuk memprioritaskan fitur berharga di atas perbaikan bug.

Tetapi dari perspektif teknis, bug mungkin lebih kritis, karena bug mengindikasikan kesalahan pada fondasi yang mungkin digunakan / dibangun oleh kode lain, dalam hal ini kesalahannya "menular" dan menambah biaya untuk pemeliharaan di masa depan. Jadi tidak memperbaiki bug adalah hutang teknis yang memerlukan manajemen, sementara tidak menerapkan fitur tidak benar-benar memiliki biaya yang berkelanjutan. Tetapi tingkat hutang teknis yang ditimbulkan oleh bug sangat tergantung pada sifat bug tersebut.

Semua faktor ini harus dipertimbangkan ketika memprioritaskan.

Adapun apakah ada manfaat marjinal untuk memperbaiki bug: Ini diberikan. Karena tidak semua bug memiliki tingkat keparahan yang sama, Anda secara alami memprioritaskan bug yang paling penting terlebih dahulu. Jadi semakin banyak bug yang Anda perbaiki, semakin rendah nilai marginal untuk memperbaiki yang berikutnya. Tetapi apakah itu pernah mencapai tingkat memperbaiki bug tidak sepadan dengan usaha, adalah keputusan bisnis daripada keputusan teknis.

JacquesB
sumber
Saya suka jawaban ini, tetapi saya tidak akan mengatakan bahwa fitur baru tidak memiliki biaya yang berkelanjutan. Biasanya diperlukan pembuatan kode yang lebih umum untuk mengakomodasi fungsionalitas baru, dan Anda harus hidup dengan tingkat abstraksi yang lebih tinggi terlepas dari berapa banyak nilai yang disediakan oleh fitur tersebut.
Doval
25
@Doval Anda salah paham. Apa yang dikatakan Jacques adalah fitur yang belum ditulis tidak memiliki biaya operasional. Atau dengan kata lain, tidak memiliki fitur tidak membuat lebih sulit untuk mengimplementasikan fitur yang berbeda (kecuali yang terakhir tergantung pada yang pertama, tentu saja). Bug, di sisi lain, membuatnya lebih sulit untuk melakukan hal lain kecuali memperbaikinya. Dengan demikian, "fitur tidak tertulis" dan "bug tidak tetap" berbeda, karena yang pertama tidak memengaruhi basis kode Anda, sedangkan yang terakhir tidak.
Sebastian Redl
3
Saya akan menambahkan bahwa bug juga dapat berdampak besar pada citra program (dan karena itu dari produk secara keseluruhan, dan perusahaan yang memproduksinya) ... Ini harus diperhitungkan: apakah ada yang ingin meninggalkan bug ketika, jika ditemukan, dapat membebani perusahaan beberapa klien dan / atau bisnis?
Olivier Dulac
2
Sebagai contoh bug yang menular: Di salah satu proyek saya, semuanya bekerja dengan baik, kecuali bahwa memori dibebaskan dalam sepotong kode yang tidak selalu berjalan. Seperti yang terjadi, dalam semua kode yang saya tulis hingga saat itu, selalu demikian; Saya tidak memiliki kebocoran memori atau membebaskan dua kali lipat, hanya beberapa log debugging yang tampaknya rusak. Karena semuanya bekerja, saya tidak memperbaikinya. Lalu saya menambahkan beberapa kode lagi, yang tidak lagi berbaris, dan saya mulai mendapatkan kebocoran memori. Bug seperti itu kecil, tetapi perlu diperbaiki; Sayangnya, mereka juga sulit untuk mengetahui dari bug yang sebenarnya kecil.
Dana Gugatan Monica
5
Hanya untuk memperluas pada titik @ OlivierDulac, bug dapat membuat pengguna akhir berpikir "Saya tidak bisa percaya perangkat lunak ini dapat diandalkan" dan membuangnya, terlepas dari fitur-fiturnya. Saya yakin kita semua telah menginstal beberapa perangkat lunak yang tampaknya benar-benar berguna hanya untuk menghapus instalannya beberapa menit kemudian karena itu kelihatan glitchy. Sedangkan fitur yang hilang mungkin diperhatikan tetapi membiarkan pengguna akhir berpikir "Saya akan terus menggunakan ini karena saya suka fitur yang dimilikinya". Saya tidak berpikir bug dan fitur harus dianggap setara dari perspektif bisnis.
Jon Bentley
12

Ini referensi yang bagus

http://www.joelonsoftware.com/articles/fog0000000043.html

Apakah Anda memperbaiki bug sebelum menulis kode baru? Versi pertama dari Microsoft Word untuk Windows dianggap sebagai proyek "mars kematian". [...] karena fase perbaikan bug bukan bagian dari jadwal resmi [...]

Microsoft secara universal mengadopsi sesuatu [...] prioritas tertinggi adalah untuk menghilangkan bug sebelum menulis kode baru [...] Secara umum, semakin lama Anda menunggu sebelum memperbaiki bug, semakin mahal (dalam waktu dan uang) itu adalah untuk memperbaiki .

Anda dapat yakin bahwa semakin lama bug itu ada di sini, semakin lama waktu yang diperlukan untuk memperbaikinya begitu mereka menjadi prioritas. Jadi, bukannya memiliki manfaat mentah sekarang, Anda menghindari kerugian yang lebih mahal di masa depan.

Cara yang baik untuk mengelola itu adalah dengan menentukan jumlah waktu yang dialokasikan untuk menangani masalah jaminan simpanan. Ini tidak akan mendorong sebanyak Microsoft, tetapi itu akan memastikan sejumlah penyelesaian masalah di masa depan, jika mereka belum menjadi masalah Anda bahkan jika klien tidak benar-benar peduli.

Walfrat
sumber
3

Dalam upaya meyakinkan pemilik produk kami tentang konsep ini, saya tidak dapat menemukan sumber daya yang baik.

Dengan asumsi Anda bekerja untuk organisasi komersial, pasti akan ada seseorang di sana yang mengetahui Analisis Biaya-Manfaat .

Organisasi Anda memiliki jumlah terbatas sumber daya pengembang, dan daftar hal-hal bermanfaat yang tak terbatas untuk dilakukan. Hal-hal yang bermanfaat termasuk menambahkan fitur baru, dan menghapus bug yang ada - menghapus bug meningkatkan perangkat lunak, seperti halnya menambahkan fitur baru.

Jadi jelas ada keputusan yang harus diambil tentang bagaimana mengalokasikan sumber daya terbatas ini ke daftar yang tak terbatas ini, dan tidak terlalu mengejutkan bahwa hasilnya adalah beberapa bug tidak diperbaiki sekarang, atau minggu depan, atau tahun depan, atau di fakta pernah.

Jika Anda mencari pendekatan yang lebih terstruktur di sini, Anda bisa mencoba sistem PEF / REV yang memberikan angka kepada pengguna dan tampilan Programmer bug, sebagai titik awal untuk memutuskan apa yang diperbaiki - dan apa yang tidak.

Lihat juga dua posting ini di sini di Rekayasa Perangkat Lunak:

Memecahkan bug mana yang akan memberikan manfaat biaya terbesar

Hampir setiap bug yang dilaporkan adalah bug prioritas tinggi

AakashM
sumber
2

Tidak semua aspek perilaku perangkat lunak yang tidak disengaja atau tidak diinginkan adalah bug. Yang penting adalah memastikan bahwa perangkat lunak memiliki serangkaian kondisi yang berguna dan terdokumentasi di mana ia dapat diandalkan untuk beroperasi dengan cara yang bermanfaat. Pertimbangkan, misalnya, sebuah program yang seharusnya menerima dua angka, gandakan, dan hasilkan hasilnya, dan yang menghasilkan angka palsu jika hasilnya lebih dari 9,95 tetapi kurang dari 10,00, lebih dari 99,95 tetapi kurang dari 100,00, dll Jika program ini ditulis untuk tujuan memproses angka yang produknya antara 3 dan 7, dan tidak akan pernah dipanggil untuk memproses yang lain, memperbaiki perilakunya dengan 9,95 tidak akan membuatnya lebih berguna untuk tujuan yang dimaksudkan. Namun, hal itu mungkin membuat program lebih cocok untuk tujuan lain.

Dalam situasi seperti di atas, akan ada dua tindakan yang masuk akal:

  1. Perbaiki masalah, jika hal itu praktis.

  2. Tentukan rentang di mana output program akan dapat diandalkan dan nyatakan bahwa program hanya cocok untuk digunakan pada data yang diketahui menghasilkan nilai dalam rentang yang valid.

Pendekatan # 1 akan menghilangkan bug. Pendekatan # 2 mungkin membuat kemajuan kurang cocok untuk beberapa tujuan daripada yang seharusnya, tetapi jika tidak ada kebutuhan untuk program untuk menangani nilai-nilai bermasalah yang mungkin tidak menjadi masalah.

Bahkan jika ketidakmampuan untuk menangani nilai 99,95 hingga 100,0 dengan benar adalah hasil dari kesalahan pemrograman [misalnya memutuskan untuk menghasilkan dua digit di sebelah kiri titik desimal sebelum membulatkan ke satu tempat setelah, sehingga menghasilkan 00,00], itu hanya harus dianggap sebagai bug jika program dinyatakan ditentukan sebagai menghasilkan output yang bermakna dalam kasus tersebut. [Kebetulan, masalah tersebut terjadi pada kode printf Turbo C 2.00; dalam konteks itu, itu jelas bug, tetapi kode yang menyebut printf yang salah hanya akan bermasalah jika bisa menghasilkan output dalam rentang bermasalah].

supercat
sumber
0

Dalam pengertian yang longgar, ya, tidak semua bug perlu diperbaiki. Ini semua tentang menganalisis rasio risiko / manfaat.

Apa yang umumnya terjadi adalah bisnis akan mengadakan pertemuan dengan pimpinan teknis dan pemangku kepentingan untuk membahas bug yang tidak jelas dalam tumpukan 'perlu diperbaiki'. Mereka akan memutuskan apakah waktu (= uang) yang diinvestasikan untuk memperbaiki bug akan layak untuk bisnis.

Misalnya, 'bug minor' dapat berupa kesalahan ejaan / tata bahasa di bagian Syarat dan Ketentuan situs web. Individu yang mengemukakan ini mungkin menganggapnya terlalu kecil untuk diubah, tetapi bisnis akan mengenali potensi kerugian yang dapat ditimbulkannya terhadap merek, dan relatif mudahnya memperbaiki beberapa karakter.

Di sisi lain, Anda dapat memiliki bug yang tampaknya penting, tetapi sulit untuk diperbaiki dan hanya memengaruhi jumlah pengguna yang dapat diabaikan. Misalnya tautan tombol minor rusak untuk pengguna yang menggunakan Google Chrome versi lama dan juga Javascriptnya dinonaktifkan.

Alasan lain untuk bisnis TIDAK memperbaiki bug bisa karena waktu yang diinvestasikan akan mengetuk proyek kembali jumlah waktu yang tidak terduga, atau bahwa waktu pengembang akan lebih baik dihabiskan bekerja pada perbaikan / pengkodean lainnya. Bisa juga bug itu cukup kecil sehingga bisa ditayangkan, dan kemudian diperbaiki di kemudian hari.

Harapan yang menjelaskan konsep sedikit lebih baik! Saya pasti akan menghindari memikirkan hal ini secara umum - setiap bug adalah unik dan harus diperlakukan seperti itu.

Korthalion
sumber
-4

Karena saat Anda masuk dalam daftar prioritas bug, kasus penggunaan yang menyebabkan bug menjadi lebih tidak jelas, atau kepuasan pelanggan yang diperoleh semakin rendah.

Jadi "argumen" mereka sebenarnya

Jika Anda mengabaikan bug cukup lama, Pengguna akan lupa apa masalahnya atau mencari cara untuk mengatasinya.

Bug harus diprioritaskan dan ditangani "secara berurutan" seperti halnya Permintaan Fitur baru (tetapi, bisa dibilang, melebihi dan di atas semua yang terakhir).

Phill W.
sumber
3
Tidak, argumennya adalah bahwa bug dengan prioritas rendah mungkin jarang terjadi, dan mungkin tidak benar-benar menambah banyak nilai dalam mengoreksi (misalnya, jika Anda memiliki jam di situs web Anda yang setengah menit keluar, atau jika Anda situs web kesalahan pada tengah malam pada Januari yang pertama bagi pengguna di Moldova)
Nama tampilan