Bapak Meiyi Darlies, S. Kom., berdasarkan data yang kami peroleh di media internet, arti dari kata Software adalah perangkat lunak. Seperti nama lainnya itu, yaitu perangkat lunak, sifatnya pun berbeda dengan hardware atau perangkat keras, kalau perangkat keras adalah komponen nyata yang bisa dilihat dan dipakai oleh manusia, jadi software atau Perangkat lunak tidak bisa dipakai dan dilihat secara fisik, software memang tidak tampak secara fisik dan tidak berwujud benda tapi bisa di operasikan oleh kita semuaa...
Pengertian Software komputer adalah sekumpulan data elektronik yang disimpan & diatur oleh komputer, data elektronik yang disimpan oleh komputer itu bisa berupa program atau instruksi yang akan menjalankan suatu perintah. Melalui sofware atau perangkat lunak inilah suatu komputer dapat menjalankan suatu perintah
Perangkat lunak atau software adalah program dari komputer. Perangkat lunak adalah program yang berisi instruksi untuk melakukan proses pengolahan data. Sekarang ini, tingkat pemrosesan yang dikerjakan perangkat lunak bersifat keinginan mesin mulai berubah dengan sifat keinginan manusia. Di dalam teori informasi, disusun hirarki informasi, mulai dari data/ fakta, kemudian setelah proses seleksi dan pengurutan menjadi sesuatu yang berguna menjadi informasi. Informasi yang disusun secara sistematis dengan suatu alur logika tertentu menjadi pengetahuan. Perangkat Keras tidak akan berfungsi kalau tidak ada perangkat lunak begitu pula sebaliknya perangkat lunak tidak berfungsi kalau tidak perangkat keras. Kedua perangkat tersebut saling berkaitan sehingga komputer bisa berfungsi dengan baik. Perkembangan teknologi terutama dalam perangkat keras terus diimbangi oleh perangkat lunaknya sehingga penggunaan komputer lebih maksimal.
Kemampuan komputer dirasakan sangat berkaitan dengan perangkat keras dan perangkat lunaknya, maka dari itu diperlukan perangkat lunak yang benar-benar mendukung perangkat kerasnya. Bentuk paling sederhana dari perangkat lunak, menggunakan aljabar Boolean, yang dijelaskan kembali sebagai binary digit (bit), yaitu 1 (benar) atau 0 (salah), cara ini sudah pasti sangat menyulitkan, sehingga orang mulai mengelompokkan bit tersebut menjadi nible (4 bit), byte (8 bit), word (16 bit), double word (32 bit).
Software berbayar merupakan perangkat lunak yang didistribusikan untuk tujuan komersil, setiap pengguna yang ingin menggunakan atau mendapatkan software tersebut dengan cara membeli atau membayar pada pihak yang mendistribusikannya. pengguna yang menggunakan software berbayar umumnya tidak diijinkan untuk menyebarluaskan software tersebut secara bebas tanpa ijin ada penerbitnya. contoh software berbayar ini misalnya adalah sistem microsoft windows, microsoft office, adobe photoshop, dll.
Freeware atau perangkat lunak gratis adalah perangkat lunak komputer berhak cipta yang gratis digunakan tanpa batasan waktu, berbeda dari shareware yang mewajibkan penggunanya membayar (misalnya setelah jangka waktu percobaan tertentu atau untuk memperoleh fungsi tambahan). Para pengembang perangkat gratis seringkali membuat perangkat gratis freeware “untuk disumbangkan kepada komunitas”, namun juga tetap ingin mempertahankan hak mereka sebagai pengembang dan memiliki kontrol terhadap pengembangan selanjutnya. Freeware juga diartikan sebagai program apapun yang didistribusikan gratis, tanpa biaya tambahan. Sebuah contoh utama adalah suite browser dan mail client dan Mozilla News, juga didistribusikan di bawah GPL (Free Software).
Free Software lebih mengarah kepada bebas penggunaan tetapi tidak harus gratis. Pada kenyataannya, namanya adalah karena bebas untuk mencoba perangkat lunak sumber terbuka (Open Source) dan di sanalah letak inti dari kebebasan: program-program di bawah GPL, sekali diperoleh dapat digunakan, disalin, dimodifikasi dan didistribusikan secara bebas. Jadi free software tidak mengarah kepada gratis pembelian tetapi penggunaan dan distribusi. Begitu keluar dari lisensi kita dapat menemukan berbagai cara untuk mendistribusikan perangkat lunak, termasuk freeware, shareware atau Adware. Klasifikasi ini mempengaruhi cara di mana program dipasarkan, dan independen dari lisensi perangkat lunak mana mereka berasal.
Perbedaan yang nyata antara Free Software dan Freeware. Konflik muncul dalam arti kata free dalam bahasa Inggris, yang berarti keduanya bebas dan gratis. Maka dari itu, dan seperti yang disebutkan sebelumnya, Free Software tidak perlu bebas, sama seperti Freeware tidak harus gratis.
Shareware juga bebas tetapi lebih dibatasi untuk waktu tertentu. Shareware adalah program terbatas didistribusikan baik sebagai demonstrasi atau versi evaluasi dengan fitur atau fungsi yang terbatas atau dengan menggunakan batas waktu yang ditetapkan (misalnya 30 hari) . Dengan demikian, memberikan pengguna kesempatan untuk menguji produk sebelum membeli dan kemudian membeli versi lengkap dari program. Sebuah contoh yang sangat jelas dari tipe ini adalah perangkat lunak antivirus, Perusahaan-perusahaan ini biasanya memudahkan pelepasan produk evaluasi yang hanya berlaku untuk jumlah hari tertentu. Setelah melewati maksimum, program akan berhenti bekerja dan Anda perlu membeli produk jika Anda ingin tetap menggunakannya.
Kita juga dapat menemukan perangkat lunak bebas sepenuhnya, namun termasuk dalam program periklanan, distribusi jenis ini disebut Adware. Sebuah contoh yang jelas adalah program Messenger dari Microsoft yang memungkinkan penggunaan perangkat lunak bebas dalam pertukaran untuk masuk dengan cara iklan banner atau pop-up.
Sekarang ini pembuatan perangkat lunak sudah menjadi suatu proses produksi yang sangat kompleks, dengan urutan proses yang panjang dengan melibatkan puluhan bahkan ratusan orang dalam pembuatannya. Berdasarkan perkembangannya perangkat lunak sampai dengan sekarang dibagi menjadi beberapa era yaitu :
1. Zaman Pemula (Pioneer) Bentuk perangkat lunak pada awalnya adalah sambungan-sambungan kabel ke antar bagian dalam komputer, Cara dalam mengakses komputer adalah menggunakan punched card yaitu kartu yang di lubangi. Penggunaan komputer saat itu masih dilakukan secara langsung, sebuah program untuk sebuah mesin untuk tujuan tertentu. Pada era ini, perangkat lunak merupakan satu kesatuan dengan perangkat kerasnya. Penggunaan komputer dilakukan secara langsung dan hasil yang selesai di kerjakan komputer berupa print out. Proses yang di lakukan di dalam komputer berupa baris instruksi yang secara berurutan di proses.
- Zaman Stabil Pada era stabil penggunaan komputer sudah banyak di gunakan, tidak hanya oleh kalangan peneliti dan akademi saja, tetapi juga oleh kalangan industri / perusahaan. Perusahaan perangkat lunak bermunculan, dan sebuah perangkat lunak dapat menjalankan beberapa fungsi, dari ini perangkat lunak mulai bergeser menjadi sebuah produk. Baris-baris perintah perangkat lunak yang di jalankan oleh komputer bukan lagi satu-satu, tapi sudah seperti banyak proses yang di lakukan secara serempak. Sebuah perangkat lunak mampu menyelesaikan banyak pengguna secara cepat. Pada era ini mulai di kenal sistem basis data, yang memisahkan antara program dengan data.
- Zaman Mikro Sejalan dengan semakin luasnya PC dan jaringan komputer di era ini, perangkat lunak juga berkembang untuk memenuhi kebutuhan perorangan. Perangkat lunak dapat di bedakan menjadi perangkat lunak sistem yang bertugas menangani internal dan perangkat lunak aplikasi yang di gunakan secara langsung oleh penggunanya untuk keperluan tertentu. Automatisasi yang ada di dalam perangkat lunak mengarah ke suatu jenis kecerdasan buatan.
- Zaman Modern Saat ini perangkat lunak sudah terdapat di mana-mana, tidak hanya pada sebuah superkomputer dengan 25 processor-nya, sebuah komputer genggampun telah di lengkapi dengan perangkat lunak yang dapat di sinkronkan dengan PC. Tidak hanya komputer, bahkan peralatan seperti telepon, TV, hingga ke mesin cuci, AC dan microwave, telah di tanamkan perangkat lunak untuk mengatur operasi peralatan itu. Dan yang hebatnya lagi adalah setiap peralatan itu akan mengarah pada suatu saat kelak akan dapat saling terhubung. Pembuatan sebuah perangkat lunak bukan lagi pekerjaan segelentir orang, tetapi telah menjadi pekerjaan banyak orang, dengan beberapa tahapan proses yang melibatkan berbagai disiplin ilmu dalam perancangannya. Tingkat kecerdasan yang ditunjukkan oleh perangkat lunak pun semakin meningkat, selain permasalahan teknis, perangkat lunak sekarang mulai bisa mengenal suara dan alat.
1842. PENULIS PERANGKAT LUNAK YANG PERTAMA
- Ada Augusta (1815 – 1853)
Merupakan orang pertama yang menulis perangkat lunak, diterapkan pada Babbage’s Analytical Engine. Namanya Diabadikan pada nama sebuah bahasa komputer, yaitu Ada.
Pada tahun 1983, Ada merupakan satu-satunya bahasa komputer yang digunakan pada Departemen Pertahanan Amerika Serikat untuk mengatur dan mengendalikan alat-alat perang, taktik dan sistem strategi pertahanan
1933. PROGRAM MEKANIK YANG PERTAMA
- Wallace J. Eckert ( 1902 – 1971 )
Menggabungkan beberapa mesin akuntansi kartu plong IBM yang berbeda.
Untuk menjalankan mesin ini sebagai satu kesatuan, Wallace J. Eckert membuat suatu program mekanik yang mengontrolnyo.
Bahasa Pemrograman Tingkat Tinggi
Bapak Meiyi Darlies, S. Kom., berdasarkan sumber yang saya dapatkan Bahasa Pemrograman tingkat tinggi pada komputer antara lain;
1957. FORTRAN
Suatu group di IBM diketuai oleh John Bakus mulai bekerja pada tahun 1945 untuk
teknik dan matematika yang diberi nama FORTRAN (FORmula TRANslator) yang merupakan bahasa pemrograman tingkat tinggi yang pertama.
1. 1957 FORTRAN diterapkan pada komputer IBM 704
2. 1958 FORTRAN II diterapkan pada komputer IBM 704, IBM 709, IBM 650
3. 1962 FORTRAN IV diterapkan pada komputer IBM 7030
4. 1966 FORTRAN IV distandarisasi oleh American Standards Association Committee sampai tahun 1978.
Suatu komite yang baru yaitu ANSI (American National Standars Institute) membentuk FORTRAN 77.
- 1958. LISP ( List Processor atau List Programming )
- 1958. ALGOL ( ALGOrithmic Language )
- 1959. COBOL ( Common Business Oriented Language )
- 1960. LOGO
- 1961. GPSS ( General-Purpose Systems Simulator )
- 1961. RPG ( Report Program Generator )
- 1962. APL ( A Programming Language)
- 1964. BASIC ( Beginners’ All-purpose Symbolic Instruction Code )
- 1966. PL/1 ( Programming Language version 1 )
- 1968. PILOT ( Programming Inquiry, Learning Or Teaching )
- 1969. FORTH
- 1970. PASCAL
- 1971. SHRDLU
- 1971. SAM76
- 1972. PROLOG
- 1972. SMALLTALK
- 1974. C
- 1974. COMAL
- 1975. BASIC pada komputer mikro yang pertama
- 1977. MODULA-2
- 1979. ADA
- 1976. ELECTRIC PENCIL
- 1979. WORD STAR
- 1979. APPLE WRITER
- 1979. VISICAL C
- 1981. DBASE-II
§ 1982. LOTUS 1-2-3
- 1954. SISTEM OPERASI YANG PERTAMA KALI
- 1960. Sistem operasi untuk komputer mini yang pertama kali
- 1969. UNIX
- 1970. CP/M
- 1980. MS-DOS
- 1985. MICROSOFT WINDOWS YANG PERTAMA
- 1987. IBM OPERATING SYSTEM/2
- 1988. WINDOWS/386
- 1990. WINDOWS 3.0
- 1993. MOSAIC, BROWSER INTERNET PERTAMA DI SISTEM WINDOWS
- 1995. WINDOWS 95
- 1998. WINDOWS 98
1945. KUTU YANG PERTAMA
Bapak Meiyi Darlies, S. Kom., berdasarkan sumber yang saya cari, Sewaktu mengembangkan komputer Harvard Mark II, suatu relay ditemukan rusak. Didalam relay yang rusak, ditemukan adanya sebuah bug (kutu) yang telah terjepit mati.
Mulai saat itu, bila komputer tidak bekerja atau suatu program komputer mengalami kesalahan, para ahli mengatakan mereka sedang melakukan proses debugging ( mencari kutu, yang dimaksud adalah mencari sebab kesalahannya). Debugging berasal dari kata bug. sampai sekarang istilah tersebut masih sangat populer.
Debugging adalah sebuah metode yang dilakukan oleh para pemrogram dan pengembang perangkat lunak untuk mencari dan mengurangi bug, atau kerusakan di dalam sebuah program komputer atau perangkat keras sehingga perangkat tersebut bekerja sesuai dengan harapan. Debugging cenderung lebih rumit ketika beberapa subsistem lainnya terikat dengan ketat dengannya, mengingat sebuah perubahan di satu sisi, mungkin dapat menyebabkan munculnya bug lain di dalam subsistem lainnya.
· Bug dengan terjemahan langsung ke bahasa Indonesia adalah serangga atau kutu. Bug merupakan suatu kesalahan desain pada suatu perangkat keras komputer atau perangkat lunak komputer yang menyebabkan peralatan atau program itu tidak berfungsi semestinya. Bug umumnya lebih umum dalam dunia perangkat lunak dibandingkan dengan perangkat
· keras.
Kenapa dinamakan bug?
Tahun 1945 sewaktu ukuran komputer masih sebesar kamar, pihak militer Amerika Serikat menggunakan komputer yang bernama “Mark 1″. Suatu hari komputer ini tidak berfungsi dengan semestinya, setelah komputer itu diperiksa ternyata ada suatu bagian perangkat keras di mana terdapat serangga yang tersangkut. Setelah serangga itu diangkat dari perangkat keras, komputer dapat berfungsi dengan baik. Maka sejak saat itu kata bug lekat dengan masalah-masalah pada komputer. Debugging adalah proses menghilangkan bug dari suatu program.
Pengujian perangkat lunak adalah proses yang dapat direncanakan dan ditentukan secara sistematis. Desain test case dapat dilakukan, strategi dapat ditentukan, dan hasil dapat dievaluasi berdasarkan harapan-harapan yang ditentukan sebelumnya.
Debugging terjadi sebagai akibat dari pengujian yang berhasil. Jika test case mengungkap kesalahan, maka debugging adalah proses yang menghasilkan penghilangan kesalahan. Perekayasa perangkat lunak yang mengevaluasi hasil suatu pengujian sering dihadapkan pada indikasi “simtomatis” dari suatu masalah pernagkat lunak, yaitu bahwa manisfestasi eksternaldari kesalahan dan penyebab internal kesalahan dapat tidak memiliki hubungan yang jelas satu dengan lainnya. Proses mental yang dipahami secara buruk yang menghubungkan sebuah symptom dengan suatu penyebab disebut debugging.
Debug "pengalihan sini Untuk perintah shell, lihat debug (perintah).. Untuk majalah Jerman, lihat Debug (majalah). Sebuah foto dari apocryphally bug "pertama" nyata, yang debugged pada tahun 1947.

Debugging adalah proses metodis untuk menemukan dan mengurangi jumlah bug, atau cacat, dalam sebuah program komputer atau sepotong perangkat keras elektronik, sehingga membuatnya berperilaku seperti yang diharapkan.
Debugging cenderung lebih sulit ketika berbagai subsistem yang erat digabungkan, seperti perubahan dalam satu dapat menyebabkan bug muncul di tempat lain. Banyak buku telah ditulis tentang debugging (lihat di bawah: Bacaan lebih lanjut), karena melibatkan berbagai aspek, termasuk: interaktif debugging, aliran kontrol, pengujian integrasi, file log, pemantauan (aplikasi, sistem), dump memori, profil, Statistical Process Control , dan taktik untuk desain khusus meningkatkan deteksi sementara menyederhanakan perubahan.
Ada beberapa kontroversi mengenai asal-usul dari "debugging" panjang.
Istilah "bug" dan "debugging" keduanya populer dikaitkan dengan Admiral Grace Hopper pada 1940-an [1]. Sementara ia bekerja pada Mark II Komputer di Harvard University, rekan-rekannya menemukan ngengat terjebak dalam sebuah relay dan dengan demikian menghambat operasi , dimana ia mengatakan bahwa mereka "debug" sistem. Namun "bug" dalam arti kesalahan teknis tanggal kembali setidaknya ke 1878 dan Thomas Edison (lihat bug perangkat lunak untuk pembahasan penuh), dan "debugging" tampaknya telah digunakan sebagai istilah di aeronautika sebelum memasuki dunia komputer. Memang, dalam sebuah wawancara Grace Hopper mengatakan bahwa dia tidak coining istilah. Ngengat sesuai dengan terminologi yang sudah ada, jadi diselamatkan.
Istilah "bug" dan "debugging" keduanya populer dikaitkan dengan Admiral Grace Hopper pada 1940-an [1]. Sementara ia bekerja pada Mark II Komputer di Harvard University, rekan-rekannya menemukan ngengat terjebak dalam sebuah relay dan dengan demikian menghambat operasi , dimana ia mengatakan bahwa mereka "debug" sistem. Namun "bug" dalam arti kesalahan teknis tanggal kembali setidaknya ke 1878 dan Thomas Edison (lihat bug perangkat lunak untuk pembahasan penuh), dan "debugging" tampaknya telah digunakan sebagai istilah di aeronautika sebelum memasuki dunia komputer. Memang, dalam sebuah wawancara Grace Hopper mengatakan bahwa dia tidak coining istilah. Ngengat sesuai dengan terminologi yang sudah ada, jadi diselamatkan.
Kamus Inggris Oxford entri untuk "debug" mengutip "debugging" istilah yang digunakan dalam referensi untuk pengujian mesin pesawat dalam sebuah artikel 1945 dalam Journal of Royal Aeronautical Society, bug Hopper itu ditemukan pada tanggal 9 September 1947. Istilah ini tidak diadopsi oleh pemrogram komputer sampai awal 1950-an. Artikel mani oleh Gill pada tahun 1951 adalah awal di-diskusi mendalam tentang kesalahan pemrograman, tetapi tidak menggunakan "bug" atau istilah "debugging". Di perpustakaan digital ACM, yang "debugging" istilah pertama kali digunakan dalam tiga makalah dari 1.952 ACM Rapat Nasional. Dua dari menggunakan tiga istilah dalam tanda kutip. Pada 1963, "debug" adalah istilah yang cukup umum untuk disebutkan secara sepintas tanpa penjelasan di halaman 1 dari CTSS manual.
Proses Debugging
Bapak Meiyi Darlies, S. Kom., Debugging bukan merupakan pengujian, tetapi selalu terjadi sebagai bagian akibat dari pengujian. Proses debungging dimulai dengan eksekusi terhadap suatu test case. Hasilnya dinilai, dan ditemukan kurangnya hubungan antara harapan dan yang sesungguhnya. Dalam banyak kasus, data yang tidak berkaitan merupakan gejala dari suatu penyebab pokok tetapi masih tersembunyi, sehingga perlu ada koreksi kesalahan.
Proses debugging akan selalu memiliki salah satu dari dua hasil akhir berikut:
- Penyebab akan ditemukan, dikoreksi, dan dihilangkan, atau
- Penyebab tidak akan ditemukan.
Dalam kasus yang terakhir, orang yang melakukan debugging mungkin mencurigai suatu penyebab, mendesainsuatu test case untuk membantu kecurigaannya, dan bekerja untuk koreksi kesalahan dengan gaya yang iterative. Beberapa karakteristik bug memberi kunci :
- Gejala dan penyebab dapat jauh secara geografis, dimana gejala dapat muncul didalam satu bagian dari suatu program, sementara penyebab dapat ditempatkan pada suatu sisi yang terlepas jauh.
- Gejala dapat hilang (kadang-kadang) ketika kesalahan yang lain dibetulkan.
- Gejala dapat benar-benar disebabkan oleh sesuatu yang tidak salah (misalnya pembulatan yang tidak akurat).
- Simpton dapat disebabkan oleh kesalahan manusia yang tidak dapat dengan mudah ditelusuri.
- Gejala dapat merupakan hasil dari masalah timing, dan bukan dari masalah pemrosesan.
- Mungkin sulit untuk mereproduksi kondisi input secara akurat (misalnya aplikasi real time dimana pengurutan input tidak ditentukan).
- Gejala dapat sebentar-sebentar. Hal ini sangat umum pada system yang embedded yang merangkai perangkat lunak dan perangkat keras yang tidak mungkin dilepaskan.
- Gejala dapat berhubungan dengan penyebab yang didistribusikan melewati sejumlah tugas yang bekerja pada prosesor yang berbeda.
Selama debugging, kita menemukan kesalahan-kesalahan mulai dari gangguan yang halus (missal format output yang tidak betul) sampai katrastropis (misalnya kegagalan system yang menyebabkan kerusakan fisik atau ekonomis).
Sebagai akibat dari peningkatan keslahan, jumlah tekanan untuk menemukan kesalahan juga bertambah. Sering kali tekanan memaksa seorang pengembang perangkat lunak untuk membetulkan keslahan dan pada saat yang sama memunculkan lagi dua kesalahan baru.
Pertimbangan Psikologis
Sayangnya muncul banyak bukti bahwa kekuatan debugging adalah sifat bawaan manusia. Banyak orang yang cakap dalam hal ini, sementara banyak juga yang tidak. Menanggapi aspek manusia dari debugging. Shneiderman [SHN80] menyatakan :
“Debugging merupakan salah satu dari berbagai bagian pemrograman yang membuat lebih frustasi. Debugging memiliki elemen pemecahan masalah atau pengganggu otak, yang bersama dengan penghindaran kesadaran bahwa Anda melakukan suatu kesalahan. Kekhawatiran yang meningkat dan keengganan untuk menerima, kesalahan akan meningkatkan kesulitan tugas. Sayangnya, ada keluhan yang sangat mendalam mengenai pembebasan dan pengurangan ketegangan ketika pada akhirnya bug ……… dikoreksi.
Meskipun mungkin sulit untuk mempelajari debugging, sejumlah pendekatan terhadap masalah tersebut dapat diusulkan. Kita akan melihat dalam sub bab selanjutnya.
Pendekatan-pendekatan Debugging
Tanpa memperhatikan pendekatan yang diambil, debugging memiliki satu sasaran yang diabaikan, untuk menemukan dan mengkoreksi penyebab kesalahan perangkat lunak. Sasaran tersebut direalisasi dengan suatu kombinasi evaluasi yang sistematis, intuisi, dan keberuntungan. Bradley (BRA85) menggambarkan pendekatan Debugging dengan cara berikut : “Debugging adalah sebuah aplikasi langsung dari metodekeilmuan yang telah dikembangkan selama 2500 tahun. Dasar dari debugging adalah meletakkan sumber-sumber masalah (penyebab) dengan partisi biner melalui hipotesis kerja yang memperkirakan nilai-nilai baru yang akan diuji.”
Ambillah contoh non-perangkat lunak sederhana, yaitu:
Lampu dirumah saya tidak bekerja. Bila tidak ada yang bekerja didalam rumah itu, penyebabnya tentu pada pemutus rangkaian utama atau sebab dari luar. Saya melihat sekeliling untuk melihat apakah lampu para tetangga juga mati. Saya memasukkan lampu yang dicurigai kedalam soket yang bekerja dan menyelidiki lampu rangkaian yang dicurigai. Begitulah berbagai pilihan hipotesa dan pengujian.
3 kategoti pendekatan debugging dapat diusulkan (MYE79)
Bapak Meiyi Darlies, S. Kom.,berdasarkan sumber informasi yang saya peroleh,, secara umum, ada tiga kategoti pendekatan debugging dapat diusulkan (MYE79) :
- 1. Gaya yang kasar (Brute force)
Kategori debugging brute force mungkin merupakan yang paling umum dan metode yang paling efisien untuk mengisolasi penyebab kesalahan perangkat lunak. Kita mengaplikasikan metode debugging brute force bila semua yang lain telah gagal.
Dengan menggunakan filosofi ”biarkan komputer menemukan kesalahan”, tempat sampah memori dipakai, penelusuran runtime dilakukan, dan program dibebani dengan statemen WRITE. Kita mengharapkan bahwa dimanapun didalam rawa informasi yang diproduksi, kita akan menemukan suatu kunci yang akan membawa kita kepada penyebab kesalahan. Meskipun banyaknya informasi yang dihasilkan pada akhirnya akan membawa kita meraih sukses, lebih sering dia menyebabkan kita menghambur-hamburkan usaha dan waktu. Kita harus memikirkannya terlebih dahulu.
2. Penelusuran balik (backtracking)
Backtracking adalah pendekatan debugging yang sangat umum yang dapat digunakan secara sukses didalam program yang kecil. Mulai pada sisi dimana suatu gejala diungkap, kode sumber ditelusuri balik (secara manual) samapai sisi penyebab ditemukan. Sayangnya, bila jumlah baris sumber bertambah, maka jumlah jalur balik potensial dapat sangat banyak.
3. Eliminasi penyebab
Cause elimination dimanisfestasikan oleh induksi atau deduksi serta mengawali konsep partisi biner. Data yang berhubungan dengan kejadian kesalahan dikumpulkan untuk mengisolasi penyebab potensial. Hipotesis penyebab dibuat dan data digunakan untuk membuktikan penolakan hipotesis tersebut. Sebagai alternatif, daftar semua penyebab yang mungkin dikembangkan dan dilakukan pengujian untuk mengeliminasi masing-masing kesalahan. Jika pengujian awal menunjukkan bahwa suatu hipotesis penyebab memberikan gambaran hasil yang jelas, maka data itu disaring sebagai usaha untuk mengisolasi bug.
Masing-masing pendekatan debugging tersebut dapat ditambah dengan piranti debugging. Kita dapat mengaplikasikan berbagai kompiler debugging yang luas, bantuan debugging yang dinamis (tracer), generator test case, ruang sisa memori dan peta cross-reference.
Namun piranti bukanlah pengganti bagi evaluasi yang berhati-hati yang didasarkan atas dokumen desain perangkat lunak yang lengkap dan kode sumber yang jelas. Sekali bug ditemukan, bug harus dibetulkan. Tetapi seperti telah kita catat, koreksi terhadap suatu bug dapat memunculkan kesalahan lain sehingga lebih banyak merugikan daripada menguntungkan. Van Vleck (FAN89) mengusulkan tiga pertanyaan sederhana yang harus diajukan kepada perekayasa perangkat lunak sebelum melakukan koreksi yang menghilangkan penyebab suatu bug, yaitu ;
1. Apakah penyebab bug direproduksi didalam bagian lain program tersebut?
Dalam berbagai situasi, kesalahan program disebabkan oleh sebuah contoh logika yang keliru yang dapat dibuat ulang ditempat lain. Pertimbangan eksplisit dari contoh logika tersebut akan menghasilkan penemuan kesalahan yang lain.
2. Apa ”bug selanjutnya,” yang akan dimunculkan oleh perbaikan yang akan dibuat?
Sebelum koreksi dibuat, kode sumber (atau lebih baik,desain) harus dievaluasi untuk memperkirakan pemasangan logika dan struktur data. Bila koreksi akan dilakukan pada bagian program yang akan dirangkai, maka harus ada perhatian khusus bila banyak perubahan dilakukan.
3. Apa yang dapat kita lakukan untuk menghindari bug ini didalam tempat pertama?
Pertanyaan ini merupakan langkah pertama untuk membangun pendekatan jaminan kualitas perangkat lunak statistik. Bila kita mengkoreksi proses dan produk, bug akan dihilangkan dari program yang ada dan dapat dieliminasi dari semua program selanjutnya
Sebagai perangkat lunak dan elektronik sistem telah menjadi umumnya lebih kompleks, berbagai teknik debugging umum telah diperluas dengan metode yang lebih untuk mendeteksi anomali, menilai dampak, dan jadwal patch perangkat lunak atau update penuh ke sistem. Kata-kata "anomali" dan "perbedaan" dapat digunakan, sebagai istilah yang lebih netral, untuk menghindari kata "kesalahan" dan "cacat" atau "bug" di mana mungkin ada implikasi bahwa semua yang disebut kesalahan, cacat atau bug harus tetap (di semua biaya). Sebaliknya, penilaian dampak dapat dibuat untuk menentukan apakah perubahan untuk menghapus sebuah anomali) akan biaya-efektif untuk sistem, atau mungkin dijadwalkan rilis baru mungkin membuat perubahan yang tidak perlu. Tidak semua masalah adalah hidup-kritis atau misi-kritis dalam suatu sistem. Juga, penting untuk menghindari situasi di mana perubahan mungkin akan lebih menjengkelkan bagi pengguna, jangka panjang, daripada hidup dengan masalah yang dikenal (dimana "obat akan lebih buruk daripada penyakit itu"). Mendasarkan keputusan dari penerimaan dari beberapa anomali dapat menghindari budaya dari mandat yang "nol-cacat", di mana orang mungkin tergoda untuk menyangkal keberadaan masalah sehingga hasilnya akan muncul sebagai nol cacat. Mengingat masalah agunan, seperti penilaian dampak biaya versus manfaat, maka teknik-teknik debugging yang lebih luas akan memperluas untuk menentukan frekuensi anomali (seberapa sering sama "bug" terjadi) untuk membantu menilai dampaknya terhadap keseluruhan sistem. Peralatan
Debugger Debugging rentang, dalam kompleksitas, dari memperbaiki kesalahan sederhana untuk melakukan tugas-tugas yang panjang dan melelahkan pengumpulan data, analisis, dan penjadwalan update. Keterampilan debugging programmer dapat menjadi faktor utama dalam kemampuan untuk debug masalah, tetapi kesulitan debug software sangat bervariasi dengan kompleksitas sistem, dan juga tergantung, sampai batas tertentu, pada bahasa pemrograman yang digunakan dan alat-alat yang tersedia, seperti debugger. Debugger adalah perangkat lunak alat yang memungkinkan programmer untuk memantau pelaksanaan program, menghentikannya, memulai kembali itu, breakpoints set, dan rubah nilai-nilai dalam memori. Istilah debugger juga dapat merujuk kepada orang yang melakukan debugging.
Umumnya, bahasa pemrograman tingkat tinggi, seperti Java, membuat debug lebih mudah, karena mereka memiliki fitur seperti penanganan eksepsi yang membuat sumber-sumber nyata dari perilaku tak menentu lebih mudah untuk spot. Dalam bahasa pemrograman seperti C atau perakitan, bug diam dapat menyebabkan masalah seperti korupsi memori, dan sering sulit untuk melihat di mana masalah awal terjadi. Dalam kasus-kasus, debugger memori alat mungkin diperlukan.
Dalam situasi tertentu, tujuan umum perangkat lunak yang spesifik dalam bahasa alam dapat sangat berguna. Ini mengambil bentuk alat analisis kode statis. Alat ini mencari satu set yang sangat spesifik masalah yang diketahui, beberapa yang umum dan beberapa langka, dalam kode sumber. Semua isu-isu seperti terdeteksi oleh alat ini akan jarang dijemput oleh kompilator atau penerjemah, sehingga mereka tidak sintaks catur, tapi catur lebih semantik. Beberapa alat mengklaim dapat mendeteksi masalah unik 300 +. Kedua alat komersial dan bebas ada dalam berbagai bahasa. Alat ini dapat sangat berguna ketika memeriksa pohon-pohon sumber yang sangat besar, di mana ia praktis untuk melakukan Walkthroughs kode.
Bapak Meiyi Darlies, S. Kom., ada Sebuah contoh khas masalah akan terdeteksi variabel dereference yang terjadi sebelum variabel diberikan nilai. Contoh lain akan melakukan pengecekan tipe yang kuat ketika bahasa tidak memerlukan tersebut. Jadi, mereka lebih baik di menemukan kesalahan mungkin, versus kesalahan aktual. Akibatnya, alat ini memiliki reputasi positif palsu. Program Unix kain tua adalah contoh awal.
Untuk debugging hardware elektronik (misalnya, perangkat keras komputer) serta perangkat lunak tingkat rendah (misalnya, BIOS, device driver) dan firmware, instrumen seperti osiloskop, analisis logika atau di-sirkuit emulator (ICES) yang sering digunakan, sendiri atau dalam kombinasi. Sebuah ICE dapat melakukan banyak tugas debugger perangkat lunak khas pada tingkat rendah perangkat lunak dan firmware.
Biasanya langkah pertama dalam debugging adalah upaya untuk mereproduksi masalah. Hal ini bisa menjadi tugas non-sepele, misalnya seperti proses paralel atau beberapa bug perangkat lunak yang tidak biasa. Juga, lingkungan pengguna spesifik dan penggunaan sejarah dapat membuat sulit untuk mereproduksi masalah.
Setelah bug tersebut direproduksi, input dari program mungkin perlu disederhanakan untuk membuatnya lebih mudah untuk debug. Sebagai contoh, sebuah bug dalam kompilator dapat membuat crash ketika parsing beberapa file sumber besar. Namun, setelah penyederhanaan kasus tes, hanya beberapa baris dari file sumber asli dapat cukup untuk mereproduksi kecelakaan yang sama. Penyederhanaan tersebut dapat dibuat secara manual, menggunakan membagi-dan-menaklukkan pendekatan. Programmer akan mencoba untuk menghapus beberapa bagian kasus pengujian awal dan periksa apakah masalahnya masih ada. Ketika debugging masalah dengan GUI, pemrogram dapat mencoba untuk melewati beberapa interaksi pengguna dari masalah asli deskripsi dan periksa apakah tindakan yang tersisa cukup untuk bug untuk muncul.
Setelah kasus uji cukup sederhana, programmer dapat menggunakan alat debugger untuk memeriksa keadaan program.. Atau, menelusuri dapat digunakan. Dalam kasus sederhana, melacak hanya beberapa pernyataan cetak, yang output nilai-nilai variabel pada titik-titik tertentu dari eksekusi program.
Cetak (atau melacak) debug adalah tindakan menonton pernyataan trace (hidup atau direkam), atau pernyataan cetak, yang menunjukkan aliran eksekusi dari suatu proses. Hal ini kadang-kadang disebut debugging printf, karena penggunaan pernyataan printf di C.
Remote debugging adalah proses debug sebuah program yang berjalan pada sistem yang berbeda daripada debugger. Untuk memulai debug terpencil, debugger terhubung ke sistem remote melalui jaringan. Setelah terhubung, debugger dapat mengendalikan pelaksanaan program pada sistem remote dan mengambil informasi tentang negaranya.
Post-mortem debugging debugging program setelah itu telah jatuh. Teknik terkait sering termasuk berbagai teknik penelusuran dari proses jatuh. Dump dari proses tersebut dapat diperoleh secara otomatis oleh sistem (misalnya, ketika proses telah dihentikan karena pengecualian tidak tertangani), atau oleh programmer-instruksi dimasukkan, atau secara manual oleh pengguna interaktif.
Debugging untuk sistem embedded
Berbeda dengan lingkungan komputer tujuan desain perangkat lunak umum, karakteristik utama dari lingkungan tertanam adalah banyaknya platform yang berbeda tersedia untuk para pengembang (CPU arsitektur, vendor, sistem operasi dan varian mereka). Embedded system adalah, menurut definisi, tidak tujuan umum desain: mereka biasanya dikembangkan untuk suatu tugas tunggal (atau rentang kecil tugas), dan platform yang dipilih secara khusus untuk mengoptimalkan aplikasi tersebut. Tidak hanya kenyataan ini membuat hidup sulit untuk pengembang sistem embedded, juga membuat debugging dan pengujian sistem ini sulit juga, karena alat debugging yang berbeda diperlukan di platform yang berbeda. Sederhananya, embedded system debugger memiliki dua persyaratan utama.
Untuk mengidentifikasi dan memperbaiki bug dalam sistem (masalah logis atau sinkronisasi misalnya dalam kode, atau kesalahan desain dalam hardware); untuk mengumpulkan informasi tentang negara operasi dari sistem yang kemudian dapat digunakan untuk menganalisis sistem: untuk menemukan cara-cara untuk meningkatkan performa atau untuk mengoptimalkan karakteristik penting lainnya (misalnya konsumsi energi, keandalan, respon real-time dll).
Anti-debugging adalah "pelaksanaan satu atau lebih teknik dalam kode komputer yang menghambat upaya reverse engineering atau debugging proses target". Hal ini aktif digunakan dalam salinan yang sah skema perlindungan, tetapi juga digunakan oleh malware untuk mempersulit . deteksi dan eliminasi nya. Teknik yang digunakan dalam anti-debugging termasuk:
1. API-based: memeriksa keberadaan debugger menggunakan sistem informasi
Pengecualian-based: memeriksa untuk melihat apakah pengecualian yang mengganggu
Pengecualian-based: memeriksa untuk melihat apakah pengecualian yang mengganggu
2. Proses dan thread blok: memeriksa apakah proses dan thread blok telah dimanipulasi
Modifikasi kode: memeriksa kode modifikasi yang dibuat oleh perangkat lunak penanganan debugger breakpoints.
Modifikasi kode: memeriksa kode modifikasi yang dibuat oleh perangkat lunak penanganan debugger breakpoints.
3. Hardware-dan mendaftarkan-based: memeriksa hardware breakpoints dan CPU registeR.
4. Timing dan latensi: mengecek waktu yang dibutuhkan untuk pelaksanaan instruksi.
Ditulis oleh; Dicky Suprapto/1CB
Tidak ada komentar:
Posting Komentar