ANALISA DAN PERANCANGAN SISTEM
3.1. Deskripsi Kasus
Kasus penggunaan Bus Trans Jogja yang mungkin dihadapi oleh para
penumpangnya adalah ketidaktahuan untuk menentukan jalur Bus Trans Jogja
yang harus ditempuh guna mencapai tujuan yang dikehendaki. Selain hal itu,
penumpang bahkan juga mungkin tidak tahu trayek apa yang harus
ditumpangi dan perpindahan bus yang harus dilakukan guna mencapai titik
tujuannya dengan cepat. Berdasarkan hal tersebut salah satu solusi yang dapat
diberikan adalah membuat sebuah aplikasi untuk mencari jalur terpendek rute
Bus Trans Jogja dari satu titik awal ke satu titik tujuan. Selain kemampuan
mencari jalur terpendek, aplikasi yang dibuat juga harus mampu memberikan
saran berupa bus yang harus digunakan beserta perpindahan yang harus
dilakukan untuk menempuh jalur terpendek yang telah ditemukan.
Aplikasi akan dibuat untuk smartphone bersistem operasi Android.
Hal tersebut dilakukan agar aplikasi yang dibuat lebih optimal dalam
membantu penumpang karena mampu membantu penumpang pemilik
smartphone Android menentukan Bus Trans Jogja yang harus digunakan
secara mobile. Pertimbangan hal tersebut muncul karena dengan ukuran
34
gambar graph yang terbentuk berdasarkan posisi halte dan jarak antar halte
yang ada.
Gambar 3.1Graph Rute Bus Trans Jogja
Gambar 3.2Posisi Halte Bus Trans Jogja
12.Untuk int i = 1, selama i < jumlah vertex lakukan langkah dua
belas hingga langkah lima belas.
13.Jika vertex ke – i belum dikunjungi dan sPath ke – i <
jarakTerpendek maka lakukan langkah tiga belas dan empat
belas.
14.jarakTerpendek = sPath[i].getjarak().
15.minIndeks = i.
16.i++.
17.Buat dan inisialisasi variabel “min” = minIndeks.
18.Buat dan inisialisasi varaibel “minDist” =
sPath[min].getJarak().
19.Jika minDist = infinite, maka break. Jika tidak lakukan langkah
dua puluh dan 21.
20.vertSekarang = minIndeks.
21.jarakAwalKini = sPath[min].getJarak().
22.Tandai vertex sekarang bahwa dirinya sudah dikunjungi.
23.jumGraph++.
24.Buat dan inisialisasi variabel int “kolom” = 0.
25.Selama kolom < jumlah vertex, lakukan langkah 26 hingga 31.
26.Jika vertex dengan index kolom sudah dikunjungi, maka
kolom++ dan continue.
5. Untuk int i = 0, selama i < path.length lakukan langkah enam
hingga langkah sembilan.
6. Untuk int j = 0, selama j < path.length lakukan langkah tujuh
hingga langkah delapan.
7. Jika “jarak” sama dengan infinite, maka path[i][j] = -1, jika
tidak maka path[i][j] = i.
8. j++.
9. i++.
10.Untuk int i = 0, selama i < jumlah halte, lakukan langkah
sebelas hingga langkah dua belas.
11.path[i][i] = 1.
12.i++.
13.Untuk int i = 0, selama i < path.length lakukan langkah empat
belas hingga langkah 21.
14.Untuk int j = 0, selama j < path.length lakukan langkah lima
belas hingga langkah dua puluh.
15.Untuk int k = 0, selama k < path.length lakukan langkah enam
belas hingga langkah sembilan belas.
16.Jika jarak[j][i] + jarak[i][k] < jarak[j][k], lakukan langkah
tujuh belas dan delapan belas.
17.jarak[j][k] = jarak[j][i] + jarak[i][k].
18.path[j][k] = path[i][k].
9. Masukkan ke daftarTrayek edgeTrayek untuk nilai awal dan
tujuan yang telah ditentukan pada langkah tujuh dan delapan.
10.i++.
11.Inisialisasi bantu yang bertipe List<String> yang merupakan
nilai dari variabel daftarTrayek ke-0.
12.Inisialisasi variabel bertipe String baru dan perpindahanBus
bernilai empty string.
13.Untuk int i = 1, selama i kurang dari jalurPilihan.size maka
lakukan langkah empat belas hingga langkah 29.
14.Ubah nilai variabel baru menjadi empty string.
15.Untuk int j = 0, selama j kurang dari bantu.size, lakukan
langkah enam belas hingga sembilan belas.
16.Untuk int k = 0, selama k kurang dari daftarTrayek.get(i).size
lakukan langkah tujuh belas hingga delapan belas.
17.Jika nilai variabel bantu sama dengan daftarTrayek.get(i).get(k)
maka baru = baru + bantu.get(j).
18.j++.
19.j++.
20.Jika nilai variabel baru sama dengan empty String maka
lakukan langkah 21 hingga 25, jika tidak lakukan langkah 26.
21.Untuk j = 0, selama j kurang dari bantu.size lakukan langkah
22 hingga 24.
dengan solusi yang diperoleh melalui penghitungan manual. Kemiripan solusi
yang diberikan oleh sistem dengan solusi yang didapat secara manual akan
menjadi nilai ukur kebenaran dari solusi yang diberikan oleh sistem. Semakin
mirip solusi dari sistem dengan solusi yang didapat dari perhitungan manual,
maka semakin benar pula solusi yang diberikan oleh sistem. Penghitungan
manual akan dilakukan dengan cara:
1. Menentukan semua kemungkinan jalur yang mampu ditempuh dari
titik awal dan tujuan yang telah ditentukan, kemudian menghitung
jarak untuk setiap kemungkinan jalur yang didapat.
2. Membandingkan semua jarak untuk semua kemungkinan jalur yang
telah didapat.
3. Jalur dengan nilai jarak terkecillah yang kemudian dijadikan sebagai
solusi dalam penghitungan manual tersebut.
Hal terakhir yang kemudian dilakukan adalah membandingkan
kompleksitas waktu asimtotik dari masing-masing algoritma dan running
time-nya. Hal ini dilakukan untuk menentukan algoritma mana yang paling
optimal untuk digunakan dalam aplikasi yang dibuat. Algoritma yang palling
optimallah yang akan benar-benar digunakan dalam aplikasi yang akan dibuat
sehingga aplikasi benar-benar siap untuk dipublikasi dan digunakan oleh
masyarakat umum.
3. Aktor menyentuh kembali titik awal yang telah ditentukan sebelumnya.
2. Sistem telah menandai lokasi awal yang telah ditentukan oleh aktor.
4. Sistem memunculkan dialog apakah titik awal yang telah ditentukan sebelumnya oleh actor akan dibatalkan atau tidak.
Tabel 3.1Tabel Use Case Menentukan Titik Awal
b. Nama Use Case : Menentukan titik tujuan
Aktor : User (pengguna aplikasi)
Kondisi Awal : Titik awal telah ditentukan
Skenario :
Aksi Aktor Reaksi Sistem
1. Aktor touch titik tujuan yang berupa icon halte Bus Trans Jogja.
2. Sistem menandai lokasi yang telah ditentukan dan kemudian menampilkan jalur yang menghubungkan tiap halte.
Tabel 3.2Tabel Use Case Menentukan Titik Tujuan
c. Nama Use Case : Melihat jalur bus yang ditempuh
Aktor : User (pengguna aplikasi)
Kondisi Awal : Titik awal dan tujuan telah ditentukan
Skenario :
bus yang harus dipilih aktor berdasarkan jalur terpendek yang telah diperoleh sistem.
Tabel 3.5Tabel Use Case Melihat Saran Trayek Bus yang Harus Dipilih
f. Nama Use Case : Melihat running time algoritma
Aktor : User
Kondisi Awal : Titik awal dan tujuan telah ditentukan
Skenario :
Aksi Aktor Reaksi Sistem
1. Aktor touch tombol
“Details”. 2. Sistem menampilkan running time aloritma.
Tabel 3.6Tabel Use Case Melihat Running Time Algoritma
g. Nama Use Case : Mencari halte
Aktor : User
Kondisi Awal : -
Skenario :
Aksi Aktor Reaksi Sistem
1. Aktor mengisi textfield yang ada dengan nama halte yang ingin dicari. 2. Aktor touch tombol
“Cari”.
3. Sistem menunjukkan halte yang dicari jika ada.
3.4.1. Diagram Aktivitas Menentukan Titik Awal
Gambar 3.4Diagram Aktivitas Menentukan Titik Awal
3.4.2. Diagram AktivitasMenentukan Titik Tujuan
Gambar 3.5Diagram Aktivitas Menentukan Titik Tujuan
3.4.4. Diagram Aktivitas Melihat Jalur Bus yang Ditempuh, Melihat Nilai Jarak yang Ditempuh, Melihat Saran Trayek Bus yang Harus Dipilih, dan Melihat Running Time Algoritma
Gambar 3.7Diagram Akivitas Melihat Jalur Bus yang Ditempuh, Melihat Nilai Jarak yang Ditempuh, Melihat Saran Trayek
Bus yang Harus Dipilih, dan Melihat Running Time Algoritma
3.5.2. Diagram Sekuensial Menentukan Titik Tujuan
Gambar 3.10Diagram Sekuensial Menentukan Titik Tujuan
3.5.3. Diagram Sekuensial Mencari Halte
Gambar 3.11Diagram Sekuensial Mencari Halte
Gambar 3.13Diagram Sekuensial Melihat Jalur Bus yang Ditempuh, Melihat Nilai Jarak yang Ditempuh, Melihat Saran Trayek Bus yang Harus Dipilih, dan Melihat Running Time Algoritma
Floyd-Warshall
3.5.5. Diagram Sekuensial Melihat Help
Gambar 3.16Diagram Kelas Perancangan Keseluruhan