Implementasi Tahap ini dilakukan dengan mengimplementasikan model dan skema pada tahap perancangan. Model dan skema akan diimplementasikan menggunakan bahasa pemrograman berorientasi objek. Pada tahap ini akan dihasilkan Web services dan aplikasi client. Hasil implementasi akan disesuaikan dengan analisis dan definisi kebutuhan sistem. Pengujian Pengujian akan dilakukan dengan metode black-box testing. Fokus pengujian adalah membandingkan hasil kode program algoritme Dijkstra dan memeriksa interoperability Web services yang telah diimplementasikan. Pemeliharaan Pada tahap ini dilakukan perbaikan terhadap hasil pengujian jika terdapat kesalahan pada tahap implementasi.
Perancangan Data tahap perancangan terdiri atas beberapa bagian yaitu perancangan basisdata, perancangan pemodelan data, dan perancangan service. Perancangan Basisdata Berdasarkan data yang diperoleh dari hasil penelitian Entarto (2006), data street system terdiri dari data node dan data edge. Data node merepresentasikan intersection antarjalan. Data edge merupakan jalan yang menghubungkan node. Data node dan edge dikonversi menjadi tabel nodebogor dan edgebogor yang saling berhubungan seperti pada Gambar 8 (Entarto 2006). Tabel nodebogor berisi kode node, nama, dan keterangan jalan yang merupakan titik perpotongan. Tabel edgebogor berisi kode, nama, jarak, kode node yang merupakan titik awal dan akhir dari edge.
HASIL DAN PEMBAHASAN Analisis dan Definisi Kebutuhan Tahap analisis dan definisi kebutuhan terdiri atas identifikasi kebutuhan data, kebutuhan fungsional, pemodelan data, dan kebutuhan komunikasi. Kebutuhan Data Pada penelitian dibutuhkan data street system di Kota Bogor. Data tersebut diperoleh dari hasil penelitian Entarto (2006). Kebutuhan Fungsional Perancangan jaringan supply chain harus dapat memberikan informasi mengenai lokasi atau node yang memiliki rata–rata jarak tempuh terpendek dan jalur antar node yang meminimumkan jarak. Selain itu, perancangan ini harus dapat diimplementasikan menggunakan Web services. Pemodelan Data Pemodelan data street system menggunakan teori graf. Data akan dimodelkan menjadi digraf terboboti dengan jarak antarnode menjadi bobot pada edge. Kebutuhan Komunikasi Perancangan supply chain network akan menggunakan beberapa komputer sehingga protokol TCP/IP yang dapat menghantarkan data berbasis teks dibutuhkan sebagai media komunikasi antarkomputer.
Gambar 8 Entity Relationship Diagram. Perancangan Pemodelan Data Perancangan pemodelan data terdiri atas beberapa tahapan, yaitu : 1 2 3 4 5
pembentukan digraf terboboti. penghitungan distance dari setiap node. penghitungan eccentricity dari setiap node. penghitungan radius graf G. penentuan center dari graf G.
Perancangan Service Perancangan service menerapakan kebutuhan fungsional pada tahap analisis dan definisi kebutuhan. Service yang akan dibuat adalah : 1 2 3 4 5 6 7
service radius graf G. service informasi node pada graf G. service Center graf G. service jarak terpendek antarnode pada graf G. service jalur terpendek antarnode pada graf G. service node yang memiliki eccentricity sama dengan radius graf G. service untuk daftar eccentricity graf G.
5
Perancangan Client Client menggunakan service yang telah disediakan oleh server. Pada perancangan ini dibuat client berbasis console dan client berbasis web. Implementasi Pada tahap implementasi, hasil pada tahap perancangan dibuat dengan kode program mengggunakan bahasa pemrograman Java. Lingkungan Implementasi Lingkungan implementasi yang digunakan sebagai berikut : 1
2
perangkat lunak : Microsoft Windows XP SP 2, Tomcat Application Server Versi 5.5, MySQL Server Versi 5, NetbeansIDE Versi 5.5, JDK Versi 6, Java Enterprise Edition Versi 1.4. perangkat keras : Processor AMD Sempron 2600, RAM 1 GB, harddisk 80GB, keyboard, mouse, dan monitor.
Sistem terdiri atas 2 bagian yaitu service provider dan client seperti terlihat pada Gambar 9. Penelitian ini difokuskan pada pengembangan service pada bagian service provider.
Gambar 9 Arsitektur sistem Pengolahan Data Data street system terdiri dari data node dan edge. Node berjumlah 85 dan edge berjumlah 232. Tabel 1 dan Tabel 2 merupakan contoh data edge dan node.
Tabel 2 Data node id
nama
Keterangan
38
N154
kumbang - lodaya 1
39
N155
kumbang - lodaya 2
40
N146
salak - jalak harupat
3
N108
kapten muslihat - ir.h.juanda
14
N103
dr semeru-merdeka
6
N113
m.a.salmun – merdeka
Pembentukan Digraf Terboboti Digraf terboboti dibentuk dari data node, arc, dan bobot arc. Node merupakan intersection antar jalan. Arc merupakan jalan yang menghubungkan 2 node., sedangkan bobot merupakan jarak yang menghubungkan node. Proses pembentukan digraf terboboti seperti pada program berikut : public void setEMat() throws SQLException{ mat_Edge=new long[V.size()][V.size()]; for (int i=0;i
Hasil program tersebut berupa matriks 2 dimensi berukuran 85 × 85. Tabel 3 merupakan contoh matriks digraf terboboti. Tabel 3 Matriks digraf terboboti
Tabel 1 Data node Node
N121
N110
N109
N108
N111
id
nama
Jalan
jarak
awal
akhir
N121
-
-
-
-
-
10
E10
Veteran
100
13
12
N110
-
83
-
-
11
E11
Veteran
560
12
29
N109
-
83
-
259
-
N108
-
-
259
-
-
N167
881
-
-
-
-
N126
-
-
-
530
-
N125
-
128
-
-
-
N111
-
-
-
-
-
20
E38
dr.semeru
53
14
15
19
E30
Dadali
1034
43
54
70
E87
pangrango
92
59
57
1
E115
Siliwangi
30
33
50
6
Penghitungan Distance Penghitungan distance dilakukan dengan menerapkan algoritme Dijkstra. Proses penghitungannya terlihat pada program berikut : Dijkstra(String u, List v, mat_Edge[][]){ this.u = u; this.V = new ArrayList(v); this.mat_Edge = mat_Edge; } public void eksekusi(){ generateL(); T.add(this.u); while(!T.containsAll(this.V)){ String next = minL(); T.add(next); ubahL(next); } }
long
Method generateL berfungsi membentukan variabel L bertipe list yang terdiri atas distance dari node u ke node lainnya. Node u ditambahkan ke variabel T yang bertipe list. Method minL berfungsi untuk mencari nilai distance terkecil dari variabel L. Node dengan distance terkecil akan ditambahkan ke variabel T. Method ubahL berfungsi mengubah isi dari variabel L setelah dilakukan penambahan pada variabel tersebut. Hasilnya berupa matriks 2 dimensi berukuran 85× 85 yang terdiri dari daftar node dan jarak tempuhnya atau distance. Tabel 4 merupakan contoh matriks hasil penghitungan distance. Tabel 4 Matriks Distance
public void setEccentricity(){ long temp = L[0]; for(int i=0;i
= temp ){ temp = L[i]; } } this.eccentricity = temp; }
Hasil dari proses ini adalah daftar atau list nilai eccentricity untuk setiap node yang jumlah 80. Tabel 5 merupakan contoh hasil penghitungan eccentricity. Tabel 5 Data Eccentricity Node
Eccentricity (m)
N121
14063
N110
11028
N109
11111
N108
11043
N111
10657
N112
10735
N113 N146
10647
N159
11583 10791
N114
12194
Penghitungan Radius Radius diperoleh dengan mengambil nilai terkecil dari data enccentricity. Proses penghitungannya terlihat pada program berikut :
Node
N121
N110
N109
N108
N121
0
3362
3279
3020
N110
3362
83
342
N109 N108
3279 3020
0 83 342
0 259
259 0
N111
3902
688
623
882
Hasil dari program tersebut nilai eccentricity terkecil adalah 9.869 meter.
N112
610 366
693 449
952 708
Penentuan Center Digraf G
N106
3972 3728
N124
3628
266
349
608
N103
3968
606
689
948
N113
4193
831
914
1173
Penghitungan Eccentricity Eccentricity diperoleh dengan mencari nilai distance terbesar di semua node. Datanya diperoleh dari proses penghitungan distance. Proses penghitungannya terlihat pada program berikut :
public void setRad(){ long temp = ec[0]; for(int i=1;i<ec.length;i++){ if(ec[i]<= temp){ temp = ec[i]; } } this.rad = temp;}
Center graf G diperoleh dari subgraf yang diinduksi oleh verteks yang memiliki nilai eccentricity sama dengan 9.869 meter. Proses penentuannya terlihat pada program berikut : public void setCenter(){ for(int i=0;i
Hasilnya adalah Center C(G) = {N100} dan Adjacency matrix = [0]. Node N100
7
merupakan intersection antara jalan Dr.Semeru dan jalan Darul Quran serperti terlihat pada Gambar 10.
} catch (SQLException ex) { ex.printStackTrace(); } return "Info node: "+ID+", "+keterangan; }
"+nama+",
Service Center Service center digunakan untuk mendapatkan Center C(G) dari digraf G. Service ini memiliki method ambilCenter dengan return type ArrayList seperti terlihat pada program berikut : @WebMethod public ArrayList ambilCenter() { return c.getCenter(); }
Gambar 10 Intersection jalan Dr.Semeru dan jalan Darul Quran (Holtorf 2004) Service Radius Digraf G Service radius digunakan untuk memperoleh nilai radius dari digraf G. Service ini memiliki method ambilRadius dengan return type long seperti terlihat pada program berikut : @WebService() public class Radius { Center c = new Center(); @WebMethod public long ambilRadius() { return c.getRad(); } }
Service Informasi Node Service informasi node digunakan untuk mendapatkan informasi node yang ada di basisdata. Service ini terdiri dari empat method yaitu ambilInfo, ambilID, ambilKet, dan ambilNama. Setiap method memerlukan satu parameter bertipe String bernama node sebagai representasi dari nama node seperti terlihat pada program berikut : @WebMethod PubliString ambilInfo(String node) { try { stmt=db.connection.createStatement(); rs=stmt.executeQuery("Select* from nodebogor where nama like '%" + node + "%'"); while(rs.next()){ this.ID = rs.getInt(1); this.nama = rs.getString(2); this.keterangan = rs.getString(3);}
Service Jarak Terpendek Service jarak terpendek digunakan untuk menghitung jarak terpendek antara dua node. Service ini memiliki method hitungJarak dengan return type long dan dua parameter bertipe String yaitu source dan destination sebagai representasi dari nama node seperti terlihat pada program berikut : @WebService() public class JarakTerpendek { Center c = new Center();@WebMethod public long hitungJarak(String source, String destination) { return c.jarakLRequest(surce,destination); } }
Service Jalur Terpendek Service jaluk terpendek digunakan untuk mendapatkan jalur terpendek antara dua node. Service ini memiliki method createJalur dengan return type list dan dua parameter bertipe String yaitu source dan destination seperti representasi dari nama node terlihat seperti terlihat pada program berikut: @WebService() public class JalurTerpendek { Center c = new Center(); @WebMethod public List createJalur(String source, String destination) { return c.cetakLRequest (source, destination); } }
Service Node Radius Service node radius digunakan untuk mendapatkan daftar node yang memiliki nilai eccentricity sama dengan radius. Service ini
8
memiliki method ListMat dengan return type list seperti terlihat pada program berikut: @WebService() public class Adjacency { enter cntr = new Center(); @WebMethod public List listMat() { return cntr.maj; } }
Service Eccentricity Service eccentricity digunakan untuk mendapatkan daftar eccentricity dari setiap node. Service ini memiliki method ambilDaftar dengan return type list seperti terlihat pada program berikut: @WebService() public class DaftarEccentricity { Center c = new Center(); @WebMethod public List ambilDaftar() { return c.getDE();} }
Hasil program untuk digraf terboboti G untuk distance dari node c ke verteks lainnya adalah : 1 d(c,a) = L (a) = 17 2 d(c,b) = L (b) = 22 3 d(c,c) = L (c) = 0 4 d(c,f) = L (f) = 6 5 d(c,g) = L (g) = 14 6 d(c,h) = L (h) = 10 Penghitungan secara manual dan program yang digunakan pada penelitian ini memberikan hasil yang sama. Dengan demikian, program algoritme Dijkstra memiliki tingkat validitas yang baik. Pengujian Service Pengujian service dilakukan dengan membuat aplikasi berbasis web dan console yang berfungsi sebagai Web services client. Pada Gambar 12 terlihat Web services client berbasis web mengakses service jalur terdekat.
Pengujian Tahap pengujian terdiri dari dua bagian yaitu pengujian algoritme Dijkstra dan pengujian Service. Pengujian Program Algoritme Dijkstra Pengujian validasi kode program algoritme Dijkstra dilakukan dengan membandingkan hasil program dengan hasil penghitungan manual terhadap digraf terboboti G seperti terlihat pada Gambar 11.
Gambar 12 Aplikasi client berbasis web. Aplikasi Web services client berbasis console untuk jalur terpendek terlihat pada program berikut : client.konsole.jalurterpendek.JalurTer pendekService service = new client.konsole.jalurterpendek.JalurTer pendekService(); client.konsole.jalurterpendek.JalurTer pendek port = service.getJalurTerpendekPort();
Gambar 11 Digraf terboboti G. Berdasarkan hasil penghitungan manual, distance dari node c ke verteks lainya adalah : 1 d(c,f) = L (f) = 6 2 d(c,g) = L (g) = 14 3 d(c,b) = L (b) = 22 4 d(c,h) = L (h) = 10 5 d(c,a) = L (a) = 17 6 d(c,c) = L (c) = 0
Pada aplikasi client berbasis web dan console dilakukan pengujian untuk mencari jalur terpendek antarnode sebagai representasi dari jalur distribusi. Hasilnya seperti terlihat pada Tabel 6. Tabel 6 Hasil pencarian jalur terpendek
Source Destination N100
N105
N100
N102
N110
N124
N112
N110
Jalur N100-N175-N176-N174N107-N101-N102-N105 N100-N175-N176-N174N107-N101-N102 N110-N109-N125-N124 N112-N111-N159-N162N169-N113-N110
9