BAB II LANDASAN TEORI
2.1
Teori graf
2.1.1
Sejarah Graf Menurut catatan sejarah, masalah jembatan Konigsberg adalah masalah
yang pertama kali menggunakan graf (tahun 1736). Ada tujuh jembatan yang menghubungkan daratan yang dibelah oleh sungai tersebut. Kemudian masalah jembatan itu adalah apakah mungkin melalui ketujuh buah jembatan itu masingmasing tepat satu kali, dan kembali lagi ke tempat semula? Tetapi pada tahun 1736 seorang matematikawan asal Swiss, L.Euler, adalah orang pertama yang berhasil menemukan jawaban masalah tersebut dengan pembuktian yang sederhana. Ia memodelkan masalah tersebut ke dalam graf. Daratan (titik yang dihubungkan oleh jembatan) dinyatakan sebagai titik (noktah) – yang disebut dengan simpul (vertex) – dan jembatan dinyatakan dengan garis – yang disebut (edge). (Munir, Rinaldi 2005: 354) 2.1.2 Definisi Graf Graf adalah kumpulan simpul (nodes) yang dihubungkan satu sama lain melalui sisi/busur (edges) (Munir, Rinaldi, 2005: 356). Suatu Graf G terdiri dari dua himpunan yaitu himpunan V dan himpunan E. a. Verteks (simpul) : V = himpunan simpul yang terbatas dan tidak kosong.
b. Edge (sisi/busur) : E = himpunan busur yang menghubungkan sepasang simpul.
10
Dapat dikatakan graf
adalah
kumpulan
dari
simpul-simpul
yang
dihubungkan oleh sisi-sisi.
Gambar 2.1 Graf G Pada G diatas, graf terdiri dari himpunan V dan E yaitu: V = {A, B, C} E = {e1, e2, e3, e4} = {(A,B),(B,C),(B,C),(A,C)} 2.1.3 Macam-macam Graf Menurut arah dan bobotnya, graf dibagi menjadi empat bagian, yaitu : 1. Graf berarah dan berbobot : tiap busur mempunyai anak panah dan bobot. Gambar 2.2 menunjukkan graf berarah dan berbobot yang terdiri dari tujuh titik yaitu titik A,B,C,D,E,F,G. Titik menujukkan arah ke titik B dan titik C, titik B
menunjukkan arah ke titik D dan titik C, dan
seterusnya. Bobot antar titik A dan titik B pun telah di ketahui.
Gambar 2.2 Graf berarah dan berbobot 2. Graf tidak berarah dan berbobot : tiap busur tidak mempunyai anak panah tetapi mempunyai bobot. Gambar 2.3 menunjukkan graf tidak
11
berarah
dan berbobot.
Graf
terdiri
dari tujuh titik yaitu titik
A,B,C,D,E,F,G. Titik A tidak menunjukkan arah ke titik B atau C, namun bobot antara titik A dan titik B telah diketahui. Begitu juga dengan titik yang lain.
Gambar 2.3 Graf tidak berarah dan berbobot 3. Graf berarah dan tidak berbobot: tiap busur mempunyai anak panah yang tidak berbobot. Gambar 2.4 menunjukkan graf berarah dan tidak berbobot.
Gambar 2.4 Graf berarah dan tidak berbobot
12
4. Graf tidak berarah dan tidak berbobot: tiap busur tidak mempunyai anak panah dan tidak berbobot. (Munir, Renaldi 2005: 358)
Gambar 2.5 Graf tidak berarah dan tidak berbobot 2.1.4 Terminalogi Dasar Graf Dalam
Teori
graf
terdapat
beberapa
terminologi
(istilah)
yang
berkaitan dengan graf yang akan didefinisikan satu persatu sebagai berikut: 1. Bertetangga (Adjacent) Dua buah smpul pada graf dikatakan bertetangga bila keduanya terhubung langsung dengan sebuah sisi. Dengan kata lain, vj bertetangga dengan vk jika (vj,vk) adalah sebuah sisi pada graf G. 2. Bersisian (Incident) Untuk sembarang sisi e=(vj,vk), sisi e dikatakan bersisian dengan simpul vj dan simpul vk. 3. Simpul Terpencil (Isolated Vertex) Simpul terpencil adalah simpul yang tidak mempunyai sisi yang bersisian dengannya. Atau dapat dinyatakan bahwa simpul terpencil adalah simpul yang tidak satupun bertetangga dengan simpul-simpul lainnya.
13
4. Graf Kosong (Null Graph atau Empty Graph) Graf yang himpunan sisinya merupakan himpunan kosong disebut sebagai graf kosong dan ditulis sebagai Nn, yang dalam hal ini n adalah jumlah simpul. 5. Derajad (Degree) Derajad suatu simpul pada graf tak berarah adalah jumlah sisi yang bersisian dengan simpul tersebut. Pada graf berarah, derajad simpul v dinyatakan dengan din(v) dan dout(v), yang dalam hal ini din(v)=derajad masuk=derajad busur
yang
masuk
ke
simpul
;
dout(v)=derajad
keluar=derajad busur yang keluar ke simpul. Untuk sembarang graf G, banyaknya simpul yang berderajad ganjil selalu genap. 6. Lintasan (Path) Lintasan yang panjangnya n dari simpul awal v0 ke simpul tujuan vn di dalam graf G adalah barisan berselang-seling simpul-simpul dan sisi-sisi yang berbentuk
v0,e1,v1,e2,v2,e3,v3,...,vn-1,en,vn
sedemikian
sehingga e1=(v0,v1), e2=(v1,v2),, ... en=(vn-1,vn) adalah sisi-sisi dari graf G. 7. Siklus(Cycle) atau Sirkuit (Circuit) Lintasan yang berawal dan berakhir di simpul yang sama disebut sirkuit atau siklus 8. Terhubung (Connected) Graf Tak Berarah G disebut graf terhubung (connected graph) jika untuk setiap pasang simpul vi dan vj di dalam himpunan V terdapat
14
lintasan dari vi ke vj (yang berarti ada lintasan dari vi ke vj).Jika tidak maka G disebut graf tak-terhubung. Graf berarah G dikatakan terhubung jika graf tak-berarahnya terhubung (graf tak-berarahnya dari G diperoleh dengan
menghilangkan arahnya). Graf berarah disebut graf terhubung
kuat(strongly connected graph) apabila untuk setiap pasang simpul sembarang vi dan vj di G terhubung kuat. Kalau tidak, G disebut graf terhubung lemah. 9. Upagraf (Subgraph) dan Komplemen Upagraf Misalkan G=(V,E) adalah sebuah graf. G1= (V1,E1) adalah upagraf (subgraph) dari G jika V1 V dan E1 E. Komplement dari upagraf G1 terhadap graf G adalah graf G2= (V2,E2) sedemikian sehingga E2=E-E1 dan V2 adalah himpunan simpul yang anggota-anggota E2 bersisian dengannya. 10. Upagraf Merentang (Spanning Supgraph) Upagraf
G1
=
(V1,E1)
dari
G=
(V,E)
dikatakan
upagraf
merentang jika V1=V(yaitu G1 mengandung semua simpul dari G). 11. Cut-set Cut set dari graf terhubung G adalah himpunan sisi yang bila dibuang dari G menyebabkan G tidak terhubung. Jadi, cut set selalu menghasilkan dua buah komponen terhubung. 12. Graf Berbobot Graf Berbobot adalah graf yang setiap sisinya diberi sebuah harga (bobot). (Munir, Rinaldi, 2005: 365 )
15
2.2
Algoritma Dijkstra
2.2.1
Sejarah Algoritma Dijkstra Di dalam sejarah, sampai saat ini sudah banyak algoritma mencari lintasan
terpendek yang pernah ditulis oleh orang – orang diluar sana. Tetapi algoritma pencarian lintasan terpendek yang paling terkenal adalah algoritma Dijkstra. Sesuai dengan nama penemunya, Edsger W. Dijkstra seorang ilmuan komputer berkebangsaan Belanda. Dalam naskah aslinya, algoritma Dijkstra diterapkan untuk mencari lintasan terpendek pada graf berarah. Namun, algoritma ini juga benar untuk graf tak – berarah (Munir, Rinaldi 2005: 413). 2.2.2
Definisi Algoritma Dijkstra Kata algoritma berasal dari nama Abu Ja’far Muhammad Ibnu Musa
Al-Khawarizmi Al-Khawarizmi dibaca orang Barat menjadi Algorism. Kata ini kemudian berubah menjadi algorithm karena terpengaruh kata arithmetic, dan di Indonesia kata ini menjadi algoritma. Algoritma adalah langkah-langkah logis yang diperlukan dalam menyelesaikan suatu masalah. Dari pengertian tersebut dapat pula dikatakan bahwa tujuan dari penggunaan algoritma adalah untuk mendapatkan petunjuk dalam menyelesaikan suatu permasalahan (Munir, Renaldi 1999: 3). Pada dasarnya, algoritma dijkstra merupakan salah satu bentuk algoritma greedy. Algoritma ini termasuk algoritma pencarian graf yang digunakan untuk menyelesaikan masalah lintasan terpendek dengan satu
sumber pada sebuah graf yang tidak memiliki cost sisi negative, dan
menghasilkan sebuah pohon lintasan terpendek. Algoritma ini sering digunakan
16
pada routing. Algoritma dijkstra mencari lintasan terpendek dalam sejumlah langkah. Algoritma ini menggunakan strategi greedy sebagai berikut: 1. Untuk setiap simpul sumber (source) dalam graf, algoritma ini akan mencari jalur dengan cost minimum antara simpul tersebut dengan simpul lainnya. 2. Algoritma ini juga dapat digunakan untuk mencari total biaya (cost) dari lintasan terpendek yang dibentuk dari sebuah simpul ke sebuah simpul tujuan. 2.2.3 Tinjauan Awal Dijkstra Algoritma dijkstra (Shortest Path Algorithms) adalah algoritma untuk menemukan jarak terpendek dari suatu vertex ke vertex yang lainnya pada suatu graph yang berbobot, dimana jarak antar vertex adalah bobot dari tiap edge pada graph tersebut. Algoritma dijkstra mencari jarak terpendek untuk tiap vertex dari suatu graph yang berbobot. Algoritma ini mencari jarak terpendek dari node asal ke vertex terdekatnya, kemudian ke vertex kedua, dan seterusnya. Secara umum, sebelum dilakukan iterasi, algoritma sudah mengidentifikasi jarak terdekat dari i-1 vertex terdekatnya.
Selama
seluruh edge berbobot
tertentu
yang
(positif), maka vertex terdekat berikutnya dari node asal dapat ditemukan selama vertex berdekatan dengan vertex Ti. Kumpulan vertex yang berdekatan dengan vertex di Ti dapat dikatakan sebagai “fringe vertices”. Vertex inilah yang
merupakan kandidat dari algoritma dijkstra untuk memilih vertex
berikutnya dari node asal. Algoritma Dijkstra merupakan salah satu varian
17
bentuk algoritma populer dalam pemecahan persoalan yang terkait dengan masalah optimasi. Sifatnya sederhana dan lempang (straight forward). Sesuai dengan arti greedy yang secara harafiah berarti tamak atau rakus - namun tidak dalam konteks negatif -, algoritma greedy ini hanya memikirkan solusi terbaik yang akan diambil pada setiap langkah tanpa memikirkan konsekuensi ke depan. Elemen-elemen penyusun prinsip greedy pada Algoritma Dijkstra adalah : 1. Himpunan
kandidat.
Himpunan
ini
berisi
elemen-elemen
yang
memiliki peluang untuk membentuk solusi. Pada persoalan lintasan terpendek dalam graf, himpunan kandidat ini adalah himpunan simpul pada graf tersebut. 2. Himpunan solusi. Himpunan ini berisi solusi dari permasalahan yang diselesaikan dan elemennya terdiri dari elemen dalam himpunan kandidat namun tidak semuanya atau dengan kata lain himpunan solusi ini adalah upabagian dari himpunan kandidat. 3. Fungsi seleksi. Fungsi seleksi adalah fungsi yang akan memilih setiap kandidat yang yang memungkinkan untuk menghasilkan solusi optimal pada setiap langkahnya. 4. Fungsi kelayakan. Fungsi kelayakan akan memeriksa apakah suatu kandidat yang telah terpilih (terseleksi) melanggar constraint atau tidak. Apabila kandidat melanggar constraint maka kandidat tidak akan dimasukkan ke dalam himpunan solusi.
18
5. Fungsi
objektif.
Fungsi
objektif
akan
memaksimalkan
atau
meminimalkan nilai solusi. Tujuannya adalah memilih satu saja solusi terbaik dari masing-masing anggota himpunan solusi. Ada beberapa kasus pencarian lintasan terpendek yang diselesaikan menggunakan algoritma Dijkstra, yaitu: a. Pencarian lintasan terpendek antara semua pasangan simpul (all pairs shortest path). b. Pencarian lintasan terpendek dari simpul tertentu ke semua simpul yang lain (single-source shortest path). c. Pencarian lintasan terpendek antara dua buah simpul yang melalui beberapa simpul tertentu (intermediate shortest path). 2.2.4 Pseudocode Algoritma Dijkstra Pseudocode adalah deskripsi dari algoritma pemrograman computer yang menggunakan struktur sederhana dari beberapa bahasa pemograman tetapi bahasa tersebut hanya ditujukan agar dapat dibaca manusia. Biasanya yang ditulis dari pseudocode adalah variabel dan fungsi. Tujuan penggunaan utama dari pseudocode adalah untuk memudahkan manusia dalam memahami prinsip-prinsip dari suatu algoritma. Ada beberapa versi algoritma Dijkstra yang ditulis pada berbagai pustaka. Algoritma yang akan dibahas ini adalah salah satu versi algoritma tersebut.
19
Berikut dibawah ini adalah sebuah pseudocode dari algoritma dijkstra: function Dijkstra(Graph, source): for each vertex v in Graph: dist[v] := infinity ; previous[v] := undefined end for dist[source] := 0 ; Q:=the set of all nodes in Graph ; while Q is not empty: u := vertex in Q with smallest distance in dist[] ; remove u from Q ; if dist[u] = infinity: break ; end if for each neighbor v of u: alt := dist[u] + dist_between(u, v) if alt < dist[v]: dist[v] := alt ; previous[v] := u ; decrease-key v in Q; end if end for end while return dist;
(Munir, Rinaldi, 2005: 365 )
2.2.5
Kajian Mengenai Penelitian Pencarian Rute Terpendek Lainnya
1. Penentuan rute terpendek menuju pusat kesehatan menggunakan metode dijkstra berbasis web gis (studi kasus kota Balikpapan) Penelitian ini dibuat pada tahun 2011 dan dilakukan oleh tiga orang yaitu Wiwik Anisiyah, Fahrul Agus, Hamdani. Tujuan dari penelitiaan ini adalah mempermudah masyarakat dalam mencari Rumah Sakit dan Puskesmas yang ada di Kota Balik Papan. Selain itu, waktu tempuh yang digunakan akan lebih cepat karena aplikasi ini didukung dengan menggunakan metode pencarian rute terpendek.
20
Penelitian ini mengunakan metode algotitma dijkstra dan pemetaannya menggunakan web gis. Algoritma dijkstra itu sendiri adalah algoritma untuk menemukan jarak terpendek dari suatu vertex ke vertex yang lainnya pada suatu graph yang berbobot, dimana jarak antar vertex adalah bobot dari tiap edge pada graph tersebut. Hasil yang dari penelitian ini adalah sistem akan melakukan pencarian jalur terpendek yang dapat mempermudah masyarakat dalam mencari informasi dan letak pusat kesehatan yang terdapat di Kota Balikpapan. Selain itu, dengan adanya WebGIS penentuan rute terpendek menuju pusat kesehatan Kota Balikpapan menjadi lebih singkat karena menggunakan metode dijkstra ini, dapat membantu memberikan informasi dalam bentuk peta. 2. Optimalisasi penggunaan angkutan umum dengan sistem rute transportasi umum (SITRUM) Penelitian ini dibuat pada tahun 2010 dan dilakukan oleh tiga orang yaitu Ade Kurniawati, Ardhi, dan Yasmin Khairina. Tujuan dari penelitiaan ini adalah membuat sistem informasi yang diharapkan dapat memberikan pelayanan mengenai informasi rute transportasi umum melalui media ponsel ataupun internet yang bisa diakses masyarakat secara praktis sehingga minat masyarakat dalam menggunakan transportasi umum meningkat. Penelitian ini menggunakan metode Algoritma Depth First Shorts (DFS) dan tools yang digunakan adalah J2ME (Java 2 Platform Micro Edition. Sekilas mengenai algoritma Depth First Shorts (DFS) adalah, 21
algoritma untuk melintasi atau mencari pohon atau grafik struktur data. Dimulai pada akar (memilih beberapa simpul sebagai akar dalam kasus grafik) dan mengeksplorasi sejauh mungkin sepanjang setiap cabang sebelum
kemunduran.
Pendekatan
algoritma
ini
biasanya
diimplementasikan menggunakan tumpukan (stack) (Nugroho, Adi 2009: 499). Kelebihan dari algoritma ini adalah Membutuhkan memori yang relative kecil, karena hanya node-node pada lintasan yang aktif saja. Selain itu, metode depth-first search akan menemukan solusi tanpa harus menguji lebih banyak lagi dalam ruang keadaan. Sementara kekurangan dari algoritma ini adalah Memungkinkan tidak ditemukannya tujuan yang diharapkan, dan hanya akan menemukan satu solusi pada setiap pencarian. Hasil dari penelitian ini adalah bahwa sistem ini dapat diakses melalui dua antar muka, yaitu yang pertama menggunakan SITRUM Mobile Aplication kemudian yang kedua menggunakan SITRUM Website. 3. Algoritma untuk menemukan jalur yang optimal dalam jaringan angkutan umum dengan data real-time Penelitian ini dibuat pada tahun 2010 dan dilakukan oleh tiga orang yaitu Jerald Jariyasunant, Eric Mai, dan Raja Sengupta. Tujuan dari penelitian ini adalah Mengsingkronkan data real time transit bus dengan pencarian rute optimum. Metode yang digunakan pada penelitian ini adalah menggunakan Algoritma K-Shortest Paths. Algoritma K-Shortest Paths adalah algoritma perpanjangan jalur rute terpendek dalam suatu jaringan. Kadang penting untuk memiliki lebih
22
dari satu jalur antara dua node dalam suatu jaringan. Dalam hal terdapat kendala tambahan, jalan-jalan lain yang berbeda dari jalur terpendek dapat dihitung. Untuk menemukan jalan terpendek yang dapat menggunakan algoritma jalur terpendek seperti algoritma Dijkstra atau algoritma Bellman Ford dan memperluas mereka untuk menemukan lebih dari satu jalur. Algoritma K-Shortest Paths adalah generalisasi dari masalah jalan terpendek. Algoritma ini tidak hanya menemukan jalur terpendek, tetapi juga K memilih jalan lain dalam rangka peningkatan biaya. K adalah jumlah jalur terpendek untuk menemukan. Masalahnya dapat dibatasi untuk memiliki K-Shortest Paths tanpa loop (loopless K-Shortest Paths) atau dengan lingkaran. (Sumber: http://en.wikipedia.org/wiki/K_shortest_path_routing diakses pada tanggal 6 juli 2013) Kelebihan algoritma ini adalah bahwa untuk suatu Lintasan dan skema pembobotan yang tepat, jalur dapat ditemukan dengan akurasi yang tinggi. Sedangkan kelemahannya adalah bahwa skema pembobotan harus dioptimalkan untuk jaringan komputer. 2.2.6
Perbandingan Semua Penelitian yang telah dibahas Setelah mendeskripsikan beberapa hasil penelitian tentang pecarian rute
terpendek diatas, kemudian kita akan membuat perbandingan mengenai kekurangan dan kelebihan terhadap penelitian yang telah dibuat. Untuk itu, agar lebih jelas dalam memahami sebuah penelitian yang telah dipaparkan diatas,
23
berikut dibawah ini Tabel 2.1 yang akan membantu menjelaskan kelebihan dan kekurangan dari masing-masing penelitian tersebut. Tabel 2.1 Perbandingan Hasil Penelitian No 1.
Peneliti
Kelebihan
Kekurangan
Penentuan rute terpendek - Selain mendapatkan - Gambar peta yang di menuju
pusat
kesehatan
menggunakan
metode
rute terpendek,
tampilkan kurang
penggunanya juga
menarik.
dijkstra berbasis web gis
mendapatkan saran - Sistem yang bekerja
(studi
untuk menggunakan masih terlihat statis.
kasus
kota
Balikpapan)
angkutan supaya lebih cepat sampai ke tempat tujuan.
2.
Optimalisasi angkutan sistem
penggunaan - Mengunakan
umum rute
- Aplikasi kurang
dengan
perangkat mobile
menarik karena tidak
transportasi
sehingga dapat di
disajikan simulasi rute
akses dimana saja.
mengunakan peta.
umum (SITRUM)
- algoritma yang digunakan kurang efisien, karena program harus melakukan pencarian seluruh rute, kemudian menghitung rute mana yang paling pendek.
24
Tabel 2.1 Perbandingan Hasil Penelitian (Lanjutan) No 3.
Peneliti
Kelebihan
untuk - Data transit bus yang - Tampilan
Algoritma menemukan optimal angkutan
Kekurangan
jalur
dalam umum
yang real time terintegrasi
simulasi
peta kurang menarik.
jaringan dengan baik dengan menggunakan
data real-time
perhitungan algoritma Kshortest-paths
4.
Penerapan
algoritma - Tampilan simulasi
- Kecepatan koneksi
dijkstra pada pencarian rute
peta lebih menarik
internet akan
terpendek angkutan kota
karena langsung
mempengaruhi
dan damri di Kota Bandung
terintegrasi dengan
kecepatan simulasi
google map api.
peta rute yang di
- Selain mendapatkan
peroleh.
rute terpendek, penggunanya juga mendapatkan saran untuk menggunakan angkutan supaya lebih cepat sampai ke tempat tujuan.
2.3
Hypertext Processor (PHP) Hypertext Preprocessor adalah bahasa skrip yang dapat ditanamkan atau
disisipkan ke dalam HTML. PHP banyak dipakai untuk memrogram situs web dinamis. PHP dapat digunakan untuk membangun sebuah CMS.
25
2.3.1
Sejarah PHP Pada awalnya PHP merupakan kependekan dari Personal Home Page
(Situs personal). PHP pertama kali dibuat oleh Rasmus Lerdorf pada tahun 1995. Pada waktu itu PHP masih bernama Form Interpreted (FI), yang wujudnya berupa sekumpulan skrip yang digunakan untuk mengolah data formulir dari web. Selanjutnya Rasmus merilis kode sumber tersebut untuk umum dan menamakannya PHP/FI. Dengan perilisan kode sumber ini menjadi sumber terbuka, maka banyak pemrogram yang tertarik untuk ikut mengembangkan PHP. Pada November 1997, dirilis PHP/FI 2.0. Pada rilis ini, interpreter PHP sudah diimplementasikan dalam program C. Dalam rilis ini disertakan juga modulmodul ekstensi yang meningkatkan kemampuan PHP/FI secara signifikan. Pada tahun 1997, sebuah perusahaan bernama Zend menulis ulang interpreter PHP menjadi lebih bersih, lebih baik, dan lebih cepat. Kemudian pada Juni 1998, perusahaan tersebut merilis interpreter baru untuk PHP dan meresmikan rilis tersebut sebagai PHP 3.0 dan singkatan PHP diubah menjadi akronim berulang PHP: Hypertext Preprocessing. Pada pertengahan tahun 1999, Zend merilis interpreter PHP baru dan rilis tersebut dikenal dengan PHP 4.0. PHP 4.0 adalah versi PHP yang paling banyak dipakai pada awal abad ke-21. Versi ini banyak dipakai disebabkan kemampuannya untuk membangun aplikasi web kompleks tetapi tetap memiliki kecepatan dan stabilitas yang tinggi.
26
Pada Juni 2004, Zend merilis PHP 5.0. Dalam versi ini, inti dari interpreter PHP mengalami perubahan besar. Versi ini juga memasukkan model pemrograman berorientasi objek ke dalam PHP untuk menjawab perkembangan bahasa pemrograman ke arah paradigma berorientasi objek. 2.3.2
Keunggulan PHP Beberapa kelebihan PHP dari bahasa pemrograman web, antara lain:
1. Bahasa pemrograman PHP adalah sebuah bahasa script yang tidak melakukan sebuah kompilasi dalam penggunaanya. 2. Web Server yang mendukung PHP dapat ditemukan dimana - mana dari mulai apache, IIS, Lighttpd, hingga Xitami dengan konfigurasi yang relatif mudah. 3. Dalam sisi pengembangan lebih mudah, karena banyaknya milis - milis dan developer yang siap membantu dalam pengembangan. 4. Dalam sisi pemahamanan, PHP adalah bahasa scripting yang paling mudah karena memiliki referensi yang banyak. PHP adalah bahasa open source yang dapat digunakan di berbagai mesin (Linux, Unix, Macintosh, Windows) dan dapat dijalankan secara runtime melalui console serta juga dapat menjalankan perintah-perintah system. 2.4
MySQL Mysql adalah sebuah perangkat lunak system manajemen basis data SQL
(Database Management System) atau DBMS yang multithread, multi-user, dengan sekitar 6 juta instalasi diseluruh dunia.
27
2.4.1
Pengertian MySQL MySQL AB membuat MySQL tersedia sebagai perangkat lunak gratis
dibawah lisensi GNU General Public License (GPL), tetapi mereka juga menjual dibawah lisensi komersial untuk kasus-kasus dimana penggunaannya tidak cocok dengan penggunaan GPL. Tidak sama dengan proyek-proyek seperti Apache, dimana perangkat lunak dikembangkan oleh komunitas umum, dan hak cipta untuk kode sumber dimiliki oleh penulisnya masing-masing, MySQL dimiliki dan disponsori oleh sebuah perusahaan komersial Swedia MySQL AB, dimana memegang hak cipta hampir atas semua kode sumbernya. Kedua orang Swedia dan satu orang Finlandia yang mendirikan MySQL AB adalah: David Axmark, Allan Larsson, dan Michael "Monty" Widenius. 2.4.2 Sistem Manajemen Basis Data Relasional MySQL adalah sebuah implementasi dari sistem manajemen basisdata relasional (RDBMS) yang didistribusikan secara gratis dibawah lisensi GPL (General Public License). Setiap pengguna dapat secara bebas menggunakan MySQL, namun dengan batasan perangkat lunak tersebut tidak boleh dijadikan produk turunan yang bersifat komersial. MySQL sebenarnya merupakan turunan salah satu konsep utama dalam basisdata yang telah ada sebelumnya; SQL (Structured Query Language). SQL adalah sebuah konsep pengoperasian basisdata, terutama untuk pemilihan atau seleksi dan pemasukan data, yang memungkinkan pengoperasian data dikerjakan dengan mudah secara otomatis.
28
Kehandalan suatu sistem basisdata (DBMS) dapat diketahui dari cara kerja pengoptimasi-nya dalam melakukan proses perintah-perintah SQL yang dibuat oleh pengguna maupun program-program aplikasi yang memanfaatkannya. Sebagai peladen basis data, MySQL mendukung operasi basisdata transaksional maupun operasi basisdata non-transaksional. Pada modus operasi nontransaksional, MySQL dapat dikatakan unggul dalam hal unjuk kerja dibandingkan perangkat lunak peladen basisdata kompetitor lainnya. Namun demikian pada modus non-transaksional tidak ada jaminan atas reliabilitas terhadap data yang tersimpan, karenanya modus nontransaksional hanya cocok untuk jenis aplikasi yang tidak membutuhkan reliabilitas data seperti aplikasi blogging berbasis web (wordpress), CMS, dan sejenisnya. Untuk kebutuhan sistem yang ditujukan untuk bisnis sangat disarankan untuk menggunakan modus basisdata transaksional, hanya saja sebagai konsekuensinya unjuk kerja MySQL pada modus transaksional tidak secepat unjuk kerja pada modus nontransaksional. 2.4.3 Keistimewaan MySQL MySQL memiliki beberapa keistimewaan, antara lain : 1. Portabilitas. MySQL dapat berjalan stabil pada berbagai sistem operasi seperti Windows, Linux, FreeBSD, Mac Os X Server, Solaris, Amiga, dan masih banyak lagi. 2.
Perangkat lunak sumber terbuka. MySQL didistribusikan sebagai perangkat lunak sumber terbuka, dibawah lisensi GPL sehingga dapat digunakan secara gratis.
29
3. Multi-user. MySQL dapat digunakan oleh beberapa pengguna dalam waktu yang bersamaan tanpa mengalami masalah atau konflik. 4. Performance tuning', MySQL memiliki kecepatan yang menakjubkan dalam menangani query sederhana, dengan kata lain dapat memproses lebih banyak SQL per satuan waktu. 5. Ragam tipe data. MySQL memiliki ragam tipe data yang sangat kaya, seperti signed / unsigned integer, float, double, char, text, date, timestamp, dan lainlain. 6. Perintah dan Fungsi. MySQL memiliki operator dan fungsi secara penuh yang mendukung perintah Select dan Where dalam perintah (query). 7. Keamanan. MySQL memiliki beberapa lapisan keamanan seperti level subnetmask, nama host, dan izin akses user dengan sistem perizinan yang mendetail serta sandi terenkripsi. 8. Skalabilitas dan Pembatasan. MySQL mampu menangani basis data dalam skala besar, dengan jumlah rekaman (records) lebih dari 50 juta dan 60 ribu tabel serta 5 milyar baris. Selain itu batas indeks yang dapat ditampung mencapai 32 indeks pada tiap tabelnya. 9. Konektivitas.
MySQL
dapat
melakukan
koneksi
dengan
klien
menggunakan protokol TCP/IP, Unix soket (UNIX), atau Named Pipes (NT). 10. Lokalisasi. MySQL dapat mendeteksi pesan kesalahan pada klien dengan menggunakan lebih dari dua puluh bahasa. Meski pun demikian, bahasa Indonesia belum termasuk di dalamnya.
30
11. Antar Muka. MySQL memiliki antar muka (interface) terhadap berbagai aplikasi dan bahasa pemrograman dengan menggunakan fungsi API (Application Programming Interface). 12. Klien dan Peralatan. MySQL dilengkapi dengan berbagai peralatan (tool)yang dapat digunakan untuk administrasi basis data, dan pada setiap peralatan yang ada disertakan petunjuk online. Struktur tabel. MySQL memiliki struktur tabel yang lebih fleksibel dalam menangani ALTER TABLE, dibandingkan basis data lainnya semacam PostgreSQL ataupun Oracle. 2.5
Unified Modelling Language (UML) UML sebagai sebuah bahasa yang memberikan vocabulary dan tatanan
penulisan kata-kata dalam ‘MS Word’ untuk kegunaan komunikasi. Sebuah bahasa model adalah sebuah bahasa yang mempunyai vocabulary dan konsep tatanan / aturan penulisan serta secara fisik mempresentasikan dari sebuah sistem. Seperti halnya UML adalah sebuah bahasa standard untuk pengembangan sebuah software yang dapat menyampaikan bagaimana membuat dan membentuk modelmodel, tetapi tidak menyampaikan apa dan kapan model yang seharusnya dibuat yang merupakan salah satu proses implementasi pengembangan software. UML tidak hanya merupakan sebuah bahasa pemograman visual saja, namun juga dapat secara langsung dihubungkan ke berbagai bahasa pemograman, seperti JAVA, C++, Visual Basic, atau bahkan dihubungkan secara langsung ke dalam sebuah object-oriented database. Begitu juga mengenai pendokumentasian dapat dilakukan seperti; requirements, arsitektur, design, source code, project
31
plan, tests, dan prototypes. Untuk dapat memahami UML membutuhkan bentuk konsep dari sebuah bahasa model, dan mempelajari 3 (tiga) elemen utama dari UML seperti building block, aturan-aturan yang menyatakan bagaimana building block diletakkan secara bersamaan, dan beberapa mekanisme umum (common). 2.5.1 Pengertian UML Unified Modelling Language (UML) adalah sebuah “bahasa” yang telah menjadi standar dalam industri untuk menentukan, visualisasi, merancang dan mendokumentasikan artifact dari sistem software, untuk memodelkan bisnis dan sistem non software lainnya. UML merupakan suatu kumpulan teknik terbaik yang telah terbukti sukses dalam pemodelan sistem yang besar dan kompleks. Dengan menggunakan UML kita dapat membuat model untuk semua jenis aplikasi piranti lunak, dimana aplikasi tersebut dapat berjalan pada piranti keras, sistem operasi dan jaringan apapun, serta ditulis dalam bahasa pemrograman apapun. 2.5.2 Tujuan UML 1. Memberikan model yang siap pakai, bahasa pemodelan visual yang ekspresif untuk mengembangkan dan saling menukar model dengan mudah dan dimengerti secara umum. 2. Memberikan bahasa pemodelan yang bebas dari berbagai bahasa pemrograman dan proses rekayasa. 3. Menyatukan praktek-praktek terbaik yang terdapat dalam bahasa pemodelan.
32
2.5.3 Jenis - Jenis Diagram UML Unified Modelling Language memiliki diagram yang terdiri dari beberapa jenis yaitu use case diagram, class diagram, statechart diagram, activity diagram, sequence diagram, collaboration diagram, component diagram, dan deployment diagram. 1. Use Case Diagram Use case diagram menggambarkan fungsionalitas yang diharapkan dari sebuah sistem. Use case merepresentasikan sebuah interaksi antara aktor dengan sistem. Seorang/sebuah aktor adalah sebuah entitas manusia atau mesin yang berinteraksi dengan system untuk melakukan pekerjaan-pekerjaan tertentu. Use case merupakan sebuah pekerjaan tertentu, misalnya login ke sistem, meng-create sebuah daftar belanja, dan sebagainya. Use case diagram dapat digunakan untuk : 1. Menyusun requirement sebuah sistem, 2. Mengkomunikasikan rancangan dengan klien, dan 3. Merancang test case untuk semua feature yang ada pada sistem. Tabel 2.2 Simbol Use Case Diagram No 1
GAMBAR
NAMA Actor
2
Dependency
KETERANGAN Menspesifikasikan himpuan peran yang pengguna mainkan ketika berinteraksi dengan use case. Hubungan dimana perubahan yang terjadi pada suatu elemen mandiri (independent) akan mempengaruhi elemen yang bergantung padanya elemen yang tidak mandiri (independent).
33
No 3
GAMBAR
NAMA Generalization
4
Include
5
«extends»
Extend 6
Association *
7
*
KETERANGAN Hubungan dimana objek anak (descendent) berbagi perilaku dan struktur data dari objek yang ada di atasnya objek induk (ancestor). Menspesifikasikan bahwa use case sumber secara eksplisit. Menspesifikasikan bahwa use case target memperluas perilaku dari use case sumber pada suatu titik yang diberikan. Apa yang menghubungkan antara objek satu dengan objek lainnya. Menspesifikasikan paket yang menampilkan sistem secara terbatas.
System
System 8 UseCase1
Use Case
9 Collaboration 10 Note
2.
Deskripsi dari urutan aksi-aksi yang ditampilkan sistem yang menghasilkan suatu hasil yang terukur bagi suatu aktor Interaksi aturan-aturan dan elemen lain yang bekerja sama untuk menyediakan prilaku yang lebih besar dari jumlah dan elemen-elemennya (sinergi). Elemen fisik yang eksis saat aplikasi dijalankan dan mencerminkan suatu sumber daya komputasi
Class Diagram Class
adalah
sebuah
spesifikasi
yang
jika
diinstansiasi
akan
menghasilkan sebuah objek dan merupakan inti dari pengembangan dan desain berorientasi objek. Class menggambarkan keadaan diantaranya sebagai berikut : 1. Atribut/properti suatu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan tersebut (metoda/fungsi).
34
2. Menggambarkan struktur dan deskripsi class, package dan objek beserta hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-lain. Class memiliki tiga area pokok : a. Nama (dan stereotype) b. Atribut c. Metoda Atribut dan metoda dapat memiliki salah satu sifat berikut : a. Private, tidak dapat dipanggil dari luar class yang bersangkutan. b. Protected, hanya dapat dipanggil oleh class yang bersangkutan dan anakanak yang mewarisinya. c. Public, dapat dipanggil oleh siapa saja. Class dapat merupakan implementasi dari sebuah interface, yaitu class abstrak yang hanya memiliki metoda. Interface tidak dapat langsung diinstansiasikan, tetapi harus diimplementasikan dahulu menjadi sebuah class. Dengan demikian interface mendukung resolusi metoda pada saat run-time. Class dapat dikelompokkan menjadi package. Kita juga dapat membuat diagram yang terdiri atas package. Hubungan Antar Class 1. Asosiasi, yaitu hubungan statis antar class. Umumnya menggambarkan class yang memiliki atribut berupa class lain, atau class yang harus mengetahui eksistensi class lain. Panah navigability menunjukkan arah query antar class.
35
2. Agregasi, yaitu hubungan yang menyatakan bagian (“terdiri atas..”). 3. Pewarisan, yaitu hubungan hirarkis antar class. Class dapat diturunkan dari class lain dan mewarisi semua atribut dan metoda class asalnya dan menambahkan fungsionalitas baru, sehingga ia disebut anak dari class yang diwarisinya. Kebalikan dari pewarisan adalah generalisasi. 4. Hubungan dinamis, yaitu rangkaian pesan (message) yang di-passing dari satu class kepada class lain. Hubungan dinamis dapat digambarkan dengan menggunakan sequence diagram yang akan dijelaskan kemudian. Tabel 2.3 Simbol Class Diagram NO 1
GAMBAR
NAMA Generalization Nary Association
2 3
: Class1
Class
4 Collaboration
5
Realization
6 Dependency
7
Association
KETERANGAN Hubungan dimana objek anak (descendent) berbagi perilaku dan struktur data dari objek yang ada di atasnya objek induk (ancestor). Upaya untuk menghindari asosiasi dengan lebih dari 2 objek. Himpunan dari objek-objek yang berbagi atribut serta operasi yang sama. Deskripsi dari urutan aksi-aksi yang ditampilkan sistem yang menghasilkan suatu hasil yang terukur bagi suatu aktor Operasi yang benar-benar dilakukan oleh suatu objek. Hubungan dimana perubahan yang terjadi pada suatu elemen mandiri (independent) akan mempegaruhi elemen yang bergantung padanya elemen yang tidak mandiri Apa yang menghubungkan antara objek satu dengan objek lainnya
36
3. Statechart Diagram Statechart diagram menggambarkan transisi dan perubahan keadaan (dari satu state ke state lainnya) suatu objek pada sistem sebagai akibat dari stimuli yang diterima. Pada umumnya statechart diagram menggambarkan class tertentu (satu class dapat memiliki lebih dari satu statechart diagram). Tabel 2.4 Simbol Statechart Diagram NO 1
GAMBAR
NAMA
State1
State Initial Pseudo State
2 3
Final State
4 Transition
5
Association
6 Node
4.
KETERANGAN Nilai atribut dan nilai link pada suatu waktu tertentu, yang dimiliki oleh suatu objek. Bagaimana objek dibentuk atau diawali Bagaimana objek dibentuk dan dihancurkan Sebuah kejadian yang memicu sebuah state objek dengan cara memperbaharui satu atau lebih nilai atributnya Apa yang menghubungkan antara objek satu dengan objek lainnya. Elemen fisik yang eksis saat aplikasi dijalankan dan mencerminkan suatu sumber daya komputasi.
Activity Diagram Activity diagram menggambarkan berbagai alir aktivitas dalam sistem
yang sedang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan bagaimana mereka berakhir. 1. Activity diagram juga dapat menggambarkan proses paralel yang mungkin terjadi pada beberapa eksekusi.
37
2. Activity diagram merupakan state diagram khusus, di mana sebagian besar state adalah action dan sebagian besar transisi di-trigger oleh selesainya state sebelumnya (internal processing). 3. Activity diagram dapat dibagi menjadi beberapa object swimlane untuk menggambarkan objek mana yang bertanggung jawab untuk aktivitas tertentu. Tabel 2.4 Simbol Activity Diagram NO 1
GAMBAR
NAMA Actifity
2 3 4 5
Action
ActionState1
Initial Node Actifity Final Node Fork Node
KETERANGAN Memperlihatkan bagaimana masingmasing kelas antarmuka saling berinteraksi satu sama lain State dari sistem yang mencerminkan eksekusi dari suatu aksi Bagaimana objek dibentuk atau diawali Bagaimana objek dibentuk dan dihancurkan Satu aliran yang pada tahap tertentu berubah menjadi beberapa aliran
5. Sequence Diagram Sequence diagram menggambarkan interaksi antar objek di dalam dan di sekitar sistem (termasuk pengguna, display, dan sebagainya) berupa message yang digambarkan terhadap waktu. 1. Sequence diagram terdiri antar dimensi vertikal (waktu) dan dimensi horizontal (objek-objek yang terkait). 2. Sequence diagram biasa digunakan untuk menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai respons dari sebuah event untuk menghasilkan output tertentu.
38
Tabel 2.5 Simbol Sequence Diagram NO 1
GAMBAR
NAMA LifeLine
2 Message
3 Message
KETERANGAN Objek entity, antarmuka yang saling berinteraksi. Spesifikasi dari komunikasi antar objek yang memuat informasiinformasi tentang aktifitas yang terjadi Spesifikasi dari komunikasi antar objek yang memuat informasiinformasi tentang aktifitas yang terjadi
6. Collaboration Diagram Collaboration diagram juga menggambarkan interaksi antar objek seperti sequence diagram, tetapi lebih menekankan pada peran masing-masing objek dan bukan pada waktu penyampaian message. Setiap message memiliki sequence number, di mana message dari level tertinggi memiliki nomor 1. Messages dari level yang sama memiliki prefiks yang sama. Tabel 2.6 Simbol Collaboration Diagram NO 1
GAMBAR
NAMA Kelas peran
2 Asosiasi peran
3 Pesan
KETERANGAN Peran Kelas menjelaskan bagaimana objek berperilaku. Gunakan simbol UML objek untuk mengilustrasikan peran kelas, tetapi tidak daftar atribut objek. Asosiasi menggambarkan bagaimana peran asosiasi akan berperilaku diberikan situasi tertentu. Anda dapat menarik peran asosiasi menggunakan baris sederhana dilabeli dengan stereotip. Tidak seperti urutan diagram, diagram kolaborasi tidak memiliki cara eksplisit untuk menunjukkan waktu dan bukannya jumlah pesan dalam rangka eksekusi. Urutan penomoran dapat menjadi bersarang menggunakan sistem desimal Dewey.
39
7. Component Diagram Component diagram menggambarkan struktur dan hubungan antar komponen piranti lunak, termasuk ketergantungan (dependency) di antaranya. Komponen piranti lunak adalah modul berisi code, baik berisi source code maupun binary code, baik library maupun executable, baik yang muncul pada compile time, link time, maupun run time. Umumnya komponen terbentuk dari beberapa class dan/atau package, tapi dapat juga dari komponen-komponen yang lebih kecil. Komponen dapat juga berupa interface, yaitu kumpulan layanan yang disediakan sebuah komponen untuk komponen lain. 8.
Deployment Diagram Deployment/physical
diagram
menggambarkan
detail
bagaimana
komponen dideploy dalam infrastruktur sistem, di mana komponen akan terletak (pada mesin, server atau piranti keras apa), bagaimana kemampuan jaringan pada lokasi tersebut, spesifikasi server, dan hal-hal lain yang bersifat fisikal. Sebuah node adalah server, workstation, atau piranti keras lain yang digunakan untuk men-deploy komponen dalam lingkungan sebenarnya. Hubungan antar node (misalnya TCP/IP) dan requirement dapat juga didefinisikan dalam diagram ini. Tabel 2.7 Simbol Deployment Diagram NO 1
GAMBAR
NAMA Komponen
2 Asosiasi
KETERANGAN Node adalah sumber daya fisik yang menjalankan kode komponen. Asosiasi mengacu pada koneksi fisik antara node, seperti Ethernet.
40
NO 3
GAMBAR
NAMA Komponen dan Nodes
2.5.4
KETERANGAN komponen di dalam node yang menyebarkan mereka.
Langkah – Langkah Penggunaan UML Berikut ini adalah tips pengembangan piranti lunak dengan menggunakan
UML: 1. Buatlah daftar business process dari level tertinggi untuk mendefinisikan aktivitas dan proses yang mungkin muncul. 2. Petakan use case untuk tiap business process untuk mendefinisikan dengan tepat fungsionalitas yang harus disediakan oleh sistem. Kemudian perhalus use case diagram dan lengkapi dengan requirement, constraints dan catatan-catatan lain. 3. Buatlah deployment diagram secara kasar untuk mendefinisikan arsitektur fisik sistem. 4. Definisikan requirement lain (non-fungsional, security dan sebagainya) yang juga harus disediakan oleh sistem. 5. Berdasarkan use case diagram, mulailah membuat activity diagram. 6. Definisikan objek-objek level atas (package atau domain) dan buatlah sequence dan/atau collaboration diagram untuk tiap alir pekerjaan. Jika sebuah use case memiliki kemungkinan alir normal dan error, buatlah satu diagram untuk masing-masing alir. 7. Buatlah rancangan user interface model yang menyediakan antarmuka bagi pengguna untuk menjalankan skenario use case.
41
8. Berdasarkan model-model yang sudah ada, buatlah class diagram. Setiap package atau domain dipecah menjadi hirarki class lengkap dengan atribut dan metodanya. Akan lebih baik jika untuk setiap class dibuat unit test untuk menguji fungsionalitas class dan interaksi dengan class lain. 9. Setelah class diagram dibuat, kita dapat melihat kemungkinan pengelompokan class menjadi komponen-komponen. Karena itu buatlah component diagram pada tahap ini. Juga, definisikan tes integrasi untuk setiap komponen meyakinkan ia berinteraksi dengan baik. 10. Perhalus deployment diagram yang sudah dibuat. Detilkan kemampuan dan requirement piranti lunak, sistem operasi, jaringan, dan sebagainya. Petakan komponen ke dalam node. 11. Mulailah membangun sistem. Ada dua pendekatan yang dapat digunakan: a. Pendekatan use case, dengan meng-assign setiap use case kepada tim pengembang tertentu untuk mengembangkan unit code yang lengkap dengan tes. b. Pendekatan komponen, yaitu meng-assign setiap komponen kepada tim pengembang tertentu. 12. Lakukan uji modul dan uji integrasi serta perbaiki model berserta codenya. Model harus selalu sesuai dengan code yang aktual. Piranti lunak siap dirilis.
42
2.6
Rational Unified Process (RUP) Dalam pengembangan sistem menggunakan Metodologi Rational Unified
Process (RUP). Metode RUP merupakan metode pengembangan kegiatan yang berorientasi pada proses. Ciri utama metode ini adalah menggunakan use-case driven dan pendekatan iteratif untuk siklus pengembangan perankat lunak. RUP menggunakan konsep object oriented, dengan aktifitas yang berfokus pada pengembangan model dengan menggunakan Unified Model Language (UML). Dalam metode ini, terdapat empat tahap pengembangan perangkat lunak yaitu: a. Inception Pada tahap ini pengembang mendefinisikan batasan kegiatan, melakukan analisis kebutuhan user, dan melakukan perancangan awal perangkat lunak (perancangan arsitektural dan use case). Yang perlu dilakukan dalam fase ini antara lain : 1. Kebutuhan akan model bisnis yang diterapkan, seperti nilai-nilai bisnis yang ada, hal-hal yang memicu keuntungan, dan hal-hal yang berhubungan dengan keuangan juga termasuk dalam fase ini. 2. Menentukan batasan-batasan dalam sebuah project. b. Elaboration Pada tahap ini dilakukan perancangan perangkat lunak mulai dari menspesifikasikan fitur perangkat lunak hingga perilisan prototipe versi Beta dari perangkat lunak. Dalam fase kedua dalam RUP ini, yang perlu dilakuin diantaranya : 1. Mengembangkan perencanaan project.
43
2. Pengembangan perencanaan arsitektural. 3. Menghilangkan memungkinkan
kemungkinan-kemungkinan
terbesar
timbulnya
dalam
sebuah
resiko
yang proses
perkembangan project itu sendiri 4. Pengimplementasian use case, sebagai perwujudan dari arsitektur sistem software. c. Construction Pengimplementasian rancangan perangkat lunak yang telah dibuat dilakukan pada tahap ini. Pada akhir tahap ini, perangkat lunak versi akhir yang sudah disetujui administrator dirilis beserta dokumentasi perangkat lunak. d. Transition Instalasi, deployment dan sosialisasi perangkat lunak dilakukan pada tahap ini Keempat tahapan pengembangan perangkat lunak tersebut dapat kita lihat pada gambar 2.6 dibawah ini.
Gambar 2.6 Arsitektur Rational Unified Process 44
2.7
Pengujian Perangkat Lunak Pengujian perangkat lunak Adalah elemen kritis dari jaminan kualitas
perangkat lunak dan merepresentasikan kajian pokok dari spesifikasi, desain, dan pengkodean. Pentingnya pengujian perangkat lunak dan implikasinya yang mengacu pada kualitas perangkat lunak tidak dapat terlalu ditekan karena melibatkan sederetan aktivitas produksi di mana peluang terjadinya kesalahan manusia sangat besar dan arena ketidakmampuan manusia untuk melakukan dan berkomunikasi dengan sempurna maka pengembangan perangkat lunak diiringi dengan aktivitas jaminan kualitas. Meningkatnya visibilitas (kemampuan) perangkat lunak sebagai suatu elemen sistem dan “biaya” yang muncul akibat kegagalan perangkat lunak, memotivasi dilakukannya perencanaan yang baik melalui pengujian yang teliti. Pada dasarnya, pengujian merupakan satu langkah dalam proses rekayasa perangkat lunak yang dapat dianggap sebagai hal yang merusak daripada membangun. Sejumlah aturan yang berfungsi sebagai sasaran pengujian pada perangkat lunak adalah: 1. Pengujian adalah proses eksekusi suatu program dengan maksud menemukan kesalahan 2. Test case yang baik adalah test case yang memiliki probabilitas tinggi untuk menemukan kesalahan yang belum pernah ditemukan sebelumnya
45
3. Pengujian yang sukses adalah pengujian yang mengungkap semua kesalahan yang belum pernah ditemukan sebelumnya Sasaran itu berlawanan dengan pandangan yang biasanya dipegang yang menyatakan bahwa pengujian yang berhasil adalah pengujian yang tidak ada kesalahan yang ditemukan. 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. Sebelum mengaplikasikan metode untuk mendesain test case yang efektif, perekayasa perangkat lunak harus memahami prinsip dasar yang menuntun pengujian perangkat lunak, yaitu: 1.
semua pengujian harus dapat ditelusuri sampai ke persyaratan pelanggan, maksudnya mengungkap kesalahan dari cacat yang menyebabkan program gagal.
2.
Pengujian harus direncanakan lama sebelum pengujian itu mulai, maksudnya semua pengujian dapat direncanakan dan dirancang sebelum semua kode dijalankan.
3.
Prinsip Pareto berlaku untuk pengujian perangkat lunak, maksudnya dari 80% kesalahan yang ditemukan selama pengujian dapat ditelusuri sampai 20% dari semua modul program.
46
Pengujian harus mulai “dari yang kecil” dan berkembang ke
4.
pengujian “yang besar”, Selagi pengujian berlangsung maju, pengujian mengubah focus dalam usaha menemukan kesalahan pada cluster modul yang terintegrasi dan akhirnya pada sistem. 5.
Pengujian yang mendalam tidak mungkin karena tidak mungkin mengeksekusi setiap kombinasi jalur skema pengujian dikarenakan jumlah jalur permutasi untuk program menengah pun sangat besar.
6.
Untuk menjadi paling efektif, pengujian harus dilakukan oleh pihak ketiga yang independent Dalam lingkungan yang ideal, perekayasa perangkat lunak mendesain
suatu program computer, sebuah sistem atau produk dengan testabilitas dalam pikirannya. Hal ini memungkinkan individu yang berurusan dengan pengujian mendesain test case yang efektif secara lebih mudah. Testabilitas adalah seberapa mudah sebuah program computer dapat diuji. Karena sangat sulit, perlu diketahui apa yang dapat dilakukan untuk membuatnya menjadi lebih mudah. Procedural dan menggunakannya sebagai pedoman untuk menetapkan basis set dari jalur eksekusi. Sasaran utama desain test case adalah untuk mendapatkan serangkaian pengujian yang memiliki kemungkinan tertinggi di dalam pengungkapan kesalahan pada perangkat lunak. Untuk mencapai sasaran tersebut, digunakan 4 kategori yang berbeda dari tehnik desain test case: Pengujian white-box, pengujian black-box, Integrasi Bottom-Up dan Integrasi Top-Down.
47
2.7.1
Pengujian White-Box Berfokus pada struktur control program. Test case dilakukan untuk
memastikan bahwa semua statemen pada program telah dieksekusi paling tidak satu kali selama pengujian dan bahwa semua kondisi logis telah diuji. Pengujian basic path, tehnik pengujian white-box, menggunakan grafik (matriks grafiks) untuk melakukan serangkaian pengujian yang independent secara linear yang akan memastikan cakupan. Pengujian aliran data dan kondisi lebih lanjut menggunakan logika program dan pengujian loop menyempurnakan tehnik white-box yang lain dengan memberikan sebuah prosedur untuk menguji loop dari tingkat kompleksitas yang bervariasi. Pengujian black-box didesain untuk mengungkap kesalahan pada persyaratan fungsional tanpa mengabaikan kerja internal dari suatu program. 2.7.2
Pengujian Black-Box berfokus pada domain informasi dari perangkat lunak, dengan melakukan
test case dengan menpartisi domain input dari suatu program dengan cara yang memberikan cakupan pengujian yang mendalam. Metode pengujian graph-based mengeksplorasi hubungan antara dan tingkah laku objek-objek program. Partisi ekivalensi membagi domain input ke dalam kelas data yang mungkin untuk melakukan fungsi perangkat lunak tertentu. Analisis nilai batas memeriksaa kemampuan program untuk menangani data pada batas yang dapat diterima. Metode pengujian yang terspesialisasi meliputi sejumlah luas kemampuan perangkat lunak dan area aplikasi. GUI, arsitektur client/ server, dokumentasi dan
48
fasilitas help dan sistem real time masing-masing membutuhkan pedoman dan tehnik khusus untuk pengujian perangkat lunak. 2.8
Pengertian Angkutan Umum Angkutan umum merupakan salah satu media transportasi yang digunakan
masyarakat secara bersama-sama dengan membayar tarif. Angkutan umum merupakan lawan kata dari 'kendaraan pribadi'. Sejalan dengan peningkatan pendapatan masyarakat, banyak orang yang mampu membeli kendaraan pribadi. Banyak alasan untuk memiliki kendaraan pribadi, antara lain karena masalah privasi dan kenyamanan. Namun dibalik kebaikannya, kepemilikan kendaraan pribadi terlalu banyak juga menimbulkan banyak masalah. Banyaknya kendaraan pribadi berarti kemacetan yang semakin banyak di jalan. Hal ini dikarenakan jumlah peningkatan kendaraan pribadi tidak sebanding dengan peningkatan kapasitas jalan. Semakin banyak masyarakat yang menggunakan kendaraan umum, semakin efektif pula penggunaan jalan raya. Dengan kata lain, kendaraan umum merupakan salah satu pemecahan masalah yang dihadapi hampir semua kota besar di dunia: kemacetan. Sebuah kendaraan memerlukan bahan bakar. Sebagai gantinya, kendaraan mengeluarkan daya dan juga zat-zat polusi. Jika setiap orang menggunakan kendaraan pribadi, maka jumlah zat polusi di udara akan sebanding dengan jumlah manusia. Lain halnya jika banyak orang menggunakan kendaraan umum. Satu kendaraan umum mampu mengangkut lebih dari satu penumpang (sebuah rangkaian kereta api dapat mengangkut hingga 500 penumpang), yang berarti pengurangan polusi.
49
2.8.1
Jenis Angkutan Umum
a. Angkutan Kota (Angkot) Angkutan kota adalah sebuah moda transportasi perkotaan yang merujuk kepada kendaraan umum dengan rute yang sudah ditentukan. Tidak seperti bus yang mempunyai halte sebagai tempat perhentian yang sudah ditentukan, angkutan kota dapat berhenti untuk menaikkan atau menurunkan penumpang di mana saja. Angkutan kota mulai diperkenalkan di Jakarta pada akhir tahun 1970-an dengan nama "mikrolet" untuk menggantikan oplet yang sudah dianggap terlalu tua, terseok-seok jalannya, dan sering mengalami gangguan mesin, sehingga mengganggu kelancaran lalu lintas. Nama "mikrolet" dipilih sebagai singkatan gabungan dari kata "mikro" (=kecil) dan "oplet". Tetapi ada juga yang menyebut "angkot" untuk di beberapa daerah. b. Bus Bus adalah kendaraan besar beroda, digunakan untuk membawa penumpang dalam jumlah banyak. Istilah bus ini berasal dari bahasa Latin, omnibus, yang berarti "(kendaraan yang berhenti) di semua (perhentian)". 2.9
Kota Bandung
2.9.1 Sejarah Kota Bandung Kota Bandung tidak berdiri bersamaan dengan pembentukan Kabupaten Bandung. Kota itu dibangun dengan tenggang waktu sangat jauh setelah Kabupaten Bandung berdiri. Kabupaten Bandung dibentuk pada sekitar
50
pertengahan
abad
ke-17
Masehi,
dengan
Bupati
pertama
tumenggung
Wiraangunangun. Beliau memerintah Kabupaten bandung hingga tahun 1681. Semula
Kabupaten
Bandung
beribukota
di
Krapyak
(sekarang
Dayeuhkolot) kira-kira 11 kilometer ke arah Selatan dari pusat kota Bandung sekarang. Ketika kabupaten Bandung dipimpin oleh bupati ke-6, yakni R.A Wiranatakusumah II (1794-1829) yang dijuluki "Dalem Kaum I", kekuasaan di Nusantara beralih dari Kompeni ke Pemerintahan Hindia Belanda, dengan gubernur jenderal pertama Herman Willem Daendels (1808-1811). Untuk kelancaran menjalankan tugasnya di Pulau Jawa, Daendels membangun Jalan Raya Pos (Groote Postweg) dari Anyer di ujung barat Jawa Barat ke Panarukan di ujung timur Jawa timur (kira-kira 1000 km). Pembangunan jalan raya itu dilakukan oleh rakyat pribumi di bawah pimpinan bupati daerah masing-masing. Di daerah Bandung khususnya dan daerah Priangan umumnya, Jalan Raya pos mulai dibangun pertengahan tahun 1808, dengan memperbaiki dan memperlebar jalan yang telah ada. Di daerah Bandung sekarang, jalan raya itu adalah Jalan Jenderal Sudirman - Jalan Asia Afrika - Jalan A. Yani, berlanjut ke Sumedang dan seterusnya. Untuk kelancaran pembangunan jalan raya, dan agar pejabat pemerintah kolonial mudah mendatangi kantor bupati, Daendels melalui surat tanggal 25 Mei 1810 meminta Bupati Bandung dan Bupati Parakanmuncang untuk memindahkan ibukota kabupaten, masing-masing ke daerah Cikapundung dan Andawadak (Tanjungsari), mendekati Jalan Raya Pos. Rupanya Daendels tidak mengetahui, bahwa jauh sebelum surat itu keluar, bupati Bandung sudah merencanakan untuk memindahkan ibukota Kabupaten
51
Bandung, bahkan telah menemukan tempat yang cukup baik dan strategis bagi pusat pemerintahan. Tempat yang dipilih adalah lahan kosong berupa hutan, terletak di tepi barat Sungai Cikapundung, tepi selatan Jalan Raya Pos yang sedang dibangun (pusat kota Bandung sekarang). Alasan pemindahan ibukota itu antara lain, Krapyak tidak strategis sebagai ibukota pemerintahan, karena terletak di sisi selatan daerah Bandung dan sering dilanda banjir bila musim hujan. Sekitar akhir tahun 1808/awal tahun 1809, bupati beserta sejumlah rakyatnya pindah dari Krapyak mendekali lahan bakal ibukota baru. Mula-mula bupati tinggal di Cikalintu (daerah Cipaganti), kemudian pindah ke Balubur Hilir, selanjutnya pindah lagi ke Kampur Bogor (Kebon Kawung, pada lahan Gedung Pakuan sekarang). Tidak diketahui secara pasti, berapa lama Kota Bandung dibangun. Akan tetapi, kota itu dibangun bukan atas prakarsa Daendels, melainkan atas prakarsa Bupati Bandung, bahkan pembangunan kota itu langsung dipimpin oleh bupati. Dengan kata lain, Bupati R. A. Wiranatakusumah II adalah pendiri (the founding father) kota Bandung. Kota Bandung diresmikan sebagai ibukota baru Kabupaten Bandung dengan surat keputusan tanggal 25 September 1810. Kata "Bandung" berasal dari kata bendung atau bendungan karena terbendungnya sungai Citarum oleh lava Gunung Tangkuban Perahu yang lalu membentuk telaga. Legenda yang diceritakan oleh orang-orang tua di Bandung mengatakan bahwa nama "Bandung" diambil dari sebuah kendaraan air yang terdiri dari dua perahu yang diikat berdampingan yang disebut perahu bandung yang digunakan oleh Bupati Bandung, R.A. Wiranatakusumah II, untuk melayari
52
Ci Tarum dalam mencari tempat kedudukan kabupaten yang baru untuk menggantikan ibukota yang lama di Dayeuhkolot. Kota Bandung secara geografis memang terlihat dikelilingi oleh pegunungan, dan ini menunjukkan bahwa pada masa lalu kota Bandung memang merupakan sebuah telaga atau danau. Legenda Sangkuriang merupakan legenda yang menceritakan bagaimana terbentuknya danau Bandung, dan bagaimana terbentuknya Gunung Tangkuban Perahu, lalu bagaimana pula keringnya danau Bandung sehingga meninggalkan cekungan seperti sekarang ini. Air dari danau Bandung menurut legenda tersebut kering karena mengalir melalui sebuah gua yang bernama Sangkyang Tikoro. Daerah terakhir sisa-sisa danau Bandung yang menjadi kering adalah Situ Aksan, yang pada tahun 1970-an masih merupakan danau tempat berpariwisata, tetapi saat ini sudah menjadi daerah perumahan untuk pemukiman. Kota Bandung mulai dijadikan sebagai kawasan pemukiman sejak pemerintahan kolonial Hindia-Belanda, melalui Gubernur Jenderalnya waktu itu Herman Willem Daendels, mengeluarkan surat keputusan tanggal 25 September 1810 tentang pembangunan sarana dan prasarana untuk kawasan ini. Dikemudian hari peristiwa ini diabadikan sebagai hari jadi kota Bandung. (Sumber: http://www.bandung.go.id) 2.9.2
Infrastruktur dan Perhubungan Kota Bandung Hingga tahun 2000 panjang jalan di kota Bandung secara keseluruhan baru
mencapai 4.9 % dari total luas wilayahnya dengan posisi idealnya mesti berada pada kisaran 15-20 %. Sehingga, kondisi transportasi jalan di kota Bandung masih
53
buruk dengan tingginya tingkat kemacetan serta ruas jalan yang tidak memadai, termasuk masalah parkir dan tingginya polusi udara. Permasalahan ini muncul karena beberapa faktor diantaranya pengelolaan transportasi oleh pemerintah setempat yang tidak maksimal seperti rendahnya koordinasi antara instansi yang terkait, ketidakjelasan wewenang setiap instansi, dan kurangnya sumber daya manusia, serta ditambah tidak lengkapnya peraturan pendukung. Untuk itu, pembangunan jalan baru dan peningkatan kapasitas jalan dan penataan kawasan mesti menjadi perhatian bagi pemerintah kota untuk menjadikan kota ini menjadi kota terkemuka. Pada 25 Juni 2005, jembatan Pasupati resmi dibuka, untuk mengurangi kemacetan di pusat kota, dan menjadi landmark baru bagi kota ini. Jembatan dengan panjangnya 2.8 km ini dibangun pada kawasan lembah serta melintasi Cikapundung dan dapat menghubungkan poros barat ke timur di wilayah utara kota Bandung. Kota Bandung berjarak sekitar 180 km dari Jakarta, saat ini dapat dicapai melalui jalan Tol Cipularang (Cikampek-Purwakarta-Padalarang) dengan waktu tempuh antara 1.5 jam sampai dengan 2 jam. Jalan tol ini merupakan pengembangan dari jalan Tol Padaleunyi (Padalarang-Cileunyi), yang sudah dibangun sebelumnya. 1.
Angkutan Kota dan Bus Kota Untuk transportasi di dalam kota, masyarakat Bandung biasanya
menggunakan angkutan kota atau yang lebih akrab disebut angkot. Selain itu, bus kota dan taksi juga menjadi alat transportasi di kota ini. Sedangkan sebagai
54
terminal bus antarkota dan provinsi di kota ini adalah terminal Leuwipanjang untuk rute barat dan terminal Cicaheum untuk rute timur. Pada 24 September 2009, TMB (Trans Metro Bandung) resmi beroperasi, walaupun sempat diprotes oleh sopir angkot setempat. TMB ini merupakan proyek patungan antara pemerintah kota Bandung dengan Perum II DAMRI Bandung dalam memberikan layanan transportasi massal dengan harga murah, fasilitas dan kenyamanan yang terjamin serta tepat waktu ke tujuan. Di kota Bandung sendiri terdapat sekitar 38 trayek angkutan kota yang tersebar di seluruh penjuru kota ini. Sedangkan untuk bus kota (DAMRI) terdapat sekitar 14 trayek yang beroprasi. Kedua jenis angkuatan umum tersebut beropsrasi dan melayani para penumpangnya sesuai jalur/rute yang telah di tetapkan oleh dinas perhubungan kota Bandung. Untuk lebih jelasnya berikut di bawah ini daftar trayek angkutan kota dan DAMRI yang beroprasi di kota Bandung. 2.10
Arsitektur Aplikasi dan Arsitektur Sistem
2.10.1 Arsitektur Aplikasi Arsitektur dasar dari aplikasi web ini adalah arsitektur client/server. Artinya pemrosesan aplikasi ini dijalankan melibatkan kedua sisi yakni sisi mesin server pusat dan sisi client. Hal ini berbeda dengan misalnya aplikasi Microsoft Word yang hanya melibatkan satu sisi saja yaitu sisi client. Atau bagi pengguna mesin VAX yang hanya menggunakan sisi server saja sedangkan sisi client hanya dumb terminal saja yang tidak melakukan pemrosesan apapun disisi client. Berikut dibawah ini adalah gambaran arsitektur aplikasi.
55
Google Map API
PHP
Server
Data base
Client
Client
Client
Gambar 2.7 Arsitektur Aplikasi 2.10.2 Arsitektur Sistem
Kerangka kerja perencanaan konseptual dalam aplikasi pencarian rute terpendek dan teknologi informasi ini. Di desain sebagai arsitektur terpadu yang memberikan sebuah fasilitas yang mendukung adanya sebuah simulasi pemetaan sehingga bisnis proses yang terjadi menghasilkan sebuah informasi yang bermanfaat bagi semua orang. Berikut dibawah ini Gambar 2.8 merupakan sebuah arsitektur sistem yang berjalan.
56
Web server Google map API
Client Workstation Server
Gambar 2.8 Arsitektur Sistem Dalam kerangka arsitektur sistem tersebut, client dan server akan secara real time mengakses peta atau maping yang telah tersedia dalam fasilitas Google Map API. Jika aplikasi tersebut dijalankan tanpa koneksi internet, maka gambar peta yang ada dalam aplikasi tersebut tidak dapat ditampilkan. Oleh karena itu, aplikasi ini membutuhkan koneksi internet agar dapat digunakan oleh user.
57