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.
No comments:
Post a Comment