Softwere Bug (Pemrograman Komputer)

 Hasil gambar untuk software bug
Sebuah bug perangkat lunak adalah sebuah kesalahan, cacat, kegagalan , atau kesalahan dalam sebuah program komputer atau sistem yang menyebabkan untuk menghasilkan hasil yang salah atau tidak terduga, atau untuk berperilaku dengan cara yang tidak diinginkan. Kebanyakan bug timbul dari kesalahan dan kesalahan yang dilakukan oleh orang-orang di salah satu program kode sumber atau perusahaan desain , atau dalam kerangka kerja dan sistem operasi yang digunakan oleh program-program tersebut, dan beberapa disebabkan oleh compiler menghasilkan kode yang salah. Sebuah program yang berisi sejumlah besar bug, dan / atau bug yang serius mengganggu fungsinya, dikatakan buggy. Laporan merinci bug dalam sebuah program yang dikenal sebagai laporan bug, laporan cacat, laporan kesalahan, laporan masalah, laporan masalah, permintaan perubahan, dan sebagainya.

Bugs memicu kesalahan yang pada gilirannya dapat memiliki berbagai efek riak , dengan berbagai tingkat ketidaknyamanan kepada pengguna program. Beberapa bug hanya memiliki efek halus pada fungsi program, dan dengan demikian dapat berbohong terdeteksi untuk waktu yang lama. Bug lebih serius dapat menyebabkan program untuk kecelakaan atau membekukan . Lainnya memenuhi syarat sebagai bug keamanan dan kekuatan misalnya memungkinkan pengguna jahat untuk melewati kontrol akses untuk mendapatkan hak sah .


Hasil bug mungkin sangat serius. Bug di kode mengendalikan Therac-25 terapi radiasi mesin yang langsung bertanggung jawab atas beberapa kematian pasien pada 1980-an. Pada tahun 1996, European Space Agency 's US $ 1 miliar prototipe Ariane 5 roket hancur kurang dari satu menit setelah peluncuran, karena bug dalam program komputer bimbingan on-board. Pada Juni 1994, Royal Air Force Chinook jatuh ke dalam Mull Rhapsody , menewaskan 29. Ini awalnya dianggap sebagai kesalahan pilot, namun investigasi oleh Komputer Weekly menemukan bukti yang cukup untuk meyakinkan House of Lords penyelidikan yang mungkin telah disebabkan oleh bug perangkat lunak dalam pesawat kontrol mesin komputer .

Pada tahun 2002, sebuah studi yang dilakukan oleh US Department of Commerce ' Institut Nasional Standar dan Teknologi menyimpulkan bahwa "software bug, atau kesalahan, begitu umum dan begitu merugikan bahwa mereka biaya ekonomi AS diperkirakan $ 59000000000 per tahun, atau sekitar 0,6 persen dari produk domestik bruto ".

Penggunaan istilah "bug" untuk menggambarkan cacat dijelaskan telah menjadi bagian dari rekayasa jargon selama beberapa dekade dan mendahului komputer dan perangkat lunak komputer, tetapi mungkin pada awalnya telah digunakan dalam rekayasa hardware untuk menggambarkan kerusakan mekanik. Sebagai contoh, Thomas Edison menulis kata-kata berikut dalam sebuah surat kepada seorang rekan pada tahun 1878:

Sudah begitu di semua penemuan saya. Langkah pertama adalah intuisi, dan dilengkapi dengan burst, maka kesulitan timbul - hal ini memberikan keluar dan kemudian bahwa "Bugs" - sebagai kesalahan kecil tersebut dan kesulitan disebut - menunjukkan diri mereka sendiri dan menonton bulan intens, studi dan tenaga kerja yang diperlukan sebelum keberhasilan komersial atau kegagalan tentu tercapai.

Sebuah halaman dari Harvard Mark II log elektromekanis komputer, menampilkan ngengat mati yang telah dihapus dari perangkat. Istilah "bug" digunakan dalam account dengan pelopor komputer Grace Hopper ., yang dipublikasikan 

penyebab kerusakan di komputer elektromekanis awal Sebuah versi khas cerita diberikan oleh kutipan ini:
Pada tahun 1946, ketika Hopper dibebaskan dari tugas aktif, ia bergabung dengan Fakultas Harvard di Laboratorium Komputasi di mana ia melanjutkan pekerjaannya pada Mark II dan Mark III . Operator ditelusuri kesalahan dalam Mark II ke ngengat terjebak dalam sebuah relay, disebut dengan bug. Bug ini dengan hati-hati dilepas dan ditempel ke buku log. Berasal dari bug pertama, hari ini kita sebut kesalahan atau kesalahan yang dalam program bug.

Hopper itu tidak benar-benar orang yang menemukan serangga, saat ia siap mengakui. Tanggal dalam buku log adalah September 9, 1947, meskipun kadang-kadang keliru dilaporkan sebagai 1945. Operator yang menemukan itu, termasuk William "Bill" Burke, kemudian dari Naval Weapons Laboratory , Dahlgren , Virginia , yang akrab dengan istilah teknik dan, geli, terus serangga dengan notasi "Pertama kasus aktual bug yang ditemukan." Hopper senang menceritakan cerita.  Buku ini log, lengkap dengan dilampirkan ngengat, merupakan bagian dari koleksi Smithsonian National Museum of American History , meskipun tidak saat ini dipamerkan.

Meskipun dipastikan bahwa operator Harvard Mark II tidak koin istilah "bug", telah diusulkan bahwa insiden itu memberikan kontribusi terhadap meluasnya penggunaan dan penerimaan dari istilah dalam leksikon perangkat lunak komputer. Istilah terkait " men-debug "juga muncul untuk mendahului penggunaannya dalam komputasi: the Oxford English Dictionary etimologi 's kata berisi pengesahan dari tahun 1945, dalam konteks mesin pesawat

Bagaimana bug masuk ke software
Dalam proyek-proyek pengembangan perangkat lunak, sebuah "kesalahan" atau "kesalahan" dapat diperkenalkan pada setiap tahap selama pengembangan. Bugs adalah konsekuensi dari sifat faktor manusia dalam tugas pemrograman. Mereka muncul dari kelalaian atau reksa kesalahpahaman yang dibuat oleh tim software selama spesifikasi, desain, coding, entri data dan dokumentasi. Sebagai contoh, dalam menciptakan suatu program yang relatif sederhana untuk mengurutkan daftar kata ke dalam urutan abjad, desain seseorang mungkin gagal untuk mempertimbangkan apa yang harus terjadi ketika kata berisi tanda hubung . Mungkin, ketika mengubah desain abstrak ke dalam bahasa pemrograman yang dipilih, seseorang mungkin secara tidak sengaja membuat off-per-satu kesalahan dan gagal untuk mengurutkan kata terakhir dalam daftar. Akhirnya, saat mengetik program yang dihasilkan ke dalam komputer, yang mungkin sengaja mengetik "<" di mana ">" dimaksudkan, mungkin menyebabkan kata-kata yang diurutkan ke dalam urutan abjad terbalik. Kategori lain dari bug disebut race condition .

Bug lebih 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 melacak secara mental setiap cara yang mungkin di mana bagian dapat berinteraksi.

Pencegahan
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:

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

Teknik pemrograman
Bugs sering membuat inkonsistensi dalam data internal dari program berjalan. Program dapat ditulis untuk memeriksa konsistensi data internal mereka sendiri sambil berjalan. Jika ketidakkonsistenan ditemui, program ini dapat segera menghentikan, sehingga bug dapat ditemukan dan diperbaiki. Atau, program ini hanya dapat menginformasikan pengguna, berusaha untuk memperbaiki ketidakkonsistenan, dan terus berjalan.

Metodologi pengembangan
Ada 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 desain perangkat lunak juga). Sebagai contoh, resmi spesifikasi program yang digunakan untuk menyatakan perilaku yang tepat dari program, sehingga desain bug dapat dihilangkan. Sayangnya, spesifikasi formal tidak praktis atau tidak mungkin untuk apa pun kecuali program terpendek, karena masalah ledakan kombinatorial dan ketidakpastian.

Di zaman modern, pendekatan yang populer meliputi otomatis unit testing dan otomatis pengujian penerimaan (kadang-kadang pergi ke ekstrim pengembangan uji-driven ), dan pengembangan perangkat lunak tangkas (yang sering dikombinasikan dengan , atau bahkan dalam beberapa kasus mandat , pengujian otomatis). Semua pendekatan ini seharusnya menangkap bug dan buruk ditentukan persyaratan segera setelah mereka diperkenalkan, yang seharusnya membuat mereka lebih mudah dan lebih murah untuk memperbaiki, dan untuk menangkap setidaknya beberapa dari mereka sebelum mereka masuk ke dalam penggunaan produksi.

Dukungan bahasa pemrograman
Bahasa pemrograman sering termasuk fitur yang membantu programmer mencegah bug, seperti statis sistem jenis , dibatasi ruang nama dan pemrograman modular , antara lain. Sebagai contoh, ketika seorang programmer menulis (pseudocode) LET REAL_VALUE PI = "THREE AND A BIT" , meskipun ini mungkin sintaksis benar, kode gagal suatu jenis cek . Tergantung pada bahasa dan implementasi, hal ini dapat ditangkap oleh kompilator atau run-time . Selain itu, banyak bahasa baru-baru ini ditemukan telah sengaja dikecualikan fitur yang dapat dengan mudah menyebabkan bug, dengan mengorbankan membuat kode lebih lambat daripada perlu menjadi: prinsip umum adalah bahwa, karena hukum Moore , komputer bisa lebih cepat dan insinyur perangkat lunak mendapatkan lebih lambat; hampir selalu lebih baik untuk menulis sederhana, kode lebih lambat dari "pintar", kode ditebak, terutama mengingat bahwa biaya pemeliharaan cukup besar. Sebagai contoh, bahasa pemrograman Java tidak mendukung pointer aritmatika, implementasi beberapa bahasa seperti Pascal dan bahasa scripting sering memiliki runtime batas memeriksa array, setidaknya dalam debugging membangun.

Analisis kode
Alat untuk analisis kode membantu pengembang dengan memeriksa teks program luar kemampuan compiler untuk menemukan masalah potensial. Meskipun secara umum masalah menemukan semua kesalahan pemrograman diberikan spesifikasi tidak dipecahkan (lihat masalah terputus-putus ), 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 berjalan, baik secara khusus untuk menemukan masalah seperti kemacetan atau untuk memberikan kepastian untuk memperbaiki kerja, dapat tertanam dalam kode eksplisit (mungkin sesederhana pernyataan yang mengatakan PRINT "I AM HERE" ), atau disediakan sebagai alat. Hal ini sering kejutan untuk menemukan di mana sebagian besar waktu diambil oleh sepotong kode, dan penghapusan ini asumsi dapat menyebabkan kode yang akan ditulis ulang.
Share:
spacer

No comments:

Post a Comment