APLIKASI PERBANDINGAN METODE EXHAUTIVE SEARCH DENGAN BRANCH AND BOUND PADA PENENTUAN NILAI OPTIMAL PERMASALAHAN KNAPSACK.

APLIKASI PERBANDINGAN METODE EXHAUTIVE SEARCH
DENGAN BRANCH AND BOUND PADA PENENTUAN NILAI
OPTIMAL PERMASALAHAN KNAPSACK

SKRIPSI

Diajukan Untuk Memenehui Sebagai Per syar atan
Dalam Memper oleh Gelar Sar jana Komputer Pr ogr am Studi
Teknik Infor matika

Oleh :
ADITYO NUGROHO
0734010023
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL ”VETERAN” J ATIM
2012

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.


SKRIPSI
APLIKASI PERBANDINGAN METODE EXHAUTIVE SEARCH
DENGAN BRANCH AND BOUND PADA PENENTUAN NILAI
OPTIMAL PERMASALAHAN KNAPSACK
Disusun Oleh :

ADITYO NUGROHO
0734010023
Telah dipertahankan dihadapan dan diterima oleh Tim Penguji Skripsi
Program Studi Teknik Infor matika Fakultas Teknologi Industri
Universitas Pembangunan Nasional “VETERAN” J awa Timur
Pada Tanggal : 19 J uli 2012
Pembimbing :
1.

1.

R. R. Ani Dijah Rahajoe, ST, M.Cs
NIP. 19730512 200501 2 003
2.


Rinci Kembang Hapsari, S.Si, M.Kom
NPT. 37712 080 1681
2.

Wahyu S.J . Saputra S.Kom. M.Kom
NPTY. 386081002951

Ir. Sutiyuono, MT
NIP. 19600713 198703 1 001
3.

Barry Nuqoba, S, Si., M. Kom
NPT. 38411 090 1551

Mengetahui,
Dekan Fakultas Teknologi Industri
Univer sitas Pembangunan Nasional “Veteran” J awa Timur
Surabaya


Ir. Sutiyono, MT
NIP. 19600713 198703 1 001
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

LEMBAR PENGESAHAN

APLIKASI PERBANDINGAN METODE EXHAUTIVE SEARCH
DENGAN BRANCH AND BOUND PADA PENENTUAN NILAI
OPTIMAL PERMASALAHAN KNAPSACK

Disusun Oleh :

ADITYO NUGROHO
0734010023

Telah disetujui mengikuti Ujian Negara Lisan
Gelombang V Tahun Akademik 2012

Menyetujui,

Pembimbing Utama

Pembimbing Pendamping

R. R. Ani Dijah Rahajoe, ST, M.Cs
NIP. 19730512 200501 2 003

Wahyu S.J . Saputra S.Kom. M.Kom
NPT. 386081002951

Mengetahui,
Ketua Program Studi Teknik Infor matika
Fakultas Teknologi Industri
Univer sitas Pembangunan Nasional “Veteran” J awa Timur

Dr. Ir. Ni Ketut Sari, MT
NIP. 19650731 199203 2001
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.


KATA PENGANTAR
Puji syukur kehadirat Allah SWT Yang Maha Mendengar lagi Maha
Melihat dan atas segala limpahan rahmat, taufik, serta hidayah-Nya sehingga
penulis dapat menyelesaikan karya tulis yang berbentuk skripsi ini dengan judul “
APLIKASI PERBANDINGAN METODE EXHAUTIVE SEARCH DENGAN
BRANCH

AND

PERMASALAHAN

BOUND

PADA

KNAPSACK



PENENTUAN


NILAI

sesuai

waktu

dengan

OPTIMAL
yang

telah

direncanakan.
Penyusunan skripsi ini adalah merupakan salah satu syarat untuk
memperoleh gelar sarjana pada Fakultas Teknologi Industri Jurusan teknik
Informatika Universitas Pembangunan Nasional “Veteran” Surabaya Jawa timur.
Dengan selesainya karya tulis skripsi ini tidak lepas dari bantuan banyak
pihakyang telah memberikan masukan-masukan kepada penulis. Untuk itu penulis

berterimakasih kepada :
1.

Secara khusus penulis ingin mengucapkan terima kasih kepada Ayahanda
yang penulis banggakan dan Ibundaku tercinta Semoga ibu lekas sembuh,
dan kakak-kakakku yang telah banyak memberikan dukungan dan
pengorbanan baik secara moril maupun materil sehingga penulis dapat
menyelesaikan studi dengan baik.

2.

Bapak Ir. Sutiyono, MT, selaku Dekan Fakultas Teknologi industri UPN
“Veteran” Jawa Timur. Ibu Dr. Ir. Ni Ketut Sari, MT Selaku Ketua Juruan
Teknik Informatika UPN “veteran” Jawa Timur.

3.

Ibu Rr.Ani Dijah Rahyu,ST, M.Cs. selaku pembimbing I dan Bapak
Wahyu Syaifullah Jauharis, S.kom, selaku pembimbing II yang telah
banyak mamberikan bimbingan, nasehat dan arahan kepada penulis.


4.

Terimaksih pada teman-teman serta sahabat arif (siroh), kereteng, Dany
boy, bayu (gondrong). Mas boneng, Mas ories. yang telah banyak
memberikan bantuan, dorongan serta motivasi sehingga skripsi ini dapat
terselesasikan.dan semua teman - teman yang tidak bisa penulis sebutkan
satu persatu yang selalu mendukung dan memberikan semangat pada
penulis.

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

Penulis menyadari bahwa skripsi ini masih jauh dari kesempurnaan,
maka saran dan kritik yang konstruktif dari semua pihak sangat diharapkan demi
penyempurnaan selanjutnya.

Surabaya, 15 Juli 2012
Penulis


Hak Cipta © milik UPN "Veteran" Jatim :
iii
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

DAFTAR ISI

ABSTRAK ................................................................................................................. i
KATA PENGANTAR ............................................................................................. ii
DAFTAR ISI ........................................................................................................... iv
DAFTAR GAMBAR ............................................................................................ viii
DAFTAR TABEL .................................................................................................... ix

BAB I PENDAHULUAN ...................................................................................... 1
1.1. Latar Belakang ....................................................................................... 1
1.2. Perumusan Masalah ............................................................................... 2
1.3. Batasan Masalah ..................................................................................... 2
1.4. Tujuan ..................................................................................................... 3
1.5. Manfaat .................................................................................................. 3
1.6. Metode Penelitian .................................................................................. 3
1.7. Sistematika Penulisan ............................................................................ 4


BAB II TINJ AUAN PUSTAKA ........................................................................... 6
2.1. Algoritma dan Pemrograman ................................................................. 6
2.1.1. Internal Subroutines ................................................................ 7
2.1.2. External Subrotisnes ............................................................... 8
2.1.3. Pendekatan Top Down............................................................ 8
2.2. Permasalahan Knapsack....................................................................... 10
2.3. Metode Exhautive Search .................................................................... 12
2.4. Algoritma Branch And Bound .............................................................. 17
2.5. Pengembangan Sistem .......................................................................... 20
2.6. Pengujian sistem .................................................................................... 21
2.6.1. Sasaran Pengujian .................................................................. 22

iv
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

2.6.2. Prinsip Pengujian ................................................................... 23
2.6.3. Atribut – Atribut Pengujian ................................................... 28
2.7. Flow Map ............................................................................................... 37

2.8. Embarcadero Delphi 2010……………………………………………37

BAB III ANALISIA PERMASALAHAN.......................................................... 41
3.1. Analisa Masalah………………………………………………… …..41
3.2. Analisa Sistem ....................................................................................... 42
3.3. Algoritma Exhautive Search ................................................................ 43
3.4. Algoritma Branch And Bound .............................................................. 45
3.5. Diagram Alir Sistem………………………………………………….47
3.6. Flowchart Exhautive Search………………………………………….48
3.7. Flowchart Branch And Bound………………………………………..49

BAB IV PERANCANGAN DAN IMPLEMENTASI...................................... 50
4.1. Perancangan sistem .............................................................................. 50
4.1.1. Perancangan Form Utama ..................................................... 50
4.1.2. Perancangan Form Grafik ..................................................... 51
4.1.3. Rancangan Diagram Kelas Global ........................................ 52
4.1.4. Rancangan Diagram Kelas Tband Form…………………..53
4.1.5. Rancangan Diagram Kelas TF_Laporan………………… . 55
4.2 . Implementasi Hasil Perancangan ………………………………….56
4.2.1. Prosedur Algoritma Exhautive Search…………..……… . .56
4.2.2. Prosedur Algoritma Branch And Bound………………… .58
4.2.3 Prosedur Evaluasi Hasil Perbandingan…….…..……… . …60

v
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

BAB V PENGUJ IAN SISTEM .......................................................................... 62
5.1. Metode Pengujian ................................................................................ 62
5.2. Pengujian Dengan Jumlah 19 item (besaran cost 75)……………..…64
5.3. Pengujian Dengan Jumlah 22 Item (besaran Cost 75)……………... 66
5.4. Pengujian Dengan Jumlah 19 item (besaran cost 100).............. .. .......72
5.5. Pengujian Dengan Jumlah 22 item (besaran Cost 100).....................74

BAB VI PENUTUP .............................................................................................. 78
6.1. Kesimpulan .......................................................................................... 78
6.2. Saran ...................................................................................................... 79

DAFTAR PUSTAKA ............................................................................................ 80

vi
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

DAFTAR GAMBAR
Gambar 2.1

Pemodelan Ruang Pencarian Algoritma Branch And Bound ...... 19

Gambar 2.6

Aktifitas Pengujian Perangkat Lunak……………………………..30

Gambar 2.8

Bottom Up Testing ........................................................................... 31

Gambar 2.9

Top Down Testing………………………………………………...32

Gambar 2.10 Sandwich Testing ............................................................................. 33
Gambar 2.11 Modified Sandwich Testing ............................................................. 34
Gambar 2.14 Tampilan awal Delphi ...................................................................... 39
Gambar 3.5

Diagram Alir Sistem ........................................................................ 47

Gambar 3.6

flowchart Exhautive Search……………………………………….48

Gambar 3.7

Flowchart Brand And Bound………………………….…………..49

Gambar 4.1

Rancangan Form Utama .................................................................. 50

Gambar 4.2

Rancangan Form Grafik ................................................................... 51

Gambar 4.3

Rancangan Kelas Global .................................................................. 52

Gambar 4.4

Rancangan Kelas Diagram TBandForm (Bagian 1) ...................... 53

Gambar 4.5

Rancangan Kelas Diagram TBandForm (Bagian 2) ...................... 54

Gambar 4.6

Rancangan Kelas Diagram TBandForm (Bagian 3) ...................... 55

Gambar 4.7

Rancangan Kelas Diagram TF_Laporan ......................................... 55

Gambar 5.1

Tampilan Awal Aplikasi .................................................................. 62

Gambar 5.3

Hasil Percobaan Pertama Dengan 19 item (Cost 75)…………… 64

Gambar 5.4

Hasil Percobaan kedua Dengan 13 Item (Cost 75)…… …………65

Gambar 5.5

Hasil percobaan ketiga Dengan 6 Item (besaran Cost 75) ............. 66

Gambar 5.7

Hasil percobaan Pertama Dengan 22 Item (Besaran Cost 75)....... 68

Gambar 5.8

Hasil Percobaan Kedua Dengan 16 Item (Besaran Cost 75) ......... 69

Gambar 5.9

Hasil Percobaan Ketiga dengan 9 Item (Besaran Cost 75) ............ 70

Gambar 5.10 Hasil Percobaan Keempat 6 Item .................................................... 71
Gambar 5.11 Hasil Percobaan Pertama Dengan 19 Item (Besaran Cost 100) .... 72
Gambar 5.12 Hasil Percobaan Kedua Dengan 10 Item (Besaran Cost 100) ....... 73
Gambar 5.13 Hasil Percobaab Pertama Dengan 22 Item (besaran Cost 100) ..... 74
vii
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

Gambar 5.14 Hasil Percobaan Kedua Dengan 14 Item (Besaran Cost 100) ....... 75
Gambar 5.15 Hasil Percobaan Ketiga Dengan 6 Item (Besaran Cost 100) ......... 76
Gambar 5.16 Grafik Hasil Percobaan .................................................................... 77

viii
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

DAFTAR TABEL
Tabel 5.2 Data kiriman PT.TIKI JALUR NUGRAHA EKAKURIR ................. 63
Tabel 5.5 Data kiriman PT.TIKI JALUR NUGRAHA EKAKURIR ................. 67

ix
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

Abstrak

Permasalahan knapsack merupakan permasalahan yang sering kita hadapi
sehari-hari dengan tanpa kita sadari. Misalnya pada saat bepergian, kita tentu
memerlukan barang-barang yang akan dimasukkan ke dalam tas atau kopor.
Tentunya kita akan berpikir bagaimana memaksimal ruang yang tersedia dalam
koper dengan jumlah barang yang akan kita bawa.Telah banyak metode dan
algorithma yang dikembangkan dalam menyelesaikan permasalahan knapsack,
diantaranya algorithma BFS, algorithma DFS, algorithma brute force, metode
exhautive search, algorithma branch and bound dan sebagainya.
Setiap metode dan algorithma tersebut tentu mempunyai perbedaan
dalam penentuan nilai output atau waktu yang diperlukan dalam proses
komputasinya. Oleh karena itu dalam tugas akhir kali ini, penulis ingin menguji
kinerja metode exhautive search dan algorithma branch and bound dalam
menyelesaikan permasalahan knapsack guna mengetahui kinerja terbaik diantara
kedua metode dan algorithma tersebut.

Kata kunci : permasalahan knapsack, algorithma exhaustive search, algorithma
branch and bound.

i
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

BAB I
PENDAHULUAN

1.1. Latar Belakang
Dalam dunia usaha, contoh nyata permasalahan knapsack terdapat pada
pengisian barang di dalam kontainer atau box pada perusahaan jasa pengiriman
barang, permasalahan yang dihadapi adalah bagaimana meminimalkan ruang
kosong dalam kontainer sehingga semakin banyak barang yang dapat dimuat ke
dalam kontainer tersebut.
Knapsack adalah suatu masalah bagaimana cara menentukan pemilihan
barang dari sekumpulan barang di mana setiap barang tersebut mempunyai berat
dan profit masing – masing, sehingga dari pemilihan barang tersebut didapatkan
profit yang maksimum.Telah banyak metode dan algorithma yang dikembangkan
dalam menyelesaikan permasalahan knapsack, diantaranya algorithma BFS,
algorithma DFS, algorithma brute force, metode exhautive search, algorithma
branch and bound dan sebagainya.
Setiap metode dan algorithma tersebut tentu mempunyai perbedaan
dalam penentuan nilai output atau waktu yang diperlukan dalam proses
komputasinya. Oleh karena itu dalam tugas akhir kali ini, penulis ingin menguji
kinerja metode exhautive search dan algorithma branch and bound dalam
menyelesaikan permasalahan knapsack guna mengetahui kinerja terbaik diantara
kedua metode dan algorithma tersebut.

1
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

2

1.2. Perumusan Masalah
Rumusan masalah yang digunakan dalam tugas akhir ini adalah :
a. Bagaimana

membuat

analisa

penyelesaian

permasalahan

knapsack

menggunakan metode exhautive search dan branch and bound.
b. Bagaimana membuat aplikasi yang dapat menyelesaikan permasalahan
knapsack menggunakan metode exhautive search dan branch and bound.
c. Metode apakah yang paling optimal untuk menyelesaikan permasalahan
knapsack dari dua metode yaitu exhautive search dan branch and bound.

1.3. Batasan Masalah
a. Permasalahan knapsack yang dipergunakan adalah 0-1 Knapsack Decision
Problem, yaitu persoalan untuk menentukan apakah mungkin memasukkan
objek-objek ke dalam knapsack namun tidak melebihi W tetapi total profitnya
paling sedikit sebesar P, Dimana W adalah weigh dan P adalah profit.
b. Permasalahan knapsack yang dipergunakan mempergunakan dua parameter
yaitu cost dan profit..
c. Jumlah item maksimum yang dapat dimasukkan oleh user adalah 25 dan
jumlah minimum adalah tiga item. Sedangkan besarnya cost maksimum
adalah 100 dan minimum adalah sepuluh.
d. Nilai cost dan profit dimasukkan secara manual.
e. Data cost dan profit diambil dari jasa pengiriman barang PT.TIKI JALUR
NUGRAHA EKEKURIR
f. Aplikasi dapat berjalan pada sistem operasi Microsoft Windows7.

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

3

1.4. Tujuan
Tujuan yang ingin dicapai pada pengerjaan tugas akhir ini adalah:
Membuat aplikasi yang dapat menghasilkan nilai optimal yang dapat dicapai
dalam penyelesaian permasalahan knapsack dengan menggunakan metode
exhautive search dan branch and bound dan Mengetahui nilai optimal yang dapat
dicapai dalam penyelesaian permasalahan knapsack dengan menggunakan metode
exhautive search dan branch and bound serta kecepatan proses komputasinya

1.5. Manfaat
Adapun manfaat yang ingin diperoleh dari pengerjaan tugas akhir ini
adalah dapat memahami cara kerja algorithma exhautive search dan branch and
bound

dalam

menyelesaikan

permasalahan

knapsack

serta

mampu

menerapkannya dalam bentuk aplikasi komputer.

1.6. Metode Penelitian
Adapun metode penelitian yang dipergunakan dalam pengerjaan tugas
akhir ini adalah :
a. Studi Literatur
Mencari referensi dan bahan pustaka tentang teori-teori yang berhubungan
dengan permasalahan yang akan dikerjakan dalam tugas akhir ini.
b. Studi Kasus
Mencari contoh-contoh kasus serupa yang berhubungan dengan permasalahan
dalam tugas akhir ini.
c. Analisis dan Perancangan

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

4

Membuat analisa berdasarkan data-data yang sudah dimiliki, membuat model
matematisnya dan merancang alur penyelesaian berdasarkan metode exhautive
search dan algoritma branch and bound. Perancangan aplikasi dimulai dengan
perancangan antar muka aplikasi, kemudian merancang detail metode
exhautive search dan algoritma branch and bound.
d. Implementasi Program
Mengimplementasikan teknik algoritma yang akan digunakan. Detail
mengenai implementasi program dilakukan sesuai hasil analisis dan
perancangan aplikasi pada tahapan sebelumnya.
e. Pengujian Aplikasi
Pengujian dilakukan pada aplikasi yang telah dibuat. Menguji validitas dan
efektifitas algoritma yang diterapkan pada aplikasi.

1.7. Sistematika Penulisan
Sistematika penulisan tugas akhir ini adalah sebagai berikut :
BAB I

PENDAHULUAN
Bab ini berisi latar belakang masalah, identifikasi masalah, maksud
dan tujuan yang ingin dicapai, batasan masalah, metodologi
penelitian yang diterapkan dalam memperoleh dan mengumpulkan
data serta sistematika penulisan.

BAB II

TINJ AUAN PUSTAKA

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

5

Membahas berbagai konsep dasar dan teori-teori yang berkaitan
dengan topik masalah yang diambil dan hal-hal yang berguna
dalam proses analisis permasalahan.

BAB III

ANALISA PERMASALAHAN
Menganalisa masalah dari model penelitian untuk memperlihatkan
keterkaitan antar variabel yang diteliti serta model matematis untuk
analisisnya.

BAB IV

PERANCANGAN DAN IMPLEMENTASI
Membahas

perancangan

layout

form

dalam

sistem

dan

pengimplementasian hasil perancangan sistem yang telah dibuat ke
bentuk aplikasi yang akan dibangun.

BAB V

PENGUJ IAN SISTEM
Membahas uji coba aplikasi yang dibuat, untuk mengetahui tingkat
keberhasilan penentuan nilai optimal dan kecepatan komputasinya,
kemudian melakukan evaluasi keberhasilan sistem.

BAB VI

PENUTUP
Berisi kesimpulan dan saran yang sudah diperoleh dari hasil
penulisan tugas akhir.

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

BAB II
TINJ AUAN PUSTAKA

2.1. Algorithma Dan Pemrograman
Pada era tahun 1950 –1960, kecepatan komputer sangat rendah dan
disertai juga dengan keterbatasan dari media penyimpan, sehingga tentunya
berakibat juga dengan keterbatasan dalam penulisan program-program komputer.
Namun di era saat ini, dengan kecepatan komputer yang cukup handal demikian
juga ketersediaan dari media penyimpan yang cukup handal dan besar, serta
didukung juga dengan perkembangan bahasa pemrograman yang ada sehingga
kita dapat dengan mudah membuat suatu program. Permasalahan yang timbul
dalam pembuatan program tersebut adalah bagaimana kita dapat memahaminya,
sehingga apabila terdapat perubahan yang

akan dilakukan kita dapat

memperbaikinya secara mudah (Mesran, 2008). Hal ini tentu saja harus kita
perhatikan terutama apabila kita melihat dari biaya yang harus dikeluarkan dalam
pembuatan program tersebut. Istilah Pemrograman Terstruktur (Structured
Programming) mengacu dari suatu kumpulan tehnik yang dikemukan oleh Edsger
Dijkstra . Dengan tehnik ini akan meningkatkan produktifitas programmer,
dengan mengurangi waktu yang dibutuhkan dalam penulisan (write), pengujian
(test), penelusuran kesalahan (debug) dan pemeliharan(maintain) suatu program.
Pada pembahasan berikut ini kita akan melihat bagaimana tehnik ini yang
pendekatan yang dilakukan secara modular, dapat membantu kita dalam
membangun suatu program.

6
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

7

Dalam pemrograman secara modular, suatu program akan dipilah
kedalam sejumlah modul, dimana setiap modul menjalankan fungsinya sendiri.
Tentunya fungsi yang dijalankan oleh setiap modul sangat terbatas sesuai dengan
ruang lingkup yang akan dikerjakan. Dengan adanya sejumlah modul program ini
tentu saja kesalahan yang timbul dapat dikurangi. Setiap program tentu akan
memiliki program utamanya, yang kemudian akan memanggil sejumlah modulmodul yang ada.
Pemrograman secara modular ini dapat diimplementasikan dengan
penggunaan subroutine, suatu kelompok instruksi yang menjalankan suatu
pengolahan yang sifatnya terbatas seperti pencetakan, pembacaan untuk proses
input atau untuk proses penghitungan. Subroutine dapat dikelompokkan menjadi
internal subroutine dan external subroutine.

2.1.1. Internal Subroutines
Adalah bagian dari suatu program yang digunakan. Dideklarasikan cukup
sekali saja, untuk sejumlah proses yang sama akan dilakukan oleh program
tersebut. Program akan memanggil subroutines tersebut jika diperlukan dan
apabila telah selesai, kontrol selanjutnya dikembalikan ke instruksi berikutnya.
Instruksi yang mengendalikan kontrol transfer ke suatu subroutine umumnya
dikenal sebagai call dan return (Harris and Ross, 2006).

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

8

2.1.2. External Subroutines
Diletakkan secara terpisah dari program yang menggunakan subroutine
tersebut. Subroutine ini dideklarasikan supaya bisa dipakai oleh program yang
lain. Untuk menggunakannya tentu seorang programmer harus mengetahui
dimana ? , apa namanya ?, bagaimana pengiriman datanya ?, bagaimana jawaban
yang akan diperoleh ?. Subroutine ini biasanya digunakan untuk pemrosesan yang
komplek, yang dibutuhkan oleh banyak user.

2.1.3. Pendekatan Top Down
Pemrograman terstruktur mempergunakan Pendekatan Top-Down dalam
perencanaan program. Merupakan pendekatan yang menggambarkan pemecahan
modul kompleks/besar menjadi modul-modul yang lebih sederhana/kecil
Berbentuk Struktur Hirarki. Di dalam pemrograman terstruktur, terdapat 3 bentuk
struktur perintah yang dipergunakan :
a. Sequence Structure
b. Loop Structure
c. Selection Structure
Struktur perintah yang instruksinya dieksekusi berdasarkan urutannya.
Dimulai dari bagian atas dan diakhiri di bagian bawahnya. Digambarkan dengan
bujur sangkar, sebagai simbol untuk : Input dan Output Operasi aritmatika.
Operasi pemindahan data dalam memori komputer. Menggambarkan perulangan
eksekusi dari satu atau lebih instruksi Menggambarkan struktur yang
mengeksekusi suatu instruksi hanya apabila kondisinya terpenuhi.

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

9

Algoritma merupakan sekumpulan langkah-langkah untuk menyelesaikan
suatu tugas. Penamaan “Algoritma” diambil dari seorang ahli matematika
bernama Al-Khwarizmi (Mesran, 2008). Sebuah algoritma harus:
a. Jelas, tepat dan tidak membingungkan
b. Memberikan penyelesaian yang tepat
c. Mempunyai akhir
Tujuh langkah dasar dalam pengembangan program :
a. Definisi Masalah
b. Outline Solusi
c. Pengembangan outline ke dalam algoritma
d. Melakukan test terhadap algoritma
e. Memindahkan algoritma ke dalam bahasa pemrograman
f. Menjalankan program pada komputer
g. Dokumentasi dan pemeliharaan program
h. Pada tahap ini memerlukan pemahaman terhadap permasalahan dengan
membaca berulang kali sampai dengan mengerti apa yang dibutuhkan.
Setelah permasalahan didefinisikan, permasalahan dapat di bagi kedalam
tugas tugas atau langkah langkah yang lebih kecil dan menghasilkan outline
solusi. Outline solusi pada langkah kedua dikembangakan menjadi algoritma yaitu
sebuah set langkah yang menggambarkan tugas yang akan dikerjakan dan urutan
pengerjaannya.
Tujuan utama dari melakukan test terhadap algoritma adalah adalah
untuk menemukan kesalahan utama logika sejak awal, sehingga akan lebih mudah
diperbaiki (Cormen, 2001). Data test diperlukan untuk melakukan test terhadap

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

10

algoritma

ini.

Setelah ke-empat

langkah

sebelumnya dilakukan,

maka

pencodingan dapat dimulai dengan menggunakan bahasa pemrograman yang
dipilih. Setelah pengcodingan, maka program dapat dijalankan pada komputer.
Jika Program sudah didesain dengan baik, maka akan mengurangi tingkat
kesalahan dalam melakukan testing program. Langkah ini perlu dilakukan
beberapa kali, sehingga program yang dijalankan dapat berfungsi dengan benar.
Dokumentasi melibatkan eksternal dokumentasi (hierarchy chart, algoritma solusi,
dan hasil data test) dan internal dokumentasi (coding program). Pemeliharaan
program meliputi perubahan yang dialami oleh program (perbaikan ataupun
penambahan modul, dan lain-lain).

2.2. Per masalahan Knapsack
Masalah knapsack adalah masalah dalam optimasi kombinatorial, yaitu
mengasumsikan satu set item, masing-masing dengan berat badan dan nilai,
menentukan jumlah dari setiap item untuk memasukkan dalam koleksi sehingga
total berat kurang dari atau sama dengan diberi batasan dan nilai total sebagai
sebesar mungkin (Andonov, 2000). Analoginya adalah masalah yang dihadapi
oleh seseorang yang dibatasi oleh knapsack berukuran tetap dan harus mengisinya
dengan item yang paling berguna.
Masalah sering muncul dalam alokasi sumber daya dengan kendala
keuangan. Masalah serupa juga muncul di combinatorics, teori kompleksitas,
kriptografi dan diterapkan pada matematika.
Misalkan dalam permasalahan berikut ini, kita memiliki n jenis item, 1
sampai n. Setiap jenis item i memiliki nilai dan berat (vi dan wi). Kita biasanya

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

11

berasumsi

bahwa

semua

nilai

dan

bobot

yang

non

negatif.

Untuk

menyederhanakan representasi, kita juga bisa mengasumsikan bahwa item yang
tercantum dalam rangka peningkatan berat benda. Berat maksimum yang kita
dapat membawa dalam tas adalah W.
Perumusan masalah yang paling umum adalah masalah 0-1 knapsack,
yang membatasi jumlah xi salinan setiap jenis item untuk nol atau satu. Model
matematis masalah 0-1 knapsack dapat dirumuskan sebagai :



maximize



subject to

Masalah yang dibatasi knapsack berarti membatasi jumlah xi salinan
setiap jenis item untuk sebuah ci nilai maksimum integer. Matematis masalah
dibatasi knapsack dapat dirumuskan sebagai:



maximize



subject to

Masalah ruang terbatas berarti tempat tidak ada batas atas jumlah salinan
dari setiap jenis barang. Yang menarik adalah kasus khusus dari masalah dengan
sifat ini : satu set bilangan bulat nonnegatif, apakah setiap subset itu
menambahkan hingga persis W? Atau, jika bobot negatif diperbolehkan dan W
adalah dipilih untuk menjadi nol, masalahnya adalah: diberikan satu set bilangan

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

12

bulat, apakah setiap subset tak kosong menambahkan hingga tepat 0? Kasus
khusus ini disebut masalah jumlah subset. Di bidang kriptografi, masalah
knapsack. Istilah ini sering digunakan untuk merujuk secara khusus untuk
masalah jumlah subset. Jika beberapa knapsack diperbolehkan, dianggap sebagai
masalah ruang packing.
Dalam permasalahan knapsack sendiri terdapat dua jenis, yaitu :
a. 0-1 Knapsack Optimization Problem, yaitu permasalahan dalam menentukan
objek-objek yang dimasukkan ke dalam knapsack namun tidak melebihi W
sehingga memberikan total profit maksimum.
b. 0-1 Knapsack Decision Problem, yaitu persoalan untuk menentukan apakah
mungkin memasukkan objek-objek ke dalam knapsack namun tidak melebihi
W tetapi total profitnya paling sedikit sebesar P.

2.3. Metode Exhautive Search
Metode exhautive search dapat digunakan untuk mengurangi ruang
pencarian. Pengacakan dapat diterapkan untuk meningkatkan runtimes, meskipun
sering hanya ada sedikit manfaat komputasi untuk melakukan hal ini. Pencarian
yang lebih mendalam juga dikenal sebagai algoritma backtracking, meskipun
tidak semua algoritma backtracking yang lengkap, adalah tentang mencoba setiap
cara yang mungkin untuk mencari solusi (Cormen, 2000). Hal ini biasanya
dikombinasikan dengan pemangkasan untuk mengurangi jumlah item untuk
mencari.

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

13

Sebenarnya metode exhautive search sendiri merupakan teknik pencarian
solusi secara brute force untuk masalah-masalah kombinatorik seperti permutasi,
kombinasi, atau himpunan bagian dari sebuah himpunan (Wiki, .
Langkah-langkah metode exhaustive search adalah :
a. Enumerasi (list) setiap solusi yang mungkin dengan cara yang sistematis.
b. Evaluasi setiap kemungkinan solusi satu per satu, simpan solusi terbaik yang
ditemukan sampai sejauh ini (the best solusi found so far).
c. Bila pencarian berakhir, umumkan solusi terbaik (the winner).
Sedangkan pseudocode umum untuk exhaustive search dapat didefinisikan
sebagai berikut :

backtrack(int sol, int depth)
{
if (issolution(sol))
printsolution(sol)
else{
solgenerated = generatesolution()
backtrack(solgenerated, depth+1)
}
}

Meskipun algoritma exhaustive secara teoritis menghasilkan solusi,
namun waktu atau sumberdaya yang dibutuhkan dalam pencarian solusinya sangat
besar. Berikut ini adalah contoh penerapan algorithma exhautive search pada
permasalahan Travelling Salesperson Problem (TSP) : Diberikan n buah kota serta
diketahui jarak antara setiap kota satu sama lain. Temukan perjalanan (tour)

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

14

terpendek yang melalui setiap kota lainnya hanya sekali dan kembali lagi ke kota
asal keberangkatan. Persoalan TSP tidak lain adalah menemukan sirkuit Hamilton
dengan bobot minimum. Algorithmanya adalah :
a. Enumerasikan (list) semua sirkuit Hamilton dari graf lengkap dengan n buah
simpul.
b. Hitung (evaluasi) bobot setiap sirkuit Hamilton yang ditemukan pada langkah
nomor satu.
c. Pilih sirkuit Hamilton yang mempunyai bobot terkecil.
d. Untuk n buah simpul semua rute perjalanan dibangkitkan dengan permutasi
dari n – 1 buah simpul.
e. Permutasi dari n – 1 buah simpul adalah (n-1) !
f. Jika diselesaikan dengan exhaustive search, maka kita harus mengenumerasi
sebanyak (n –1)! buah sirkuit Hamilton, menghitung setiap bobotnya, dan
memilih sirkuit Hamilton dengan bobot terkecil.
Kompleksitas waktu algoritma exhaustive search untuk persoalan TSP
sebanding dengan (n – 1)! dikali dengan waktu untuk menghitung bobot setiap
sirkuit Hamilton. Menghitung bobot setiap sirkuit Hamilton membutuhkan waktu
O(n), sehingga kompleksitas waktu algoritma exhaustive search untuk persoalan
TSP adalah O(n × n!).
Jika diterapkan pada permasalahan knapsack, maka algoritma Exhaustive
Search akan menjadi sangat efisien jika dipadu dengan algoritma runut-balik atau
backtracking. Algoritma Runut-Balik (backtracking) adalah algoritma yang
berbasis pada Depth First Search yang hanya melakukan pencarian ke arah solusi
saja yang dipertimbangkan. Dengan metode ini, kemungkinan solusi yang tidak

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

15

layak akan dieliminasi secara efektif sehingga waktu yang diperlukan untuk
menyelesaikan masalah akan berkurang.
Berikut ini adalah penyelesaian masalah knapsack dengan menggunakan
algoritma runut-balik. Ketentuan :
a. Simpul melambangkan status setiap elemen. Elemen berstatus 1 jika elemen
tersebut dimasukan ke dalam knapsack. Elemen berstatus 0 jika elemen
tersebut tidak dimasukan. Contoh {1, 0, 1, 0, 0} artinya adalah hanya elemen
ke 1 dan 3 dimasukan ke knapsack.
b. Pohon yang dibentuk adalah pohon biner. Di tiap simpul dengan kedalaman h
terjadi pengujian terhadap elemen ke-h. Cabang ke kanan melambangkan
simpul orang tua dimasukan ke knapsack, dan sebaliknya. Dengan demikian,
status di setiap simpul selalu berubah.
c. Simpul mati artinya adalah jumlah berat sudah melebihi kapasitas.
Langkah-langkah pengerjaannya adalah sebagai berikut :
a. Status awal adalah {0,0,..,0}. Jumlah objek adalah n.
b. Cek elemen pertama.
c. Jika layak dimasukkan, status elemen uji berubah menjadi 1. Jika tidak, status
tetap.
d. Jika simpul hidup, cek di kedalaman selanjutnya.
e. Jika simpul mati, cek di simpul sebelumnya yang masih hidup.
f. Jika sudah mencapai kedalaman n (semua objek sudah diuji), status di simpul
tersebut adalah solusinya.
Algoritma tersebut sangat efisien karena simpul-simpul mati tidak akan
dilanjutkan lagi, sehingga dapat mengurangi jumlah operasi. Namun kelemahan

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

16

dari algoritma ini adalah bahwa solusi pertama yang dihasilkan adalah solusi yang
pertama kali ditemukan sehingga belum tentu solusi terbaik.
Hal ini dapat diatasi dengan menguji seluruh kemungkinan solusi tanpa
mempertimbangkan perkembangan dari simpul mati. Hal ini merupakan algoritma
Exhaustive Search yang dipadu dengan algoritma runut balik. Dengan ketentuan
yang sama dengan algoritma sebelumnya, langkah-langkah dari algoritma setelah
dimodifikasi :
a. Status awal adalah {0,0,..,0}. Jumlah objek adalah n. Jika jumlah berat semua
objek lebih kecil atau sama dengan kapasitas Knapsack, maka solusi terbaik
adalah {1, 1, 1,...., 1}. Jika tidak, lanjut ke nomor 2.
b. Cek elemen pertama. Jika layak dimasukkan, status elemen uji berubah
menjadi 1. Jika tidak, status tetap.
c. Jika simpul hidup, cek di kedalaman selanjutnya.
d. Jika simpul mati, cek di simpul sebelumnya yang masih hidup.
e. Jika sudah mencapai kedalaman n (semua objek sudah diuji), uji profit di
simpul tersebut.
f. Jika profit di simpul tersebut lebih besar dari profit sementara, jadikan profit
di simpul tersebut sebagai profit sementara. Lanjutkan dengan mengecek
simpul sebelumnya yang masih hidup. Jika semua simpul sudah diuji, profit
sementara terakhir adalah solusi terbaik dari knapsack.
Solusi yang dihasilkan sudah pasti solusi yang terbaik karena semua
kemungkinan sudah diuji. Waktu penyelesaian algorima tersebut pada kasus
terburuk adalah berorde 2n. . Walaupun masih berorde eksponensial, namun pada

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

17

kasus rata-rata, jumlah operasi akan berkurang karena adanya simpul mati,
sehingga waktu penyelesaian akan lebih cepat.
Algoritma tersebut masih mungkin lebih diefisienkan lagi dengan triktrik tertentu seperti pengurutan objek-objek terlebih dahulu berdasarkan berat dan
lain-lain. Dengan begitu, waktu penyelesaian akan lebih cepat dan solusi terbaik
akan didapat.

2.4. Algorithma Branch And Bound
Algorithma Branch and Bound adalah algoritma umum untuk mencari
solusi optimal dari berbagai masalah optimasi, terutama dalam optimasi diskrit
dan kombinatorial. Ini terdiri dari pencacahan sistematis semua solusi
kandidat, di mana subset besar calon sia-sia dibuang secara massal, dengan
menggunakan batas atas dan bawah estimasi kuantitas yang sedang
dioptimalkan. Metode ini pertama kali diusulkan oleh AH Tanah dan AG Doig
pada tahun 1960 untuk pemrograman diskrit. . Sesuai dengan namanya,
metode ini terdiri dari 2 langkah yaitu :
a. Branch yang artinya membangun semua cabang tree yang mungkin
menuju solusi.
b. Bound yang artinya menghitung node mana yang merupakan active
node (E-node) dan node mana yang merupakan dead node (Dnode) dengan menggunakan syarat batas constraint (kendala).
Untuk kepastian, kita mengasumsikan bahwa tujuannya adalah untuk
mencari nilai minimum dari fungsi f (x), di mana x berkisar atas beberapa set
solusi S diterima atau calon (ruang pencarian atau wilayah layak). Perhatikan

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

18

bahwa seseorang dapat menemukan nilai maksimum dari f (x) dengan mencari
minimum dari g (x) = - f (x). (Sebagai contoh, S bisa menjadi himpunan dari
semua jadwal perjalanan mungkin untuk armada bus, dan f (x) bisa menjadi
pendapatan yang diharapkan untuk jadwal x.)
Sebuah prosedur cabang-dan-terikat membutuhkan dua alat. Yang
pertama adalah prosedur pemisahan yang, diberi satu set S dari calon,
mengembalikan dua atau lebih set yang lebih kecil S_1, S_2, \ ldots yang
mencakup serikat S. Perhatikan bahwa minimum dari f (x) lebih dari S adalah \
min \ {v_1 , v_2, \ ldots \}, di mana setiap vi adalah minimum dari f (x) dalam Si.
Langkah ini disebut bercabang, sejak aplikasi rekursif yang mendefinisikan
sebuah struktur pohon (pohon pencarian) node yang merupakan himpunan bagian
dari S. Alat kedua adalah prosedur yang menghitung batas atas dan bawah untuk
nilai minimum dari f (x) dalam subset tertentu dari S. Langkah ini disebut
bounding.
Ide utama dari algoritma BB adalah: jika batas bawah untuk beberapa
simpul pohon (set calon) adalah lebih besar dari batas atas untuk beberapa node B
yang lain, maka A dapat dengan aman dibuang dari pencarian. Langkah ini
disebut pemangkasan, dan biasanya dilaksanakan dengan mempertahankan
variabel global m (dibagi di antara semua node dari pohon) yang mencatat atas
minimal terikat dilihat antara semua subregional diperiksa sejauh ini. Setiap node
yang batas bawah lebih besar daripada m dapat dibuang.
Rekursi berhenti bila calon saat ini ditetapkan S adalah dikurangi
menjadi elemen tunggal, atau ketika batas atas untuk mengatur S sesuai dengan

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

19

batas bawah. Either way, setiap elemen dari S akan menjadi minimum dari fungsi
dalam S.
Algoritma Branch and Bound banyak digunakan untuk memecahkan
berbagai

macam

permasalahan antara

lain

:

persoalan

Knapsack

0/1,

Travelling Salesman Problem (TSP), The N-Queens Problem (Persoalan NRatu),

Graph

Colouring

(Pewarnaan Graf),

Sirkuit

Hamilton,

Integer

Programming, Nonlinear Programming, Quadratic Assignment Problem (QAP),
Maximum Satisfiability Problem (MAX-SAT), dan lain sebagainya. dan lain
sebagainya.pemodelan

ruang

pencarian

Alagoritma

Branch

and

bound

digambarkan pada gambar 2.1

Gambar 2.1. Pemodelan ruang pencarian Algorithma Branch And Bound
(Sumber : Jen Clausen, 1999, Branch And Bound Principle, Copenhagen Univ.)
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

20

2.5. Pengembangan Sistem
Pengembangan sistem (System development) dapat berarti menyusun
suatu sistem yang baru untuk menggantikan sistem yang lama secara keseluruhan
atau memperbaiki sistem yang telah ada. Sistem yang lama perlu diperbaiki atau
diganti disebabkan karena beberapa hal, yaitu sebagai berikut :
a. Adanya permasalahan-permasalahan (Problems) yang timbul di sistem yang
lama. Permasalahan yang timbul dapat berupa : ketidakberesan pada sistem
yang lama dan menyebabkan sistem yang lama tidak dapat beroperasi sesuai
dengan yang diharapkan, pertumbuhan organisasi yang menyebabkan harus
disusunnya sistem yang baru.
b. Untuk meraih kesempatan-kesempatan (Opportunisties)
c. Adanya instruksi-instruksi (Directives)
Karena adanya permasalahan, kesempatan dan instruksi, maka sistem
yang baru perlu dikembangkan untuk memecahkan permasalahan-permasalahan
yang timbul, meraih kesempatan-kesempatan yang ada atau memenuhi instruksiinstruksi yang diberikan.
Dengan telah dikembangkannya sistem yang baru, maka diharapkan akan
terjadi peningkatan-peningkatan di

sistem

yang

baru.

Peningkatan

ini

berhubungan dengan kemudahan sistem itu sendiri, diantaranya :
a. Performance (Kinerja), Kinerja dapat diukur dari Throughput dan Response
Time. Throughput adalah jumlah dari pekerjaan yang dapat dilakukan suatu
saat tertentu. Response Time adalah rata-rata waktu yang tertunda diantara dua
transaksi.

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

21

b. Information (Informasi), peningkatan terhadap kualitas informasi yang
disajikan.
c. Economy

(Ekonomis),

peningkatan

terhadap

manfaat-manfaat

atau

keuntungan-keuntungan dan penurunan biaya yang terjadi.
d. Control (Pengendalian), peningkatan terhadap pengendalian untuk mendeteksi
dan memperbaiki kesalahan-kesalahan.
e. Efficiency (Efisisensi), peningkatan terhadap efisiensi operasi.
f. Service (Pelayanan), peningkatan terhadap pelayanan yang diberikan oleh
sistem.

2.6. Pengujian Sistem
Pengembangan sistem perangkat lunak melibatkan sederetan aktivitas
produksi di mana peluang terjadinya kesalahan manusia sangat besar. Kesalahan
dapat mulai terjadi pada permulaan proses di mana sasaran ditetapkan secara tidak
sempurna, kemudian dalam disain dan tahapan pengembangan selanjutnya.
Karena ketidakmampuan manusia untuk melakukan dan berkomunikasi dengan
sempurna, maka pengembangan perangkat lunak harus selalu diiringi dengan
aktivitas jaminan kualitas.
Pengujian perangkat lunak adalah elemen kritis dari jaminan kualitas Perangkat
Lunak, dan mempresentasikan kajian pokok dari spesifikasi, desain, dan
pengkodean. Dengan meningkatnya visibilitas perangkat lunak sebagai suatu
elemen sistem, dan biaya yang muncul akibat kegagalan perangkat lunak, maka
memotivasi dilakukakannya perencanaan yang baik melalui pengujian yang teliti.

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

22

Adalah hal yang wajar jika organisasi pengembangan Perangat Lunak
meningkatkan 30 – 40 % usaha proyek pengembangan Perangkat Lunak pada
tahap pengujian.

2.6.1. Sasaran Pengujian
Sejumlah aturan yang berfungsi sebagai sasaran pengujian:
a. Pengujian adalah proses eksekusi suatu program dengan maksud menemukan
kesalahan.
b. Test-case yang baik adalah test-case yang memiliki probabilitas untuk
menemukan kesalahan yang belum pernah ditemukan sebelumnya.
c. Pengujian yang sukses adalah pengujian yang mengungkap semua kesalahan
yang belum pernah ditemukan sebelumnya.


Sasaran Pengujian tersebut mengimplikasikan adanya perubahan titik pandang
yang dramatis.



Sasaran berlawanan dengan pandangan yang biasanya dipegang: bahwa
pengujian yang berhasil adalah adalah pengujian yang tidak ada kesalahan
yang ditemukan.



Sasaran kita adalah mendisain pengujian yang secara sistematis mengungkap
kelas kesalahan yang berbeda dan melakukannya dengan jumlah waktu dan
usaha minimum.



Bila pengujian dilakukan secara sukses (sesuai dengan sasaran), maka akan
ditemukan kesalahan di dalam perangkat lunak.

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

23



Sebagai keuntungan sekunder, pengujian menunjukkan bahwa fungsi
perangkat lunak bekerja sesuai dengan spesifikasi dan bahwa persyaratan
kinerja telah dipenuhi.



Sebagai tambahan, data yang dikumpulkan pada saat pengujian dilakukan,
memberikan indikasi yang baik mengenai reliabilitas perangkat lunak dan
beberapa menunjukkan kualitas perangkat lunak secara keseluruhan.

Tetapi ada satu hal yang tidak dapat dilakukan oleh pengujian, yaitu:


Pengujian tidak dapat memperlihatkan tidak adanya cacat.



Pengujian hanya dapat memperlihatkan bahwa ada kesalahan Perangkat
Lunak.


2.6.2. Prinsip Pengujian
Sebelum mengaplikasikan metode untuk mendisain test-case yang efektif,
perekayasa Perangkat Lunak harus memahami prinsip dasar yang menuntun
pengujian Perangkat Lunak.
Serangkaian prinsip pengujian yang telah diadaptasi untuk digunakan, yaitu :
a. Semua pengujian harus dapat ditelusuri sampai ke persyaratan pelanggan.


Sebagaimana telah diketahui, sasaran pengujian PL adalah untuk
mengungkap kesalahan.



Hal ini memenuhi kriteria bahwa cacat yang paling fatal (dari titik
pandang pelanggan) adalah cacat yang menyebabkan program gagal
memenuhi persyaratannya.

b. Pengujian harus direncanakan lama sebelum pengujian itu mulai.

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

24



Perencanaan pengujian dapat mulai segera setelah model persyaratan
dilengkapi.



Definisi detil mengenai test-case dapat dimulai segera setelah model disain
diteguhkan. Dengan demikian semua pengujian dapat direncanakan dan
dirancang sebelum semua kode dibangkitkan.

c. Pengujian harus mulai dari yang kecil dan berkembang ke pengujian yang
besar.


Pengujian pertama yang direncanakan dan dieksekusi biasanya berfokus
pada modul program individual.



Selagi pengujian berlangsung maju, pengujian mengubah fokus dalam
usaha menemukan kesalahan pada cluster model yang terintegrasi, dan
akhirnya pada sistem secara keseluruhan.

d. Pengujian yang mendalam tidaklah mungkin.


Jumlah jalur permutasi untuk program yang berukuran menengahpun
sangat besar. Karena itulah maka tidak mungkin mengeksekusi setiap
kombinasi jalur skema pengujian.



Tetapi dimungkinkan untuk secara adekuat mencakup logika program dan
memastikan bahwa semua kondisi dalam disain prosedural telah diuji.



Untuk menjadi paling efektif, pengujian harus dilakukan oleh pihak ketiga
yang independen.



Yang dimaksudkan dengan kata yang paling efektif adalah pengujian yang
memiliki probabilitas tertinggi di dalam menemukan kesalahan (sasaran
utama pengujian).

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

25



Perekayasa perangkat lunak yang membuat sistem bukanlah orang yang
paling tepat untuk melakukan semua pengujian bagi perangkat lunak.

Dalam lingkungan yang ideal, perekayasa Perangkat Lunak mendesain suatu
program komputer, sebuah sistem, atau suatu produk dengan “testabilitas” di
dalam pikirannya.
Hal ini memungkinkan individu yang berurusan dengan pengujian mendisain testcase yang efektif secara lebih mudah.
James Bach menggambarkan testabilitas dengan cara berikut :
Testabilitas Perangkat Lunak secara sederhana adalah seberapa mudah sebuah
program komputer dapat diuji. Karena pengujian sangat sulit, perlu diketahui apa
yang dapat dilakukan untuk membuatnya menjadi mudah. Kadang-kadang
pemrogram bersedia melakukan hal-hal yang yang akan membantu proses
pengujian, dan checklist mengenai masalah-mas