IV-1
Tugas Akhir ini akan menghasilkan sebuah perangkat lunak penjadwalan kereta api jalur tunggal dengan nama Kimspoor Scheduler. Pada bab ini akan dijelaskan mengenai analisis dan perancangan yang diperlukan sebelum melakukan implementasi perangkat lunak Kimspoor Scheduler.
4.1 Analisis
Pada tahap analisis akan dijelaskan mengenai deskripsi umum perangkat lunak, kebutuhan-kebutuhan fungsional dan non-fungsional perangkat lunak, diagram use-case dan diagram kelas tahap analisis.
4.1.1 Deskripsi Umum Perangkat Lunak
Kimspoor Scheduler adalah perangkat lunak yang digunakan untuk melakukan penjadwalan kereta api jalur tunggal dengan menggunakan pendekatan constraint programming. Tujuan dari perangkat lunak ini adalah mendapatkan sebuah jadwal perjalanan kereta api jalur tunggal yang memenuhi aturan-aturan dalam perjalanan kereta api jalur tunggal.
Fitur pertama perangkat lunak ini adalah memasukkan data perjalanan kereta api jalur tunggal ke dalam basis data, yaitu rute perjalanan (petak-petak blok dan stasiun) dan kereta api yang melakukan perjalanan pada rute tersebut. Setelah data dimasukkan, pengguna dapat melihat data tersebut untuk melakukan verifikasi. Perangkat lunak ini tidak dapat melakukan verifikasi data yang dimasukkan. Setelah pengguna memasukkan data yang valid, perangkat lunak ini dapat melakukan penjadwalan perjalanan-perjalanan kereta api yang tersimpan di basis data. Hasil dari proses penjadwalan ini adalah jadwal-jadwal keberangkatan kereta api di tiap stasiun yang dilalui oleh kereta api tersebut. Jadwal ini akan disimpan di dalam basis data. Selanjutnya, pengguna dapat menampilkan jadwal yang tersimpan di dalam basis data sebagai sebuah tabel jadwal perjalanan kereta api maupun diagram ruang-waktu untuk mengetahui apakah terdapat aturan kereta api yang dilanggar dalam penjadwalan. Diagram ruang-waktu tersebut juga dapat
disimpan sebagai sebuah file gambar. Dengan demikian, jadwal kereta api tersebut dapat dibawa kemana-mana, tidak hanya di komputer lokal yang menyimpan basis data.
4.1.2 Kebutuhan-Kebutuhan Perangkat Lunak
Kebutuhan perangkat lunak Kimspoor Scheduler ini dibagi menjadi dua, yaitu kebutuhan fungsional dan kebutuhan non-fungsional.
4.1.2.1 Kebutuhan Fungsional Perangkat Lunak
Berdasarkan deskripsi umum perangkat lunak di atas, kebutuhan fungsional perangkat lunak ini disajikan dalam Tabel IV-1 berikut.
Tabel IV-1 Kebutuhan Fungsional Perangkat Lunak
No Kebutuhan fungsional Deskripsi
1 Memasukkan data
perjalanan kereta api
Perangkat lunak ini dapat menerima data perjalanan kereta api yang diperlukan dalam penjadwalan kereta api. Hal ini meliputi rute perjalanan, stasiun, petak blok, dan kereta api. Data masukan pengguna ini kemudian disimpan ke dalam basis data
2 Melihat data masukan Data perjalanan kereta api yang tersimpan di basis data dapat dilihat kembali oleh pengguna.
3 Mengubah atau menghapus data masukan
Data masukan yang salah atau tidak diperlukan kembali dalam penjadwalan dapat diubah nilainya atau dihapus dari basis data. 4 Melakukan penjadwalan Perangkat lunak melakukan penjadwalan
dengan cara mengambil data masukan perjalanan dari basis data kemudian menerapkan algoritma-algoritma pencarian jadwal kereta api yang tidak melanggar aturan-aturan perjalanan kereta api.
No Kebutuhan fungsional Deskripsi
5 Menampilkan jadwal Jadwal yang sudah disimpan di dalam basis data dapat ditampilkan dalam bentuk tabel keberangkatan perjalanan kereta api maupun diagram ruang-waktu.
6 Menyimpan diagram ruang-waktu sebagai file gambar
Diagram ruang-waktu yang merepresentasikan jadwal kereta api selain
dapat ditampilkan oleh perangkat lunak juga dapat disimpan sebagai sebuah file gambar.
4.1.2.2 Kebutuhan Non-Fungsional Perangkat Lunak
Selain kebutuhan fungsional, perangkat lunak ini juga harus memenuhi kebutuhan-kebutuhan non-fungsional. Kebutuhan non-fungsional yang pertama adalah kinerja penjadwalan yang baik, yaitu waktu pencarian jadwal yang memenuhi semua aturan-aturan perjalanan kereta api tidak terlalu lama.
Kebutuhan non-fungsional berikutnya adalah antarmuka perangkat lunak yang tidak membingungkan. Hal ini diutamakan pada masalah penampilan data masukan dan diagram ruang-waktu yang dihasilkan.
Kebutuhan yang terakhir adalah penjagaan integritas basis data. Data perjalanan kereta api yang dimasukkan dengan menggunakan perangkat lunak ini harus selalu benar. Sebagai contoh jika data stasiun dihapus, maka data petak jalan yang menggunakan stasiun tersebut juga harus dihapus. Demikian juga dengan data rute dan perjalanan yang menggunakan petak jalan tersebut. Selain penghapusan data, integritas basis data juga harus tetap terjaga walaupun ada data yang diubah (tidak dihapus).
4.1.3 Diagram Use-Case
Berdasarkan kebutuhan fungsional di atas, diagram use-case dari perangkat lunak ini disajikan dalam Gambar IV-1 berikut.
Gambar IV-1 Diagram Use-Case Perangkat Lunak Kimspoor Scheduler
Aktor atau pengguna dalam diagram use-case di atas adalah pegawai di sebuah perusahaan kereta api yang memiliki wewenang untuk membuat jadwal kereta api. Pengguna memiliki data perjalanan kereta api berupa rute jaringan kereta api, stasiun-stasiun, petak-petak jalan pada rute tersebut dan kereta api yang akan melakukan perjalanan dengan menggunakan rute tersebut. Perangkat lunak ini dapat digunakan untuk memasukkan data perjalanan tersebut ke dalam basis data. Setelah data perjalanan dimasukkan, penggunaa dapat menggunakan perangkat lunak ini untuk melakukan penjadwalan sesuai aturan-aturan perjalanan yang ada. Perangkat lunak ini akan menyimpan hasil penjadwalan ke dalam basis data. Pengguna kemudian dapat menampilkan jadwal yang tersimpan di dalam basis data dalam representasi diagram ruang-waktu.
4.1.4 Analisis Kelas-Kelas
4.1.4.1 Identifikasi Kelas-Kelas
Berdasarkan analisis kebutuhan perangkat lunak dan diagram use-case yang telah dibuat, kelas-kelas yang akan digunakan dalam perancangan dan implementasi perangkat lunak disajikan dalam Tabel IV-2 berikut.
Tabel IV-2 Kelas-Kelas Tahap Analisis
No Nama Kelas Deskripsi
1 AntarmukaUtama Kelas yang menangani antarmuka utama perangkat lunak dan mengatur antarmuka-antarmuka masukan dan keluaran.
2 AntarmukaMasukan Kelas yang menangani masukan dari pengguna.
3 AntarmukaKeluaran Kelas yang menangani penampilan hasil penjadwalan kepada pengguna.
4 KeretaApi Kelas kereta api
5 Rute Kelas rute perjalanan kereta api. 6 PetakJalan Kelas petak jalan
7 PetakBlok Kelas petak blok
8 Stasiun Kelas stasiun
9 Perjalanan Kelas yang menangani perjalanan-perjalanan yang akan dijadwalkan.
10 Operasi Kelas yang menangani operasi-operasi dalam satu perjalanan kereta api.
11 Jadwal Kelas untuk menyimpan hasil penjadwalan yang dilakukan. Kelas ini hanya menangani jadwal satu perjalanan saja.
12 Penjadwal Kelas utama yang melakukan penjadwalan 13 Masukan Kelas yang menangani data perjalanan yang
4.1.4.2 Diagram Kelas Tahap Analisis
Diagram kelas analisis yang menyatakan hubungan-hubungan antara kelas-kelas yang telah diidentifikasi disajikan pada Gambar IV-2 berikut.
Gambar IV-2 Diagram Kelas Analisis Perangkat Lunak Kimspoor Scheduler
4.2 Perancangan
Pada tahap ini dilakukan perancangan antarmuka dan perancangan kelas-kelas dengan lebih rinci. Perancangan kelas yang dilakukan meliputi identifikasi atribut-atribut dan operasi-operasi pada kelas, pemaketan kelas, hubungan kelas-kelas di dalam paket-paket tersebut dan juga hubungan kelas-kelas-kelas-kelas antarpaket.
4.2.1 Perancangan Antarmuka
Antarmuka perangkat lunak Kimspoor Scheduler ini sangat sederhana. Setelah perangkat lunak dijalankan, pengguna akan masuk ke antarmuka utama. Gambar IV-3 berikut menyajikan gambar rancangan antarmuka utama perangkat lunak ini .
Gambar IV-3 Rancangan Antarmuka Utama Perangkat Lunak
Tujuh buah toolbar di bagian atas antarmuka utama berfungsi sebagai wizard untuk memandu pengguna dalam menggunakan perangkat lunak langkah demi langkah secara bertahap. Toolbar yang pertama digunakan untuk konfigurasi koneksi basis data, toolbar kedua sampai dengan kelima digunakan untuk membuka panel-panel masukan dan penampilan data masukan, toolbar keenam untuk melakukan fungsi penjadwalan dan yang terakhir untuk penampilan keluaran perangkat lunak yang berupa diagram ruang-waktu. Empat buah panel yang dibuka dengan empat toolbar tersebut adalah panel data masukan stasiun, petak jalan, rute dan perjalanan.
Hal pertama yang harus dilakukan sebelum melakukan proses penjadwalan kereta api adalah melakukan koneksi basis data dengan server basis data. Hal ini diperlukan untuk pengambilan dan penyimpanan data perjalanan yang akan dijadwalkan. Antarmuka untuk masukan konfigurasi dan koneksi basis data ini sangat sederhana. Antarmuka tersebut hanya berisi alamat server, port server,
nama basis data, nama pengguna dan password pengguna. Gambar IV-4 menyajikan rancangan antarmuka ini.
Gambar IV-4 Rancangan Antarmuka Koneksi Basis Data
Setelah perangkat lunak terhubung dengan server basis data, pengguna dapat memasukkan data atau melihat data lain yang sudah ada. Antarmuka untuk melakukan hal ini adalah empat buah panel data masukan dan penampilan data. Setiap panel memiliki bentuk yang serupa, yaitu sebuah tabel di sebelah kiri dan sebuah upapanel di sebelah kanan untuk menerima data masukan. Perancangan panel tersebut bertujuan untuk memudahkan pengguna dalam memasukkan data karena data perjalanan kereta api yang dimiliki pengguna pada umumnya berupa tabel. Selain itu, pengguna juga dapat melihat data lain yang sudah ada sebelum memasukkan data. Rancangan antarmuka untuk keempat panel tersebut dapat dilihat pada Gambar IV-5.
Setiap kali pengguna membuka panel tersebut, sebuah tab akan terbuka di bagian bawah toolbar. Dengan demikian, panel-panel masukan lain yang telah dibuka sebelumnya tidak akan tertutup. Gambar IV-6 menampilkan anarmuka utama dengan tiga buah panel yang sedang terbuka.
Gambar IV-6 Rancangan Antarmuka Utama dengan Tiga Panel Terbuka
Yang terakhir adalah antarmuka untuk penampilan grafik keluaran yang berupa diagram ruang-waktu. Proses penjadwalan dapat dilakukan pada perjalanan-perjalanan yang menggunakan rute-rute berbeda, sedangkan sebuah diagram ruang-waktu hanya bisa digunakan untuk menampilkan satu rute saja. Oleh sebab itu, sebelum perangkat lunak ini menampilkan diagram ruang waktu, pengguna harus memilih rute terlebih dahulu. Rancangan antarmuka untuk pemilihan rute ini dapat dilihat pada Gambar IV-7.
Setelah rute perjalanan dipilih, perangkat lunak akan menampilkan diagram ruang-waktu dari hasil penjadwalan. Gambar IV-8 menyajikan rancangan antarmuka ini dengan sebuah contoh diagram ruang-waktu di dalamnya.
Gambar IV-8 Rancangan Antarmuka Penampilan Diagram Ruang-Waktu
4.2.2 Perancangan Kelas-Kelas
4.2.2.1 Identifikasi Kelas-Kelas Tahap Perancangan
Berdasarkan analisis yang telah dilakukan, diagram use-case, diagram kelas analisis yang telah dibuat dan juga perancangan antarmuka, kelas-kelas pada perangkat lunak ini akan dibagi dalam tiga buat paket, yaitu paket antarmuka, paket basis data, dan paket penjadwalan. Paket antarmuka berisi kelas-kelas boundary yang bertugas menerima masukan dari pengguna dan menampilkan hasil keluaran. Paket basis data berisi kelas-kelas control yang bertugas untuk menyimpan atau mengambil data dari basis data. Paket penjadwalan berisi kelas-kelascontrol yang melakukan penjadwalan setelah pengguna memasukkan semua data perjalanan. Tabel IV-3 sampai Tabel IV-5 berisi kelas-kelas dari tiap paket tersebut beserta tanggung jawabnya.
Tabel IV-3 Kelas-Kelas pada Paket Antarmuka
No Nama Kelas Tanggung Jawab
1 AntarmukaUtama Sebagai antarmuka utama yang mengontrol antarmuka-antarmuka lainnya.
2 PanelStasiun Menerima masukan data stasiun dari pengguna dan menampilkan data tersebut dalam bentuk tabel.
3 PanelPetakJalan Menerima masukan data petak jalan dari pengguna dan menampilkan data tersebut dalam bentuk tabel.
4 PanelRute Menerima masukan data rute dari pengguna dan menampilkan data tersebut dalam bentuk tabel.
5 PanelPerjalanan Menerima masukan data perjalanan dari pengguna dan menampilkan data tersebut dalam bentuk tabel.
6 AntarmukaKoneksiBD Menerima masukan konfigurasi server dari pengguna.
7 AntarmukaPemilihanRute Menerima masukan nama rute yang harus ditampilkan dalam diagram ruang-waktu. 8 AntarmukaDiagramRW Menampilkan diagram ruang-waktu.
9 PenggambarDiagramRW Melakukan penggambaran diagram ruang waktu dari jadwal yang telah ditemukan pada kelas Penjadwalan.
10 PenyimpanFileDiagramRW Menyimpan diagram RW sebagai sebuah file gambar.
Tabel IV-4 Kelas-Kelas pada Paket Basis Data
No Nama Kelas Tanggung Jawab
1 DBManager Mengambil dan menyimpan data perjalanan kereta api dari dan ke basis data.
No Nama Kelas Tanggung Jawab
2 ObjectGenerator Mengambil data dari basis data dan membentuk objek-objek dari data tersebut. Hal ini sangat diperlukan pada proses penjadwalan dan penampilan grafik.
Tabel IV-5 Kelas-Kelas pada Paket Penjadwalan
No Nama Kelas Tanggung Jawab
1 Stasiun Menampung data stasiun yang diperlukan dalam penjadwalan.
2 StasiunPemberhentian Menampung data stasiun pemberhentian yang diperlukan dalam penjadwalan.
3 PetakJalan Menampung data petak jalan yang diperlukan dalam penjadwalan.
4 Perjalanan Menampung data perjalanan yang diperlukan dalam penjadwalan, operasi-operasi yang membentuk perjalanan tersebut dan juga hasil penjadwalan.
5 Operasi Membagi sebuah perjalanan menjadi beberapa operasi, dimana setiap operasi mengandung objek dari kelas PetakJalan.
6 Penjadwalan Melakukan penjadwalan terhadap semua data yang telah ditampung dalam objek-objek dari kelas Perjalanan.
7 Konflik Menyimpan konflik yang terjadi antara dua buah operasi dan cara penyelesaiannya (operasi mana yang harus ditunda dan berapa lama penundaannya).
8 GrafDisjungtif Menyimpan representasi jadwal sebagai graf disjungtif. Hal ini diperlukan untuk pencarian jadwal berikutnya dengan lebih efisien.
No Nama Kelas Tanggung Jawab
9 Simpul Menyimpan simpul-simpul dalam graf
disjungtif.
10 SisiKritis Menyimpan sisi-sisi kritis dalam graf disjungtif. 11 AntrianSimpul Sebagai tempat menampung simpul-simpul
ketika melakukan penelusuran graf disjungtif secaraBFS.
12 AnggotaAntrianSimpul Menyimpan simpul-simpul anggota dari kelas Antrian Simpul.
4.2.2.2 Diagram Kelas Tahap Perancangan
Kelas-kelas yang telah diidentifikasi pada upabab sebelumnya memerlukan atribut-atribut, operasi-operasi dan hubungan dengan kelas-kelas yang lain agar dapat melaksanakan tanggung jawabnya masing-masing di dalam perangkat lunak ini. Semua hal tersebut dapat terlihat dengan menggunakan diagram kelas perancangan. Karena kelas yang ada cukup banyak, maka diagram kelas tersebut akan dipecah menjadi beberapa bagian. Diagram-diagram kelas tersebut yang menunjukkan hubungan kelas-kelas dalam satu paket disajikan pada Gambar IV-9 sampai dengan Gambar IV-11. Sedangkan diagram kelas yang menunjukkan hubungan antarpaket disajikan pada Gambar IV-12. Pada Gambar IV-12, hubungan kelas-kelas dalam satu paket tidak ditunjukkan seluruhnya karena sudah ada pada tiga gambar sebelumnya.
Gambar IV-9 Diagram Kelas pada Paket Antarmuka