Prinsip & Konsep menuntun pada bahasa dan tools yang akan digunakan pada saat koding seperti dari cara pemrogramannya, bahasa yang akan digunakan & metode dari programming tersebut.
Hal – hal berikut terdiri dari:
- Preparation Principle (Dasar Kesiapan)
- Coding Principle (Dasar Koding)
- Validation Principle (Dasar Validasi)
- Testing Principle (Dasar Pengetesan)
1. Persiapan yang dilakukan sebelum koding :
- Mengerti Permasalahan yang akan diselesaikan.
- Mengerti Desain dasar dari permasalahan dan konsep yang akan dibuat.
- Pilih Bahasa Pemrograman yang sesuai dengan kebutuhan software dan lingkungan yang khusus untuk software tersebut.
- Pilih Bahasa Pemrograman yang memang sesuai dengan pembuat agar pekerjaan jadi lebih mudah.
- Buat sebuah test setelah kode yang dikerjakan selesai untuk mengujinya.
Penjelasan dari poin-poin diatas adalah :
- Sebelum kita melakukan koding sebaiknya kita memahami dengan jelas permasalahan yang akan dihadapi saat koding serta perencanaan yang cukup.
- Memahami konsep dan desain dari hal yang akan dibuat seperti membuat pointer,kita harus memahami kegunaan dari karakter dan fungsi dari karakter tersebut.
- Pada saat akan melakukan koding sebaiknya pertimbangkan kebutuhan dari hal yang akan dibuat dan mendukung dari kodingan tersebut terutama di bagian bahasa pemrogramannya.
- Memilih lingkungan untuk program yang membuat menjadi lebih mudah, seperti jika kebutuhan dari software tersebut digunakan di ponsel maka gunakan bahasa pemrograman yang berbasis mobile environment.
- Setelah kodingan beres maka sebaiknya kita membuat sebuah unit tes untuk melakukan percobaan terhadap hasil kodingan agar mengetahui kesalahan atau beresnya hasil kodingan tersebut.
2. Prinsip-prinsip Koding
Selama koding berlangsung perlu diperhatikan hal - hal berikut :
1. Mengharuskan algoritma Anda mengikuti praktek pemrograman terstruktur. Pemrograman terstruktur adalah yang mempunyai modul, struktur proses (sequence, selection, repetition), dan hanya ada single entry dan single exit.
2. Memilih struktur data yang akan memenuhi kebutuhan desain. struktur data beberapa macam, yaitu array, binary tree, linked list.
3. Memahami arsitektur software dan membuat interface yang konsisten dengan arsitektur tersebut.
4. Menjaga logika berkondisi sesederhana mungkin. Contoh :
begin int maximum, minimum, nilai if (nilai > 20) then maximum <- nilai else minimum <- nilai endif end Pada bagian syarat kondisi (nilai > 20) menunjukkan kesederhanaan bahwa jika variabel nilai lebih besar dari bilangan 20, maka lakukan statement 'then'. Namun jika kondisi tidak terpenuhi, maka akan masuk ke statement 'else'. Logika yang tidak sederhana adalah pada bagian kondisi terdapat banyak syarat yang harus dipenuhi.
5. Membuat nested loops yang mudah untuk dites. biasanya nested loops dapat membingungkan pengetes yang membaca algoritma tersebut. misalkan ada loop di dalam loop. loop yang di dalam dan di luar harus diberikan comment yang jelas agar tidak membingungkan.
6. Memilih nama variabel yang mempunyai arti dan mengikuti standard coding lokal lainnya. ini diperlukan agar pengetes atau siapa pun yang membaca dan menggunakan algoritma tersebut dapat mudah membacanya. contoh : int max = untuk menyimpan nilai maksimum.
7. Menulis kode yang self-documenting. maksudnya setiap code yang dibuat harus disertakan comment agar saat dibukka kembali pengetes maupun pembuat algoritma tidak bingung saat membacanya.
8. Membuat tampilan visual yang membantu untuk mengertikan kode. Seperti indentasi (penjorokan ke dalam seperti paragraf).
3. Validation Principles
Dalam tahap konstruksi (coding), validity suatu program harus benar-benar di jaga. Apakah program berjalan dengan semestinya atau tidak. Dalam tahap konstuksi, diharapkan untuk tidak terburu-buru. Untuk mengurangi resiko mendapatkan error yang sangat rumit, sebaiknya setelah menyelesaikan koding pertama kita tidak langsung mengerjakan coding berikutnya, tetapi harus dipastikan bahwa :
- Program berjalan dengan benar.
- Melakukan test dan mengoreksi error yang terjadi.
- Refactor the code
3.1 Program berjalan dengan benar
Program yang telah dibuat berjalan sesuai logika yang diharapkan. Berikut adalah contoh program yang tidak berjalan dengan benar. Misalkan dalam membuat program mencari nilai terkecil dalam sebuah array terdapat code seperti berikut :min : integer
x : array of integer
min <- x[1]
for i <- 1 to 10 do
if min <>
min <- x[i]
end if
end for
Pada program diatas terjadi kesalahan logika, hasil akhir pada variabel ‘min’ akan menghasilkan nilai maksimum sedangkan yang diharapkan adalah nilai minimum.
3.2 Melakukan test dan mengoreksi error yang terjadi.
Menyiapkan suatu test untuk program yang telah dibuat. Untuk mengetahui program berjalan dengan baik atau tidak, misalkan pada program no 1 kita buat test dengan menyiapkan data yang 1,2,3,4,5,6,7,8,9,10. Jika hasil akhir bukan angka 1, maka bisa dipastikan bahwa program tidak berjalan dengan baik. Segera koreksi program.
3.3 Refactor the code
Maksud refactor disini adalah optimasi program. Misalkan pada program pada no. 1 :
a. Program hanya berlaku untuk array dengan panjang elemen 10. Maka untuk optimasi, kita bisa menambahkan sebuah variabel untuk menampung panjang elemen array. Berikut setelah program di optimasi :
(perubahan ditandai dengan bold dan underline)
min : integer
x : array of integer
length : integer
min <- x[1]
for i <- 1 to length do
if min > x[i] then
min <- x[i]
end if
end for
b. Program melakukan task yang sia-sia. Pada loop yang pertama, program membandingkan nilai yang sama yaitu ‘min’ dengan x[1] padahal sudah bisa dilihat bahwa initialisasi ‘min’ adalah x[1] maka untuk optimasi adalah :
(perubahan ditandai dengan bold dan underline)
min : integer
x : array of integer
length : integer
min <- x[1]
for i <- 2 to length do
if min > x[i] then
min <- x[i]
end if
end for
4. Testing Principles
Secara garis besar, penjelasan pengetesan yaitu :- Pengetesan adalah sebuah proses dari pengeksekusian program dengan maksud untuk menemukan error/kesalahan.
- Pengetesan yang baik dalam hal ini memiliki peluang yang tinggi untuk menemukan error yang belum ditemukan ketika proses koding berlangsung.
- Pengetesan yang berhasil dalam hal ini berarti menemukan error yang belum ditemukan ketika proses koding berlangsung
Tujuan kita disini yaitu untuk membuat pengetesan secara sistematis untuk menemukan error dari kelas yang berbeda dengan waktu dan usaha seminimum mungkin.
Prinsip Pengetesan menurut Davis yang diadaptasi oleh buku ini adalah :
- Semua pengetesan seharusnya dapat ditelusuri berdasarkan kebutuhan konsumen. Tujuan dari pengetesan software adalah untuk menemukan error dari software itu sendiri. Maka dari itu kita cukup mengetes software sejauh penggunaan dari konsumen, sehingga konsumen tidak akan pernah menemukan error/kesalahan berdasarkan kebutuhannya.
- Pengetesan seharusnya direncanakan jauh hari sebelum pengetesan akan dimulai. Perencanaan pengetesan dapat dimulai setelah model analisis selesai dibuat. Merinci pengetesan dapat dimulai setelah model design juga dibuat. Oleh karena itu, semua pengetesan dapat direncanakan dan dibuat sebelum kode-kode di “generate”.
- Prinsip “pareto” digunakan untuk pengetesan software. Prinsip pareto menyatakan secara tidak langsung bahwa 80% dari semua error yang ditemukan selama pengetesan kemungkinan besar akan ditelusuri menjadi 20% dari semua komponen program. Masalahnya, tentu saja untuk mengetes komponen yang dicurigai tersebut harus secara menyeluruh.
- Pengetesan seharusnya dimulai dari yang kecil ke yang besar. Perencanaan pengetesan yang pertama biasanya focus pada komponen-komponen yang kecil. Selama pengetesan, kemudian berkembang untuk menemukan kesalahan-kesalahan didalam komponen yang lebih luas dan pada akhirnya ke system secara menyeluruh.
- Pengetesan secara mendalam itu tidak mungkin. Urutan kemungkinan kejadian dari suatu program yang berukuran sedang sangatlah besar. Karena itulah kita tidak mungkin mengeksekusi setiap kombinasi selama pengetesan. Tetapi mungkin saja, bagaimanapun cukup untuk mencakup logika program dan menjamin bahwa semua kondisi didalam level komponen desain sudah dicoba.