• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2017

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

Copied!
92
0
0

Teks penuh

(1)

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

(2)

DENGAN BRANCH AND BOUND PADA PENENTUAN NILAI

OPTIMAL PERMASALAHAN KNAPSACK

Disusun Oleh :

ADITYO NUGROHO

0734010023

Telah dipertahankan dihadapan dan diterima oleh Tim Penguji Skr ipsi Pr ogram Studi Teknik Infor matika Fakultas Teknologi Industri

Universitas Pembangunan Nasional “VETERAN” J awa Timur

Pada Tanggal : 19 J uli 2012

(3)

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 Wahyu S.J . Saputra S.Kom. M.Kom NIP. 19730512 200501 2 003 NPT. 386081002951

Mengetahui,

Ketua Program Studi Teknik Infor matika Fakultas Teknologi Industri

(4)

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 BOUND PADA PENENTUAN NILAI OPTIMAL

PERMASALAHAN KNAPSACK ” sesuai dengan waktu 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.

(5)

penyempurnaan selanjutnya.

Surabaya, 15 Juli 2012

(6)

ABSTRAK ... i

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

(7)

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

(8)

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

(9)

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

(10)
(11)
(12)

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

(13)

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.

Knapsackadalah 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

(14)

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

(15)

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.

(16)

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.

(17)

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

(18)

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

(19)

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

modul-modul 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

(20)

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

(21)

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

(22)

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

(23)

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

(24)

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

(25)

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 :

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)

backtrack(solgenerated, depth+1)

}

(26)

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

(27)

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

(28)

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

(29)

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

trik-trik 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

(D-node) 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

(30)

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

(31)

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 Queens Problem (Persoalan

N-Ratu), 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

(32)

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

instruksi-instruksi 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

(33)

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

(34)

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

(35)

• 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. Pr insip 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.

(36)

• 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

(37)

• 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

test-case 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-masalah disain yang mungkin,

fitur,dan lain sebagainya, dapat menjadi berguna dalam bernegosiasi dengan

mereka. Ada metrik yang dapat digunakan untuk mengukur testabilitas di dalam

sebagian besar aspeknya.

Testabilitas digunakan untuk melihat melihat seberapa adekuat serangkaian

pengujian tertentu akan mencakup produk.

Checklist berikut ini memberikan serangkaian karakteristik yang membawa

kepada Perangkat Lunak yang dapat diuji.

a. Operabilitas : semakin baik Perangkat Lunak bekerja, semakin efisien

Perangkat Lunak dapat diuji.

• Sistem memiliki beberapa bug (bug menambah analisis dan biaya

(38)

• Tidak ada bug yag memblok eksekusi pengajian

• Produk berkembang di dalam tahapan funsgional (memungkinkan

pengembangan dan pengujian secara simultan).

b. Observabilitas : apa yang anda lihat adalah apa yang diuji. • Output yang berbeda dikeluarkan oleh masing-masing input.

• Tahap dan variabel sistem dapat dilihat atau diartikan selama eksekusi.

• Sistem dan variable yang lalu dapat dilihat atau diartikan (misalnya, log

transaksi)

• Semua faktor yang mempengaruhi output dapat dilihat.

• Output yang tidak benar dapat diidentifikasikan sengan mudah.

• Kesalahan internal dideteksi secara otomatis melalui mekanisme

self-testing.

• Kesalahan internal dilaporkan secara otomatis.

• Kode sumber dapat diakses.

c. Kontrolabilitas : semakin baik kita dapat mengontrol PL, semakin banyak

pengujian yang dapat diotomatisasi dan dioptimalkan.

• Semua output yang mungkin dapat dimunculkan melalui beberapa

kombinasi output.

• Semua kode dapat dieksekusi melalui berbagai kombinasi input.

• Keadaan dan variable perangkat lunak dan perangkat keras dapat dikontrol

secara langsung oleh perekayasa pengujian. • Format input dan output konsisten dan terstruktur.

(39)

d. Dekomposabilitas : dengan mengontrol ruang lingkup pengujian, kita dapat

dengan lebih cepat mengisolasi masalah dan melakukan pengujian kembali

secara lebih halus.

• Sistem perangkat lunak dibangun dari modul-modul independen.

• Modul-modul perangkat lunak dapat diuji secara independen.

e. Kesederhanaan : semakin sedikit yang diuji, semakin cepat kita dapat

mengujinya.

• Kesederhanaan fungsional (seperti, kumpulan fitur adalah kebutuhan

minimum untuk memenuhi persyaratan)

• Kesederhanaan struktural (seperti, arsitektur dimodularisasi untuk

membatasi penyebaran kesalaha)

• Kesederhanaan kode (seperti, standar pengkodean diadopsi demi

kemudahan inspeksi dan pemeliharaan)

f. Stabilitas : semakin sedikit perubahan, semakin sedikit gangguan dalam

pengujian.

• Perubahan ke Perangkat Lunak tidak sering.

• Perubahan ke Perangkat Lunak terkontrol.

• Perubahan ke Perangkat Lunak memvalidasi pengujian yang sudah ada.

• Kegagalan Perangkat Lunak dapat diperbaiki dengan baik.

g. Kemampuan untuk dapat dipahami : semakin banyak informasi yang kita

miliki, semakin halus pengujian yang akan dilakukan. • Disain dipahami dengan baik

• Ketergantungan di antara komponen internal, eksternal, dan yang dipakai

(40)

• Perubahan ke disain dikomunikasikan.

• Dokumentasi teknik dapat diakses dengan cepat.

• Dokumentasi teknis diorganisasikan dengan baik.

• Dokumentasi teknis spesifik dan detil.

• Dokumentasi teknis akurat.

Atribut-atribut yang disusulkan James Bach tersebut dapat digunakan oleh

perekayasa Perangkat Lunak untuk mengembangkan suatu konfigurasi Perangkat

Lunak (yakni program, data, dokumen, dll) yang dapat dipertanggungjawabkan

pada pengujian.

2.6.3. Atr ibut-Atr ibut Pengujian

a. Pengujian yang baik memiliki probabilitas yang tinggi untuk menemukan

kesalahan.

Untuk mencapai hal ini, penguji harus memahami PL dan berusaha

mengembangkan gambaran mental mengenai bagaimana PL dapat gagal. Idealnya

kelas-kelas kegagalan itu diselidiki.

Sebagai contoh, kelas kegagalan potensial pada GUI adalah kegagalan untuk

mengenali posisi mouse yang sesuai. Serangkaian pengujian akan dirancang untuk

menguji mouse untuk memperlihatkan kesalahan di dalam pengenalan posisi

mouse.

b. Pengujian yang baik tidak redundan.

Waktu pengujian dan sumber daya terbatas. Tidak ada manfaatnya melakukan

pengujian dengan tujuan yang sama dengan pengujian lainnya. Setiap pengujian

(41)

Sebagai contoh, modul PL Safe-Home didisain untuk mengenali password

pemakai untuk mengaktifkan dan mendeaktifkan sistem. Dalam usaha

mengungkap kesalahan pada input password, penguji mendisain serangkaian

pengujian yang memasukkan serangkaian password. Password yang berlaku dan

tidak berlaku (empat urutan numeris) diinputkan sebagai pengujian yang berbeda.

Tetapi masing-masing password valid/invalid harus memeriksa mode kegagalan

yang berbeda. Sebagai contoh, password invalid 1234 tidak boleh diterima oleh

sistem yang diprogram untuk mengenali 8080 sebagai password yang valid. Bila

1234 diterima, maka kesalahan muncul. Pengujian yang lain, katakanlah 1235,

akan memiliki tujuan yang sama dengan 1234 sehingga redundan. Tetapi input

invalid 8081 atau 8180 memiliki perbedaan yang jelas, yang bersusaha

memperlihatkan bahwa suatu kesalahan akan muncul untuk password yang dekat

tetapi tidak sama dengan password valid.

c. Pengujian yang baik seharusnya jenis terbaik.

Dalam suatu kelompok pengujian yang memiliki tujuan yang serupa, batasan

waktu dan sumber daya dapat menghalangi eksekusi hanya kelompok kecil dari

pengujian tersebut. Pada kasus semacam ini maka pengujian yang memiliki

kemungkinan paling besar untuk mengungkap seluruh kelas kesalahan yang tinggi

yang harus digunakan.

d. Pengujian yang baik tidak boleh terlalu sederhana atau terlalu kompleks.

Meskipun kadang-kadang mungkin untuk menggabungkan serangkaian pengujian

ke dalam satu test-case, secara umum masing-masing test-case harus dieksekusi

(42)

Gambar 2.6. Aktifitas Pengujian Perangkat Lunak

Jenis-jenis pengujian perangkat lunak antara lain :

a. Integrated Testing

Fokus deteksi fault pada sekelompok komponen/unit, seperti fungsi, kelas,

packages. Dua atau lebih komponen diintegrasikan dan diuji. Jika tidak ada, maka

komponen lain ditambahkan dan diuji.

langkah-langkah integration testing

• Berdasarkan strategi yang dipilih, pilih komponen yang akan diuji.

Lakukan pengujian unit untuk semua komponen.

• Lakukan persiapan untuk pengujian (pembuatan drivers, stubs)

• Lakukan functional testing: Definisikan test cases yang menguji semua

komponen yang di uji.

• Lakukan structural testing: Definisikan test cases yang menguji semua

komponen yang di uji. • Lakukan performance tests

(43)

• Ulangi langkah 1 to 6 sampai keseluruhan sistem diuji.

Tujuan integration testing adalah mengidentifikasi errors dalam konfigurasi

komponen yang ada.

b. Pendekatan Bottom-up testing

Sub sistem pada lapisan terbawah dalam hirarki pemanggilan diuji secara

indivual. Kemudian sub sistem yang diuji adalah sub sistem yang memanggil sub

sistem yang diuji sebelumnya. Dilakukan secara berulang sampai semua sub

sistem di uji. Butuh Test Driver : Rutin yang memanggil sub sistem yang diuji

dan memberikan test case dapat digambarkan seperti gambar 2.8

Gambar 2.8 Bottom Up Testing

c. Top-down testing

(44)

• Mengkombinasikan semua sub sistem yang dipanggil oleh sub sistem yang

telah diuji dan melakukan pengujian terhadap sub sistem yang hasil

kombinasi tadi.

• Dilakukan secara berulang sampai semua sub sistem di uji.

• Butuh Test stub :

• Program atau fungsi yang mensimulasikan simulates aktivitas sub

sistem yang ‘hilang’ dengan merespons panggilan sub sistem

pemanggilan dan mengembalikan data simulasi.dapat dilihat pada

gambar 2.9

Gambar 2.9. Top Down Testing

d. Sandwich Testing

• Kombinasi pendekatan top-down strategy dan bottom-up.

Sistem dipandang memiliki 3 lapis.

• Lapis target

(45)

• Lapis di bawah target

• Bagaimana menentukan lapisan target jika ada lebih 3 lapisan ?

• Heuristic: mencoba meminimalisir jumlah stub dan drivers, dapat

dilihat pada gambar 2.10

e. Modified Sandwich Testing

• Test secara paralel:

• Lapisan tengah (middle layer) dengan driver dan stub

• Top layer dengan stub

• Bottom layer dengan driver.dapat dilihat pada gabar 2.11

• Test secara paralel:

• Top layer mengakses middle layer (top layer menggantikan driver)

• Bottom diakses oleh middle layer (bottom layer menggantikan

stub)

(46)

Gambar 2.11. Modified Sandwich Testing

f. System Testing

• Dilakukan setelah komponen-komponen diintegrasikan.

• Menjamin bahwa sistem yang lengkap sesuai dengan kebutuhan fungsional

dan non fungsional sistem.

• Pada tahap ini fault yang terjadi pada komponen telah teridentifikasi dan

dikoreksi.

g. Functional Testing

• requirements testing menguji fungsionalitas sistem.

• Pada esensinya sama dengan pengujian Blackbox

• Test cases dirancang dari dokumen analisis kebutuhan (mis. user manual) dan

berfokus pada kebutuhan dan fungsi utama (mis. use cases)

• Pengujian dilakukan dengan memiliki test yang relevan pada pengguna dan

memiliki peluang yang besar untuk menemukan failure.

(47)

• Menemukan perbedaan antara goal (kebutuhan non fungsional) yang

ditentukan pada saat pengembangan sistem dengaan yang diimplementasikan

dalam sistem.

Security testing – menguji keamanan sistem (menemukan security faults).

Menggunakan hacker untuk menguji sistem.

• Timing testing – mengevaluasi waktu tanggap (response times) dan waktu

untuk melakukan sebuah fungsi

• Environmental test – menguji toleransi terhadap lingkungan seperti panas,

kelembaban, gerak

• Quality testing – pengujian keandalan, maintain- ability dan availabilitas

sistem

• Recovery testing – pengujian terhadap tanggapan sistem terhadap adanya

kesalahan atau ketiadaan data.

i. Acceptance Testing

• Tujuan : menunjukkan bahwa sistem sudah siap untuk pemakaian

operasional.

• Pilihan test dibuat oleh client/sponsor

• Banyak test dapat diambil dari integration testing

(48)

• Kebanyakan bug dalam perangkat lunak biasanya ditemukan oleh client

setelah sistem digunakan, bukan oleh developer atau testers test

tambahan (Pilot Test atau Field Test)

j. Pilot Testing

• Alpha test:

• Client menggunakan perangkat lunak di tempat pengembang

(development environment).

• Perangkat lunak digunakan dalam setting terkendali, pengembang

selalu siap untuk memperbaiki kesalahan yang terjadi

• Beta test:

• Dilakukan tempat pengguna (lingkungan yang sebenarnya).

• Pengembang tidak ada

• Perangkat lunak digunakan dalam lingkungan yang sebenarnya

(target environment).

k. Installation Testing

• Sistem di install pada target environment dan dievalusi.

• Mengulangi test cases yang dieksekusi selama functional dan performance

testing dalam target environment.

• Beberapa kebutuhan mungkin tidak bisa diuji dalam development

environment sehingga perlu dibuat test cases yang baru.

2.7.Flow Map

Flow Map adalah diagram yang menunjukan aliran data berupa

(49)

beredar dalam suatu sistem. Notasi yang digunakan dalam suatu flow map

merupakan penggabungan notasi flow chart program. Hal-hal yang harus

diperhatikan dalam menggambarkan flow map adalah sebagai berikut:

a. Penggambaran flow map dimulai dari atas halaman ke bagian bawah,

yang jelas sesuai dengan yang akan dilakukan dalam sistem

e. Semua sub sistem yang digambarkan, harus mengalami siklus informasi

f. Jika penggambaran suatu siklus informasi terpotong, maka gunakan

penghubung antar bagian.

2.8.Embarcadero Delphi 2010

Delphi merupakan alat bantu pengembangan aplikasi yang berbasis

visual. Perangkat ini merupakan hasil pengembangan dari bahasa pemrograman

pascal yang diciptakan oleh Niklaus Wirth. Pada masa itu, Wirth bermaksud

membuat bahasa pemrograman tingkat tinggi sebagai alat bantu mengajar logika

pemrograman komputer kepada para mahasiswanya.

Bahasa pemrograman pascal ini kemudian dikembangkan oleh Borland

yang merupakan salah satu perusahaan software menjadi sebuah tools dengan

(50)

dengan ditemukannya metode pemrograman berorientasi obyek, bahasa

pemrograman pascal berevolusi menjadi object pascal dan dikembangkan oleh

Borland dengan nama Borland Delphi.

Keberhasilan Borland dalam mengembangkan Delphi menjadikan salah

satu bahasa yang populer dan disukai oleh banyak programmer, disamping Visual

Basic yang dikeluar Microsoft di kemudian hari.Lingkungan pengembangan

Delphi yang mudah, intuitif dan memudahkan pemakai, berhasil melampaui

popularitas rivalnya, yaitu Visual Basic, sehingga pernah menyandang predikat

VB-Killer”.

Karena tuntutan perkembangan teknologi, Borland berganti nama

menjadi Code Gear, tetapi tetap mempergunakan nama Delphi untuk tools yang

berbasis object pascal ini. Tidak lama kemudian Code Gear diakuisisi oleh

Embarcadero dan namanya pun berubah menjadi Embarcadero RAD Studio

dengan tetap mempertahankan Delphi sebagai salah satu tools-nya.

Beberapa kelebihan yang dimiliki oleh Embarcadero Delphi 2010 ini

antara lain :

a. Delphi dibangun dengan menggunakan arsitektur native compiler, sehingga

proses kompilasi instruksi menjadi bahasa mesin menjadi lebih cepat.

b. Semua file yang disertakan saat proses kompilasi, digabungkan menjadi satu

sesuai dengan arsitektur native compiler, sehingga mengurangi

ketergantungan terhadap library ataupun file-file pendukung lainya, sesuai

dengan prinsip build once, runs everywhere

c. Delphi mempunyai kemampuan selective object linking, sehingga apabila

(51)

dalam library tersebut yang dipergunakan dalam system, maka secara

otomatis, kompiler tidak akan menyertakan library tersebut dalam proses

kompilasinya. Hal ini berbeda dengan tools lain yang tidak mempunyai

kemampuan seperi itu. Dengan adanya kemampuan tersebut, maka file

eksekusi yang dihasilkan delphi menjadi lebih optimal.

d. Lingkungan pengembangan Delphi sangat intuitif karena semua komponen

yang menjadi alat utama desain visual telah ditampilkan saat pertama kali

langsung dapat diamati oleh user dan dapat digunakan secara langsung.

Gambar 2.14 merupakan tampilan awal bahasa pemrograman Delphi 2010.

Gambar 2.14. Tampilan awal Delphi

Dalam delphi seperti halnya bahasa visual lainnya menyediakan

komponen. Komponen adalah “jantung” bagi pemograman visual. Componen

Palette telah terbagi menjadi berbagai jenis komponen, diantaranya adalah

(52)

komponen-komponen tersebut, developer dapat menghemat waktu dalam

(53)

3.1. Analisa Masalah

Permasalahan yang dibuat dalam tugas akhir ini adalah membuat aplikasi

untuk menyelesaikan permasalahan knapsack dengan simulasi algoritma

exhaustive search dan algorithma branch and bound, sehingga kita bisa melihat

hasil penentuan nilai optimal dan simulasi yang telah dibuat. Data dari hasil

penelitian dengan algoritma ini beserta pengimplementasiannya akan

dibandingkan diantara kedua algorithma tersebut. Dari perbandingan ini akan

diperoleh kelebihan dan kekurangan dari algoritma ini, dan selanjutnya dari

perbandingan tersebut akan diperoleh kesimpulan.

Dalam tugas akhir ini, pengguna diartikan sebagai orang yang mengakses

dan menggunakan perangkat lunak yang dibuat dalam tugas akhir ini, dalam hal

ini pengguna harus memiliki kemampuan dasar untuk mengoperasikan komputer

dan memiliki kapabilitas dalam menggunakan aplikasi komputer.

3.2. Analisa Sistem

Analisa adalah tahap aktifitas kreatif dimana analis berusaha memahami

permasalahan secara mendalam. Ini adalah proses interative yang terus berjalan

hingga permasalahan dapat dipahami dengan benar. Analisis bertujuan untuk

(54)

berdasarkan masukan dari pihak-pihak dan juga pengalaman analis yang

berkepentingan dengan sistem tersebut.

Bahan penelitian dalam tugas akhir ini berasal dari berbagai studi

literatur dari buku-buku teks dan website, yang selanjutnya dipergunakan menjadi

bahan analisis sehingga penulis dapat membuat pemodelan sistem dan merancang

simulasinya.Dalam melakukan analisa, penulis membuat dua jenis analisis, yaitu

analisis kebutuhan non fungsional dan analisis kebutuhan fungsional. Analisis non

fungsional adalah sebuah tahap dimana pengembang perangkat lunak

menganalisis sumber daya yang akan menggunakan perangkat lunak yang

dibangun, sehingga dapat ditentukan kompatibilitas aplikasi yang dibangun

terhadap sumber daya yang ada.

Sedangkan analisis kebutuhan fungsional adalah suatu gambaran dari

informasi yang terjadi pada sistem yang bersangkutan.Dalam analisis kebutuhan

fungsional, dilakukan perancangan aplikasi ini, yang meliputi : algorithma

exhautive search, algorithma branch and bound dan diagram alir sistem.

Sedangkan perangkat keras adalah seluruh komponen atau unsur

peralatan yang digunakan untuk menunjang pembangunan suatu aplikasi, dalam

kasus ini adalah aplikasi kompresi menggunakan kombinasi algoritma LZ77 dan

Huffman. Berikut ini adalah spesifikasi perangkat keras komputer yang

dipergunakan dalam tugas ini adalah :

a. Processor : Intel Multi Core 2,4 Ghz

b. Memory (RAM) : 1024 MBytes

(55)

d. Monitor : LCD 14 inch

e. Keyboard dan Mouse

Sedangkan perangkat lunak yang dipergunakan dalam tugas akhir ini

adalah :

a. Sistem Operasi Microsoft Windows 7 Profesional

b. Embarcadero RAD Studio 2010

c. Microsoft Visio Profesional 2010

d. Microsoft Office 2010

3.3. Algorithma Exhaustive Search

Pada algorithma exhaustive search dalam menyelesaikan permasalahan

knapsack akan mencoba menghitung setiap kombinasi susunan kombinasi item.

Untuk sejumlah n item, akan menghasilkan 2^n kombinasi item yang akan

diperiksa. Himpunan kombinasi ini dapat direpresentasikn sebagai sebuah pohon

biner dengan setiap jalur yang dimulai dari root menuju akhir yaitu daun.

Kombinasi juga dapat direpresentasikan sebagai notasi dari angka 0

sampai 2^n. Jadi, sebagai contoh, jika terdapat tiga item, maka kombinasinya

merepresentasikan item 1 dan 2, perkecualian item 3 dapat menjadi nomor 6

(bentuk binernya 110). Jika terdapat 20 sampai 30 item akan menghasilkan

kombinasi milyaran sampai trilyunan yang harus diperiksa oleh komputer dan hal

ini memerlukan waktu yang relatif lama, bergantung pada spesifikasi perangkat

(56)

Penjelasan dari algorithma exhaustive search diatas adalah sebagai berikut :

Sistem akan memeriksa apakah cost yang sedang diuji nilainya kurang

dari sama dengan cost yang diijinkan dan nilai profit yang sedang diuji lebih dari

profit yang terbaik, jika dua kondisi yang terpenuhi maka sistem akan melakukan

iterasi penugasan nilai terbaik saat ini dengan nilai yang diperiksa saat ini. Proses

ini akan diulang sampai sejumlah item telah dipenuhi. Kemudian nilai profit

terbaik akan diganti dengan nilai tes profit yang baru. Begitu juga dengan nilai

cost terbaik akan digantikan oleh nilai tes cost yang baru.

Selain itu (jika kondisi item_num > NumItems tidak terpenuhi),

TestSolution[item_num] = True

TestCost = TestCost + Items[item_num].Cost

TestProfit = TestProfit + Items[item_num].Profit

ExhaustiveSearch(item_num + 1)

TestSolution[item_num] = False

TestCost = TestCost - Items[item_num].Cost

TestProfit = TestProfit - Items[item_num].Profit

if item_num<numitems then

(57)

nilai cost yang diuji dengan cost item saat ini untuk item yang ditambahkan.

Sedangkan untuk item yang dikeluarkan berlaku sebaliknya.

Proses diatas akan terus berulang secara rekursif sampai kondisi item saat

ini yang sedang diperiksa belum mencapai keseluruhan item yang harus diperiksa.

Jika kondisi tersebut telah terpenuhi, maka sistem akan berhenti melakukan

rekursif.

3.4. Algorithma Branch And Bound

Algorithma branch and bound merupakan algorithma yang secara signifikan

mengurangi jumlah kombinasi yang terbentuk untuk diperiksa. Dengan cara

tersebut akan memangkas pencarian pada tree dengan membatalkan jalur

pencarian yang memberikan nilai buruk. Berikut ini adalah algorithma branch and

bound yang dipergunakan dalam tugas akhir ini :

if (item_num > NumItems) then

(58)

Penjelasan dari algorithma branch and bound diatas adalah sebagai berikut :

Sistem akan memeriksa posisi item saat ini belum mencapai jumlah item

maka sistem akan menyimpan deretan solusi terbaik dari nilai uji solusi secara

berulang mulai satu sampai sejumlah item. Kemudian nilai profit terbaik diisi

dengan nilai uji profit dan nilai cost terbaik diisi dengan nilai uji cost.

Selain itu jika nilai uji cost ditambah dengan cost item saat ini belum

mencapai nilai cost yang diijinkan, jumlah jalur pemeriksaan ditambahkan,

kemudian nilai cost uji ditambahkan dengan cost item saat ini dan nilai profit

yang belum ditentukan dikurangkan dengan profit item saat ini.

Karena bekerja secara rekursif maka sub rutin BranchAndBound

dipanggil kembali. Kemudian nilai uji cost dikurangkan dengan nilai cost item

saat ini, begitu juga nilai uji profit dikurangkan dengan nilai item saat ini. Dan,

UnassignedProfit = UnassignedProfit +

Items[item_num].Profit

UnassignedProfit = UnassignedProfit –

Items[item_num].Profit

if (TestProfit + UnassignedProfit > BestProfit) then

(59)

ditentukan melebihi nilai profit terbaik, maka sub rutin BranchAndBound

dipanggil kembali.

3.5. Diagr am Alir Sistem

(60)

3.6. Flowchart Exhautive Search

(61)

3.7. Flowchart Branc And Bound

(62)

4.1. Perancangan Sistem

Perancangan antarmuka dibutuhkan untuk mewakili keadaan sebenarnya

dari aplikasi yang akan dibangun. Dan seperti developer visual lainnya,

Embarcadero RAD Studio sudah menyediakan berbagai macam komponen untuk

menghemat waktu pengembangan sesuai dengan kebutuhan developer. Berikut

akan disajikan perancangan antarmuka dari aplikasi yang akan dibangun :

4.1.1. Perancangan Form Utama

Gambar 4.1. Rancangan Form Utama

Rancangan form pada gambar 4.1 terdapat text box untuk menentukan

jumlah item dengan tombol spinner, text box untuk menentukan besaran cost

dengan tombol spinner, text box untuk cost minimal dan maksimal, text box untuk

profit minimal dan maksimal, tombol untuk membangkitkan bilangan acak

(63)

bound dan keduanya), string grid untuk menampilkan nilai-nilai knapsack yang

akan dicari nilai optimalnya, scroll box untuk menampilkan susunan kombinasi

nilai optimal metode exhaustive search dan branch and bound, panel untuk

informasi nilai optimal yang telah dicapai dan waktu komputasinya (baik

menggunakan metode exhaustive search dan branch and bound).

Selain itu juga terdapat tombol evaluasi untuk menampilkan form grafik,

tombol info untuk menampilkan informasi pembuat, tombol hitung untuk

menghitung nilai optimal knapsack berdasarkan metode yang dipilih user dan

tombol keluar untuk mengakhiri program.

4.1.2. Perancangan Form Grafik

Gambar 4.2. Rancangan Form Grafik

Rancangan form pada gambar 4.2 terdapat komponen chart sebanyak dua buah,

yaitu menampilkan grafik perbandingan nilai cost optimal yang diperoleh dari dua

metode, perbandingan nilai profit optimal dan tabel nilai BB Search dan

Exhaustive Search, serta tombol OK untuk keluar dari form grafik dan kembali ke

(64)

4.1.3. Rancangan Diagr am Kelas Global

Pada rancangan diagram kelas global seperti yang terlihat pada gambar

4.3 dibawah ini menunjukkan terdapat tiga kelas yang dipergunakan dalam

pembuatan aplikasi tugas akhir ini. Modul HitKnapsack dipergunakan untuk

instansiasi dan memanggil obyek dari kelas yang terdapat di modul

U_HitungKnapsack dan modul U_Laporan. Sedangkan modul

U_HitungKnapsack dipergunakan untuk mendeklarasikan dan mendefinisikan

kelas TBandForm dan modul U_Laporan dipergunakan untuk mendeklarasikan

dan mendefinisikan kelas TF_Laporan dapat dilihat pada gambar 4.3

(65)

4.1.4. Rancangan Diagr am Kelas Tband For m

Kelas TbandForm adalah kelas yang dirancang untuk menerima input

dari user, membangkitkan bilangan dalam permasalahan knapsack, melakukan

penghitungan nilai optimal dengan menggunakan metode branch and bound dan

(66)

Gambar

Gambar 2.1. Pemodelan ruang pencarian Algorithma Branch And Bound
Gambar 2.6. Aktifitas Pengujian Perangkat Lunak
Gambar 2.8 Bottom Up Testing
gambar 2.9
+7

Referensi

Dokumen terkait

Rita Dewi Sartika, selaku pemilik perusahaan CV Hoge Honjo yang telah mengizinkan penulis mengumpulkan data yang diperlukan dalam menyelesaikan laporan akhir ini. Semua

Jika dibandingkan dengan tamu menginap bulan Desember 2015 yaitu sebanyak 54.796 orang, mengalami peningkatan sebesar 56,48 persen... 2 Berita Resmi Statistik Provinsi NTB

Rumah sakit umum kelas A memiliki tenaga medis sebanyak 37 orang, tenaga kefarmasian minimal 39 orang, tenaga keperawatan sebanyak jumlah tempat tidur yang ada

Mahasiswa, dengan berbagai kegiatan yang dilakukannya, membutuhkan berbagai kemampuan yang tidak hanya melulu membutuhkan IQ saja, tetapi lebih pada kemampuan emosional yang

Dengan menjalin kerjasama yang baik dengan Purna Paskibra Indonesia (PPI) Cabang Kota Bogor sebagai organisasi kepemudaan yang berkompeten di bidang seleksi dan diklat

pixel ruangan secara realtime yang ditampung kedalam variabel array kedua dan dijumlahkan nilainya. Nilai dari penjumlahan array kedua dapat berubah jika terdapat

Laporan Akuntabilitas Kinerja Instansi Pemerintah (LKjIP) Badan Penanaman Modal Kabupaten Banyumas Tahun 2016 telah disusun berdasarkan Peraturan Menteri

Adapun kesimpulan dalam penelitian ini diantaranya yaitu taruna laki-laki semester III dan VII tidak ada yang masuk dalam kategori kurus, kategori normal sebanyak