BAB 2 LANDASAN TEORI
2.1
Leasing
2.1.1
Pengertian Leasing Pengertian leasing dari beberapa sumber adalah sebagai berikut : •
Financial Accounting Standard Board (FASB 13) Leasing adalah suatu perjanjian penyediaan barang – barang modal yang digunakan untuk suatu jangka waktu tertentu.
•
The International Accounting Standard (IAS 17) Leasing adalah suatu perjanjian di mana pemilik aset atau perusahaan sewa guna usaha (lessor) menyediakan barang atau aset dengan hak penggunaan kepada penyewa guna usaha (lessee) dengan imbalan pembayaran swa untuk suatu jangka waktu tertentu.
•
The Equipment Leasing Association (ELA-UK) Leasing adalah suatu kontrak antara lessor dengan lessee untuk penyewaan suatu jenis barang atau aset tertentu secara langsung, dari pabrik atau agen penjual oleh lessee. Hak kepemilikan barang tersebut tetap berada pada lessor. Lessee memiliki hak pakai atas barang tersebut dengan membayar sewa dengan jumlah dan jangka waktu yang telah ditetapkan.
16 •
Keputusan Bersama Menteri Keuangan, Menteri Perindustrian dan Menteri Perdagangan Nomor Kep. 122/MK/TV/74, Nomor 32/M/SK/2174, Nomor 30/KPB/I/74 Tanggal 7 Januari 1974 Leasing adalah setiap kegiatan pembiayaan perusahaan dalam bentuk penyediaan barang – barang modal untuk digunakan oleh suatu perusahaan untuk suatu jangka waktu tertentu, berdasarkan pembayaran – pembayaran berkala disertai dengan hak pilih bagi perusahaan tersebut untuk membeli barang – barang modal yang bersangkutan
atau
memperpanjang
jangka
waktu
leasing
berdasarkan nilai sisa yang telah disepakati bersama. •
Keputusan
Menteri
Keuangan
Nomor
1169/KMK.01/1991
Tanggal 21 November 1991 Tentang Kegiatan Sewa Guna Usaha (Leasing) Leasing adalah kegiatan pembiayaan dalam bentuk penyediaan barang modal baik secara leasing dengan hak opsi (finance lease) maupun leasing tanpa hak opsi atau sewa guna usaha biasa (operating lease) untuk digunakan oleh lessee selama jangka waktu tertentu berdasarkan pembayaran secara berkala. Yang dimaksud dengan finance lease adalah kegiatan leasing dimana lessee pada akhir kontrak mempunyai hak opsi untuk membeli objek leasing berdasarkan nilai sisa yang disepakati. Sedangkan yang dimaksud dengan operating lease adalah kegiatan leasing dimana lessee pada akhir kontrak tidak mempunyai hak opsi untuk membeli objek leasing.
17 2.1.2
Pihak yang Terkait dengan Leasing Menurut Sigit Triandaru dan Totok Budisantoso (2006, p191), dalam transaksi leasing sekurang – kurangnya melibatkan 4 pihak yang berkepentingan, antara lain : •
Lessor Yaitu perusahaan leasing atau pihak yang memberikan jasa pembiayaan kepada pihak lessee dalam bentuk barang modal. Dalam finance lease, lessor bertujuan untuk mendapatkan kembali biaya yang telah dikeluarkan untuk membiayai persediaan barang modal dengan mendapatkan keuntungan. Sedangkan dalam operating lease, lessor bertujuan untuk mendapatkan keuntungan dari penyediaan barang dan pemberian jasa
–
jasa
yang
berkenaan
dengan
pemeliharaan
dan
pengoperasian barang modal tersebut. •
Lessee Yaitu perusahaan atau pihak yang memperoleh pembiayaan dalam bentuk barang modal dari lessor. Dalam finance lease, lessee bertujuan mendapatkan pembiayaan berupa barang atau peralatan dengan cari pembayaran angsuran atau secara berkala. Sedangkan dalam operationg lease, lessee bertujuan dapat memenuhi kebutuhan peralatannya di samping tenaga operator dan perawatan alat tersebut tanpa resiko bagi lessee terhadap kerusakan.
18 •
Supplier Yaitu perusahaan atau pihak yang mengadakan atau menyediakan barang untuk dijual kepasa lessee dengan pembayaran secara tunai oleh lessor. Dalam finance lease, pemasok langsung menyerahkan barang kepada lessee tanpa melalui pihak lessor sebagai pihak yang memberikan pembiayaan. Sedangkan dalam operational lease, pemasok menjual barangnya langsung kepada lessor dengan pembayaran sesuai dengan kesepakatan kedua belah pihak baik secara tunai maupun secara berkala.
•
Bank atau Kreditor Dalam suatu perjanjian atau kontrak leasing, pihak bank atau kreditor tidak terlibat secara langsung dalam kontrak tersebut, tetapi bank memegang peranan dalam hal penyediaan dana kepada lessor.
2.1.3
Mekanisme Leasing Menurut Sigit Triandaru dan Totok Budisantoso (2006, p192), mekanisme transaksi leasing adalah seperti gambar berikut :
19
Gambar 2.1 Mekanisme Leasing
Keterangan gambar : 1. Lessee menghubungi pemasok untuk pemilihan dan penentuan jenis barang, spesifikasi, harga, jangka waktu penagihan, dan jaminan purna jual atas barang yang akan disewa. 2. Lessee melakukan negosiasi dengan lessor mengenai kebutuhan pembiayaan barang modal. Dalam hal ini, lessee dapat meminta lease quotation yang tidak mengikat dari lessor. Dalam quotation terdapat syarat – syarat pokok pembiayaan leasing, antara lain : keterangan barang, harga barang, cash security deposit, residual value, asuransi, biaya administrasi, jaminan uang sewa (lease rental), dan persyaratan – persyaratan lainnya. 3. Lessor mengirimkan letter of offer atau commitment letter kepada lessee yang berisi syarat – syarat pokok persetujuan lessor untuk membiayai
barang
modal
yang
dibutuhkan.
menandatangani dan mengembalikannya kepada lessor.
Lessee
20 4. Penandatanganan kontrak leasing dilakukan setelah semua persyaratan dipenuhi lessee dimana kontrak tersebut mencakup hal – hal : pihak – pihak yang terlibat, hak milik, jangka waktu, jasa leasing, opsi bagi lessee, penutupan asuransi, tanggung jawab atas objek leasing, perpajakan jadwal pembayaran angsuran sewa dan sebagainya. 5. Pengiriman order beli kepada pemasok disertai instruksi pengiriman barang kepada lessee sesuai dengan tipe dan spesifikasi barang yang telah disetujui. 6. Pengiriman barang dan pengecekan barang oleh lessee sesuai pesanan serta menandatangani surat tanda terima dan perintah bayar yang selanjutnya diserahkan kepada pemasok. 7. Penyerahan dokumen oleh pemasok kepada lessor termasuk faktur dan bukti – bukti kepemilikan barang lainnya. 8. Pembayaran oleh lessor kepada pemasok. 9. Pembayaran sewa (lease payment) secara berkala oleh lessee kepada lessor selama masa leasing yang seluruhnya mencakup pengembalian jumlah yang dibiayai beserta bunganya.
2.2
Sistem Informasi
2.2.1
Pengertian Data Menurut Turban (2009, p6), data merupakan fakta-fakta mentah atau deskripsi dasar dari konsep-konsep, kejadian-kejadian, kegiatan-kegiatan, dan transaksi yang dapat ditangkap, direkam, disimpan, dikelompokkan, tetapi tidak
21 terorganisir dalam membawakan suatu arti tertentu. Jadi data merupakan bentuk yang masih mentah yang belum memiliki arti banyak, sehingga masih perlu diolah lebih lanjut untuk menghasilkan informasi.
2.2.2
Pengertian Sistem Menurut McLeod (2001, p15), sistem adalah sekelompok elemen yang terintegrasi dengan tujuan yang sama untuk mencapai suatu tujuan. Sistem terdiri dari dua jenis, yaitu sistem terbuka dan sistem tertutup. Sistem terbuka adalah sistem yang dihubungkan dengan lingkungannya melalui arus sumber daya. Sedangkan Sistem tertutup adalah sistem yang tidak lagi dihubungkan dengan lingkungannya. Menurut O’Brien (2003, p8), sistem merupakan sistem adalah sekelompok komponen yang berhubungan yang bekerja sama untuk tujuan yang sama dengan menerima input dan menghasilkan output dalam proses transformasi yang terorganisir. Model dasar dari sistem adalah : •
Input Adalah sekumpulan data yang berasal dalam maupun luar organisasi yang akan digunakan untuk proses sistem informasi.
•
Process Adalah kegiatan konversi, manipulasi, dan analisis data input menjadi informasi yang lebih berharga bagi manusia.
22 •
Output Adalah kegiatan mendistribusikan informasi kepada orang atau kegiatan yang memerlukannya.
Konsep sistem akan menjadi lebih berguna dengan memasukan dua komponen tambahan, yaitu feedback dan control. Sistem yang memiliki komponen feedback dan control seringkali disebut dengan sistem cybernetic, yaitu sistem yang mampu memonitor dan mengatur dirinya sendiri. •
Feedback Adalah data tentang kinerja dari sistem. Contohnya, data tentang kinerja penjualan merupakan feedback sales manajer penjualan.
•
Control Control mencakup memonitor dan mengevaluasi feedback untuk menentukan apakah suatu sistem bekerja seperti apa yang diharapkan. Dengan adanya komponen control, maka dapat dilakukan
penyesuaian
pada
input
dan
proses,
untuk
menghasilkan output yang diharapkan.
2.2.3
Pengertian Informasi Menurut McLeod (2001, p12), informasi merupakan data yang telah diproses atau data yang telah memiliki arti. Menurut O’Brien (2003, p13), informasi adalah data yang telah mengalami proses konversi sehingga menjadi lebih berarti dan berguna bagi pemakai.
23 Menurut McLeod (2001, p145), terdapat empat dimensi informasi, yaitu : •
Ketepatan waktu Informasi
harus
dapat
tersedia
ketika
dibutuhkan
untuk
memecahkan suatu masalah. •
Kelengkapan Informasi yang dapat diperoleh harus dapat memberikan gambaran yang lengkap dari suatu permasalah, sehingga dapat memberikan penyelesaian yang tepat pula.
•
Akurasi Informasi harus akurat untuk menunjang sistem yang akurat pula. Akurasi selalu dibutuhkan untuk menghasilkan output yang benar, terutama pada aplikasi-aplikasi tertentu seperti aplikasi yang melibatkan keuangan.
•
Relevansi Informasi harus berkaitan langsung dengan masalah yang dihadapi. Seorang manajer harus mampu memilih informasi yang diperlukan untuk memecahkan suatu masalah.
2.2.4
Pengertian Sistem Informasi Menurut McLeod (2001, p4), sistem informasi adalah suatu kombinasi dari manusia, perangkat lunak, perangkat keras, jaringan komunikasi, dan sumber daya data yang terintegrasi untuk mengumpulkan, mentransformasikan, serta menyebarkan informasi dalam sebuah organisasi.
24 Menurut Turban (2009, p31), sistem informasi merupakan suatu sistem yang mengumpulkan, memproses, menyimpan, menganalisis, dan menyebarkan informasi untuk tujuan tertentu. Sistem informasi berbasis komputer adalah suatu sistem informasi yang menggunakan teknologi komputer untuk mengerjakan sebagian atau semua pekerjaan. Walaupun tidak semua sistem informasi terkomputerisasi, namun saat ini hampir seluruhnya telah terkomputerisasi.
2.3
Sistem Informasi Geografi
2.3.1
Pengertian Sistem Informasi Geografi Menurut Turban (2009, p277), sistem informasi geografi adalah teknologi visualisasi data yang menangkap, menyimpan, memeriksa, menggabungkan, memanipulasi, dan menampilkan data melalui peta yang digital. Secara garis besar dapat dikatakan bahwa sistem informasi geografi dapat merepresentasikan gambaran dunia nyata (peta) di atas monitor komputer dan ditambah dengan kemampuan analisisnya. Sedangkan
menurut
ESRI
(http://www.gis.com/whatisgis),
sistem
informasi geografis adalah suatu kumpulan yang terorganisir dari perangkat keras komputer (hardware), perangkat lunas (software), data geografis dan personil yang dirancang secara efisien untuk memperoleh, menyimpan, memperbaharui, memanipulasi, menganalisis, dan menampilkan semua bentuk informasi yang beresensi geografis.
25 2.3.2
Peta Peta adalah suatu gambaran konvensional tentang pola – pola kenampakan yang ada di permukaan bumi seolah – olah dilihat dari atas dan ditambah dengan nama – nama untuk identifikasinya (Gunawan et al, 2007, p4). Peta, menurut pengertian dari ICA (International Cartographic Association), adalah suatu kenampakan nyata yang dipilih di permukaan bumi atau benda – benda angkasa, atau kenampakan – kenampakan abstrak yang ada di permukaan bumi, dan pada umumnya digambar pada suatu bidang datar dan diperkecil dengan skala.
2.3.3
Model Data Peta Menurut Prahasta (2002, p109), model data peta adalah notasi untuk mendeskripsikan dan mengorganisasikan data dari sistem yang sedang diamati. Model data peta yang digunakan dapat dibagi menjadi : 1. Titik (Node) Merupakan representasi grafis yang paling sederhana untuk suatu objek. Representasi ini tidak memiliki dimensi tetapi dapat diidentifikasikan di atas peta dan ditampilkan pada layar monitor dengan menggunakan simbol-simbol (Prahasta, 2002, p111). Jadi model data peta berupa titik ini dapat dikatakan sebagai node pada graph. 2. Garis Merupakan bentuk linier yang menghubungkan titik-titik untuk merepresentasikan objek-objek satu dimensi (Prahasta, 2002, p112).
26 Berdasarkan definisi sebelumnya maka garis merupakan bentuk perwujudan dari edge pada suatu graph.
2.3.4
Graph
2.3.4.1 Pengertian Graph Menurut Johnsonbaugh (2009, p378), suatu graph (undirected graph) yang bila dinotasikan adalah G = (V, E), terdiri dari: •
Kumpulan node (simpul) atau verteks V.
•
Kumpulan edge E dimana edge merupakan penghubung antara node yang ada dalam graph.
Contoh graph:
A
C
B
D
E
Gambar 2.2 Contoh Graph
Graph dapat digunakan secara efektif untuk merefleksikan suatu hubungan antar kota dalam suatu negara. Dalam hal ini, setiap kota didefinisikan dengan node dan jarak yang menghubungkan kota-kota tersebut didefinisikan dengan edge.
27 2.3.4.2 Graph Berarah (Directed Graph) Menurut Johnsonbaugh (2009, p378), graph berarah (directed graph) merupakan graph yang setiap edge-nya memiliki orientasi arah tertentu terhadap node yang saling terhubung. Suatu graph berarah (directed graph atau disebut juga digraph) dinotasikan seperti e = (u,v). Hal itu dapat dijelaskan sebagai berikut: •
Terdapat suatu edge yang menghubungkan node u ke node v.
•
Node u adalah node awal dan node v adalah node akhir. 1
2 5
3
4
Gambar 2.3 Contoh Directed Graph
2.3.4.3 Graph Bernilai (Weighted Graph) Menurut Johnsonbaugh (2009, p378), weighted graph merupakan graph yang selain memiliki arah, juga memiliki berat atau nilai yang dituliskan pada edge-nya. Nilai ini merepresentasikan jarak antara satu node ke node lain. Dengan demikian pemberian nilai pada edge dapat digunakan untuk menghitung total keseluruhan jarak yang harus ditempuh dari node awal ke node tujuannya.
28
1
4
2 3
3
5 3
4
5
3 4
3
Gambar 2.4 Contoh Graph Bernilai
2.3.5
Perbandingan Keuntungan Data Digital Dengan Data Analog Keuntungan dari data digital dengan data analog dijabarkan pada tabel di bawah ini (http://www.sli.unimelb.edu.au/gisweb/GISModule/GISTheory.htm) :
Tabel 2.1 Perbandingan keuntungan antara data digital dan data analog Digital Mudah diupdate
Analog Harus mengubah seluruh peta jika ada perubahan.
Transfer data mudah dan cepat
Transfer data lambat ( harus melalui pos)
(melalui internet) Media penyimpanan yang diperlukan
Media penyimpanan yang diperlukan adalah
adalah relatif kecil (alat-alat digital)
relatf besar (perpustakaan peta tradisional)
Mudah untuk dipelihara
Peta kertas tidak terintegrasi (sulit untuk dipelihara)
Mudah dianalis dengan automatis
Sulit dan tidak akurat untuk dianalisis (contohnya untuk mengukur area dan jarak)
29 2.4
Algoritma
2.4.1
Pengertian Algoritma Berdasarkan buku Computer Algorithms/C++ (Horowitz et al, 1998, p1) terdapat beberapa pengertian mengenai algoritma, antara lain: •
Algoritma adalah metode yang dapat dipakai oleh komputer untuk menyelesaikan
suatu
masalah.
Pengertian
ini
pertama
kali
dikemukakan oleh Abu Ja’far Mohammad ibn Musa al Khowarizmi dari Persia pada bukunya yang berjudul Kitab al-jabr w’al-muqabala (Rules of Restoration and Reduction). •
Algoritma adalah urut-urutan terbatas dari operasi-operasi yang terdefinisi dengan baik yang masing-masing membutuhkan memori dan waktu yang terbatas untuk menyelesaikan suatu masalah.
•
Algoritma adalah sekumpulan instruksi yang harus dijalankan dan harus berakhir prosesnya dengan mengeluarkan suatu keluaran.
Dari beberapa pengertian diatas dapat ditarik suatu kesimpulan bahwa algoritma adalah urutan langkah-langkah penyelesaian masalah yang disusun secara sistematis.
2.4.2
Analisis Algoritma Menurut Jhonsonbaugh (2009, p193), analisis algoritma adalah suatu proses untuk menentukan waktu dan ruang yang dibutuhkan untuk mengeksekusi sebuah algoritma. Algoritma dirancang untuk bekerja dengan menerima masukan dalam jumlah tertentu.
30 Menurut Horowitz (1998, p12), efesiensi atau kompleksitas dari algoritma dapat ditentukan dari waktu yang dibutuhkan untuk mengeksekusi sejumlah instruksi yang dilakukan (time complexity) dan memori yang dibutuhkan (space complexity) berdasarkan jumlah input tertentu. Menurut Jhonsonbaugh (2009, p194), ada 3 jenis waktu eksekusi pada analisis algoritma: 1. Best-case time, yaitu waktu minimum yang dibutuhkan untuk mengeksekusi algoritma dengan semua inputan berukuran n. 2. Worst-case time, yaitu waktu maksimum yang dibutuhkan untuk mengeksekusi algoritma dengan semua inputan berukuran n. 3. Average-case time, yaitu waktu rata-rata yang dibutuhkan untuk mengeksekusi algoritma dengan semua inputan berukuran n.
Menurut Horowitz (1998, p12), terdapat dua cara utama dalam menganalisis suatu algoritma, yaitu : 1. Analisis Perkiraan Priori (priori estimate) Merupakan analisis untuk mendapatkan waktu proses dalam bentuk fungsi matematik. Analisis ini dilakukan sebelum algoritma tersebut diproses dengan suatu komputer, fungsi waktu ini disimbolkan dengan notasi O (notasi big oh). 2. Analisis Pengujian Posteriori (posteriori testing) Merupakan analisis untuk mendapatkan waktu proses aktual dari suatu algoritma. Hal ini dilakukan pada saat algoritma diproses oleh komputer.
31 2.4.3
Kompleksitas Algoritma Menurut Horowitz (1998, p33), mengetahui kompleksitas suatu program sangat menentukan dalam menentukan berapa kebutuhan waktu untuk memproses suatu algoritma. Asumsikan jika terdapat dua program (P dan Q), dimana P memiliki kompleksitas O(n) dan Q memiliki kompleksitas O(n2), maka dapat dipastikan kalau P akan lebih cepat dari Q untuk nilai n yang cukup besar. Namun dalam menentukan kompleksitas mana yang akan dipilih, kita perlu mengetahui berapa nilai n yang akan kita temukan. Contohnya, jika program P berjalan dalam kecepatan 106n miliseconds, sedangkan program Q berjalan dalam kecepatan 2n miliseconds, maka jika nilai n adalah ≤ 106, dan kondisi yang lainnya adalah sama, program yang lebih baik adalah program Q. Berikut adalah tabel pertumbuhan fungsi n.
Tabel 2.2 Fungsi Pertumbuhan n Log n
n2
n log n
n
n3
2n
0
1
0
1
1
2
1
2
2
4
8
4
2
4
8
16
64
16
3
8
24
64
512
256
4
16
64
256
4.096
65.536
5
32
160
1.024
32.768 4.294.967.296
32 2.5
Jaringan
2.5.1
Minimal Spanning Tree Menurut Taha (2003, p215), minimal spanning tree digunakan untuk menghubungkan node – node dalam jaringan secara langsung maupun tidak langsung sehingga menghasilkan panjang terpendek untuk semua cabangnya. Algoritma ini biasanya digunakan dalam konstruksi jalan yang menghubungkan beberapa kota. Langkah yang digunakan adalah sebagai berikut: Step 0. Set C0 = Ǿ dan ĉ0 = N. Step 1. Mulai dengan semua node, i, dalam ĉ0 yang tidak terhubung dan jadikan C1 = {i}, dimana ĉ1 = N – {i}. Jadikan k = 2. Step k. Pilih sebuah node, j*, dalam himpunan ĉk-1 yang tidak terhubung memiliki jarak terpendek pada himpunan Ck-1 dan hapus node tersebut dari Ck-1. Sehingga : Ck = Ck-1 + {j*}, ĉk = ĉk-1 – {j*} Jika himpunan node yang tidak terhubung pada ĉk kosong, selesai. Jika tidak, jadikan k = k + 1 dan ulangi langkah tersebut.
Berikut adalah contoh persoalan dalam permasalahan minimal spanning tree. Gambar di bawah ini menunjukkan hubungan kabel dalam suatu perusahaan.
33
Gambar 2.5 Contoh Kasus Minimal Spanning Tree
Penyelesaiannya adalah sebagai berikut :
Gambar 2.6 Penyelesaian Untuk Minimal Spanning Tree Iterasi 1-2
34
Gambar 2.7 Penyelesaian Untuk Minimal Spanning Tree Iterasi 3-4
Gambar 2.8 Penyelesaian Untuk Minimal Spanning Tree Iterasi 5-6
2.5.2
Metode Shortest Path
2.5.2.1 Pengertian Shortest Path Menurut Horowitz (1998, p241), pengertian shortest-path adalah pencarian rute atau path terpendek dari node yang ada pada graph. Hasil dari shortest-path yaitu biaya (cost) yang dihasilkan adalah yang paling minimum.
35 Cost dari shortest path dapat dihitung dari total nilai minimum yang ada pada edge-nya. Dalam mencari shortest path, hasil didapatkan setelah melewati node – node tertentu, sampai akhirnya tujuan akhir node dapat dicapai. Untuk itu, pencarian bukan hanya dilakukan dengan 1 alternatif, namun bisa ada kalanya shortest path tersebut baru dapat ditemukan setelah membandingkan beberapa alternatif untuk mencapai tujuan
2.5.2.2 Single Source Shortest Path Menurut Horowitz (1998, p241), single source shortest path adalah jarak terpendek dari setiap verteks tunggal pada graph berarah yang berbobot menuju verteks tujuan tertentu. Disebut single source karena membutuhkan satu titik sebagai awal pencarian. Algoritma yang termasuk single source shortest path ini adalah Algoritma Dijkstra dan Bellman Ford.
2.5.2.3 Algoritma Dijkstra Algoritma Dijkstra digunakan untuk menemukan path bernilai terkecil dari verteks awal tunggal ke semua verteks pada graph. Algoritma ini ditemukan oleh Edsgar Wybe Dijkstra (Horowitz et al, 1998, p243). Algoritma ini akan melihat verteks yang terdeteksi dengan verteks awal, melihat successor dari verteks tersebut kemudian memperbarui jaraknya dari awal, demikian seterusnya sampai verteks tujuan berhasil ditemukan. Hasilnya pasti berupa jalur terpendek.
36 Jika dimisalkan ui adalah jarak terpendek dari node awal ke node ke-i, dan ditentukan kalau dij ( ≥ 0 ) merupakan panjang jalur antara node ke-i dengan node ke-j, maka algoritma untuk menentukan label node penerus berikutnya dapat dirumuskan menjadi (Taha, 2003, p225) : [uj,i] = [uj + dij , i] , dij ≥ 0 Label untuk node awal adalah [ 0, - ], menyatakan kalau node tersebut tidak memiliki predecessor. Label node dalam Dijkstra terbagi menjadi dua tipe, yaitu temporary dan permanent. Node yang temporary akan diubah menjadi permanent ketika rute yang terpendek telah ditemukan. Jika tidak ada rute terbaik yang dapat ditemukan pula, maka status temporary juga akan berubah menjadi permanent.
Langkah 0. Labelkan node awal menjadi permanent [ 0, - ]. Nilai i adalah 1. Langkah i.
(a) Hitung temporary label [ ui + dij , i ] untuk setiap node j yang dapat dicapai dari node ke-i, yang belum dilabelkan permanent. Jika node j telah dilabelkan dengan [ uj , k ] melalui node lain ( k ), dan jika ui + dij < uj, ubah nilai [uj , k] dengan [ ui + dij , i ]. (b) Jika semua node telah menjadi permanent, maka proses selesai. Jika belum, maka pilih label [ur , s] yang memiliki jarak terpendek (=ur) di antara label yang temporary. Nilai i = r, dan ulangi langkah ke-i.
37
Gambar 2.9 Contoh Gambar untuk Algoritma Dijkstra
Langkah 0. Jadikan node 1 menjadi permanent [ 0, - ] Langkah 1. Node 2 dan 3 dapat dicapai dari node 1. List dari node yang terkait adalah seperti berikut : Label
Node
Status
1
[0,-]
Permanent
2
[0 + 100, 1] = [100, 1]
Temporary
3
[0 + 30, 1] = [30, 1]
Temporary
Dari dua temporary label di atas, node 3 memiliki jarak yang lebih pendek, maka status dari node ke-3 berubah menjadi permanent.
Langkah 2. Node 4 dan node 5 dapat dicapai dari node 3. Maka list node yang terkait adalah sebagai berikut :
38 Label
Node
Status
1
[0,-]
Permanent
2
[100, 1]
Temporary
3
[30, 1]
Permanent
4
[30 + 10, 3] = [40, 3]
Temporary
5
[30 + 60, 3] = [90, 3]
Temporary
Status dari node ke-4 berubah menjadi permanent.
Langkah 3. Node 2 dan Node 5 dapat dicapai dari node 4. Maka list node yang terkait adalah sebagai berikut : Label
Node
Status
1
[0,-]
Permanent
2
[40 + 15, 4] = [55, 4]
Temporary
3
[30, 1]
Permanent
4
[40, 3]
Permanent
5
[90, 3] or [40 + 50, 4] = [90, 4]
Temporary
Di sini terlihat, node 2 yang temporary labelnya memiliki jarak 100, diubah menjadi [55, 4], yang menandakan kalau ada rute yang lebih pendek, yaitu melalui node 4. Kemudian status node 2 berubah menjadi permanent.
Langkah 4. Hanya node 3 yang dapat dicapai dari node 2, sedangkan node 3 telah permanent, dan statusnya tidak dapat diubah. List node yang ada sama seperti langkah 3, hanya node 2 sekarang telah berubah
39 menjadi permanent. Sekarang hanya ada node 5 yang masih temporary, dan statusnya diubah menjadi permanent. Selesai. Pseudocode untuk algoritma Dijkstra (Horowitz, 1998, p244) adalah sebagai berikut :
1
DijkstraShortestPaths(int v, float const[][SIZE],
2
float dist[], int n)
3
// dist[j], 1<=j<=n is set to the length of the
4
// shortest path from vertex v to vertex j in a
5
// digraph G with n vertices. dist[v] is set to
6
// zero. G is represented by its cost adjacency
7
// matrix cost[1:n][1:n]
8
{
9
int u; bool S[SIZE];
10
for (int i=1; i<=n; i++) { // Initialize S.
11
S[i] = false; dist[i] = cost[v][i];
12
}
13
S[v] = true; dist[v] = 0.0; // Put v in S.
14
for (int num = 2; num < n; num++ ){
15
// Determine n-1 paths from v.
16
choose u from among those vertices not
17
in S such that dist[u] us minimum;
18
S[u] = true; // Put v in S.
19
for (int w=1; w<=n; w++) // Update distances.
20
if ((S[q]==false && (dist[w]>dist[u]+cost[u][w]))
21
dist[w] = dist[u] + cost[u][w];
22 23
} }
40 2.5.2.4 Algoritma Bellman – Ford Menurut Horowitz (1998, p270), Algoritma Bellman Ford adalah algoritma untuk menemukan shortest path dari suatu verteks awal menuju semua verteks yang ada pada graph berarah yang berbobot. Algoritma ini menggunakan rumus: distk [u] = min {distk-1 [u], min {distk-1 [i] + cost [i] [u]}} n = jumlah node k = 2,3,…n-1 Hasil dari perhitungan rumus diatas dimasukkan dalam suatu tabel, sehingga pada iterasi tertentu akan dapat dilihat jarak terpendeknya.
1 10
100 30
2 50
5 50
10 3
20
4
Gambar 2.10 Contoh Graph untuk Algoritma Bellman Ford
k=1 Pada k = 1 dilakukan inisialisasi jarak pada node yang langsung terhubung ke node asal (node 1) sehingga didapatkan: dist1 [1] = 0, dist [2] = 10, dist1 [3] = ~, dist1 [4] = 30, dist1 [5] =100
41 Tabel 2.3 Iterasi Algoritma Bellman Ford Untuk k = 1 dist k [1…5] k 1
2
3
4
5
1
0
10
~
30
100
2
~
~
~
~
~
3
~
~
~
~
~
4
~
~
~
~
~
k=2 untuk i = 2, 3, 4, 5 dan u = 1 dist2 [1] = min {dist1 [1], min {dist1 [i] + cost [i][1]}} = min {0, 10 + ~, ~ + ~, 30 + ~, 100 + ~} = 0 untuk i = 1, 3, 4, 5 dan u = 2 dist2 [2] = min {dist1 [2], min {dist1 [i] + cost [i,2]}} = min {10, 0+10, ~+~, 30+~, 100+~} = 10 untuk i = 1, 2, 4, 5 dan u = 3 dist2 [3] = min {dist1 [3], min {dist1 [i] + cost [i,3]}} = min {~, 0+~, 10+50, 30+20, 100+~} = 50 untuk i = 1, 2, 3, 5 dan u = 4 dist2 [4] = min {dist1 [4], min {dist1 [i] + cost [i,4]}} = min {30, 0+30, 10+~, ~+~, 100+~} = 30 untuk i = 1, 2, 3, 4 dan u = 5
42 dist2 [5] = min {dist1 [5], min {dist1 [i] + cost [i,5]}} = min {100, 0+100, 10+~, ~+10, 30+50} = 80
Tabel 2.4 Iterasi Algoritma Bellman Ford Untuk k = 2 dist k [1…5] k 1
2
3
4
5
1
0
10
~
30
100
2
0
10
50
30
80
3
~
~
~
~
~
4
~
~
~
~
~
k=3 untuk i = 2, 3, 4, 5 dan u = 1 dist3 [1] = min {dist2 [1], min {dist2 [i] + cost [i,1]}} = min {0, 10+~, 50+~, 30+~, 80+~} = 0 untuk i = 1, 3, 4, 5 dan u = 2 dist3 [2] = min {dist2 [2], min {dist2 [i] + cost [i,2]}} = min {10, 0+10, 50+~, 30+~, 80+~} = 10 untuk i = 1, 2, 4, 5 dan u = 3 dist3 [3] = min {dist2 [3], min {dist2 [i] + cost [i,3]}} = min {50, 0+~, 10+50, 30+20, 80+~} = 50
43 untuk i = 1, 2, 3, 5 dan u = 4 dist3 [4] = min {dist2 [4], min {dist2 [i] + cost [i,4]}} = min {30, 0+30, 10+~, 50+~, 80+~} = 30 untuk i = 1, 2, 3, 4 dan u = 5 dist3 [5] = min {dist2 [5], min {dist2 [i] + cost [i,5]}} = min {80, 0+100, 10+~, 50+10, 80+50} = 60
Tabel 2.5 Iterasi Algoritma Bellman Ford Untuk k = 3 dist k [1…5] k 1
2
3
4
5
1
0
10
~
30
100
2
0
10
50
30
80
3
0
10
50
30
60
4
~
~
~
~
~
k=4 untuk i = 2, 3, 4, 5 dan u = 1 dist4 [1] = min {dist3 [1], min {dist3 [i] + cost [i,1]}} = min {0, 10+~, 50+~, 30+~, 60+~} = 0 untuk i = 1, 3, 4, 5 dan u = 2 dist4 [2] = min {dist3 [2], min {dist3 [i] + cost [i,2]}} = min {10, 0+10, 50+~, 30+~, 60+~} = 10
44 untuk i = 1, 2, 4, 5 dan u = 3 dist4 [3] = min {dist3 [3], min {dist3 [i] + cost [i,3]}} = min {50, 0+~, 10+50, 30+20, 60+~} = 50 untuk i = 1, 2, 3, 5 dan u = 4 dist4 [4] = min {dist3 [4], min {dist3 [i] + cost [i,4]}} = min {30, 0+30, 10+~, 50+~, 60+~} = 30 untuk i = 1, 2, 3, 4 dan u = 5 dist4 [5] = min {dist3 [5], min {dist3 [i] + cost [i,5]}} = min {60, 0+100, 10+~, 50+10, 30+50} = 60
Tabel 2.6 Iterasi Algoritma Bellman Ford Untuk k = 4 dist k [1…5] k 1
2
3
4
5
1
0
10
~
30
100
2
0
10
50
30
80
3
0
10
50
30
60
4
0
10
50
30
60
Proses pencarian selesai dengan hasil shortest path sebesar 60.
45 Pseudocode untuk algoritma Bellman Ford (Horowitz, 1998, p273) adalah sebagai berikut : 1
void BellmanFord (int v, float cost[][SIZE],
2
float dist[], const int n)
3
// Single-source/all-destinations shortest paths
4
// with negative edge costs
5
{
6
for (int i=1; i<=n; i++) //Initialize dist.
7
dist[i] = cost[v][i];
8
for (int k=2; k<=n-1; k++)
9
for (each u such that u!=v and u has
10
at least one incoming edge)
11 12
if (dist[u] > dist[i]+cost[i][u])
13
dist[u] = dist[i]+cost[i][u];
14
2.5.3
for (each
in the graph)
}
Maximal Flow Model Menurut Taha (2003, p239), model ini biasanya digunakan pada jaringan pipa yang mengalirkan minyak dari sumur ke tempat pengilangan, dimana setiap segmen dalam pipa memiliki kapasitas maksimum. Pipa bisa saja satu arah ataupun dua arah tergantung desainnya. Pipa yang memiliki satu arah memiliki kapasitas tertentu untuk satu arah dan kapasitas kosong untuk arah yang berlawanan.
46 Gambar di bawah ini menunjukkan jaringan pipa yang memiliki satu sumber dan satu tujuan dan beberapa node pemompa.
Gambar 2.11 Contoh Kasus Jaringan Pipa
Solusi untuk problem di atas memerlukan pengubahan jaringan menjadi satu sumber dan satu tujuan. Kebutuhan ini dapat dicapai dengan menggunakan uni directional infinite capacity seperti yang digambarkan garis putus – putus pada gambar di atas. Jika arc (i, j) dengan i < j dimana kita menggunakan notasi (Cij, Cji) untuk menunjukkan kapasitas arus dalam arah i menuju j, dan j menuju i. untuk menghikangkan ambiguitas kita meletakkan Cij pada garis diatas node i dan Cji diletakkan di sebelah node j seperti gambar di bawah ini.
Gambar 2.12 Penggambaran Flow
47 Berikut adalah langkah penyelesaian yang digunakan untuk untuk menyelesaikan persoalan maximal flow. 1. Secara acak, pilih salah satu path dalam network dari asal ke tujuan 2. Ubah kapasitas pada setiap node dengan mengurangi maximal flow untuk path yang dipilih pada langkah 1. 3. Tambahkan maximal flow disekitar path ke flow pada arah yang berlawanan pada setiap node. 4. Ulang langkah 1, 2, dan 3 sampai tidak ada lagi path dengan kapasitas flow tersedia.
2.5.4
CPM and PERT CPM (Critical Path Method) dan PERT (Program Evaluation and Review Technique) merupakan metode berbasis jaringan yang digunakan untuk membantu perencanaan, penjadwalan, dan kontrol suatu project. Suatu project merupakan kumpulan dari aktivitas yang saling berkaitan dimana setiap aktivitas memakan waktu dan resource. Tujuan dari CPM dan PERT adalah untuk menyediakan alat analisis untuk fungsi penjadwalan aktivitas Langkah pertama, kita menentukan aktivitas dalam project, kemudian menentukan hubungan antar aktivitas dan kebutuhan waktunya. Kemudian project diterjemahkan ke dalam suatu jaringan yang memperlihatkan hubungan diantara aktivitas – aktivitas tersebut. Langkah terakhir, adalah menghitung jaringan tersebut dalam basis yang berguna untuk pengembangan jadwal untuk proyek tersebut.
48 Dalam pelaksanaan project tersebut jadwal mungkin tidak dapat terwujud seperti yang direncanakan sehingga menyebabkan beberapa aktivitas tertunda. Dalam kasus ini diperlukan update untuk mencerminkan kenyataan pada lapangan. CPM dikembangkan untuk aktivitas yang bersifat deterministik, sedangkan PERT digunakan untuk aktivitas yang bersifat probabilistik. PERT berbeda dengan CPM karena basis durasinya pada suatu aktivitas terdiri atas tiga perkiraan, yaitu: •
Optimistic time, a, yang mengasumsikan aktivitas berjalan lancar
•
Most likely time, m, yang mengasumsikan aktivitas berjalan dalam kondisi yang normal.
•
Pessimistic time, b, yang mengasumsikan aktivitas berjalan tidak lancar.
Oleh karena itu, durasi dinyatakan dalam:
D=
a + 4m + b 6
Berikut adalah contoh gambar project network yang terdiri atas 9 aktivitas yang berkaitan.
Gambar 2.13 Contoh Project Network
49 2.6
Pengertian Manajemen
Menurut
James
A.F.
Stoner,
manajemen
adalah
suatu
proses
perencanaan, pengorganisasian, kepemimpinan, dan pengendalian upaya dari anggota organisasi serta penggunaan semua sumber daya yang ada pada organisasi untuk mencapai tujuan organisasi yang telah ditetapkan sebelumnya (http://organisasi.org/pengertian_definisi_dari_manajemen). Manajemen menggolongkan proses memimpin dan mengarahkan semua atau sebagian organisasi (biasanya sebuah bisnis) melalui penyebaran dan media sumber (manusia, finansial, material, intelektual, dan hal-hal lain yang tidak kasat mata). Kata manage berasal dari bahasa Italia maneggiare, yang juga didapatkan dari bahasa Latin manus, tangan. Seseorang dapat juga berpikir tentang manajemen secara fungsional, sebagai sebuah tindakan untuk mengukur suatu kuantitas secara teratur dan tentang menyesuaikan beberapa rencana awal; atau sebagai tindakan yang diambil untuk mencapai tujuan yang dihadapkan seseorang. Ini berlaku bahkan di situasi ketika perencanaan tidak ada. Menurut pendapat Henry Fayol, manajemen terdiri dari lima fungsi yaitu perencanaan, pengorganisasian,
kepemimpinan,
koordinasi,
serta
pengontrolan
(http://en.wikipedia.org/wiki/Management). Sedangkan menurut Kamus Besar Bahasa Indonesia Edisi kedua pada halaman 623, manajemen adalah : 1. proses penggunaan sumber daya secara efektif untuk mencapai sasaran. 2. pimpinan yang bertanggung jawab atas jalannya perusahaan dan organisasi.
50 2.7
Object Oriented Analysis and Design (OOAD)
2.7.1
Pengertian Object Oriented Analysis and Design (OOAD)
Menurut Whitten et al. (2004, p31), Object Oriented Analysis and Design (OOAD) merupakan kumpulan alat dan teknik mengembangkan sistem dengan menggunakan teknologi objek untuk merancang sebuah sistem dan programnya. Sedangkan menurut Mathiassen et al. (2000, pp3-4), OOAD merupakan metode untuk menganalisis dan merancang suatu sistem informasi dengan menggunakan objek dan class sebagai konsep dasarnya.
2.7.2
Objek dan Class
Objek adalah sebuah entitas yang memiliki identitas, status, dan perilaku (Mathiassen et al., 2000, p4). Contoh dari objek misalnya pelanggan. Pelanggan merupakan entitas dengan identitas yang spesifik, dan memiliki status dan perilaku tertentu yang khusus. Dalam desain, objek konsumen dapat merepresentasikan bagian dari history dan state konsumen di dalam sistem. Sedangkan class merupakan kumpulan objek yang memiliki struktur, pola perilaku, dan atribut yang sama (Mathiassen et al., 2000, p4). Contoh dari class misalnya pada pelanggan. Class pelanggan bisa menyimpan satu objek pelanggan tertentu, dan pada class yang sama pula, terdapat banyak objek pelanggan yang lain, masing – masing dengan identitas, state dan behaviour yang unik.
51 2.7.3
Keuntungan dan Kelemahan Object Oriented Analysis and Design
Mathiassen et al. (2000, pp5-6) menyebutkan bahwa keuntungan menggunakan OOAD adalah sebagai berikut: 1. OOAD memberikan informasi yang jelas mengenai context sistem. 2. Dapat menangani data yang seragam dalam jumlah yang besar dan mendistribusikannya ke seluruh bagian organisasi. 3. Hubungan erat antara analisis berorientasi objek, perancangan berorientasi objek, user interface berorientasi objek, dengan pemrograman berorientasi objek.
Selain keuntungan yang diperoleh dalam menggunakan OOAD seperti yang telah disebutkan di atas, ternyata juga terdapat beberapa kelemahan yang berhasil diidentifikasi oleh McLeod (2001, p341) yaitu: 1. Diperlukan
waktu
lama
untuk
memperoleh
pengalaman
pengembangan. 2. Kesulitan metodologi untuk menjelaskan sistem bisnis yang rumit. 3. Kurangnya pilihan peralatan pengembangan yang khusus disesuaikan untuk sistem bisnis.
2.7.4
Aktivitas Utama Object Oriented Analysis and Design
Empat buah aktivitas utama dalam analisis dan perancangan berorientasi objek yang digambarkan seperti gambar di bawah ini (Mathiassen et al, 2000, pp14-15) :
52
Gambar 2.14 Aktivitas Utama dalam OOAD
Berikut ini merupakan penjelasan lebih rinci mengenai keempat aktivitas utama dalam melakukan analisis dan perancangan berorientasi objek. 1. Analisis Problem Domain
Problem domain adalah bagian dari konteks yang diatur, diawasi, dan dikendalikan oleh sistem. Tujuan analisis problem domain adalah mengidentifikasi dan memodelkan problem domain (Mathiassen et al. 2000, pp45-48). Analisis problem domain terbagi menjadi tiga aktivitas yang digambarkan dalam Gambar 2.8, yaitu: a. Memilih objek, class, dan event yang akan terlibat dalam model problem domain.
53 b. Melihat bagaimana hubungan antara class dan object secara konsep berhubungan satu sama lain. c. Mendeskripsikan properti dinamis dan atribut untuk setiap class.
Gambar 2.15 Aktivitas Analisis Problem Domain
Pada aktivitas classes (Mathiassen et al. 2000, pp49-50), langkah awal yang perlu dilakukan adalah menentukan class. Langkah berikutnya adalah membuat sebuah event table yang dapat membantu menentukan event-event yang dimiliki oleh setiap class. Pada aktivitas structure (Mathiassen et al. 2000, p69), classclass
yang
telah
ditentukan
sebelumnya
akan
dihubungkan
berdasarkan tiga jenis hubungan yaitu generalisasi, agregasi, atau asosiasi sehingga menjadi sebuah skema yang disebut class diagram.
54 Dalam aktivitas behavior (Mathiassen et al. 2000, pp8993), definisi class dalam class diagram akan diperluas dengan menambahkan deskripsi pola perilaku dan atribut dari masing-masing class. Pola perilaku dari class terdiri dari tiga jenis, yaitu: •
Sequence Merupakan event yang terjadi secara berurutan satu per satu.
•
Selection Merupakan pemilihan salah satu dari beberapa event yang terjadi.
•
Iteration Merupakan event yang terjadi berulang kali.
Hasil dari aktivitas ini adalah sebuah statechart diagram yang menunjukkan perubahan status dari masing-masing class yang dikarenakan oleh event tertentu mulai dari initial state sampai dengan final state.
2. Analisis Application Domain
Application domain merupakan organisasi yang mengatur, mengawasi,
atau
mengendalikan
problem
domain.
Tujuan
dilakukannya analisis application domain adalah untuk menentukan kebutuhan penggunaan sistem (Mathiassen et al. 2000, pp115-118).
55 Sama seperti analisis problem domain, analisis application domain juga terdiri dari beberapa aktivitas sebagai berikut: a. Usage Menentukan bagaimana sistem berinteraksi dengan orang dan sistem dalam konteks yang sama. b. Functions Menentukan kemampuan sistem dalam mengolah informasi. c. Interfaces Menentukan kebutuhan interface sistem dan merancang interface. Berikut ini merupakan gambaran aktivitas-aktivitas yang dilakukan pada saat melakukan analisis application domain.
Gambar 2.16 Aktivitas Analisis Application Domain
Tujuan dalam aktivitas usage adalah untuk menentukan bagaimana actor berinteraksi dengan sistem. Langkah pertama yang harus dilakukan adalah membuat actor table yang dapat membantu menentukan actor dan use case yang berkaitan. Langkah selanjutnya
56 adalah membuat use case diagram sehingga terlihat lebih jelas interaksi antara actor dengan masing-masing use case (Mathiassen et al. 2000, pp119 – 120). Functions merupakan fasilitas sistem yang menjadikan sistem tersebut berguna bagi actor. Terdapat empat jenis function, yaitu (Mathiassen et al. 2000, pp137 - 138): •
Update Fungsi update diaktifkan oleh event problem domain dan menghasilkan perubahan status model.
•
Signal Fungsi signal diaktifkan oleh perubahan status model dan menghasilkan reaksi di dalam context.
•
Read Fungsi read diaktifkan oleh kebutuhan actor akan informasi dan menghasilkan tampilan model sistem yang relevan.
•
Compute Fungsi compute diaktifkan oleh kebutuhan actor akan informasi dan berisi perhitungan yang dilakukan baik oleh actor maupun oleh model. Hasilnya adalah tampilan dari hasil perhitungan yang dilakukan.
Aktivitas interface bertujuan untuk menentukan interface – interface dalam sistem. Hasil dari aktivitas ini adalah dialogue style,
57 contoh tampilan window, dan mencakup pembuatan navigation diagram yang merupakan skema yang menunjukkan tampilan dari sistem dan relasi antar interface (Mathiassen et al. 2000, p151).
3. Architectural Design
Architectural design bertujuan untuk menstrukturisasi sebuah sistem yang terkomputerisasi. Architectural design berfungsi sebagai kerangka
kerja
dalam
aktivitas
pengembangan
sistem
dan
menghasilkan struktur komponen dan proses sistem (Mathiassen et al. 2000, pp173 - 176). Tahap architectural design terdiri dari tiga aktivitas yaitu criteria, component architecture, dan process architecture seperti yang digambarkan pada Gambar 2.17.
Gambar 2.17 Aktivitas Architectural Design
Tujuan dari aktivitas menentukan crieria adalah untuk mendapatkan prioritas desain. Criterion adalah merupakan properti
58 yang diinginkan dari sebuah arsitektur. Desain yang baik memiliki keseimbangan dalam beberapa criteria. Tabel 2.7 menunjukkan criteria yang telah ditentukan oleh para peneliti untuk menentukan kualitas dari sebuah software (Mathiassen et al. 2000, pp177 - 179).
Tabel 2.7 Criteria untuk Menentukan Kualitas Software Ukuran
Criterion Kemampuan
sistem
beradaptasi
dengan
context
Usable organisasional dan teknikal. Secure
Pencegahan akses ilegal terhadap data dan fasilitas.
Efficient
Eksploitasi ekonomis dari fasilitas technical platform.
Correct
Kesesuaian dengan kebutuhan.
Reliable
Fungsi yang dijalankan secara tepat.
Maintainable
Biaya untuk mencari dan memperbaiki kerusakan sistem.
Testable
Biaya untuk menjamin bahwa sistem melakukan fungsinya.
Flexible
Biaya memodifikasi sistem.
Comprehensible
Usaha yang diperlukan untuk memahami sistem. Penggunaan bagian dari sistem ke dalam sistem lain yang
Reusable berkaitan. Portable
Biaya memindahkan sistem ke technical platform lain.
Interoperable
Biaya pemasangan sistem dengan sistem lain.
59 Mathiassen et al. (2000, pp179-182) menyebutkan bahwa kriteria usable, flexible, dan comprehensible tergolong sebagai kriteria umum yang harus dimiliki oleh sebuah sistem dan menentukan baik tidaknya suatu rancangan sistem. Component
architecture
adalah
struktur
sistem
dari
komponen-komponen yang berkaitan. Dalam aktivitas ini, perlu ditentukan pola arsitektural yang paling sesuai dengan model sistem . Pola-pola arsitektural tersebut antara lain: •
Layered Architecture Pattern
•
Generic Architecture Pattern
•
Client-Server Architecture Pattern Hasil dari aktivitas ini adalah sebuah component diagram
yang merupakan class diagram yang dilengkapi dengan spesifikasi komponen yang kompleks (Mathiassen et al., 2000, pp189 - 200). Process architecture adalah sebuah struktur eksekusi sistem yang terdiri dari proses-proses yang saling tergantung satu sama lain. Dalam aktivitas ini juga perlu menentukan pola distribusi yang sesuai dengan model sistem (Mathiassen et al., 2000, pp209 - 219). Polapola distribusi yang ada sebagai berikut: •
Centralized Pattern
•
Distributed Pattern
•
Decentralized Pattern
60 Hasil dari aktivitas ini adalah sebuah deployment diagram yang menunjukkan processor dengan program component dan active objects.
4. Component Design
Component design bertujuan untuk menentukan implementasi kebutuhan di dalam kerangka kerja arsitektural. Hasilnya adalah deskripsi mengenai komponen-komponen sistem. (Mathiassen et al., 2000, p231). Component design terdiri dari tiga aktivitas, yaitu: a. Model component Merupakan bagian sistem yang mengimplementasikan model problem domain. Dalam aktivitas ini dihasilkan sebuah class diagram dari model component. Hasil revisi dari class diagram dalam model component seringkali terdiri dari beberapa classes, attributes, structures tambahan untuk merepresentasikan event (Mathiassen et al., 2000, pp235 – 236). b. Function component Merupakan
bagian
sistem
yang
mengimplementasikan
kebutuhan fungsional. Hasilnya adalah class diagram dengan operasi dan fungsi-fungsi yang kompleks (Mathiassen et al., 2000, pp251 - 264).
61 Terdapat empat pola eksplorasi untuk merancang function component, yaitu: •
Model-Class Placement
•
Function-Class Placement
•
Strategy
•
Active Function
c. Connecting component Merupakan
desain
hubungan
antarkomponen
untuk
memperoleh rancangan yang fleksibel dan mudah dimengerti. Hasilnya adalah sebuah class diagram yang terdiri dari komponen-komponen yang terlibat.
Gambar 2.18 Aktivitas Component Design
2.8
Unified Modeling Language (UML)
2.8.1
Sejarah UML
Pada akhir tahun 80-an dan awal tahun 90-an, sudah banyak terdapat metode pemodelan berorientasi objek yang digunakan pada industri-industri,
62 diantaranya Booch Method yang diperkenalkan oleh Grady Booch, Object Modeling Technique (OMT) yang diperkenalkan oleh James Rumbaugh, dan Object-Oriented Software Engineering (OOSE) yang diperkenalkan oleh Ivar Jacobson. Keberadaan berbagai metode tersebut justru menjadi masalah utama dalam pengembangan sistem berorientasi objek, karena dengan banyaknya metode pemodelan objek yang digunakan akan membatasi kemampuan untuk berbagi model antar proyek dan antar tim pengembang. Hal tersebut disebabkan oleh berbedanya konsep masing-masing metode pemodelan objek sehingga menghambat komunikasi antara anggota tim dengan user yang berujung pada banyaknya kesalahan atau error pada proyek. Dikarenakan masalah-masalah tersebut, maka diperlukanlah suatu standarisasi penggunaan bahasa pemodelan. Pada tahun 1994, Grady Booch dan James Rumbaugh bekerja sama dan menyatukan metode pengembangan berorientasi objek mereka dengan tujuan untuk menciptakan sebuah sistem pengembangan berorientasi objek yang standar. Pada tahun 1995 Ivar Jacobson ikut bergabung dengan mereka dan ketiganya memusatkan perhatian untuk menciptakan sebuah bahasa pemodelan objek yang standar, bukan lagi berkonsentrasi pada metode atau pendekatan berorientasi objek. Berdasarkan pemikiran ketiga tokoh tersebut, maka akhirnya pada tahun 1997 bahasa pemodelan objek standar Unified Modeling Language (UML) versi 1.0 mulai diperkenalkan kepada masyarakat luas. UML bukan merupakan metode untuk mengembangkan sistem, melainkan hanya berupa notasi yang kemudian pada saat ini diterima dengan luas sebagai bahasa pemodelan objek yang standar. Object Management Group
63 (OMG) mengadopsi UML pada bulan November 1997 dan sejak saat itu terus mengembangkannya berdasarkan pada kebutuhan dunia industri. Pada tahun 2004, telah diluncurkan UML versi 1.4 dan pada saat itu juga OMG telah mulai merencanakan pengembangan UML versi 2.0.
2.8.2
Diagram – Diagram UML
2.8.2.1
Activity Diagram
Activity Diagram digunakan untuk menggambarkan uraian aliran aktifitas secara kronologis, bagian dari proses bisnis atau tahapan dari use case atau logic dari behaviour suatu objek atau disebut sebagai method . Diagram ini memodel langkah-langkah suatu proses atau kegiatan yang ada dalam sistem. Diagram ini juga dapat untuk memodel aksi yang akan dilakukan ketika suatu operasi dijalankan dan berikut hasil yang dikeluarkan dari aksi tersebut. Activity Diagram memiliki kemiripan dengan flowchart. Perbedaannya adalah, Activity diagram menyediakan mekanisme untuk menggambarkan aktifitas yang muncul secara paralel. Activity Diagram ini dapat dilakukan pada tahap analisis maupun pada perancangan. Berikut ini beberapa simbol yang digunakan dalam diagram ini (Whitten et al., 2004, pp450-454).
64 Tabel 2.8 Keterangan Simbol yang Digunakan pada Activity Diagram SIMBOL
PENJELASAN SIMBOL
Menjelaskan tentang awal dari suatu proses Menggambarkan suatu kegiatan atau tugas yang harus dilakukan. Disebut sebagai batang sinkronisasi (synchronization bar). Simbol ini memungkinkan penggambaran dari kegiatan yang dilakukan secara paralel (lebih dari satu kegiatan dalam satu waktu) dan dapat ditaruh dari lebih dari satu cabang.
[
]
Kata/kalimat yang ada dalam simbol ini merupakan sebuah pemacu yang menghasilkan sebuah aktifitas Simbol ini menggambarkan aktifitas
pengambilan
keputusan. Menggambarkan akhir dari suatu proses.
2.8.2.2
Class Diagram
Class Diagram menggambarkan struktur objek dari sistem. Class diagram menunjukkan class objek yang membentuk sistem dan hubungan struktural diantara class objek tersebut (Mathiassen et al., 2000, p336). Terdapat tiga jenis hubungan antar class yang biasa digunakan dalam class
65 diagram (Whitten et al., 2004, pp455-459). Ketiga jenis hubungan tersebut antara lain: 1. Asosiasi Asosiasi merupakan hubungan statis antar dua objek atau class. Hubungan ini menggambarkan apa yang perlu diketahui oleh sebuah class mengenai class lainnya. Hubungan ini memungkinkan sebuah objek atau class mereferensikan objek atau class lain dan saling mengirimkan pesan.
Sumber: Whitten et al. (2004, p461)
Gambar 2.19 Contoh Hubungan Asosiasi
2. Generalisasi (atau Spesialisasi) Dalam hubungan generalisasi, terdapat dua jenis class, yaitu class supertype dan class subtype. Class supertype atau class induk memiliki atribut dan behavior yang umum dari hirarki tersebut. Class subtype atau class anak memiliki atribut dan behavior yang unik dan juga memiliki atribut dan behavior milik class induknya. Class induk merupakan generalisasi dari class anaknya, sedangkan class anak merupakan spesialisai dari class induknya.
66
Sumber: Whitten et al. (2004, p461)
Gambar 2.20 Contoh Hubungan Generalisasi
3. Agregasi Agregasi merupakan hubungan yang unik dimana sebuah objek merupakan bagian dari objek lain. Hubungan agregasi tidak simetris dimana jika objek B merupakan bagian dari objek A, namun objek A bukan merupakan bagian dari objek B. Pada hubungan ini, objek yang menjadi bagian dari objek tertentu tidak akan memiliki atribut atau behavior dari objek tersebut.
67
Sumber: Whitten et al. (2004, p461)
Gambar 2.21 Contoh Hubungan Agregasi
Sumber: Whitten et al. (2004, p461)
Gambar 2.22 Contoh Class Diagram
2.8.2.3
Statechart Diagram
Statechart Diagram digunakan untuk memodelkan perilaku umum dari sebuah objek dalam sebuah class yang spesifik dan berisi state dan transition (Mathiassen et al., 2000, p341). Statechart diagram mengilustrasikan siklus objek hidup yaitu berbagai status yang dapat dimiliki objek dan event yang
68 menyebabkan status objek berubah menjadi status lain (Whitten et al., 2004, p700). Statechart diagram dibuat dengan langkah-langkah sebagai berikut (Whitten et al., 2004, p700): 1. Mengidentifikasi initial dan final state. 2. Mengidentifikasi status objek selama masa hidup objek tersebut. 3. Mengidentifikasi event pemicu perubahan status objek. 4. Mengidentifikasi jalur perubahan status.
Sumber: Mathiassen et al. (2000, p425)
Gambar 2.23 Contoh Statechart Diagram
69 2.8.2.4
Use Case Diagram
Use Case Diagram menggambarkan interaksi antara sistem dan user (Whitten et al., 2004, p441). Use case diagram mendeskripsikan secara grafis hubungan antara actors dan use case (Mathiassen et al., 2000, p343). Penjelasan use case biasa ditambahkan untuk menjelaskan langkah-langkah interaksi.
Library System
Apply for membership Visitor
Search library inventory
Check out books Patron
Sumber: Whitten et al. (2004, p282)
Gambar 2.24 Contoh Use Case Diagram
2.8.2.5
Sequence Diagram
Bennet et al. (2006, p253) mengemukakan bahwa sequence diagram menunjukkan interaksi antar objek yang diatur berdasarkan urutan waktu. Sequence diagram dapat digambarkan dalam berbagai level of detail yang berbeda untuk memenuhi tujuan yang berbeda-beda pula dalam daur hidup
70 pengembangan sistem. Aplikasi sequence diagram yang paling umum adalah untuk menggambarkan interaksi antar objek yang terjadi pada sebuah use case atau sebuah operation. Bennet et al. (2006, pp253-254) menyatakan bahwa setiap sequence diagram harus diberikan frame yang memiliki heading dengan menggunakan notasi sd yang merupakan kependekan dari sequence diagram. Bennet et al. (2006, p270) juga menyatakan bahwa terdapat beberapa notasi penulisan heading pada setiap frame yang terdapat dalam sequence diagram, antara lain: a. alt Notasi
alt
merupakan
kependekan
dari
alternatives
yang
menyatakan bahwa terdapat beberapa buah alternatif jalur eksekusi untuk dijalankan. b. opt Notasi opt merupakan kependekan dari optional dimana frame yang memiliki heading ini memiliki status pilihan yang akan dijalankan jika syarat tertentu dipenuhi. c. loop Notasi loop menyatakan bahwa operation yang terdapat dalam frame tersebut dijalankan secara berulang selama kondisi tertentu. d. break Notasi break mengindikasikan bahwa semua operation yang berada setelah frame tersebut tidak dijalankan.
71 e. par Merupakan kependekan dari parallel yang mengindikasikan bahwa operation dalam frame tersebut dijalankan secara bersamaan. f. seq Notasi seq merupakan kependekan dari weak sequencing yang berarti operation yang berasal dari lifeline yang berbeda dapat terjadi pada urutan manapun. g. strict Notasi strict merupakan kependekan dari strict sequencing yang menyatakan bahwa operation harus dilakukan secara berurutan. h. neg Notasi
neg
merupakan
kependekan
dari
negative
yang
mendeskripsikan operasi yang tidak valid. i. critical Frame yang memiliki heading critical menyatakan bahwa operasioperasi yang terdapat di dalamnya tidak memiliki sela yang kosong. j. ignore Notasi ini mengindikasikan bahwa tipe pesan atau parameter yang dikirimkan dapat diabaikan dalam interaksi. k. consider Consider menyatakan pesan mana yang harus dipertimbangkan
dalam interaksi.
72 l. assert Merupakan kependekan dari assertion yang menyatakan urutan pesan yang valid. m. ref Notasi ref merupakan kependekan dari refer yang menyatakan bahwa frame mereferensikan operation yang terdapat di dalamnya pada sebuah sequence diagram tertentu.
:Client
Campaign Manager
:Campaign
:Advert
getName()
listCampaigns() loop
[for all client’s campaigns] getCampaignDetails()
listAdverts() loop
[for all campaign’s adverts] getAdvertDetails()
addNewAdverts() Advert
Sumber: Bennet et al. (2006, p254)
Gambar 2.25 Contoh Sequence Diagram
newAd:Advert
73 2.8.2.6
Navigation Diagram
Navigation Diagram merupakan statechart diagram khusus yang berfokus pada user interface (Mathiassen et al., 2000, p344). Diagram ini menunjukkan window-window dan transisi diantara window-window tersebut. Sebuah window dapat digambarkan sebagai sebuah state. State ini memiliki nama dan berisi gambar miniatur window. Transisi antar state dipicu oleh ditekannya sebuah tombol yang menghubungkan dua window.
Gambar 2.26 Contoh Navigation Diagram
2.8.2.7
Component Diagram
Component Diagram merupakan diagram implementasi yang digunakan untuk menggambarkan arsitektur fisik dari software sistem. Diagram ini dapat menunjukkan bagaimana coding pemrograman terbagi menjadi komponen-
74 komponen dan juga menunjukkan ketergantungan antar komponen tersebut (Whitten et al., 2004, p442). Sebuah komponen digambarkan dalam UML sebagai sebuah kotak dengan dua kotak kecil di sebelah kirinya. Ketergantungan antar dua komponen menunjukkan bagaimana kedua komponen tersebut saling berkomunikasi.
Sumber: Mathiassen et al. (2000, p201)
Gambar 2.27 Contoh Component Diagram
2.8.2.8
Deployment Diagram
Deployment Diagram, sama seperti component diagram, juga merupakan diagram
implementasi
yang
menggambarkan
arsitektur
fisik
sistem.
Perbedaannya, deployment diagram tidak hanya menggambarkan arsitektur
75 fisik software saja, melainkan software dan hardware. Diagram ini menggambarkan komponen software, processor, dan peralatan lain yang melengkapi arsitektur sistem (Whitten et al., 2004, p442). Menurut Mathiassen et al. (2000, p340), deployment diagram menunjukkan konfigurasi sistem dalam bentuk processor dan objek yang terhubung dengan processor tersebut. Setiap kotak dalam deployment diagram menggambarkan sebuah node yang menunjukkan sebuah hardware. Hardware dapat berupa PC, mainframe, printer, atau bahkan sensor. Software yang terdapat di dalam node digambarkan dengan simbol komponen. Garis yang menghubungkan node menunjukkan jalur komunikasi antar device. Gambar 3.23 berikut ini menunjukkan sebuah contoh deployment diagram.
Sumber: Mathiassen et al. (2000, p217)
Gambar 2.28 Contoh Deployment Diagram