Apa yang dimaksud dengan bug? serta apa penyebab bug dalam suatu program?

gambar

Kutu (bahasa Inggris: bug ) adalah suatu cacat desain pada perangkat keras atau perangkat lunak yang mengakibatkan terjadinya galat pada peralatan atau programsehingga tidak berfungsi sebagaimana mestinya.

Menurut Anda apakah itu bug? dan bagaimana bisa pada sebuah program bisa muncul bug ? saya mengharapkan jawaban dari Anda semua dan saya akan sangat menghargainya.

Bug secara umum bisa diartikan sebagai serangga. Namun, jika diartikan dalam sebuah program, bug merupakan error yang terjadi pada source code yang mengakibatkan output menjadi tidak sesuai dengan yang telah direncanakan. Kedua artian ini memiliki sifat yang sama yaitu “mengganggu” serta berpotensi mengakibatkan kerugian yang besar.

Banyak yang menganggap bahwa bug hanya menimbulkan gangguan / kerusakan kecil, namun pada kenyataannya berbeda. Banyak sekali kejadian yang merugikan akibat bug, salah satunya pada tahun 1996, roket seharga 1 miliyar dollar bernama Ariane 5 hancur beberapa detik setelah peluncuran akibat bug yang ada pada program kendali on-board komputer di roket tersebut.
Jika kita teliti lebih lanjut, bug bisa terjadi karena dua penyebab utama berikut, yaitu :

1. Human error
Ini merupakan penyebab yang paling sering dalam kemunculan sebuah bug pada program komputer karena manusia sendiri yang berperan sebagai pencipta sebuah program pada komputer sehingga secara otomatis sumber kesalahan utama berasal dari manusia itu sendiri. Human error juga masih bisa dipecah lagi menjadi beberapa bagian, diantaranya :

image

- Tidak adanya komunikasi antar programmer
Komunikasi merupakan poin yang penting dalam sebuah tim, terutama dalam hal programming. Jika terjadi salah paham, baik itu hanya dalam hal kecil maka sudah dipastikan bahwa bug akan muncul pada program yang dikerjakan.

image

- Programmer juga manusia
Seorang programmer juga sama dengan manusia lainnya, bisa berbuat salah. Tidak semua programmer dalam tim sudah memiliki tingkat pengalaman yang sama, ditambah lagi kondisi fisik seseorang juga mempengaruhi kinerja masing masing sehingga solusi untuk masalah ini adalah harus banyak menambah wawasan serta menjaga pola hidup kita untuk meminimalisir terjadinya bug.

image

- Perubahan permintaan konsumen
Konsumen pasti mengharapkan hasil yang maksimal dan sesuai dengan keinginannya. Namun, jika konsumen terus meminta sebuah revisi / perubahan terus menerus bisa memungkinkan munculnya bug pada program yang dimintanya. Sebuah perubahan bisa saja berpengaruh pada banyak sekali algoritma yang harus dirombak lagi sehingga kemunculan bug tidak diherankan lagi.

image

- Tekanan deadline
Hal ini merupakan salah satu pengaruh yang berpeluang memunculkan bug. Waktu merupakan hal yang tidak bisa dirubah, sehingga hal ini merupakan salah satu tantangan terbesar seorang programmer. Berkejaran dengan waktu bisa memunculkan berbagai masalah, seperti tidak teliti, hasil tidak sempurna, dll. sehingga bug muncul dari akibat yang terjadi tersebut.

image

- Rendahnya kemampuan tester / penguji
Tester juga memegang peranan yang penting dalam pencegahan munculnya bug dalam suatu program. Semakin tinggi kemampuan seorang tester maka semakin bagus pula kualitas hasil uji yang yang dikerjakannya sehingga programmer akan lebih mudah dalam memperbaiki sebuah program.

- Egois / Terlalu percaya diri
Hal ini mungkin merupakan masalah yang sepele yang seharusnya tidak perlu dalam pengerjaan sebuah program. Hal ini bisa mengakibatkan seorang programmer menggampangkan tugas yang dihadapinya sehingga memungkinkan adanya bagian program yang terlewat sehingga menimbulkan bug

image

2. Peralatan
Ketika kita sudah yakin bahwa tidak terjadi human error, maka kita perlu memeriksa tool atau peralatan yang kita gunakan. Peralatan yang digunakan seorang programmer juga berpengaruh terhadap hasil karyanya. Peralatan disini bisa berupa hardware, program yang digunakan untuk membuat source code, dll. Jika pada peralatan yang digunakan saja sudah mengalami malfungsi maka tidak menutup kemungkinan bug muncul dari hal tersebut.

Berdasarkan paparan diatas, saya bisa menarik kesimpulan bahwa bug bisa muncul karena banyak hal walau hanya masalah kecil sekalipun. Dan sebaiknya kita harus selalu berhati hati serta berusaha meminimalisir terjadinya bug dengan memperhatikan hal-hal mulai dari yang terkecil agar tidak merugikan user dari program yang kita ciptakan.

Sumber :

image
sumber:https://www.bgosoftware.com/blog/wp-content/uploads/2016/03/iStock_000004435884_Large.jpg

bug adalah istilah umum yang digunakan untuk menggambarkan kesalahan, cacat, kesalahan, kegagalan, atau kesalahan dalam sebuah program komputer atau sistem yang menghasilkan hasil yang benar atau tidak diharapkan, atau menyebabkan ia berperilaku dengan cara yang tidak disengaja. Kebanyakan bug timbul dari kesalahan dan kesalahan yang dibuat oleh orang-orang baik dalam kode sumber program atau desain, dan beberapa disebabkan oleh kompiler menghasilkan kode yang salah. Sebuah program yang berisi sejumlah besar bug, dan bug yang serius mengganggu fungsi-nya , dikatakan buggy. Laporan merinci bug di program yang biasa dikenal sebagai laporan bug, laporan kesalahan, laporan masalah, laporan masalah, perubahan permintaan, dan sebagainya

1. Efek

Bugs memicu Tipe I dan tipe II error yang pada gilirannya dapat memiliki berbagai efek riak, dengan berbagai tingkat ketidak nyamanan kepada pengguna program.Beberapa bug hanya memiliki efek halus pada fungsionalitas program, dan dengan demikian dapat berbohong tidak terdeteksi untuk waktu yang lama. Lebih lagi bug serius dapat menyebabkan program untuk crash atau membekukan mengarah kepenolakan layanan. Lainnya memenuhi syarat sebagai bug keamanan dan mungkin misalnya memungkinkan pengguna jahat untuk mlewati kontrol akses untuk mendapatkan hak istimewa yang tidak sah.

Hasil bug mungkin sangat serius. Bug di kode mengendalikan Therac-25 mesinterapi radiasi secara langsung bertanggung jawab atas beberapa kematian pasienpada 1980-an. Pada tahun 1996 menjadi $ 1 milyar prototipe Badan Antariksa Eropa AS Ariane 5 roket hancur kurang dari satu menit setelah peluncuran, karenabug dalam program komputer bimbingan on-board. Pada bulan Juni 1994, sebuahRoyal Air Force Chinook jatuh ke dalam Mull of Kintyre, membunuh 29. Ini awalnya dianggap sebagai kesalahan pilot, tetapi sebuah investigasi oleh Komputer Weekly menemukan bukti yang cukup untuk meyakinkan House of Lords penyelidikan yang mungkin telah disebabkan oleh system bug dalam komputer kontrol mesin pesawat.

Pada tahun 2002, sebuah studi yang diprakarsai oleh Departemen Perdagangan AS 'Institut Nasional Standar dan Teknologi menyimpulkan bahwa software bug,atau kesalahan, sangat lazim dan begitu merugikan bahwa biaya mereka ekonomi AS sekitar $ 59 miliar per tahun, atau sekitar 0,6 persen dari produk domestik bruto

image
sumber:http://www.abacoadvisers.com/sites/default/files/styles/news_main/public/news/spanish-builder-bankrupt.jpg?itok=BjD_QxDy

  1. Pencegahan

Bugs adalah konsekuensi dari sifat faktor manusia dalam tugas pemrograman.Mereka timbul dari kelalaian atau kesalahpahaman saling dilakukan oleh tim software selama spesifikasi, desain, coding, entri data dan dokumentasi. Sebagai contoh: Dalam membuat sebuah program yang relatif sederhana untuk mengurutkan daftar kata ke dalam urutan abjad, desain seseorang mungkin gagal untuk mempertimbangkan apa yang harus terjadi ketika kata mengandung tanda hubung. Mungkin, ketika mengubah desain abstrak ke dalam bahasa pemrograman yang dipilih, satu tidak sengaja dapat membuat off-per-satu kesalahan dan gagal untuk mengurutkan kata terakhir dalam daftar. Akhirnya, saat mengetik program yang dihasilkan ke dalam komputer, orang mungkin sengaja tipe ‘<’ where ‘>’ yang dimaksudkan, mungkin mengakibatkan kata-kata yang disortir ke dalam urutan abjad mundur.

image
sumber: https://images-na.ssl-images-amazon.com/images/I/51gJG5VeKKL.jpg

bug kompleks dapat timbul dari interaksi yang tidak diinginkan antara bagian-bagian berbeda dari sebuah program komputer. Hal ini sering terjadi karena program komputer dapat menjadi kompleks-jutaan baris panjang dalam beberapa kasus-sering yang telah diprogram oleh banyak orang lebih panjang besar waktu, sehingga programmer tidak dapat mental melacak setiap cara yang mungkin di mana bagian dapat berinteraksi. Kategori lain bug disebut kondisi lomba datang tentang baik ketika proses berjalan di lebih dari satu thread atau dua atau lebih proses berjalan secara bersamaan, dan urutan yang tepat dari pelaksanaan urutan kritis kode belum benar disinkronkan.Industri perangkat lunak telah menempatkan banyak usaha dalam menemukan metode untuk mencegah programmer dari secara tidak sengaja memperkenalkan bug saat menulis perangkat lunak Ini termasuk.:

Pemrograman gaya Sementara kesalahan ketik pada kode program yang sering tertangkap oleh compiler, bug biasanya muncul ketika programmer membuat kesalahan logika.Berbagai inovasi dalam gaya pemrograman dan pemrograman defensif dirancang untuk membuat bug kurang mungkin, atau lebih mudah untuk spot. Dalam beberapa bahasa pemrograman, kesalahan ketik apa yang disebut, terutama dari simbol atau operator logika / matematika, sebenarnya merupakan kesalahan logika, karena konstruksi mistyped diterima oleh compiler dengan arti lain daripada yang dimaksudkan programmer.

Teknik pemrograman Bugs sering membuat inkonsistensi dalam data internal program yang berjalan.Program dapat ditulis untuk memeriksa konsistensi data internal mereka sendiri sambil berlari. Jika ketidakkonsistenan ditemui, program ini dapat segera menghentikan, sehingga bug dapat ditemukan dan tetap. Atau, program ini hanya dapat menginformasikan kepada user, upaya untuk memperbaiki inkonsistensi, dan terus berjalan.Pengembangan metodologiAda beberapa skema untuk mengelola aktivitas programmer, sehingga lebih sedikit bug yang dihasilkan. Banyak dari ini jatuh di bawah disiplin rekayasa perangkat lunak (yang membahas masalah-masalah software desain juga).Sebagai contoh, spesifikasi program yang formal digunakan untuk menyatakan perilaku yang tepat dari program, sehingga bug desain dapat dihilangkan.Sayangnya, spesifikasi formal tidak praktis atau tidak mungkin untuk apa pun tetapi program terpendek, karena masalah ledakan kombinatorial dan ketidakpastian.Dukungan bahasa pemrogramanBahasa pemrograman sering termasuk fitur yang membantu programmer mencegah bug, seperti sistem jenis statis, ruang nama terbatas dan pemrograman modular, antara lain.

Sebagai contoh, ketika seorang programmer menulis (pseudocode) LET REAL_VALUE PI = “THREE AND A BIT”, walaupun ini mungkin sintaksis benar, kode tersebut gagal cek tipe. Tergantung pada bahasa dan pelaksanaan, ini mungkin ditangkap oleh kompilator atau pada saat runtime.Selain itu, bahasa yang baru saja ditemukan banyak sengaja tidak termasuk fitur yang dapat dengan mudah menimbulkan kesalahan, pada biaya pembuatan kode lebih lambat daripada perlu: prinsip umum adalah bahwa, karena hukum Moore, komputer bisa lebih cepat dan insinyur perangkat lunak mendapatkan lebih lambat, ini hampir selalu lebih baik untuk menulis kode sederhana, lebih lambat dari kode “pintar”, bisa ditebak, terutama mengingat bahwa biaya pemeliharaan yang besar.Sebagai contoh, bahasa pemrograman Java tidak mendukung aritmetik pointer; implementasi dari beberapa bahasa seperti Pascal dan bahasa scripting sering memiliki batasan pemeriksaan runtime array, paling tidak dalam debugging membangun.Kode analisisAlat untuk analisis kode membantu pengembang dengan memeriksa teks program luar kemampuan compiler untuk menemukan masalah potensial.

**Meskipun secara umum masalah menemukan kesalahan pemrograman semua diberikan spesifikasi tidak dipecahkan (lihat menghentikan masalah), alat ini memanfaatkan fakta bahwa programmer manusia cenderung membuat jenis yang sama kesalahan saat menulis perangkat lunak.**Instrumentasi Alat untuk memantau kinerja perangkat lunak seperti yang sedang berjalan, baik khusus untuk menemukan masalah seperti kemacetan atau memberikan jaminan untuk benar bekerja, dapat tertanam dalam kode eksplisit (mungkin yang sederhana seperti PRINT pernyataan yang mengatakan “Aku Disini”), atau disediakan sebagai alat. Ini sering merupakan kejutan untuk menemukan di mana sebagian besar waktu diambil oleh sepotong kode, dan ini penghapusan asumsi dapat menyebabkan kode yang akan ditulis ulang.

Daftar Pustaka

https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/bugs.html

image

Bug dalam perangkat lunak adalah kesalahan, cacat, kegagalan, atau kekurangan dalam suatu program yang menghasilkan hasil yang tidak diinginkan atau salah. Dari mana istilah ‘bug’ berasal? Istilah bug berasal dari seorang perwira Angkatan Laut AS Grace Hopper yang menemukan ngengat di antara relai komputer Harvard Mark II yang sedang ia kerjakan di tanggal 9 September 1945. Pada saat itu ukuran komputer masih sangat besar sampai memenuhi satu ruangan dan kehangatan komponen internal dalam komputer menarik ngengat, lalat, dan makhluk terbang lainnya. Makhluk-makhluk itu kemudian memperpendek sirkuit dan menyebabkan komputer mengalami kerusakan.

Istilah ‘bug’ dalam komputer telah digunakan sebelumnya, tapi setelah Grace Hopper menulis di buku hariannya “kasus bug yang sebenarnya telah ditemukan” istilahnya menjadi sangat populer dan masih digunakan sampai sekarang.

Ada beberapa hal yang dapat menyebabkan bug dalam sebuah program.

1. Faktor Manusia

image

Seorang programmer bagaimanapun tetaplah seorang manusia. Manusia tidak sempurna. Mereka cenderung membuat kesalahan. Tidak semua pengembang adalah pakar domain. Programmer yang tidak berpengalaman tanpa pengetahuan domain yang tepat dapat melakukan kesalahan saat melakukan pengkodean. Kurangnya praktik pengkodean sederhana, pengujian unit, debugging adalah beberapa alasan umum lain menjadi alasan utama mengapa selalu ada masalah pada tahap pengembangan.

Sebagai manusia yang tidak sempurna, sangat bodoh jika kita mengharapkan perangkat lunak yang sempurna dan tanpa cacat di dalamnya. Ironisnya, kita belum menemukan agen non-manusia lain yang bisa mengembangkan perangkat lunak lebih baik daripada manusia. Jadi kita terus mengandalkan kecerdasan manusia untuk mengembangkan perangkat lunak sehingga memungkinkan kemungkinan adanya kesalahan di dalamnya.

Selain itu, penjadwalan proyek perangkat lunak sulit dilakukan, seringkali membutuhkan banyak perkiraan. Ketika mendekati tenggat waktu, kesalahan akan dibuat. Jadwal yang tidak realistis pada proyek / perusahaan skala kecil selalu menjadi alasan utama adanya bug dalam perangkat lunak. Terkadang programmer tidak diberi cukup waktu untuk merancang, mengembangkan atau menguji kode mereka sebelum menyerahkannya ke tim pengujian. Perubahan desain akhir bisa memerlukan perubahan kode menit terakhir, yang kemungkinan akan mengakibatkan kesalahan program. Jika tidak ada cukup waktu untuk desain, pengkodean dan pengujian yang tepat, cukup jelas bahwa akan terjadi kecacatan dalam sebuah program.

2. Miskomunikasi

image

Alasan umum lainnya untuk adanya cacat perangkat lunak adalah adanya miskomunikasi. Keberhasilan aplikasi perangkat lunak bergantung pada komunikasi antara pemangku kepentingan, tim pengembang dan pengembang. Persyaratan dan salah tafsir persyaratan adalah dua faktor utama yang menyebabkan cacat pada perangkat lunak. Bayangkan sebuah kasus dimana persyaratannya tidak jelas atau tidak lengkap. Hal ini dapat menyebabkan situasi dimana programmer harus menghadapi masalah yang tidak dipahami dengan jelas sehingga menyebabkan kesalahan.

3. Koding dan Logika Desain yang Buruk

image

Di era pengembangan sistem perangkat lunak yang kompleks ini, terkadang perangkat lunak sangat rumit sehingga memerlukan solusi yang andal. Kurangnya kesabaran dan adanya dorongan untuk menyelesaikannya secepat mungkin bisa menimbulkan kesalahan. Misaplikasi teknologi (komponen, produk, teknik), keinginan / godaan untuk menggunakan cara termudah untuk menerapkan solusi, kurangnya pemahaman yang benar tentang kelayakan teknis sebelum merancang arsitektur semua dapat mengundang kesalahan. Sayangnya, bukan karena orangnya tidak pintar hanya saja mereka sering tidak punya waktu.

Kadang-kadang kesalahan juga terjadi dalam kode hanya karena pengkodingan yang buruk. Sulit untuk mempertahankan dan memodifikasi kode yang ditulis dengan buruk atau didokumentasikan dengan buruk. Dalam banyak organisasi, manajemen tidak memberikan insentif bagi programmer untuk mendokumentasikan kode mereka atau menulis kode yang jelas dan mudah dimengerti.

Setiap programmer baru yang mulai mengerjakan kode ini mungkin menjadi bingung karena kompleksitas proyek dan kode yang tidak terdokumentasi dengan baik. Banyak kali dibutuhkan waktu lebih lama untuk membuat perubahan kecil dalam kode yang tidak terdokumentasi dengan baik.

4. Bug Pada Alat Pihak ketiga

image

Cukup sering selama pengembangan perangkat lunak ditemukan banyak alat pihak ketiga yang berisi beberapa bug didalamnya. Alat-alat ini digunakan sebagai alat bantu dalam pemrograman pemrograman (misalnya perpustakaan kelas, DLL bersama, kompiler, editor HTML, debugger dll). Bug dalam alat-alat ini dapat menyebabkan munculnya bug pada perangkat lunak yang sedang dikembangkan.

Sumber :